對卡爾曼濾波的理解和初步計算

首先卡爾曼濾波是用來幫助測量的,是為了讓測量結果儘可能的逼近真實值。

看到一個很好的例子來說明卡爾曼濾波是什麼,在航海中,為了得到船的當前位置,航海長通常用前一時刻的船位置為基準,根據航向、航速和海流推算出下一個船位,我們稱之為估計船位;但是他不能輕易認為這個位置就是正確的位置,他還要透過適當的儀器測量得到另一個船位,稱之為測量船位(我們的測量儀器也不準)。這兩個船位一般不重合,航海長需要透過分析和判斷(或者說是用測量對估計船位進行修正)選擇一個最優的估計船位作為船的當前位置。那麼這個分析決策的過程就是卡爾曼濾波。

演算法的核心思想是根據當前的儀器“測量值” 和上一刻的 “估計值” 和 “誤差”,計算得到當前的最優量。

更具體的計算以我們的機器人運動中對朝向的估計為例,透過K-1時刻的位置和里程計的變化,我們獲得了K時刻的朝向A1=30(估計值) ,同時我們K時刻里程計的誤差(噪聲)是W1=5度(後面有具體計算的方法),同時我們透過慣性測量單元(IMU)可以獲得K時刻的朝向值A2=40(測量值)以及他的誤差(噪聲)是W2=2度。那麼我們現在有兩個朝向值,我們信哪一個呢?我們引入卡爾曼增益這個變數G,計算公式:G*G = W1*W1 / (W1*W1+W2*W2) ,從而得到G = 0。9285。那麼最終K時刻的朝向就是:A1+G*(A2-A1) =30+0。9285*(40-30) = 39。285。可以看出最終值是更接近誤差較小的測量值。

同理K+1時刻的最終值可以根據K時刻的資料來遞迴推導。最後如何計算K+1時刻里程計誤差W3呢(同樣W1是怎麼來的呢)?首先我們需要計算K時刻的最優估計誤差,其計算公式是:Yk = (I-Gk*H)*Wk-1。 本例就是:Y=sqrt((1-G)*W1*W1) = 1。337, 另外還有一個是你對K+1時刻估計的不確定度V=4,那麼K+1時刻的誤差W3=sqrt(Y*Y+V*V)=4。218。同理W1可以根據K-1時刻的相關量計算出來。

整個計算中誤差與測量資料是獨立變化的。最後附上一般形式卡爾曼濾波5大公式,找時間再徹底的推導一下。

​​

對卡爾曼濾波的理解和初步計算