卡爾曼濾波小結

2022-06-08 11:21:10 字數 2806 閱讀 8476

一直在看,一直不懂。 我這人學數學的毛病,就是需要非常細緻的知道每個變數的含義,誰變誰不變必須清清楚楚告訴我,否則我就沒有那個直覺。 anyway,從這篇文章入手吧:

所謂濾波,實際上是要去掉自己不想要的訊號,保留想要的部分。一般來說,是把過程中的雜訊去掉。

卡爾曼濾波的預設假定是,世界充滿雜訊,任何測量結果都有雜訊,狀態轉移過程會有雜訊,你想知道系統的真實值麼?玩兒蛋去吧。

卡爾曼濾波另乙個重要假定模型是這樣的,乙個系統會處在各種不同的狀態,並且會在狀態之間轉化來轉化去。但是呢,倒霉的是我們誰也不知道該系統當前到底是在什麼狀態;但是呢,幸運的是我們可以通過測量的結果猜測到系統當前在乙個什麼狀態。

那啥叫狀態呢?例如系統的速度,加速度,溫度,腦殘度都算。離散系統的話,我們可以假設乙個黑盒,黑盒裡有許多顏色的燈(紅橙黃綠青藍紫),同時只能有乙個顏色在亮著,ok,哪個燈在亮就是當前狀態。

下面就是建模:

z_t = h*x_t + v_t;   (1)

x_t = a*x_(t-1) + b*u_(t-1) + w_(t-1);  (2)

初看起這倆式子來,我也頭大,不過稍微分析一下也不太難。x_t是t時刻系統所在狀態,z_t是所謂觀測值,u_t是系統控制變數(已知,但我做的領域一般用不著),w_t , v_t都是雜訊。 

那麼式子(1)就是想說,觀測值和系統狀態的關係: 如果你看到種子發芽了,那麼它的狀態就是剛出生;如果你看到它開始長葉兒了,那狀態就叫生長期;如果丫開花了,就叫啥啥期;如果結果了,就叫成熟期;如果蔫兒了,就叫嗝屁期。 

哦,對了,個人理解一下,以上公式限定為了線性系統,傳說中卡爾曼濾波是線性的,**就在這裡了,誰叫你是矩陣乘向量呢,你要是寫成f(x_t),那有可能就是非線性的了。

那麼式子(2)就是說,前一時刻狀態和下一時刻狀態之間的關係。我在這裡卡了好久,總是以為丫是馬爾科夫過程,所以就完全無法理解a這個係數是憑啥得來的。其實,就是乙個固定的轉移方程,該方程完全沒有概率問題。

所 以!以上式子中,固定下來的是h, a, b,這三個矩陣千年不變,萬年不變,並且是事先設定好的,全都已知。未知的話....你自己編乙個模型吧。 那麼w_t,v_t 在這裡限定為兩個高斯白雜訊n(0, q)和n(0, r)。 哦,對,這裡要記得,q,r都tm是協方差矩陣啊,因為,系統狀態和觀測值都是向量。我對協方差可鬱悶可鬱悶了。這裡提一句,我就完全無法理解協方差想表達什麼,為什麼倆隨機變數獨立,協方差一定為0,雖然我也知道怎麼推導,但就是不能直觀理解之,如果有人知道,還煩請告知。

那 繼續扯淡。卡爾曼濾波,本質是想要**下一步的觀測值,或者實時監控一下系統所在狀態。但一般在我這個領域,大家還都是在玩兒**,那咱就從**角度分 析。ok,直覺上,給定上乙個位置的狀態x_(t-1),式子(2)足夠了。但是,回到開始的預設假設,式子(2)得到的結果x^-_t那是各種不準確 啊。不準確怎麼辦?那就去看觀測值唄,於是得到觀測值z_t,但是觀測值也不準確唉,那怎麼辦?噹噹噹噹,卡爾曼告訴我們乙個灰常牛b的事情,乙個相對準 確的系統值具有如下結構:

x&_t = x&-_t + k( z_t - h*x_(t-1) );  (3)

提 一下,這裡" & "表示估計值," - "表示是用前面式子算出來的估計值,不帶" - "表示是最後的估計值。 (3)這個式子是想說,你不是式子估計和觀測值都不准麼,那麼你把他倆加個權,求個和,那就可能更準確了。啥?你說這個式子不像加權?你把丫拆了,倒騰倒 騰不就像了。 所以,最牛b就牛b在了這個「k」,傳說中的卡爾曼增益。 這個k怎麼得到的?我也不知道。 文章說法是,定義誤差 e_t = x_t - x&_t ,p_t為此誤差的協方差矩陣,目的是使這個誤差協方差矩陣最小化,把(3)代過去,於是折騰來折騰去,再求個導數為0,解得k,這個關鍵值的演算法:

k = p-_t * h^t * ( h * p-_t * h^t + r) ^(-1);  (4)

哦,對了,另外注意一點,從此以後,我們就都在估計上做文章了,你只要記得,咱永遠看不到真實值就行了,於是我們的式子裡不是帶"&"就是帶"-"。

那麼式子(4)就是在說,你丫這麼著就把k求出來了。於是,問題就變成了這個p-_t怎麼個求法。

說到這裡,傳說中的卡爾曼濾波就算講完了。神馬?你說p-_k還沒求呢。是啊,卡爾曼濾波一共就倆需要求的玩意兒,還都tm是迭代求解,乙個就是這個p-_t,另乙個就是狀態x-_t。你隨便給個初始值,然後就迭著吧。

言歸正傳,我還得給出迭代的公式:

x-_t = a * x&_(t-1) + b * u_(t-1);  (5)

p-_t = a * p_(t-1) * a^t + q;    (6)

大家一定別搞混q和r誰是哪個公式冒出來的啊。 另外嚴重關切一下這裡"-","&"以及不加的關係。 注意到啥沒有?對了,(6)式中等號右邊的p_(t-1)不帶任何符號,嘿嘿,那自然是還差乙個公式啦:

p_t = (i - k_t * h ) p-_(t-1);   (7)

大功告成,以上就是傳說中的卡爾曼濾波的迭代求解方法,如果你要**狀態呢,就用式子(5)的結果;如果**觀測值呢,就把式子(5)的結果乘個h;如果是監測狀態呢,就用式子(3)的結果。

至於一切式子中的推導過程,還有為神馬是這樣求出來的,咕~~(╯﹏╰)b,本人一概不知。淚奔告退。

最 後小注一下,文章指出,如果q,r是常數,k會收斂,也即p也會收斂到常量。 另外,大家經常詬病卡爾曼濾波都是假定高斯分布,我勒個去,這裡的高斯分布到底說誰呢?雜訊項?雖然看上去應該是,但我打賭不是。可是其它又都是定值, 唉,頭大。我本來就是為了理解這句話才來學習卡爾曼濾波的。 還得慢慢學,繼續淚奔

。ps, 於是,果然,文中提到x_t是乙個隨機變數,並且在已知z_t的情況下 p(x_t | z_t) 服從n( x&_t, e[(x_t - x&_t)(x_t - x&_t)]),切記切記,這裡所說的正態分佈,是指已知觀測值的情況下,系統狀態是乙個高斯分布的隨機變數。

本文**自 

卡爾曼 卡爾曼濾波 1

今天主要介紹一下卡爾曼濾波器,所謂卡爾曼濾波器其實是一種最優化遞迴數字處理演算法 optimal recursive data processing algorithm 卡爾曼濾波器應用 既然我們有了測量儀器,這些測量儀器可以目標給出準確測量值。還需要卡爾曼濾波器進行估計嗎?下面解釋一下為什麼需要卡...

卡爾曼 基礎卡爾曼濾波

卡爾曼濾波器是一種基礎 定位演算法。原理非常簡單易懂。核心過程可以用乙個圖說明 本質上就是這兩個狀態過程的迭代,來逐步的準確定位。更新 更具感測器獲取到比較準確的位置資訊後來更新當前的 問位置,也就是糾正 的錯誤。你可能要問為什麼有感測器的資料了還要進行更新?因為在現實世界中感測器是存在很多雜訊干擾...

卡爾曼濾波

卡爾曼濾波演算法 首先引入乙個離散控制過程的系統,用乙個線性隨機微分方程來描述 x k a x k 1 b u k w k 系統的測量值 z k h x k v k x k 是k時刻的系統狀態,u k 是k時刻對系統的控制量。a和b是系統引數,對於多模型系統,他們為矩陣。z k 是k時刻的測量值,h...