深度解讀卡爾曼濾波原理
在網(wǎng)上看了不少與卡爾曼濾波相關(guān)的博客、論文,要么是只談理論、缺乏感性,或者有感性認(rèn)識,缺乏理論推導(dǎo)。能兼顧二者的少之又少,直到我看到了國外的一篇博文,真的驚艷到我了,不得不佩服作者這種細(xì)致入微的精神,翻譯過來跟大家分享一下。
我不得不說說卡爾曼濾波,因為它能做到的事情簡直讓人驚嘆!意外的是很少有軟件工程師和科學(xué)家對對它有所了解,這讓我感到沮喪,因為卡爾曼濾波是一個如此強(qiáng)大的工具,能夠在不確定性中融合信息,與此同時,它提取精確信息的能力看起來不可思議。
什么是卡爾曼濾波?
你可以在任何含有不確定信息的動態(tài)系統(tǒng)中使用卡爾曼濾波,對系統(tǒng)下一步的走向做出有根據(jù)的預(yù)測,即使伴隨著各種干擾,卡爾曼濾波總是能指出真實發(fā)生的情況。
在連續(xù)變化的系統(tǒng)中使用卡爾曼濾波是非常理想的,它具有占用內(nèi)存小的優(yōu)點(除了前一個狀態(tài)量外,不需要保留其它歷史數(shù)據(jù)),并且速度很快,很適合應(yīng)用于實時問題和嵌入式系統(tǒng)。
在Google上找到的大多數(shù)關(guān)于實現(xiàn)卡爾曼濾波的數(shù)學(xué)公式看起來有點晦澀難懂,這個狀況有點糟糕。實際上,如果以正確的方式看待它,卡爾曼濾波是非常簡單和容易理解的,下面我將用漂亮的圖片和色彩清晰的闡述它,你只需要懂一些基本的概率和矩陣的知識就可以了。
我們能用卡爾曼濾波做什么?
用玩具舉例:你開發(fā)了一個可以在樹林里到處跑的小機(jī)器人,這個機(jī)器人需要知道它所在的確切位置才能導(dǎo)航。
注意這個狀態(tài)只是關(guān)于這個系統(tǒng)基本屬性的一堆數(shù)字,它可以是任何其它的東西。在這個例子中是位置和速度,它也可以是一個容器中液體的總量,汽車發(fā)動機(jī)的溫度,用戶手指在觸摸板上的位置坐標(biāo),或者任何你需要跟蹤的信號。
這個機(jī)器人帶有GPS,精度大約為10米,還算不錯,但是,它需要將自己的位置精確到10米以內(nèi)。樹林里有很多溝壑和懸崖,如果機(jī)器人走錯了一步,就有可能掉下懸崖,所以只有GPS是不夠的。

或許我們知道一些機(jī)器人如何運動的信息:例如,機(jī)器人知道發(fā)送給電機(jī)的指令,知道自己是否在朝一個方向移動并且沒有人干預(yù),在下一個狀態(tài),機(jī)器人很可能朝著相同的方向移動。當(dāng)然,機(jī)器人對自己的運動是一無所知的:它可能受到風(fēng)吹的影響,輪子方向偏了一點,或者遇到不平的地面而翻倒。所以,輪子轉(zhuǎn)過的長度并不能精確表示機(jī)器人實際行走的距離,預(yù)測也不是很完美。
GPS 傳感器告訴了我們一些狀態(tài)信息,我們的預(yù)測告訴了我們機(jī)器人會怎樣運動,但都只是間接的,并且伴隨著一些不確定和不準(zhǔn)確性。但是,如果使用所有對我們可用的信息,我們能得到一個比任何依據(jù)自身估計更好的結(jié)果嗎?回答當(dāng)然是YES,這就是卡爾曼濾波的用處。
卡爾曼濾波是如何看到你的問題的
下面我們繼續(xù)以只有位置和速度這兩個狀態(tài)的簡單例子做解釋。
我們并不知道實際的位置和速度,它們之間有很多種可能正確的組合,但其中一些的可能性要大于其它部分:
,表示不確定性。
在上圖中,位置和速度是不相關(guān)的,這意味著由其中一個變量的狀態(tài)無法推測出另一個變量可能的值。下面的例子更有趣:位置和速度是相關(guān)的,觀測特定位置的可能性取決于當(dāng)前的速度:
這種情況是有可能發(fā)生的,例如,我們基于舊的位置來估計新位置。如果速度過高,我們可能已經(jīng)移動很遠(yuǎn)了。如果緩慢移動,則距離不會很遠(yuǎn)。跟蹤這種關(guān)系是非常重要的,因為它帶給我們更多的信息:其中一個測量值告訴了我們其它變量可能的值,這就是卡爾曼濾波的目的,盡可能地在包含不確定性的測量數(shù)據(jù)中提取更多信息!
這種相關(guān)性用協(xié)方差矩陣來表示,簡而言之,矩陣中的每個元素表示第 i 個和第 j 個狀態(tài)變量之間的相關(guān)度。(你可能已經(jīng)猜到協(xié)方差矩陣是一個對稱矩陣,這意味著可以任意交換 i 和 j)。協(xié)方差矩陣通常用“
”來表示,其中的元素則表示為“
”。

- 上一篇:正弦波的信號特性 2020/6/29
- 下一篇:開關(guān)電源PCB設(shè)計要點 2020/6/18