Dirty hands
在一整套卡爾曼濾波理論和公式學完之后黔寇,你終于覺得大功告成,開始設(shè)計第一個卡爾曼濾波器斩萌。
但是好像還是有什么地方不對勁:
你>:缝裤。。颊郎。等會憋飞。。姆吭¢蛔觯卡爾曼博士,你這公式好像沒給全啊
卡爾曼博士>:哪里沒給全内狸?
你>:這預(yù)測方程和更新方程里都假設(shè)疊加了一個隨機變量Q和R检眯,它們的期望和方差具體值都不知道啊风皿。方差都不知道光稼,這公式讓我怎么算呢集惋?
卡爾曼博士>:我是個數(shù)學家食磕,你這問的都不是個數(shù)學問題侄刽,跟我有關(guān)系嗎瑟慈?社痛!
你>:恩沽。眨补。管削。?撑螺?佩谣?!J蹬睢茸俭!
得,又回到原點安皱,學了一大堆公式调鬓,怎么還是沒用呢?的確酌伊,要設(shè)計出一個能好用的卡爾曼濾波器腾窝,現(xiàn)在才剛剛開始缀踪;而現(xiàn)在最重要的任務(wù),就是要確定Q和R的值虹脯,這樣公式才能計算起來驴娃。然而對于任何一種隨機自然現(xiàn)象,比如刮風下雨循集,地震海嘯唇敞,數(shù)學家在推導(dǎo)公式過程中可以簡單地用一個高斯分布來假設(shè),但分布的具體參數(shù)值怎么找出來咒彤?所以數(shù)學家這個工作有時候還是挺讓人羨慕的疆柔,至少挖坑不用填。而工程師這職業(yè)就有點作孽镶柱,總得有人填上吧旷档!以后如果碰上一個“見坑就想填”的工程師那真算是福星高照,這簡直就稱得上是劍膽琴心吶歇拆。
從1961年NASA正式?jīng)Q定在登月艙中采用卡爾曼濾波理論開始鞋屈,到1969年阿波羅登月成功之前,數(shù)千名工程師工作了近8年時間故觅。
所以如果想要實現(xiàn)一個能真正工作的卡爾曼濾波器谐区,那么就做好"Get your hands dirty"的決心吧!
調(diào)參的方法
調(diào)參這個事其實大家多少都有點經(jīng)驗逻卖。比如控制領(lǐng)域非常普及的PID系統(tǒng),在系統(tǒng)設(shè)計完成之后要進行仔細的參數(shù)調(diào)節(jié)昭抒。這種參數(shù)調(diào)節(jié)實際上是一個根據(jù)經(jīng)驗不斷試錯的過程评也,最后試出一組最合適的參數(shù)出來。這是一種手工的過程灭返,所以效率實在算不上高盗迟。
卡爾曼濾波器的參數(shù)有其自己的特點。相比PID系統(tǒng)熙含,線性系統(tǒng)的卡爾曼濾波器數(shù)學模型比較完整罚缕,參數(shù)一般都有比較明確的物理意義,參數(shù)調(diào)整的時候其實是一些規(guī)律可循的怎静。
手工調(diào)參
對于模型簡單一些的系統(tǒng)來說邮弹,還是有不少人習慣手工調(diào)參,比如:
1. 限制P的值蚓聘,防止P趨近于0
2. 適當增加Q的值腌乡,這樣P的值也相應(yīng)增加
3. 給P乘以一個適當?shù)囊蜃樱@樣確保K值在一個恰當?shù)姆秶?/p>
這樣通過反復(fù)迭代夜牡,當?shù)鰜淼膮?shù)值逐步收斂于一個穩(wěn)定值時与纽,就認為獲得了一組可用的參數(shù)。
離線學習
如果系統(tǒng)模型比較復(fù)雜,或者精度要求高急迂,可以使用離線學習的方式影所,這就要用到Kalman smoother。Smoother可以看作是Kalman濾波的一個特別情況:一般的Kalman filter是利用過去和現(xiàn)在的測量數(shù)據(jù)來估計將來的狀態(tài)僚碎,而Smoother是在已經(jīng)獲得所有(包括未來)測量數(shù)據(jù)的情況下猴娩,估計過去時間下的系統(tǒng)狀態(tài)。
Smoother的概念倒也不難理解听盖,不容易弄清楚的是Smoother到底有什么用胀溺?尤其是為啥要起個名字叫Smoother?
Smoother主要用于不需要實時處理的情況。有一個基本的事實是:當我們估計狀態(tài)時皆看,如果有用的信息越多仓坞,那顯然估計的準確度就越高。過去和現(xiàn)在的數(shù)據(jù)腰吟,能提供的信息量當然是不如包括將來數(shù)據(jù)在內(nèi)的所有數(shù)據(jù)提供的信息量大无埃。所以Smoother在理論上,能夠提供比Kalman filter精度更高的估計毛雇。估計出來的狀態(tài)曲線噪聲更小嫉称,更平滑,因此被稱為Smoother也算是切題灵疮。
但Smoother因為要等待所有數(shù)據(jù)都采集完畢才能進行處理织阅,所以付出的代價是失去了Kalman濾波的實時性。不過這樣用作離線參數(shù)學習的工具倒是沒有問題震捣。在這種應(yīng)用中荔棉,通常是對已經(jīng)建立好卡爾曼模型的目標系統(tǒng)先做大量的測量,把測量數(shù)據(jù)都記錄下來蒿赢,利用這個測量數(shù)據(jù)集估計出過去的一系列系統(tǒng)狀態(tài)值润樱。這個狀態(tài)值序列的精度是比較高的。然后利用這個狀態(tài)值序列估計出一個新的參數(shù)羡棵,以這個新參數(shù)代入Smoother模型再次估計出一組系統(tǒng)狀態(tài)值壹若,如此迭代一直到參數(shù)值收斂為止。
自適應(yīng)濾波
自適應(yīng)濾波基本思路是引入一個隨時間變化的加權(quán)因子皂冰,在每個更新迭代步驟時對Q和R等參數(shù)進行加權(quán)更新店展。當參數(shù)趨于穩(wěn)定收斂時,也就得到了一組優(yōu)化的參數(shù)秃流。這是一種自動化的調(diào)參方法壁查。