Robofun 機器人論壇

標題: 請問有關arduino四軸卡爾曼濾波的問題!! [打印本頁]

作者: snake0907    時間: 2013-6-11 17:47
標題: 請問有關arduino四軸卡爾曼濾波的問題!!
請問卡爾慢濾波中的:

#define Q_angle 0.01 // 角度數據置信度
#define Q_omega 0.0003 // 角速度數據置信度
#define R_angle 0.01 // 方差噪聲

這三個要如何決定???

這三個值會影響到哪些改變???

先說說我自己測試的結果:

我自己調了以後發現"角度數據置信度"調越大感測姿態的速度會越靈敏,但是對於抗震的效果就越差,調小則反之。


"角速度數據置信度" 這個值我調了後都沒什麼改變,不知是否有人也試過??

"方差噪聲" 這個值調大後,感測器的值會超出原本的大小,然後慢慢減低。

好像有一種自動調整這三個值的方法,不知是否有人知道??




Klm_angle += (omega2 - bias) * dt; // 先驗估計
P_00 += -(P_10 + P_01) * dt + Q_angle *dt;
P_01 += -P_11 * dt;
P_10 += -P_11 * dt;
P_11 += +Q_omega * dt; // 先驗估計誤差協方差
float K_0 = P_00 / (P_00 + R_angle);
float K_1 = P_10 / (P_00 + R_angle);
bias += K_1 * (angleA2 - Klm_angle);
Klm_angle += K_0 * (angleA2 - Klm_angle); // 後驗估計
P_00 -= K_0 * P_00;
P_01 -= K_0 * P_01;
P_10 -= K_1 * P_00;
P_11 -= K_1 * P_01;


謝謝
作者: vegewell    時間: 2013-6-12 03:42
回復 1# snake0907
也沒多少協方差數字可以選擇:大致
float Q_angle  =  0.01; //0.001
    float Q_gyro   =  0.003; //0.0003
    float R_angle  =  0.03;  //0.5就這幾個數字比較適合,
這是自然界物理現象的基本法則 ,卡爾曼濾波也遵循這法則,

作者: snake0907    時間: 2013-6-12 18:02
本帖最後由 snake0907 於 2013-6-12 18:04 編輯

回復 2# vegewell

請問調整這三個值會有什麼效果??

尤其是方差噪聲,我最不知道是什麼??

謝謝
作者: vegewell    時間: 2013-6-13 03:15
本帖最後由 vegewell 於 2013-6-13 03:16 編輯

回復 3# snake0907


   >>請問調整這三個值會有什麼效果??



卡爾曼濾波器就不斷的把covariance遞迴,從而估算出最優的溫度值。
他運行的很快,而且它只保留了上一時刻的covariance。


調整這三個值, 剛開始有明顯差異 ,但是你很快會知道如何調整才有意義, 不調整也行,


>>尤其是方差噪聲,我最不知道是什麼??
R_angle is the measurment noise covariance.
協方差R,我們的主觀觀測噪聲,
要大致瞭解 請讀此網頁:
Kalman Filter 介紹:
http://www.wretch.cc/blog/mamason79/25637416




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