Arduino提高篇17—MPU6050姿態(tài)解算

Photo by Mitch Nielsen on Unsplash

對于大多數(shù)MPU6050的應(yīng)用來說,獲取到的原始數(shù)據(jù)并沒有多大用處,我們需要對原始數(shù)據(jù)進(jìn)行姿態(tài)融合解算,最終得到姿態(tài)數(shù)據(jù),也就是三個(gè)歐拉角:航向角(yaw)、橫滾角(roll)和俯仰角(pitch)。

MPU6050內(nèi)部自帶數(shù)字運(yùn)動(dòng)處理器(DMP)硬件加速引擎,配合運(yùn)動(dòng)驅(qū)動(dòng)庫直接輸出四元數(shù),進(jìn)而很方便的計(jì)算出歐拉角,大大降低了主控MCU的負(fù)擔(dān)。本篇使用MPU6050的驅(qū)動(dòng)庫來獲取姿態(tài)數(shù)據(jù)。

1. MPU6050驅(qū)動(dòng)庫安裝

MPU6050的驅(qū)動(dòng)庫有很多,我們可以在IDE中單擊「項(xiàng)目」—「加載庫」—「管理庫」,在搜索欄輸入"6050",可以看到不同的驅(qū)動(dòng)庫。

多種驅(qū)動(dòng)庫

本篇我們使用的由國外大牛Jeff Rowberg開發(fā)的庫并沒有在列表中,需要下載后導(dǎo)入到Arduino。點(diǎn)擊跳轉(zhuǎn)到Github下載。

下載庫文件

下載到的庫文件其實(shí)是多種設(shè)備的IIC驅(qū)動(dòng)庫,我們這里只需要兩個(gè)文件夾下的文件。解壓后,進(jìn)入"Arduino"文件夾,里面的"I2Cdev"和"MPU6050"就是我們需要的文件。

選擇庫文件

找到Arduino的libraries文件路徑,Windows下路徑為"C:\Users\Tony\Documents\Arduino\libraries",修改“Tony”為你的電腦用戶名。我們拷貝這兩個(gè)文件夾到該路徑下,至此庫文件安裝完成。

拷貝庫文件

2. 實(shí)驗(yàn)材料

  • Uno R3開發(fā)板
  • 配套USB數(shù)據(jù)線
  • 面包板及配套連接線
  • MPU6050傳感器模塊

3. 實(shí)驗(yàn)步驟

1. 根據(jù)原理圖搭建電路圖。

MPU6050傳感器模塊的VCC、GND分別連接開發(fā)板的3.3V、GND,傳感器的SDA、SCL引腳連接開發(fā)板A4、A5引腳。

實(shí)驗(yàn)原理圖如下圖所示:

實(shí)驗(yàn)原理圖

實(shí)物連接圖如下圖所示:

實(shí)物連接圖

2. 新建sketch,拷貝如下代碼替換自動(dòng)生成的代碼并進(jìn)行保存。

/*
   DMP
   MPU6050姿態(tài)解算
*/

#include "I2Cdev.h"
#include "MPU6050_6Axis_MotionApps20.h"

MPU6050 mpu;
uint8_t fifoBuffer[64];
Quaternion q;
VectorFloat gravity;
float ypr[3];

void setup()
{
  Serial.begin(115200);
  mpu.initialize();
  mpu.dmpInitialize();
  mpu.CalibrateAccel(6);
  mpu.CalibrateGyro(6);
  mpu.PrintActiveOffsets();
  mpu.setDMPEnabled(true);
}

void loop()
{
  if (mpu.dmpGetCurrentFIFOPacket(fifoBuffer))
  {
    mpu.dmpGetQuaternion(&q, fifoBuffer);
    mpu.dmpGetGravity(&gravity, &q);
    mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
    Serial.print("ypr\t");
    Serial.print(ypr[0] * 180 / M_PI);
    Serial.print("\t");
    Serial.print(ypr[1] * 180 / M_PI);
    Serial.print("\t");
    Serial.println(ypr[2] * 180 / M_PI);
  }
}

3. 連接開發(fā)板,設(shè)置好對應(yīng)端口號(hào)和開發(fā)板類型,進(jìn)行程序下載。

程序下載

4. 實(shí)驗(yàn)現(xiàn)象

打開串口監(jiān)視器,波特率設(shè)置成與程序中相一致的115200。監(jiān)視器中輸出三個(gè)歐拉角數(shù)據(jù),移動(dòng)MPU6050,數(shù)據(jù)發(fā)生變化。

實(shí)驗(yàn)現(xiàn)象

關(guān)注公眾號(hào)「TonyCode」,后臺(tái)回復(fù)“提高”,獲取文中代碼。


TonyCode
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容