MPU6050 加速計濾波

2021-08-13 09:49:33 字數 3732 閱讀 7767

加速度計濾波實驗引數:

取樣頻率fs=250hz

截止頻率cutoff frequency

未開電機靜止

開電機懸停

未開電機轉動飛控

原始輸出(raw)

260 hz

260hz

260hz

mpu6050內部(lpf)

94 hz

94 hz

94 hz

2階(butterworth)

30 hz

30 hz

30 hz

8深度視窗滑動(window)

n/an/a

n/a資料分析

4組畫圖對比(a)

4組畫圖對比(c)

4組畫圖對比(f)

4組fft變換(b)

4組fft變換(d)

n/a8組 rmse (e)

n/a

說明:1.        所有資料**於mpu6050,微控制器取樣週期為4ms,即取樣頻率fs=250hz

3.        原始輸出raw:根據晶元手冊配置,低通濾波器最大頻寬為260hz,即截止頻率為260hz。近似可看成原始加速度計輸出

4.        mpu6050內部lpf:根據晶元手冊配置,lpf這裡選擇94hz,用於測試內部lpf效能

5.        2階butterworth:截止頻率選擇為30hz,對raw進行濾波

6.        8深度視窗滑動:目前四軸上廣泛使用的平均滑動濾波,深度為8,對raw進行濾波

測試結果(以下「>」表示:「效能好於」):

a(未開電機靜止):

結論:

靜態平滑效能:視窗滑動》butterworth>lpf>raw

b(未開電機靜止):

結論:

1.        從raw的fft變換結果可以看出靜態時的加速度計類似白雜訊,其振幅平均分布在fs/2上

2.        lpf的結果不盡如人意。lpf的截止頻率為94hz,理應在94hz處有較大的幅值下降,但是這種幅值變化的不明顯,由此可見mpu6050內建的lpf效能有待改進

3.        2階butterworth濾波器效果就好很多,在30hz以前和raw的頻譜大致相同,接著在30hz出現大幅度的幅值衰減,說明濾波器起到了效果

4.        視窗平均滑動濾波出現了匪夷所思的現象,這種幅值衰減特別有規律!鑑於筆者訊號分析學的很爛,這裡就不展開了。

5.        其實從視窗滑動濾波的fft結果就可以看出來效果了,簡單的平均濾波效果在頻譜上確實有不錯的效果,至少比內建的lpf效果要好。如果在四軸同時應用了lpf和視窗平均滑動,那麼效果會更好

c(開電機懸停):

結論:

開啟電機之後,結果同靜態平滑效能:視窗滑動》butterworth>lpf>raw

d(開電機懸停):

結論:

1.        從raw的fft變換結果可以看出開啟電機時的加速度計與靜止時的結果有了明顯不同:首先是振幅有了明顯的變化,從原先的200~600,到現在的10000~60000,這是由於開啟電機後的機械震動引起的巨大振幅;其次就是頻率分布,可以清楚地看到在40hz和90hz附近有較大的振幅分布,說明機械震動產生的訊號頻率大多數分布在這兩個頻率範圍附近,而這種頻率附近的訊號我們是不需要的,這也就是說:我們要採用某種濾波器,至少在

40hz

或者90hz

處截止,高於該頻率的訊號一律遮蔽。

2.        lpf的結果很奇怪。在低頻階段0~40hz的振幅極小,反而在100hz處有較大的幅值分布,看起來就像是高通濾波器,而不像是低通濾波器。雖然設定的lpf在94hz截止,但是在94hz後面仍然有較大的震動訊號出現,再次證明了mpu6050內建的lpf的效果確實不怎麼令人滿意

3.        2階butterworth濾波器效果比lpf效果好很多。在開啟電機後,可以看到在30hz之前的訊號頻譜和raw的分布基本一致,說明保留了真實的訊號輸出。而在30hz以後,其訊號的幅值有了大幅度的明顯衰減,有效的濾掉了高頻的電機震動引起的干擾訊號

4.        對於視窗平均滑動濾波依舊出現了匪夷所思的現象。這種有規律的頻譜實在是看不懂,不過在低頻段和原始輸出保持一致,而在高頻部分也有效的抑制了電機產生的震動訊號。所以這種方法應用在四軸上的加速度計濾波是可以的,至少比內部lpf效果要好。

e(8組 rmse):

這個圖很有意思,rmse(root-mean-square-error)均方根誤差,常用來表徵估計的準確程度。rmse越**明精度越高,這裡由於是靜止測試和開電機懸停測試,所以這裡的rmse用來表示資料的平滑性。

結論:

無論開電機與否,資料平滑性效能:視窗滑動》butterworth>lpf>raw

f(未開電機轉動):

該測試用來比較butterworth和視窗滑動濾波的延遲特性

結論:

資料平滑性效能指標:視窗滑動》butterworth>raw

為了更加清楚的看到延遲特性,下圖放大y軸在980次取樣點的三條輸出曲線:

結論:

資料延遲效能特性:raw>butterworth>視窗滑動,也就是說butterworth濾波延遲小於8深度的視窗滑動濾波。

最後總結:

1.        盡量不要用mpu6050內建的lpf濾波。雖然相比於原始加速度計輸出,該lpf可以平滑輸出,但是在fft頻譜上的表現相當差勁。

2.        廣泛使用的視窗平均滑動濾波無論在fft還是rmse表現上都有不錯的表現,所以一般基礎應用(低速運動或四軸初學者)採用視窗平均濾波是比較明智的選擇。

3.        想要達到更好的濾波效果,fir或者iir濾波器是更好的選擇。筆者測試2階30hz的butterworth濾波器雖然在平滑性rmse只比視窗平均滑動差了一點(但是比lpf要好),但是資料實時性效能指標上比前者響應速度提高了近一倍。因此在製作四軸的高階階段,可以考慮將視窗平均滑動換成butterworth濾波器。

MPU6050資料讀取

iicreadbytes devaddr,mpu6050 ra accel xout h,14,buffer 對於加計x軸的資料,buffer 0 存放高位 0xff,buffer 1 0x40存放低位 計算方法 if buffer 0 0x7f mpu6050 lastax buffer 0 25...

mpu6050 z軸校準 MPU6050校準

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

如何視覺化 MPU6050

1 需要兩個軟體 arduinoide和processing 2 需要乙個arduinoide庫 mpu6050 3 需要乙個 processing庫 toxiclibs 4 需要乙個arduino nano和一塊mpu6050小板 5 用arduinoide開啟專案檔案 c users admin...