1. 程式人生 > >卡爾曼濾波3

卡爾曼濾波3

比較 應該 想要 不能 模型 不同 隨著 而已 風景

假設你去一個風景區旅遊時候,種下一棵果樹,但顯然從果樹苗到果實不是一天兩天能完成對。需要慢慢長高。而你又不可能經常去看,但又想知道樹的高度,哪怎麽辦? 所以要解決的問題是:如何正確估計一棵果樹的高度?

我們想要知道的果樹高度叫做待估的狀態變量。 我們想一年知道一次,這個叫做步長。

你需要知道種下果樹時候的大概高度,於是你想了想, 大概1米吧,但也不確定,有可能90公分。也可能110公分,於是這個1米,叫做你的初始狀態估計,

這個10公分是不確定性。叫做狀態估計誤差的協方差矩陣,後續它隨著你的下一步估計而變化。

怎麽辦呢?

你在網上查了查, 這種果樹差不多每年都比前一年生長10%的高度(純假設而已),這個生長的規律/模型就叫做狀態轉移矩陣。於是根據模型,假如,2017年幼1米, 2018年大概有1.1米。

但顯然這個模型不適用於任意一顆果樹和你種植當地的實際日照風土情況,而且你明明知道果樹不可能無限增長。所以咱們的模型不可能是100%準確的,我們用一個叫做過程燥聲的東西來衡量它。可以理解為模型遞推下去的不準確度。 比如假設這個估計模型差在0.3米,這叫白噪聲,過程噪聲越小就意味著你相信生長模型很準,越大就表示模型越垃圾。

但經管如此還是不靠譜啊,閉門猜果樹高度肯定不一定準,這個時候你需要找一下本地朋友看一眼。由於拜托他們幫忙,你也不要求他們拿尺子去量,大概給個數就行,這個朋友幫忙看到的高度就是測量值。

假設有朋友A和B,朋友A很認真,每次都拿尺子大概比一比,告訴你大概多少分米來說,比如大概1米8到1米9. 而朋友B不認真,只喵一眼說大概1.5 - 2米,但A有個壞處,比較懶,兩年才給你發個短信。B比較勤快,每年都有。 這兩年或者1年就叫做測量更新頻率。我們需要他們盡可能的提供數據,所以兩個都要采納。而這兩個測量一個來自尺子,一個來自視力,不同的測量類型我們都能同時使用,太好了。

但明顯覺得A比B要靠譜一些, 於是認為A的精度分米級,B的精度在半米即,這個分米和半米叫做他倆的測量噪聲。基於這個測量噪聲你可以建立一個測量噪聲矩陣,衡量在參考時對A和B的觀測值的權重。

那麽,你現在明白了,需要果樹生長模型,這樣即便A和B不給我數據,我也能大概估計出明年這個樹的高度。但不不能只依靠模型,比如果樹進入成熟期就不長了, 我們需要A和B的觀察值去矯正估計,那麽就需要把它們融合在一起。

於是這個模型裏, 有個一衡量初始估計是否準確的矩陣叫做狀態估計協方矩陣,有一個衡量生長模型準確度的過程噪聲矩陣,從觀察那裏有一個衡量觀測是否準確的矩陣叫做觀察噪聲協方差矩陣。

我們把它們融合在一起, 就變成了一個叫做增益矩陣的東西。 糊塗了? 別著急, 其實增益矩陣就做一件事情: 我到底應該相信我推的模型多,還是相信 來自A和B的觀測量多呢》

於是通過增益矩陣和這一系列矩陣,你建立了一套系統:當模型比較準確時,我相信模型多一些,當它不準確時, 我相信實際測量多一些。 而還有一個優勢,測量值幫我矯正模型的準確度; 當A和B突然不給我測量時, 我也能通過建立好的這套模型體系估計在下一步長(明年)果樹的高度。

卡爾曼濾波就這樣建立起來了。

最理想的情況下怎樣, 最準確的果樹初始高度及, =較小的狀態估計誤差

最準確的果樹生長狀態, =較小的過程噪聲。

最準確的測量值, =較小的測量噪聲, 而測量類型越多越好(尺子,視力)

卡爾曼濾波3