卡爾曼濾波簡單解釋

2021-06-19 16:27:36 字數 1282 閱讀 9064

卡爾曼濾波:以陀螺儀測量的角速度作為**值的控制量,加速度感測器測量的角度作為觀測值。下面程式中angle_m為測量角度,gyro_m為測量角速度,gyro_m*dt為控制量。

以下程式是按卡爾曼濾波的五個公式來編寫的。

x(k|k-1)=a x(k-1|k-1)+b u(k) ……….. (1)

p(k|k-1)=a p(k-1|k-1) a』+q ……… (2)

x(k|k)= x(k|k-1)+kg(k) (z(k)-h x(k|k-1)) ……… (3)

kg(k)= p(k|k-1) h』 / (h p(k|k-1) h』 + r) ……… (4)

p(k|k)=(

i-kg(k) h

)p(k|k-1) ……… (5)

對於單輸入單輸出系統,a、b

、h、i

不為矩陣且值都為1。

卡爾曼濾波引數的調整:其引數有三個,p0

是初始化最優角度估計的協方差(初始化最優角度估計可設為零),它是乙個初值。

q是**值的協方差,

r是測量值的協方差。對q和

r的設定只需記住,

q/(q+r)

的值就是卡爾曼增益的收斂值,比如其值為

0.2,那麼卡爾曼增益會向

0.2收斂(對於

0.2的含**釋一下,比如**角度值是

5度,角度測量值是

10度,那麼最優化角度為:

5+0.2*

(10-5)=6

。從這裡可以看出,卡爾曼增益越小,說明**值越可靠,最優化角度越接近**值;相反的,卡爾曼增益越大,說明測量值越可靠,最優化角度越接近測量值)。p0/(q+r)

反映收斂的快慢程度,該值設定越小,收斂越快,該值越大,收斂越慢(這裡的p0

是指初始最優角度值的協方差),因為卡爾曼增益收斂總的來說是很快的,所以該值設定大一點或小一點都沒什麼關係。

注:以下程式只用於說明演算法,存在語法錯誤,初始的引數也是隨意給定的。

x=0;   /* 最優角度初值*/

p=1;   /* 最優角度對應協方差初值*/

dt=0.02;

q=0.0025;

r=0.25;

void kalman_filter(float angle_m,float gyro_m) //gyro_m:gyro_measure 

從上面的程式可以看出,卡爾曼濾波是乙個遞推過程,初始的最優角度值可設為x=0

,初始最優角度值的協方差

p一定不能設為零,

dt是取樣週期,q 與

r可共同決定卡爾曼增益收斂的大小。

通俗解釋卡爾曼濾波

在學習卡爾曼濾波器之前,首先看看為什麼叫 卡爾曼 跟其他著名的理論 例如傅利葉變換,泰勒級數等等 一樣,卡爾曼也是乙個人的名字,而跟他們不同的是,他是個現代人!簡單來說,卡爾曼濾波器是乙個 optimal recursive data processing algorithm 最優化自回歸資料處理演...

通俗解釋卡爾曼濾波

假設你有兩個感測器,測的是同乙個訊號。可是它們每次的讀數都不太一樣,怎麼辦?取平均。再假設你知道其中貴的那個感測器應該準一些,便宜的那個應該差一些。那有比取平均更好的辦法嗎?加權平均。怎麼加權?假設兩個感測器的誤差都符合正態分佈,假設你知道這兩個正態分佈的方差,用這兩個方差值,此處省略若干數學公式 ...

卡爾曼濾波程式matlab 解釋

clear n 200 取200個數 w 1 0 w randn 1,n 產生乙個1 n的行向量,第乙個數為0,w為過程雜訊 其和後邊的v在卡爾曼理論裡均為高斯白雜訊 x 1 0 狀態x初始值 a 1 a為狀態轉移陣,此程式簡單起見取1 for k 2 n x k a x k 1 w k 1 系統狀...