卡爾曼濾波器之調(diào)參

Dirty hands

在一整套卡爾曼濾波理論和公式學(xué)完之后,你終于覺得大功告成,開始設(shè)計(jì)第一個(gè)卡爾曼濾波器。

但是好像還是有什么地方不對勁:


你>:。。。等會(huì)。。??柭┦?,你這公式好像沒給全啊

卡爾曼博士>:哪里沒給全?

你>:這預(yù)測方程和更新方程里都假設(shè)疊加了一個(gè)隨機(jī)變量Q和R,它們的期望和方差具體值都不知道啊。方差都不知道,這公式讓我怎么算呢?

卡爾曼博士>:我是個(gè)數(shù)學(xué)家,你這問的都不是個(gè)數(shù)學(xué)問題,跟我有關(guān)系嗎?!

你>:。。。????。。?/p>


得,又回到原點(diǎn),學(xué)了一大堆公式,怎么還是沒用呢?的確,要設(shè)計(jì)出一個(gè)能好用的卡爾曼濾波器,現(xiàn)在才剛剛開始;而現(xiàn)在最重要的任務(wù),就是要確定Q和R的值,這樣公式才能計(jì)算起來。然而對于任何一種隨機(jī)自然現(xiàn)象,比如刮風(fēng)下雨,地震海嘯,數(shù)學(xué)家在推導(dǎo)公式過程中可以簡單地用一個(gè)高斯分布來假設(shè),但分布的具體參數(shù)值怎么找出來?所以數(shù)學(xué)家這個(gè)工作有時(shí)候還是挺讓人羨慕的,至少挖坑不用填。而工程師這職業(yè)就有點(diǎn)作孽,總得有人填上吧!以后如果碰上一個(gè)“見坑就想填”的工程師那真算是福星高照,這簡直就稱得上是劍膽琴心吶。

從1961年NASA正式?jīng)Q定在登月艙中采用卡爾曼濾波理論開始,到1969年阿波羅登月成功之前,數(shù)千名工程師工作了近8年時(shí)間。

所以如果想要實(shí)現(xiàn)一個(gè)能真正工作的卡爾曼濾波器,那么就做好"Get your hands dirty"的決心吧!

調(diào)參的方法

調(diào)參這個(gè)事其實(shí)大家多少都有點(diǎn)經(jīng)驗(yàn)。比如控制領(lǐng)域非常普及的PID系統(tǒng),在系統(tǒng)設(shè)計(jì)完成之后要進(jìn)行仔細(xì)的參數(shù)調(diào)節(jié)。這種參數(shù)調(diào)節(jié)實(shí)際上是一個(gè)根據(jù)經(jīng)驗(yàn)不斷試錯(cuò)的過程,最后試出一組最合適的參數(shù)出來。這是一種手工的過程,所以效率實(shí)在算不上高。

卡爾曼濾波器的參數(shù)有其自己的特點(diǎn)。相比PID系統(tǒng),線性系統(tǒng)的卡爾曼濾波器數(shù)學(xué)模型比較完整,參數(shù)一般都有比較明確的物理意義,參數(shù)調(diào)整的時(shí)候其實(shí)是一些規(guī)律可循的。

手工調(diào)參


對于模型簡單一些的系統(tǒng)來說,還是有不少人習(xí)慣手工調(diào)參,比如:

1. 限制P的值,防止P趨近于0

2. 適當(dāng)增加Q的值,這樣P的值也相應(yīng)增加

3. 給P乘以一個(gè)適當(dāng)?shù)囊蜃?,這樣確保K值在一個(gè)恰當(dāng)?shù)姆秶?/p>

這樣通過反復(fù)迭代,當(dāng)?shù)鰜淼膮?shù)值逐步收斂于一個(gè)穩(wěn)定值時(shí),就認(rèn)為獲得了一組可用的參數(shù)。

離線學(xué)習(xí)


如果系統(tǒng)模型比較復(fù)雜,或者精度要求高,可以使用離線學(xué)習(xí)的方式,這就要用到Kalman smoother。Smoother可以看作是Kalman濾波的一個(gè)特別情況:一般的Kalman filter是利用過去和現(xiàn)在的測量數(shù)據(jù)來估計(jì)將來的狀態(tài),而Smoother是在已經(jīng)獲得所有(包括未來)測量數(shù)據(jù)的情況下,估計(jì)過去時(shí)間下的系統(tǒng)狀態(tài)。

Smoother的概念倒也不難理解,不容易弄清楚的是Smoother到底有什么用?尤其是為啥要起個(gè)名字叫Smoother?

Smoother主要用于不需要實(shí)時(shí)處理的情況。有一個(gè)基本的事實(shí)是:當(dāng)我們估計(jì)狀態(tài)時(shí),如果有用的信息越多,那顯然估計(jì)的準(zhǔn)確度就越高。過去和現(xiàn)在的數(shù)據(jù),能提供的信息量當(dāng)然是不如包括將來數(shù)據(jù)在內(nèi)的所有數(shù)據(jù)提供的信息量大。所以Smoother在理論上,能夠提供比Kalman filter精度更高的估計(jì)。估計(jì)出來的狀態(tài)曲線噪聲更小,更平滑,因此被稱為Smoother也算是切題。

但Smoother因?yàn)橐却袛?shù)據(jù)都采集完畢才能進(jìn)行處理,所以付出的代價(jià)是失去了Kalman濾波的實(shí)時(shí)性。不過這樣用作離線參數(shù)學(xué)習(xí)的工具倒是沒有問題。在這種應(yīng)用中,通常是對已經(jīng)建立好卡爾曼模型的目標(biāo)系統(tǒng)先做大量的測量,把測量數(shù)據(jù)都記錄下來,利用這個(gè)測量數(shù)據(jù)集估計(jì)出過去的一系列系統(tǒng)狀態(tài)值。這個(gè)狀態(tài)值序列的精度是比較高的。然后利用這個(gè)狀態(tài)值序列估計(jì)出一個(gè)新的參數(shù),以這個(gè)新參數(shù)代入Smoother模型再次估計(jì)出一組系統(tǒng)狀態(tài)值,如此迭代一直到參數(shù)值收斂為止。

自適應(yīng)濾波


自適應(yīng)濾波基本思路是引入一個(gè)隨時(shí)間變化的加權(quán)因子,在每個(gè)更新迭代步驟時(shí)對Q和R等參數(shù)進(jìn)行加權(quán)更新。當(dāng)參數(shù)趨于穩(wěn)定收斂時(shí),也就得到了一組優(yōu)化的參數(shù)。這是一種自動(dòng)化的調(diào)參方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容