對卡爾曼濾波演算法的一絲淡淡理解

2021-07-25 10:07:22 字數 1991 閱讀 5543

最近看卡爾曼濾波,網上廣為流傳著幾篇的科普文章,但是都夾雜著一堆複雜的公式,看的我如墜雲霧裡。我希望能看到一篇沒有複雜數學公式的文章,卻一直沒找到。

於是我想寫一篇,講講自己對卡爾曼濾波的淺顯理解。

我覺得卡爾曼濾波演算法本質上是乙個遞推反饋演算法。它分兩部分:時間更新方程和測量狀態更新方程。其中,前者負責遞推,後者負責反饋(將先驗估計和新的測量變數結合,以構造改進後的後驗估計)。

時間更新方程可視為預估方程,測量更新方程可視為校正方程。

這個是預估方程:

x表示狀態變數;左上角帶「—」的量表示先驗;「 ^ 」表示估計。

「先驗」與「後驗」是相對的倆概念,「先驗」的意思就是僅僅用之前的狀態來估計出來的;而「後驗」是在我們進行了測量,知道了測量變數 z 之後的。也就是說,「先驗」與「後驗」的區別就是有沒有進行測量。

預估方程可以這麼理解:因為卡爾曼濾波演算法的前提條件是:系統是線性的。所以即使不用測量,我們也可以根據「線性」這個特徵得到乙個先驗狀態值。

這個是校正方程:

那這個校正方程就可以這麼理解了:有了測量值之後,我們便有了兩個可用的量了,即測量值z和先驗狀態值,那我們就根據這兩個量之前的表現來各自給他們分配乙個權重(之前表現越好的量,其權重就越高),這個權重就是卡爾曼增益。那麼什麼是表現好表現不好呢,表現好意思就是測量結果穩定,方差很小,表現不好就是估計值或觀測值不穩定、方差很大。

最後再付乙個圖基本就差不多了。

講到這兒我覺得基本就可以了,最起碼在我以後生疏之後再看一遍這篇文章,基本就能回想起卡爾曼。

要不最後再說說卡爾曼濾波演算法能幹嘛吧,我覺得基本上的應用有兩個,乙個是測量,乙個是**。

日常生活中,我們的測量工作比較簡單,比如測個身高啊,體重啊,以及其他幾乎沒有隨機干擾的量,這都用不到卡爾曼濾波。但有時候,我們在測量過程中會遇到比較大的隨機干擾,比如有一架飛機在天上飛,我們想知道這架飛行在任一時刻所處的位置、速度等狀態引數,那我們就得用雷達或其它測量裝置進行觀測,這樣問題就來了。因為雷達等測量裝置存在隨機干擾,所以它測得的結果中就會夾雜著大量隨機干擾,這時雷達返回來的狀態引數是不靠譜的。那怎麼辦呢?這就用到了卡爾曼濾波演算法,因為卡爾曼濾波的核心是「**+校正」,所以在測量上,我們用到的就是校正出來後驗狀態變數。

**方面的應用一般在航空方面應用比較多,即**飛行器下一步的執行軌道,也可以做運動物體的跟蹤。我沒接觸過,印象裡看書上這麼提過,想想也差不多。

這次接觸卡爾曼濾波是因為要做測量上的乙個濾波優化,以前上自控原理也沒好好聽,略微後悔。卡爾曼在博士畢業的時候拿著卡爾曼濾波演算法作為他畢業**的主題,唉……差距啊,他這麼吊,也不知道他爸媽知不知道。

最近在知乎偶然看見kent zeng 的答案,覺得不錯,**如下:

假設你有兩個感測器,測的是同乙個訊號。可是它們每次的讀數都不太一樣,怎麼辦?

取平均。

再假設你知道其中貴的那個感測器應該準一些,便宜的那個應該差一些。那有比取平均更好的辦法嗎?

加權平均。

怎麼加權?假設兩個感測器的誤差都符合正態分佈,假設你知道這兩個正態分佈的方差,用這兩個方差值,(此處省略若干數學公式),你可以得到乙個「最優」的權重。

接下來,重點來了:假設你只有乙個感測器,但是你還有乙個數學模型。模型可以幫你算出乙個值,但也不是那麼準。怎麼辦?

把模型算出來的值,和感測器測出的值,(就像兩個感測器那樣),取加權平均。

ok,最後一點說明:你的模型其實只是乙個步長的,也就是說,知道x(k),我可以求x(k+1)。問題是x(k)是多少呢?答案:x(k)就是你上一步卡爾曼濾波得到的、所謂加權平均之後的那個、對x在k時刻的最佳估計值。

於是迭代也有了。

這就是卡爾曼濾波。

(無公式)

對卡爾曼濾波演算法的一絲淡淡理解

最近看卡爾曼濾波,網上廣為流傳著幾篇的科普文章,但是都夾雜著一堆複雜的公式,看的我如墜雲霧裡。我希望能看到一篇沒有複雜數學公式的文章,卻一直沒找到。於是我想寫一篇,講講自己對卡爾曼濾波的淺顯理解。我覺得卡爾曼濾波演算法本質上是乙個遞推反饋演算法。它分兩部分 時間更新方程和測量狀態更新方程。其中,前者...

卡爾曼濾波的理解

首先了解一下濾波 濾波 filtering is weighting 濾波即加權 濾波的作用就是給不同的訊號分量不同的權重。最簡單的loss pass filter,就是直接把低頻的訊號給0權重,而給高頻部分1權重。常見的貝葉斯濾波和卡爾曼濾波 貝葉斯濾波我覺得關鍵在於對先驗概率和後驗概率的理解上,...

卡爾曼濾波通俗理解(一)

假設你有兩個感測器,測的是同乙個訊號。可是它們每次的讀數都不太一樣,怎麼辦?取平均。再假設你知道其中貴的那個感測器應該準一些,便宜的那個應該差一些。那有比取平均更好的辦法嗎?加權平均。怎麼加權?假設兩個感測器的誤差都符合正態分佈,假設你知道這兩個正態分佈的方差,用這兩個方差值,此處省略若干數學公式 ...