當(dāng)前位置:首頁 > 公眾號精選 > 21ic電子網(wǎng)
[導(dǎo)讀]在網(wǎng)上看了不少與卡爾曼濾波相關(guān)的博客、論文,要么是只談理論、缺乏感性,或者有感性認(rèn)識,缺乏理論推導(dǎo)。能兼顧二者的少之又少,直到我看到了國外的一篇博文,真的驚艷到我了,不得不佩服作者這種細(xì)致入微的精神,翻譯過來跟大家分享一下。

在網(wǎng)上看了不少與卡爾曼濾波相關(guān)的博客、論文,要么是只談理論、缺乏感性,或者有感性認(rèn)識,缺乏理論推導(dǎo)。能兼顧二者的少之又少,直到我看到了國外的一篇博文,真的驚艷到我了,不得不佩服作者這種細(xì)致入微的精神,翻譯過來跟大家分享一下。


我不得不說說卡爾曼濾波,因?yàn)樗茏龅降氖虑楹喼弊屓梭@嘆!意外的是很少有軟件工程師和科學(xué)家對對它有所了解,這讓我感到沮喪,因?yàn)榭柭鼮V波是一個如此強(qiáng)大的工具,能夠在不確定性中融合信息,與此同時,它提取精確信息的能力看起來不可思議。


什么是卡爾曼濾波?


你可以在任何含有不確定信息的動態(tài)系統(tǒng)中使用卡爾曼濾波,對系統(tǒng)下一步的走向做出有根據(jù)的預(yù)測,即使伴隨著各種干擾,卡爾曼濾波總是能指出真實(shí)發(fā)生的情況。


連續(xù)變化的系統(tǒng)中使用卡爾曼濾波是非常理想的,它具有占用內(nèi)存小的優(yōu)點(diǎn)(除了前一個狀態(tài)量外,不需要保留其它歷史數(shù)據(jù)),并且速度很快,很適合應(yīng)用于實(shí)時問題和嵌入式系統(tǒng)。


在Google上找到的大多數(shù)關(guān)于實(shí)現(xiàn)卡爾曼濾波的數(shù)學(xué)公式看起來有點(diǎn)晦澀難懂,這個狀況有點(diǎn)糟糕。實(shí)際上,如果以正確的方式看待它,卡爾曼濾波是非常簡單和容易理解的,下面我將用漂亮的圖片和色彩清晰的闡述它,你只需要懂一些基本的概率和矩陣的知識就可以了。


我們能用卡爾曼濾波做什么?


用玩具舉例:你開發(fā)了一個可以在樹林里到處跑的小機(jī)器人,這個機(jī)器人需要知道它所在的確切位置才能導(dǎo)航。


看完這篇卡爾曼濾波原理,我被驚到了!


我們可以說機(jī)器人有一個狀態(tài)看完這篇卡爾曼濾波原理,我被驚到了!,表示位置和速度:

看完這篇卡爾曼濾波原理,我被驚到了!

注意這個狀態(tài)只是關(guān)于這個系統(tǒng)基本屬性的一堆數(shù)字,它可以是任何其它的東西。在這個例子中是位置和速度,它也可以是一個容器中液體的總量,汽車發(fā)動機(jī)的溫度,用戶手指在觸摸板上的位置坐標(biāo),或者任何你需要跟蹤的信號。


這個機(jī)器人帶有GPS,精度大約為10米,還算不錯,但是,它需要將自己的位置精確到10米以內(nèi)。樹林里有很多溝壑和懸崖,如果機(jī)器人走錯了一步,就有可能掉下懸崖,所以只有GPS是不夠的。


看完這篇卡爾曼濾波原理,我被驚到了!

或許我們知道一些機(jī)器人如何運(yùn)動的信息:例如,機(jī)器人知道發(fā)送給電機(jī)的指令,知道自己是否在朝一個方向移動并且沒有人干預(yù),在下一個狀態(tài),機(jī)器人很可能朝著相同的方向移動。當(dāng)然,機(jī)器人對自己的運(yùn)動是一無所知的:它可能受到風(fēng)吹的影響,輪子方向偏了一點(diǎn),或者遇到不平的地面而翻倒。所以,輪子轉(zhuǎn)過的長度并不能精確表示機(jī)器人實(shí)際行走的距離,預(yù)測也不是很完美。


GPS 傳感器告訴了我們一些狀態(tài)信息,我們的預(yù)測告訴了我們機(jī)器人會怎樣運(yùn)動,但都只是間接的,并且伴隨著一些不確定和不準(zhǔn)確性。但是,如果使用所有對我們可用的信息,我們能得到一個比任何依據(jù)自身估計(jì)更好的結(jié)果嗎?回答當(dāng)然是YES,這就是卡爾曼濾波的用處。


卡爾曼濾波是如何看到你的問題的


下面我們繼續(xù)以只有位置和速度這兩個狀態(tài)的簡單例子做解釋。


看完這篇卡爾曼濾波原理,我被驚到了!

我們并不知道實(shí)際的位置和速度,它們之間有很多種可能正確的組合,但其中一些的可能性要大于其它部分:


看完這篇卡爾曼濾波原理,我被驚到了!


卡爾曼濾波假設(shè)兩個變量(位置和速度,在這個例子中)都是隨機(jī)的,并且服從高斯分布。每個變量都有一個均值 μ,表示隨機(jī)分布的中心(最可能的狀態(tài)),以及方差看完這篇卡爾曼濾波原理,我被驚到了!,表示不確定性。


看完這篇卡爾曼濾波原理,我被驚到了!


在上圖中,位置和速度是不相關(guān)的,這意味著由其中一個變量的狀態(tài)無法推測出另一個變量可能的值。下面的例子更有趣:位置和速度是相關(guān)的,觀測特定位置的可能性取決于當(dāng)前的速度:


看完這篇卡爾曼濾波原理,我被驚到了!


這種情況是有可能發(fā)生的,例如,我們基于舊的位置來估計(jì)新位置。如果速度過高,我們可能已經(jīng)移動很遠(yuǎn)了。如果緩慢移動,則距離不會很遠(yuǎn)。跟蹤這種關(guān)系是非常重要的,因?yàn)樗鼛Ыo我們更多的信息:其中一個測量值告訴了我們其它變量可能的值,這就是卡爾曼濾波的目的,盡可能地在包含不確定性的測量數(shù)據(jù)中提取更多信息!


這種相關(guān)性用協(xié)方差矩陣來表示,簡而言之,矩陣中的每個元素看完這篇卡爾曼濾波原理,我被驚到了!表示第 i 個和第 j 個狀態(tài)變量之間的相關(guān)度。(你可能已經(jīng)猜到協(xié)方差矩陣是一個對稱矩陣,這意味著可以任意交換 i 和 j)。協(xié)方差矩陣通常用“看完這篇卡爾曼濾波原理,我被驚到了!”來表示,其中的元素則表示為“看完這篇卡爾曼濾波原理,我被驚到了!”。


看完這篇卡爾曼濾波原理,我被驚到了!


使用矩陣來描述問題


我們基于高斯分布來建立狀態(tài)變量,所以在時刻 k 需要兩個信息:最佳估計(jì)看完這篇卡爾曼濾波原理,我被驚到了!(即均值,其它地方常用 μ 表示),以及協(xié)方差矩陣看完這篇卡爾曼濾波原理,我被驚到了!。


看完這篇卡爾曼濾波原理,我被驚到了!

(1)


(當(dāng)然,在這里我們只用到了位置和速度,實(shí)際上這個狀態(tài)可以包含多個變量,代表任何你想表示的信息)。接下來,我們需要根據(jù)當(dāng)前狀態(tài)(k-1 時刻)來預(yù)測下一狀態(tài)(k 時刻)。記住,我們并不知道對下一狀態(tài)的所有預(yù)測中哪個是“真實(shí)”的,但我們的預(yù)測函數(shù)并不在乎。它對所有的可能性進(jìn)行預(yù)測,并給出新的高斯分布。


看完這篇卡爾曼濾波原理,我被驚到了!


我們可以用矩陣看完這篇卡爾曼濾波原理,我被驚到了!來表示這個預(yù)測過程:


看完這篇卡爾曼濾波原理,我被驚到了!


它將我們原始估計(jì)中的每個點(diǎn)都移動到了一個新的預(yù)測位置,如果原始估計(jì)是正確的話,這個新的預(yù)測位置就是系統(tǒng)下一步會移動到的位置。那我們又如何用矩陣來預(yù)測下一個時刻的位置和速度呢?下面用一個基本的運(yùn)動學(xué)公式來表示:


看完這篇卡爾曼濾波原理,我被驚到了!


現(xiàn)在,我們有了一個預(yù)測矩陣來表示下一時刻的狀態(tài),但是,我們?nèi)匀徊恢涝趺锤聟f(xié)方差矩陣。此時,我們需要引入另一個公式,如果我們將分布中的每個點(diǎn)都乘以矩陣 A,那么它的協(xié)方差矩陣看完這篇卡爾曼濾波原理,我被驚到了!會怎樣變化呢?很簡單,下面給出公式:


看完這篇卡爾曼濾波原理,我被驚到了!

結(jié)合方程(4)和(3)得到:

看完這篇卡爾曼濾波原理,我被驚到了!


外部控制量


我們并沒有捕捉到一切信息,可能存在外部因素會對系統(tǒng)進(jìn)行控制,帶來一些與系統(tǒng)自身狀態(tài)沒有相關(guān)性的改變。


以火車的運(yùn)動狀態(tài)模型為例,火車司機(jī)可能會操縱油門,讓火車加速。相同地,在我們機(jī)器人這個例子中,導(dǎo)航軟件可能會發(fā)出一個指令讓輪子轉(zhuǎn)向或者停止。如果知道這些額外的信息,我們可以用一個向量看完這篇卡爾曼濾波原理,我被驚到了!來表示,將它加到我們的預(yù)測方程中做修正。


假設(shè)由于油門的設(shè)置或控制命令,我們知道了期望的加速度看完這篇卡爾曼濾波原理,我被驚到了!,根據(jù)基本的運(yùn)動學(xué)方程可以得到:


看完這篇卡爾曼濾波原理,我被驚到了!


以矩陣的形式表示就是:


看完這篇卡爾曼濾波原理,我被驚到了!


看完這篇卡爾曼濾波原理,我被驚到了!稱為控制矩陣,看完這篇卡爾曼濾波原理,我被驚到了!稱為控制向量(對于沒有外部控制的簡單系統(tǒng)來說,這部分可以忽略)。讓我們再思考一下,如果我們的預(yù)測并不是100%準(zhǔn)確的,該怎么辦呢?


外部干擾


如果這些狀態(tài)量是基于系統(tǒng)自身的屬性或者已知的外部控制作用來變化的,則不會出現(xiàn)什么問題。


但是,如果存在未知的干擾呢?例如,假設(shè)我們跟蹤一個四旋翼飛行器,它可能會受到風(fēng)的干擾,如果我們跟蹤一個輪式機(jī)器人,輪子可能會打滑,或者路面上的小坡會讓它減速。這樣的話我們就不能繼續(xù)對這些狀態(tài)進(jìn)行跟蹤,如果沒有把這些外部干擾考慮在內(nèi),我們的預(yù)測就會出現(xiàn)偏差。


在每次預(yù)測之后,我們可以添加一些新的不確定性來建立這種與“外界”(即我們沒有跟蹤的干擾)之間的不確定性模型:


看完這篇卡爾曼濾波原理,我被驚到了!


原始估計(jì)中的每個狀態(tài)變量更新到新的狀態(tài)后,仍然服從高斯分布。我們可以說看完這篇卡爾曼濾波原理,我被驚到了!的每個狀態(tài)變量移動到了一個新的服從高斯分布的區(qū)域,協(xié)方差為看完這篇卡爾曼濾波原理,我被驚到了!。換句話說就是,我們將這些沒有被跟蹤的干擾當(dāng)作協(xié)方差為看完這篇卡爾曼濾波原理,我被驚到了!的噪聲來處理。


看完這篇卡爾曼濾波原理,我被驚到了!


這產(chǎn)生了具有不同協(xié)方差(但是具有相同的均值)的新的高斯分布。


看完這篇卡爾曼濾波原理,我被驚到了!


我們通過簡單地添加看完這篇卡爾曼濾波原理,我被驚到了!得到擴(kuò)展的協(xié)方差,下面給出預(yù)測步驟的完整表達(dá)式:


看完這篇卡爾曼濾波原理,我被驚到了!


由上式可知,新的最優(yōu)估計(jì)是根據(jù)上一最優(yōu)估計(jì)預(yù)測得到的,并加上已知外部控制量的修正。


新的不確定性上一不確定性預(yù)測得到,并加上外部環(huán)境的干擾。


好了,我們對系統(tǒng)可能的動向有了一個模糊的估計(jì),用看完這篇卡爾曼濾波原理,我被驚到了!看完這篇卡爾曼濾波原理,我被驚到了!來表示。如果再結(jié)合傳感器的數(shù)據(jù)會怎樣呢?


用測量值來修正估計(jì)值


我們可能會有多個傳感器來測量系統(tǒng)當(dāng)前的狀態(tài),哪個傳感器具體測量的是哪個狀態(tài)變量并不重要,也許一個是測量位置,一個是測量速度,每個傳感器間接地告訴了我們一些狀態(tài)信息。


看完這篇卡爾曼濾波原理,我被驚到了!


注意,傳感器讀取的數(shù)據(jù)的單位和尺度有可能與我們要跟蹤的狀態(tài)的單位和尺度不一樣,我們用矩陣看完這篇卡爾曼濾波原理,我被驚到了!來表示傳感器的數(shù)據(jù)。


看完這篇卡爾曼濾波原理,我被驚到了!


我們可以計(jì)算出傳感器讀數(shù)的分布,用之前的表示方法如下式所示:


看完這篇卡爾曼濾波原理,我被驚到了!


卡爾曼濾波的一大優(yōu)點(diǎn)就是能處理傳感器噪聲,換句話說,我們的傳感器或多或少都有點(diǎn)不可靠,并且原始估計(jì)中的每個狀態(tài)可以和一定范圍內(nèi)的傳感器讀數(shù)對應(yīng)起來。


看完這篇卡爾曼濾波原理,我被驚到了!


從測量到的傳感器數(shù)據(jù)中,我們大致能猜到系統(tǒng)當(dāng)前處于什么狀態(tài)。但是由于存在不確定性,某些狀態(tài)可能比我們得到的讀數(shù)更接近真實(shí)狀態(tài)。


看完這篇卡爾曼濾波原理,我被驚到了!


我們將這種不確定性(例如:傳感器噪聲)用協(xié)方差看完這篇卡爾曼濾波原理,我被驚到了!表示,該分布的均值就是我們讀取到的傳感器數(shù)據(jù),稱之為看完這篇卡爾曼濾波原理,我被驚到了!。


現(xiàn)在我們有了兩個高斯分布,一個是在預(yù)測值附近,一個是在傳感器讀數(shù)附近。


看完這篇卡爾曼濾波原理,我被驚到了!


我們必須在預(yù)測值(粉紅色)和傳感器測量值(綠色)之間找到最優(yōu)解。


那么,我們最有可能的狀態(tài)是什么呢?對于任何可能的讀數(shù)看完這篇卡爾曼濾波原理,我被驚到了!,有兩種情況:(1)傳感器的測量值;(2)由前一狀態(tài)得到的預(yù)測值。如果我們想知道這兩種情況都可能發(fā)生的概率,將這兩個高斯分布相乘就可以了。


看完這篇卡爾曼濾波原理,我被驚到了!


剩下的就是重疊部分了,這個重疊部分的均值就是兩個估計(jì)最可能的值,也就是給定的所有信息中的最優(yōu)估計(jì)。


瞧!這個重疊的區(qū)域看起來像另一個高斯分布。


看完這篇卡爾曼濾波原理,我被驚到了!


如你所見,把兩個具有不同均值和方差的高斯分布相乘,你會得到一個新的具有獨(dú)立均值和方差的高斯分布!下面用公式講解。


融合高斯分布


先以一維高斯分布來分析比較簡單點(diǎn),具有方差看完這篇卡爾曼濾波原理,我被驚到了!和 μ 的高斯曲線可以用下式表示:


看完這篇卡爾曼濾波原理,我被驚到了!


如果把兩個服從高斯分布的函數(shù)相乘會得到什么呢?


看完這篇卡爾曼濾波原理,我被驚到了!


將式(9)代入到式(10)中(注意重新歸一化,使總概率為1)可以得到:


看完這篇卡爾曼濾波原理,我被驚到了!


將式(11)中的兩個式子相同的部分用 k 表示:


看完這篇卡爾曼濾波原理,我被驚到了!


下面進(jìn)一步將式(12)和(13)寫成矩陣的形式,如果 Σ 表示高斯分布的協(xié)方差,看完這篇卡爾曼濾波原理,我被驚到了!表示每個維度的均值,則:


看完這篇卡爾曼濾波原理,我被驚到了!


矩陣看完這篇卡爾曼濾波原理,我被驚到了!稱為卡爾曼增益,下面將會用到。放松!我們快要完成了!


將所有公式整合起來


我們有兩個高斯分布,預(yù)測部分看完這篇卡爾曼濾波原理,我被驚到了!,和測量部分看完這篇卡爾曼濾波原理,我被驚到了!,將它們放到式(15)中算出它們之間的重疊部分:


看完這篇卡爾曼濾波原理,我被驚到了!


由式(14)可得卡爾曼增益為:


看完這篇卡爾曼濾波原理,我被驚到了!


將式(16)和式(17)的兩邊同時左乘矩陣的逆(注意看完這篇卡爾曼濾波原理,我被驚到了!里面包含了看完這篇卡爾曼濾波原理,我被驚到了!)將其約掉,再將式(16)的第二個等式兩邊同時右乘矩陣看完這篇卡爾曼濾波原理,我被驚到了!的逆得到以下等式:


看完這篇卡爾曼濾波原理,我被驚到了!


上式給出了完整的更新步驟方程。看完這篇卡爾曼濾波原理,我被驚到了!就是新的最優(yōu)估計(jì),我們可以將它和看完這篇卡爾曼濾波原理,我被驚到了!放到下一個預(yù)測和更新方程中不斷迭代。


看完這篇卡爾曼濾波原理,我被驚到了!


總結(jié)


以上所有公式中,你只需要用到式(7)、(18)、(19)。(如果忘了的話,你可以根據(jù)式(4)和(15)重新推導(dǎo)一下)


我們可以用這些公式對任何線性系統(tǒng)建立精確的模型,對于非線性系統(tǒng)來說,我們使用擴(kuò)展卡爾曼濾波,區(qū)別在于EKF多了一個把預(yù)測和測量部分進(jìn)行線性化的過程。


?近期熱度新聞

【1】雷軍押注的LPDDR5內(nèi)存戰(zhàn)火再起:激烈較量中 美光再拋殺手锏
【2】EUV光刻機(jī)開始爭搶?三星李在镕跑ASML總部去催貨
【3】突發(fā)!美國出口限制清單新增6項(xiàng)新興技術(shù),中國出臺出口法反制!

干貨技能好文

【1】干貨:嵌入式系統(tǒng)設(shè)計(jì)開發(fā)大全?。ㄈf字總結(jié))
【2】如何利用PCB設(shè)計(jì)改善散熱?
【3】常用電子元器件內(nèi)部長啥樣?——切開看看

優(yōu)質(zhì)資源推薦

【1】終于整理齊了,電子工程師“設(shè)計(jì)錦囊”,你值得擁有!
【2】半導(dǎo)體行業(yè)的人都在關(guān)注這幾個公眾號
【3】 電子工程師自我“修煉寶典” 21ic獨(dú)家整理!

看完這篇卡爾曼濾波原理,我被驚到了!

你和大牛工程師之間到底差了啥?
加入技術(shù)交流群,與高手面對面?
添加管理員微信
看完這篇卡爾曼濾波原理,我被驚到了!


看完這篇卡爾曼濾波原理,我被驚到了!

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

21ic電子網(wǎng)

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉