卡爾曼濾波演算法簡要

2021-07-09 15:57:04 字數 2273 閱讀 2861

卡爾曼濾波在感測器資料融合 ,狀態**裡佔據了很重要的地位,今天有空稍微整理一下,整理自己的思路,加深理解記憶。要逐漸的把kf,ekf,pf,ukf都理解清楚,熟悉他們的優劣勢,明確應用場合,熟能生巧,善莫大焉。

最佳線性濾波理論起源於40年代美國科學家wiener和前蘇聯科學家kолмогоров等人的研究工作,後人統稱為維納濾波理論。從理論上說,維納濾波的最大缺點是必須用到無限過去的資料,不適用於實時處理。為了克服這一缺點,60年代kalman把狀態空間模型引入濾波理論,並匯出了一套遞推估計演算法,後人稱之為卡爾曼濾波理論。卡爾曼濾波是以最小均方誤差為估計的最佳準則,來尋求一套遞推估計的演算法,其基本思想是:採用訊號與雜訊的狀態空間模型,利用前一時刻地估計值和現時刻的觀測值來更新對狀態變數的估計,求出現時刻的估計值。它適合於實時處理和計算機運算。

線性隨機微分方程為:

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是測量系統的引數,對於多測量系統,h為矩陣。w(k)和v(k)分別表示過程和測量的雜訊。他們被假設成高斯白雜訊(white gaussian noise),他們的covariance 分別是q,r(這裡我們假設他們不隨系統狀態變化而變化)。對於滿足(線性隨機微分系統,過程和測量都是高斯白雜訊)的條件,卡爾曼濾波器是最優的資訊處理器。

(一)**過程 

根據系統的模型,可以基於系統的上一狀態而**出現在狀態:

x(k|k-1)=a x(k-1|k-1)+b u(k) ……….. (1)

式(1)中,x(k|k-1)是利用上一狀態**的結果,x(k-1|k-1)是上一狀態最優的結果,u(k)為現在狀態的控制量,如果沒有控制量,它可以為0。

對應於x(k|k-1)的covariance,我們用p表示covariance,更新公式如下:

p(k|k-1)=a p(k-1|k-1) a』+q ……… (2)

式(2)中,p(k|k-1)是x(k|k-1)對應的covariance,p(k-1|k-1)是x(k-1|k-1)對應的covariance,a』表示a的轉置矩陣,q是系統過程的covariance。式子1,2就是卡爾曼濾波器5個公式當中的前兩個,也就是對系統的**。

(二)公升級過程

我們有了現在狀態的**結果,然後我們再收集現在狀態的測量值。結合**值和測量值,我們可以更新得到現在狀態(k)的最優化估算值x(k|k):

x(k|k)= x(k|k-1)+kg(k) (z(k)-h x(k|k-1)) ……… (3)

其中kg為卡爾曼增益(kalman gain):

kg(k)= p(k|k-1) h』 / (h p(k|k-1) h』 + r) ……… (4)

我們已經得到了k狀態下最優的估算值x(k|k)。為了要另卡爾曼濾波器不斷的執行下去直到系統過程結束,我們還要更新k狀態下x(k|k)的covariance:

p(k|k)=(i-kg(k) h)p(k|k-1) ………     (5)

其中i 為1的矩陣,對於單模型單測量,i=1。當系統進入k+1狀態時,p(k|k)就是式子(2)的p(k-1|k-1)。這樣,演算法就可以自回歸的運算下去。

(三)設線性時變系統的離散狀態防城和觀測方程為:

x(k) = f(k,k-1)·x(k-1)+t(k,k-1)·u(k-1)

y(k) = h(k)·x(k)+n(k)

其中x(k)和y(k)分別是k時刻的狀態向量和觀測向量

f(k,k-1)為狀態轉移矩陣

u(k)為k時刻動態雜訊

t(k,k-1)為系統控制矩陣

h(k)為k時刻觀測矩陣

n(k)為k時刻觀測雜訊

則卡爾曼濾波的演算法流程為:

預估計x(k)^= f(k,k-1)·x(k-1) 

計算預估計協方差矩陣 c(k)^=f(k,k-1)×c(k)×f(k,k-1)'+t(k,k-1)×q(k)×t(k,k-1)'

q(k) = u(k)×u(k)' 

計算卡爾曼增益矩陣 k(k) = c(k)^×h(k)'×[h(k)×c(k)^×h(k)'+r(k)]^(-1)

r(k) = n(k)×n(k)' 

更新估計 x(k)~=x(k)^+k(k)×[y(k)-h(k)×x(k)^] 

計算更新後估計協防差矩陣 c(k)~ = [i-k(k)×h(k)]×c(k)^×[i-k(k)×h(k)]'+k(k)×r(k)×k(k)' 

x(k+1) = x(k)~

c(k+1) = c(k)~

重複以上步驟

卡爾曼 卡爾曼濾波 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...