Robofun 機器人論壇

標題: 關於濾波 [打印本頁]

作者: undead1515    時間: 2011-6-7 11:08
標題: 關於濾波
如題  我用hitac h48c的三軸加速規所量的訊號為類比
所以理當來說 要先進行濾波的動作 不然誤差會很大

爬了一下版 有人提到 中值濾波法

是否有人可以提供arduino的程式碼 讓愚蠢的原po看一下到底是怎麼運算的

還是各位神人大大有另外的濾波方法 簡單的例子 虛擬碼 也可以

畢竟問了估狗大神 提供的演算法真的很匪夷所思 @@

謝謝了
作者: g921002    時間: 2011-6-7 22:01
如題  我用hitac h48c的三軸加速規所量的訊號為類比
所以理當來說 要先進行濾波的動作 不然誤差會很大


甚麼誤差會很大?hitac h48c用過,性能不差的。
先想清楚你所謂的「濾波」,是要濾甚麼物理量。
作者: undead1515    時間: 2011-6-8 14:11
恩 濾波不就是要濾 剛抓進來的raw data裡

含有的雜訊 比如說 那曲線更圓滑阿

或者是 把sensor靜止時 有一些雜訊

把這些濾掉這樣

不知道這樣有沒有比較清楚一點@@
作者: g921002    時間: 2011-6-8 23:41
恩 濾波不就是要濾 剛抓進來的raw data裡
含有的雜訊 比如說 那曲線更圓滑阿


不是這樣的。

或者是 把sensor靜止時 有一些雜訊
把這些濾掉這樣
不知道這樣有沒有比較清楚一點@@


你怎樣知道你濾掉的是雜訊,而不是資訊?
另外你提到的中值濾波,這種非線性濾波器對隨機噪訊去除能力不佳,但對窗口內脈衝雜訊的應對能力比較好。
如果只是單純的濾雜訊,用平均值濾波的頻率響應還比中值濾波好。但是平均值濾波的取樣窗口跟你系統的滯後影響很大。
如果做的不好,就會發生受到外力時,量測輸出還沒有量測到外力發生。

舉例來說,就是別人推你一下,你還沒覺得被推了,人就先摔到地上的意思差不多。
作者: undead1515    時間: 2011-6-13 15:04
恩恩  感謝G大詳細的說明

那G大可以稍微說明一下甚麼是 "平均值濾波的頻率響應"??

或者是有詳細的例子 可以讓愚蠢的我看一下

畢竟是要實做出來

謝謝G大了
作者: g921002    時間: 2011-6-13 20:43
這應該是我看過講的最簡單的....
http://tw.myblog.yahoo.com/erics ... 7&l=f&fid=7
作者: undead1515    時間: 2011-6-19 02:20
恩恩 感謝G大提供的連結 我會仔細研讀看看低
作者: F91    時間: 2011-6-21 14:41
小弟提供兩個濾波方法,
一個容易實現但擴充性不高,另一個數學複雜(但其實很容易實現)且擴充性高.

1. Moving Average (移動平均值)
請參考
http://zh.wikipedia.org/wiki/%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87
大概3行C Code就可以實現,是目前我所知最簡單的濾波方法.

*優點: 真的很簡單實現,保證濾出來很平滑
*缺點: 因為是用平均的,所以出來的訊號會有點delay的感覺,如果要求要即時,這方法就不適用

2.  Kalman Filter (卡曼濾波器)
請參考
http://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf  (12頁的5個數學式子)
大概5行C Code就可以實現 單軸的濾波, 你要3軸的話就是15行

*優點: 可以跟陀螺儀(Gyro)繼續做感測融合(sensor fusion),可估測機器人的姿態
*缺點: 數學看起來很複雜,大部分人望之卻步

------------------
這兩個方法是我最早學到的濾波方法,一個是五行拳,一個是降龍十八掌,
自從會了降龍十八掌後,不管是打大魔王 小雜魚 都是用它打~~
(會降龍十八掌 誰還想用五行拳阿 客官 你說是嗎?@@")
阿 好像離題了! 就降子....
作者: g921002    時間: 2011-6-23 00:02
本帖最後由 g921002 於 2011-6-23 00:11 編輯

樓上的,那篇卡曼的文章只是簡介,雖然理論上的數學是這樣。但是用的時候要很小心。
因為那篇文章再講卡曼的數學的做法,但是對其室溫的模型描述是過於簡略的。他的數學模明會退化到ㄧ階IIR低通濾波器。

Kalman filter只要你的進程方程跟觀測方程下的設定有問題,基本上就是garbage in, garbage out.
如果有玩四軸或直升機,你會發現很多人是用加速規跟陀螺儀做卡曼,如果你再仔細一點看,你會發現他們都假設不會有重力項以外的力滲入加速規的量測量,如果再仔細一點看,你會發現他們的噪訊協方差是定值。而整個的數學模型會退化到最小二乘法的基本模型,而且如果是用單晶片做計算平台,很容易會因為捨去誤差造成矩陣對稱性會喪失而收斂狀態不佳(或發散).
與其這樣還不如用互補濾波器還比較簡單,而且code的代價比較小。
別忘了,卡曼裡面還要做反矩陣的。
MIT有2篇技術簡報很值得參考
http://ocw.mit.edu/courses/aeron ... otes/lecture_15.pdf
http://web.mit.edu/scolton/www/filter.pdf
作者: F91    時間: 2011-6-23 17:34
G大,

你說的"互補濾波器",我以前有看過類似的,只差在用gyro跟inclinometer.
http://www.geology.smu.edu/dpa-www/robo/balance/inertial.pdf

關於你說的Kalman Filter 的 進程方程 跟 觀測方程
(在probabilistic robotics 我們通常稱為 motion model , sensor model)
的確照paper第12頁上的做法,Kalman filter的效果會類似低通濾波器,
但是我之所以這樣子建議是因為考慮到未來的擴充性,
譬如:
實驗1: 用KF濾 加速規雜訊,用來算機器人的加速度.
實驗2: 用KF把 加速規 & 陀螺儀 感測融合,用來算機器人三軸的姿態.
實驗3: 用KF把 加速規 & 陀螺儀 & 雷射 感測融合,用來算機器人的定位和環境地圖


兩個方法的差別在基本假設不同,
如果雜訊是高頻或低頻的, KF的效果不會比頻率型的濾波器還好,
如果雜訊是機率型的,KF的效果會比頻率型濾波器的好,

考量到未來的應用性,我才會建議用KF,
但如G大所說,的確一般初學者會產生那些問題.
作者: F91    時間: 2011-6-23 17:51
所以我說 這個就像降龍十八掌一樣,
內力不夠一施展起來就經脈俱碎,
內力夠的話,可以排山倒海~~~~
(好吧! 我承認我這篇是來賺積分的 )
作者: undead1515    時間: 2011-6-28 11:04
感謝兩位大大詳細的說明

能否請F大提供這兩種濾波方法的code給愚蠢的po看一下

思考了兩天 還是做不太出來

麻煩了大大
作者: g921002    時間: 2011-6-29 17:00
先把你寫的CODE秀出來再說。因為這兩種方法的CODE可以google的到。
作者: undead1515    時間: 2011-7-5 11:34
第一種的我大概知道怎麼去撰寫

可是我真的對 kalman不知道該怎麼寫

可以請兩位大大 先提供 虛擬碼  我再來努力撰寫看看

因為kalman架構還是基本上看不太懂

之後我再貼上來看看 對不對

可以嗎??




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2