MPU6050單軸雙漿姿態平衡PID調戲之姿態解算

2021-09-12 07:21:48 字數 2586 閱讀 2990

最近看群裡部分小夥伴對於6050如何計算姿態比較感興趣,自己也想對這段時間的學習做個總結,這次來說說姿態計算的方法,其實還不懂其中數學原理,正好自己也當作學習。

一定要確認mpu6050的加速度計:ax, ay, az,陀螺儀:gx, gy, gz的資料沒有問題。比如一下幾種:

1.初始化後,靜止平放的時候,資料跳變非常頻繁,而且幅度比較大,例如:

ax:100 100 100 103  91 98   99  120  20000 100 100 102
其中20000這個數字經常出現,其他各種也是如此,有人說這個模組原始資料就是毛刺很多,做個濾波就可以了,我把初始化**調了乙個月也沒能將資料穩定下來,而且用上面的資料,融合算出來的姿態跳變也非常快。不穩定。

如果出現以上問題,可以考慮幾個方面:**問題,沒有正確初始化;iic驅動的問題(我的就是這個)。

加速度計,我的理解,這是檢查x,y,z軸受力的。所以原始資料經過轉化後,應該得到的是各個軸的受力情況,理想狀態下,平放靜止的時候,輸出應該是, x=0, y=0, z=重力,單位是g(就是重力加速度9.8那個)。就是說,加速度計檢查的是運動的狀態,轉化成各軸的受力,經過對各軸的向量進行三角函式的操作,也可以知道靜止狀態下的角度。如果運動起來,瞬時的計算角度誤差比較大。

陀螺儀,這是測算角速度的,單位:度/每秒。就是計算繞x,y,z軸的三個角速度。平放靜止狀態下,各軸理想都是0。但是當模組進行運動的時候,各軸就開始有速度體現了。

角速度能反映物體的圓周運動狀態,加速度能能反映物體的靜止和直線運動狀態,兩者互補就能識別很複雜的運動狀態,如四軸飛行器的姿態、人行走的步態、空中滑鼠的位移量。這就是等下要用的互補濾波演算法。

數學原理我不懂,這裡只做應用介紹。首先找乙份完整的mahony**,網上有蠻多的。這裡感謝各位前輩的奉獻。

void

mahony_update_9x

(float gx,

float gy,

float gz,

float ax,

float ay,

float az,

float mx,

float my,

float mz)

;//結合地磁計可以用這個

void

mahony_update_6x

(float gx,

float gy,

float gz,

float ax,

float ay,

float az)

;void

mahony_init

(float samplefrequency)

;void

mahony_computeangles

(void);

float

getroll

(void);

float

getpitch

(void);

float

getyaw

(void

);

用到的**就以上幾個。使用流程如下。

mpu.

readacceldata

(accelcount)

; accelcount[0]

-= accel_offset_x;

accelcount[1]

-= accel_offset_y;

accelcount[2]

+= accel_offset_z;

ax =

(float

)(accelcount[0]

)*ares;

//轉換ares= 1/16384

ay =

(float

)(accelcount[1]

)*ares;

az =

(float

)(accelcount[2]

)*ares;

mpu.

readgyrodata

(gyrocount)

; gyrocount[0]

-= gyro_offset_x;

gyrocount[1]

-= gyro_offset_y;

gyrocount[2]

-= gyro_offset_z;

gx =

(float

)(gyrocount[0]

)*gres ;

//轉換 gres = 2000.0 / 32768.0

gy =

(float

)(gyrocount[1]

)*gres ;

gz =

(float

)(gyrocount[2]

)*gres ;

mahony_update_6x

(gx, gy, gz, ax, ay, az)

;mahony_computeangles()

;getroll()

;//獲取翻滾角

以上便是解算的過程,至於原理等,還不清楚如何,計畫在接下來的計畫中,再細細體會。

mpu6050 z軸校準 MPU6050校準

前用匿名四軸的 稱植過來發現求出的 pitch 與roll 一直不斷的增加,不知道什麼原因,靜止放著也不行。看了不少四元數的資料,能看懂,但是結合資料融合又糊了。加上卡爾漫資料也就那樣,可 能是我處理得有問題。偶然翻帖看到了 dmp,於是打算移植過來看看。花了兩三的時間總算成功了。現在把一些移植過程...

MPU6050六軸感測器筆記

mpu6050六軸感測器 1 自帶數字運動處理 2 整合可程式控制 陀螺儀 3 整合可程式控制 加速度感測器 4 自帶數字溫度感測器 5 可輸出中斷 支援姿勢識別各種動作感應功能 6 自帶1024位元組fifo 有助於降低系統功耗 7 高達400khz 的iic通訊介面 8 超小封裝尺寸 4 4 0...

關於MPU6050姿態解算的理解與認識

謹以此紀念兩天以來的對電子羅盤的認識與學習 mpu6050常用作提供飛控執行時的姿態測量和計算,在在姿態結算中有幾個重要的概念,尤拉角 四元數等。尤拉角 用來表徵三維空間中運動物體繞著座標軸旋轉的情況。即物體的每時每秒的姿態可以由尤拉角表出。四元數 超複數,q q0,q1,q2,q3 q0位實數,q...