深度解讀卡爾曼濾波原理
在網(wǎng)上看了不少與卡爾曼濾波相關(guān)的博客、論文,要么是只談理論、缺乏感性,或者有感性認(rèn)識(shí),缺乏理論推導(dǎo)。能兼顧二者的少之又少,直到我看到了國(guó)外的一篇博文,真的驚艷到我了,不得不佩服作者這種細(xì)致入微的精神,翻譯過(guò)來(lái)跟大家分享一下。
我不得不說(shuō)說(shuō)卡爾曼濾波,因?yàn)樗茏龅降氖虑楹?jiǎn)直讓人驚嘆!意外的是很少有軟件工程師和科學(xué)家對(duì)對(duì)它有所了解,這讓我感到沮喪,因?yàn)榭柭鼮V波是一個(gè)如此強(qiáng)大的工具,能夠在不確定性中融合信息,與此同時(shí),它提取精確信息的能力看起來(lái)不可思議。
什么是卡爾曼濾波?
你可以在任何含有不確定信息的動(dòng)態(tài)系統(tǒng)中使用卡爾曼濾波,對(duì)系統(tǒng)下一步的走向做出有根據(jù)的預(yù)測(cè),即使伴隨著各種干擾,卡爾曼濾波總是能指出真實(shí)發(fā)生的情況。
在連續(xù)變化的系統(tǒng)中使用卡爾曼濾波是非常理想的,它具有占用內(nèi)存小的優(yōu)點(diǎn)(除了前一個(gè)狀態(tài)量外,不需要保留其它歷史數(shù)據(jù)),并且速度很快,很適合應(yīng)用于實(shí)時(shí)問(wèn)題和嵌入式系統(tǒng)。
在Google上找到的大多數(shù)關(guān)于實(shí)現(xiàn)卡爾曼濾波的數(shù)學(xué)公式看起來(lái)有點(diǎn)晦澀難懂,這個(gè)狀況有點(diǎn)糟糕。實(shí)際上,如果以正確的方式看待它,卡爾曼濾波是非常簡(jiǎn)單和容易理解的,下面我將用漂亮的圖片和色彩清晰的闡述它,你只需要懂一些基本的概率和矩陣的知識(shí)就可以了。
我們能用卡爾曼濾波做什么?
用玩具舉例:你開(kāi)發(fā)了一個(gè)可以在樹(shù)林里到處跑的小機(jī)器人,這個(gè)機(jī)器人需要知道它所在的確切位置才能導(dǎo)航。
注意這個(gè)狀態(tài)只是關(guān)于這個(gè)系統(tǒng)基本屬性的一堆數(shù)字,它可以是任何其它的東西。在這個(gè)例子中是位置和速度,它也可以是一個(gè)容器中液體的總量,汽車(chē)發(fā)動(dòng)機(jī)的溫度,用戶(hù)手指在觸摸板上的位置坐標(biāo),或者任何你需要跟蹤的信號(hào)。
這個(gè)機(jī)器人帶有GPS,精度大約為10米,還算不錯(cuò),但是,它需要將自己的位置精確到10米以?xún)?nèi)。樹(shù)林里有很多溝壑和懸崖,如果機(jī)器人走錯(cuò)了一步,就有可能掉下懸崖,所以只有GPS是不夠的。
或許我們知道一些機(jī)器人如何運(yùn)動(dòng)的信息:例如,機(jī)器人知道發(fā)送給電機(jī)的指令,知道自己是否在朝一個(gè)方向移動(dòng)并且沒(méi)有人干預(yù),在下一個(gè)狀態(tài),機(jī)器人很可能朝著相同的方向移動(dòng)。當(dāng)然,機(jī)器人對(duì)自己的運(yùn)動(dòng)是一無(wú)所知的:它可能受到風(fēng)吹的影響,輪子方向偏了一點(diǎn),或者遇到不平的地面而翻倒。所以,輪子轉(zhuǎn)過(guò)的長(zhǎng)度并不能精確表示機(jī)器人實(shí)際行走的距離,預(yù)測(cè)也不是很完美。
GPS 傳感器告訴了我們一些狀態(tài)信息,我們的預(yù)測(cè)告訴了我們機(jī)器人會(huì)怎樣運(yùn)動(dòng),但都只是間接的,并且伴隨著一些不確定和不準(zhǔn)確性。但是,如果使用所有對(duì)我們可用的信息,我們能得到一個(gè)比任何依據(jù)自身估計(jì)更好的結(jié)果嗎?回答當(dāng)然是YES,這就是卡爾曼濾波的用處。
卡爾曼濾波是如何看到你的問(wèn)題的
下面我們繼續(xù)以只有位置和速度這兩個(gè)狀態(tài)的簡(jiǎn)單例子做解釋。
我們并不知道實(shí)際的位置和速度,它們之間有很多種可能正確的組合,但其中一些的可能性要大于其它部分:
卡爾曼濾波假設(shè)兩個(gè)變量(位置和速度,在這個(gè)例子中)都是隨機(jī)的,并且服從高斯分布。每個(gè)變量都有一個(gè)均值 μ,表示隨機(jī)分布的中心(最可能的狀態(tài)),以及方差
,表示不確定性。
在上圖中,位置和速度是不相關(guān)的,這意味著由其中一個(gè)變量的狀態(tài)無(wú)法推測(cè)出另一個(gè)變量可能的值。下面的例子更有趣:位置和速度是相關(guān)的,觀(guān)測(cè)特定位置的可能性取決于當(dāng)前的速度:
這種情況是有可能發(fā)生的,例如,我們基于舊的位置來(lái)估計(jì)新位置。如果速度過(guò)高,我們可能已經(jīng)移動(dòng)很遠(yuǎn)了。如果緩慢移動(dòng),則距離不會(huì)很遠(yuǎn)。跟蹤這種關(guān)系是非常重要的,因?yàn)樗鼛Ыo我們更多的信息:其中一個(gè)測(cè)量值告訴了我們其它變量可能的值,這就是卡爾曼濾波的目的,盡可能地在包含不確定性的測(cè)量數(shù)據(jù)中提取更多信息!
這種相關(guān)性用協(xié)方差矩陣來(lái)表示,簡(jiǎn)而言之,矩陣中的每個(gè)元素表示第 i 個(gè)和第 j 個(gè)狀態(tài)變量之間的相關(guān)度。(你可能已經(jīng)猜到協(xié)方差矩陣是一個(gè)對(duì)稱(chēng)矩陣,這意味著可以任意交換 i 和 j)。協(xié)方差矩陣通常用“”來(lái)表示,其中的元素則表示為“”。
- 上一篇:正弦波的信號(hào)特性 2020/6/29
- 下一篇:開(kāi)關(guān)電源PCB設(shè)計(jì)要點(diǎn) 2020/6/18