再談IMU資料處理(濾波器)

2021-09-23 15:29:34 字數 2672 閱讀 6854

本文開始前,先回答乙個問題。

首先,筆者指出的是該模型下,意思是在上篇文章中設計的模型下得到的結果,不排除有更優秀的模型,能得到更佳的效能。卡爾曼濾波器得到的結果與模型密切相關,並不存在說只要是卡爾曼就一定比別的演算法好,還要看應用的場景是否受限;

最後,之所以上次提出乙個卡爾曼的例子,也主要是其**簡單,非常適合初學者理解其5個公式。

此外,上篇文章的卡爾曼,其實本質上來講與一階低通濾波類似

推導如下:

這裡,卡爾曼增益k為定值,並不是時變的,所以可以看出,最終得到的結構與一階低通幾乎一致的。

回答完卡爾曼的問題後,開始我們今天的主題。

一般來說,飛控imu的資料濾波採用低通濾波即可,截止頻率50以下,但是如果出現機體共振,或者說在某乙個特定的高頻下,震動明顯又該如何處理?

特別是針對比如機體軸距較小,機動性強的小飛機,假設有用資料的頻率在100hz以內,這時候假設有乙個120hz的高頻震動,如果採用100hz的低通濾波,由於濾波器對增益的衰減是乙個平緩的曲線(截止頻率越低,衰減越快),這時候對這個120hz的高頻震動就很難處理,假設為了衰減到一定的強度,這時候把截止頻率降低,加強濾波效果,但是有用的資料又會被濾除,同時延時也會增大。

針對以上問題,處理辦法是對這個特定的頻率採用帶阻或陷波濾波器,去除掉該干擾後,再進行低通濾波。

帶阻和陷波濾波器區別?

帶阻顧名思義是針對某一段的頻率範圍,而陷波則是針對某一具體的頻率點,且其對其他頻率段的增益幾乎不做處理,而帶阻則會有一些影響。

使用前提?

就是說什麼情況下使用這種方法,正如前面所說,是針對機身在某一特定頻率有共振的情況下,假如本身沒有共振,則沒有必要採取該處理。

為什麼說陷波對特定頻率處理好?

換個角度來提問,比如干擾是90hz,假設使用截止頻率為30hz的低通濾波,那按理來說不是也能濾除?為什麼還要另外加個濾波器處理這個90hz?

從濾波器的設計來看:

假設使用2階iir低通濾波,截止頻率30hz

圖中可以看出,在80hz的衰減大概是31db。

而採用同等階數的notch濾波,中心頻率設為80hz,頻寬10hz。

圖中可以看出,其在80hz的衰減達到了50db以上,說明加乙個notch濾波,對特定干擾的濾波效果更好。

使用該方法還有乙個前提,就是能準確估計出干擾的頻率,否則這個陷波濾波器也不知從何設計。圖中可以看出,假設你設計的陷波濾波器針對的是80hz的干擾,而實際的干擾假如在85左右,可以看出,85hz的衰減其實並沒有太大,即該濾波器並未能起作用

實驗驗證:

可以看出,陷波濾波器對90hz的頻率幅值已經濾除,而帶阻濾波正如設計的一樣,對80-99的區域有乙個抑制作用。說明最終效果正如我們想要的一樣。

放大觀察:

可以看出幾乎沒有延時,這時候對帶阻過後的資料進行低通濾波,假設截止頻率為80hz,則時域波形如下:

帶阻處理後的資料更光滑一些。這裡也說明如果對干擾頻率不是那麼精確的話,筆者建議使用帶阻濾波更加。

總結:

後記:

筆者之前對濾波器的處理認識不深,正好前陣子有遇到過類似上面提到的問題,用軟體低通濾波要不就是濾不掉干擾,要不就是有用資訊丟失過多,延時較大,導致控制還是很難控好。之前的經驗就是想辦法去除機身的干擾問題,比如結構、減震等。但實際工程上很難把控要求其他環節,所以軟體這邊只能硬上。通過這個問題的深層次**,也了解了更多方法,通過本篇文章分享出來,與讀者共同成長。

訊號處理 濾波器

濾波器有四種表示形式 差分方程 脈衝函式 傳輸函式和頻率響應。其中前兩個是定義在實數域中,後兩個定義在複數域中。首先看一下離散傅利葉變換的定義。我們由濾波器的差分形式退出濾波器的頻率響應形式。假設有濾波器的差分方程為 n k 0a ky n k mk 0bkx n k 對每一項進行離散傅利葉變換,得...

用設計好的濾波器對資料濾波

1.使用filter design工具設計好濾波器,匯出該濾波器的係數,分別為sos和g,直接回儲存在工作路徑中。通過下面這句 將儲存在sos和g中的多個係數轉為由b和a來表示的係數。b,a sos2tf sos,g 此時b和a就有資料了。然後再通過這句 將你需要濾波的資料x帶入 中即可。y fil...

matlab 數字訊號處理 FIR濾波器

matlab 數字訊號處理 fir濾波器 當我們處理一段訊號時,如圖1所示 往往需要通過消除雜訊,放大有效訊號的部分的處理,此時可以通過時域和頻域的方式來濾除雜訊。fir與iir的區別在於,fir具有嚴格的線性相位特性,但運算時間過長。而iir濾波器則可以大大的計算執行時間。頻域上消除雜訊成分則是通...