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