对Kalman Filter的理解
1. 卡爾曼濾波理論回顧
? ? ? 對于一個動態(tài)系統(tǒng),我們首先定義一組狀態(tài)空間方程
? ? ?狀態(tài)方程:? ? ?
? ? ?測量方程: ? ???
? ? ? ? xk是狀態(tài)向量,zk是測量向量,Ak是狀態(tài)轉(zhuǎn)移矩陣,uk是控制向量,Bk是控制矩陣,wk是系統(tǒng)誤差(噪聲),Hk是測量矩陣,vk是測量誤差(噪聲)。wk和vk都是高斯噪聲,即
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 整個卡爾曼濾波的過程就是個遞推計算的過程,不斷的“預(yù)測——更新——預(yù)測——更新……”
預(yù)測
? ? ?預(yù)測狀態(tài)值: ? ? ? ? ? ? ?
? ? ?預(yù)測最小均方誤差: ??
更新
? ? 測量誤差: ? ? ? ? ? ? ? ? ??
? ? 測量協(xié)方差: ? ? ? ? ? ? ? ?
? ? 最優(yōu)卡爾曼增益: ? ? ? ??
? ? 修正狀態(tài)值: ? ? ? ? ? ? ? ?
? ? 修正最小均方誤差: ? ??
算法的核心思想是,根據(jù)當(dāng)前的儀器"測量值" 和上一刻的 "預(yù)測量" 和 "誤差",計算得到當(dāng)前的最優(yōu)量. ? 再?預(yù)測下一刻的量,?里面比較突出的是觀點是.?把誤差納入計算, 而且分為預(yù)測誤差和測量誤差兩種.通稱為 噪聲。還有一個非常大的特點是,誤差獨立存在,?始終不受測量數(shù)據(jù)的影響。
2. 例子
上面的ppt有助于入門理解。
但是在編程的時候你會發(fā)現(xiàn),解釋里面的數(shù)值23 沒有很明確的指出,是指的那個時刻的23 是預(yù)測的23 還是上一課測量的23。
下面這段文字會有助于你更清晰的理解:
?
卡爾曼濾波是統(tǒng)計學(xué)的程序表達(dá),要想深入理解,公式三 協(xié)方差的背后意義 需要學(xué)習(xí)統(tǒng)計學(xué)。
如果僅僅是使用的話,這5個公式套進(jìn)程序里面還是很容易的。
看到這里如果你明白了原理,你再回過頭看看,會發(fā)現(xiàn),誤差是獨立存在的,誤差不受數(shù)據(jù)的影響。誤差按照統(tǒng)計學(xué)的協(xié)方差公式更新,跟數(shù)據(jù)無關(guān)。而且誤差是不斷變化的。
3. 通俗理解
? ? 假設(shè)你有兩個傳感器,測的是同一個信號。可是它們每次的讀數(shù)都不太一樣,怎么辦?取平均。再假設(shè)你知道其中貴的那個傳感器應(yīng)該準(zhǔn)一些,便宜的那個應(yīng)該差一些。那有比取平均更好的辦法嗎?加權(quán)平均。怎么加權(quán)?假設(shè)兩個傳感器的誤差都符合正態(tài)分布,假設(shè)你知道這兩個正態(tài)分布的方差,用這兩個方差值,(此處省略若干數(shù)學(xué)公式),你可以得到一個“最優(yōu)”的權(quán)重。接下來,重點來了:假設(shè)你只有一個傳感器,但是你還有一個數(shù)學(xué)模型。模型可以幫你算出一個值,但也不是那么準(zhǔn)。怎么辦?把模型算出來的值,和傳感器測出的值,(就像兩個傳感器那樣),取加權(quán)平均。OK,最后一點說明:你的模型其實只是一個步長的,也就是說,知道x(k),我可以求x(k+1)。問題是x(k)是多少呢?答案:x(k)就是你上一步卡爾曼濾波得到的、所謂加權(quán)平均之后的那個、對x在k時刻的最佳估計值。于是迭代也有了。這就是卡爾曼濾波。
? ? 卡爾曼濾波(Kalman filter)是一種高效率的遞歸濾波器(自回歸濾波器),它能夠從一系列的不完全及包含噪聲的測量中,估計動態(tài)系統(tǒng)的狀態(tài)。卡爾曼濾波會根據(jù)各測量量在不同時間下的值,考慮各時間下的聯(lián)合分布,再產(chǎn)生對未知變數(shù)的估計,因此會以只以單一測量量為基礎(chǔ)的估計方式要準(zhǔn)。
? ??卡爾曼濾波的算法是二步驟的程序。在估計步驟中,卡爾曼濾波會產(chǎn)生有關(guān)目前狀態(tài)的估計,其中也包括不確定性。只要觀察到下一個量測(其中一定含有某種程度的誤差,包括隨機(jī)噪聲)。會通過加權(quán)平均來更新估計值,而確定性越高的量測加權(quán)比重也越高。算法是迭代的,可以在實時控制系統(tǒng)中執(zhí)行,只需要目前的輸入量測、以往的計算值以及其不確定性矩陣,不需要其他以往的資訊。
? ? 使用卡爾曼濾波不用假設(shè)誤差是正態(tài)分布[3],不過若所有的誤差都是正態(tài)分布,卡爾曼濾波可以得到正確的條件機(jī)率估計。也發(fā)展了一些擴(kuò)展或是廣義的卡爾曼濾波,例如運作在非線性糸統(tǒng)的擴(kuò)展卡爾曼濾波及無損卡爾曼濾波(unscented Kalman filter)。底層的模型類似隱馬爾可夫模型,不過潛在變量的狀態(tài)空間是連續(xù)的,而且所有潛在變量及可觀測變數(shù)都是正態(tài)分布。
? ? 卡爾曼濾波的一個典型實例是從一組有限的,包含噪聲的,通過對物體位置的觀察序列(可能有偏差)預(yù)測出物體的位置的坐標(biāo)及速度。在很多工程應(yīng)用(如雷達(dá)、計算機(jī)視覺)中都可以找到它的身影。同時,卡爾曼濾波也是控制理論以及控制系統(tǒng)工程中的一個重要課題。例如,對于雷達(dá)來說,人們感興趣的是其能夠跟蹤目標(biāo)。但目標(biāo)的位置、速度、加速度的測量值往往在任何時候都有噪聲。卡爾曼濾波利用目標(biāo)的動態(tài)信息,設(shè)法去掉噪聲的影響,得到一個關(guān)于目標(biāo)位置的好的估計。這個估計可以是對當(dāng)前目標(biāo)位置的估計(濾波),也可以是對于將來位置的估計(預(yù)測),也可以是對過去位置的估計(插值或平滑)。
總結(jié)
以上是生活随笔為你收集整理的对Kalman Filter的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。