卡爾曼濾波
預測方程
x^k′=Ax^k−1+Bμk(1)
Pk′=APk−1AT+Q(2)
更新方程
Kk=Pk′HT(HPk′HT+R)−1(3)
x^k=x^k′+Kk(yk−Hx^k′)(4)
Pk=(I−KkH)Pk′(5)
x^k′ : 爲預測值
x^k−1 : 爲估計值
H : 真實狀態到觀測狀態的變換
Kk : 卡爾曼增益
Q : 預測噪聲的協方差
R : 觀測噪聲的協方差
Pk′ : 預測的協方差
Pk : 估計的協方差
yk : 觀測值
A : 狀態轉移矩陣
B : 控制矩陣
xk : 真實值(我們無法得到)
預測方程 (1)
假設,一個人開着一輛車在一條比值的道路上行駛,我們的目的是要知道這個人的狀態信息 :
xk=[pkvk](6) 並假設車的加速度爲 μk。
pk=pk−1+vk−1Δt+21μkΔt2(7)
vk=vk−1+μkΔt(8)
根據 (6),(7),(8) 公式得到:
xk=[10Δt1][pk−1vk−1]+[21Δt2Δt]μk(9)
令 :
A=[10Δt1]
B=[21Δt2Δt]
我們稱 A,B分別爲 狀態轉移矩陣和控制矩陣。x^k−1 爲上一次卡爾曼的估計。
這樣我們就得到了一個線性預測(後驗)方程 : x^k′=Ax^k−1+Bμk
更新方程(3)
根據預測方程 (1)*** 得到的方程形式我們可以系統狀態預測方程*:
xk=Axk−1+Bμk+ωk(7)
其中 ωk 爲均值爲 0,協方差矩陣爲 Q,且服從正態分佈的預測噪聲 (預測模型本身帶有的噪聲)。
小車的真實狀態 xk 我們其實是無法得知的,我們只能通過觀測值來對真實值進行估計。現在我們在路上安裝一個設備來測定小汽車的位置,觀測到的值記爲 yk ,這樣從小汽車的真實狀態到其觀測狀態會存在一個變換關係,我們記爲 H ,並且該 H 也是一個線性函數,此時我們定義一個觀測方程:
yk=Hxk+vk
其中 vk 均值爲 0 ,協方差矩陣爲 R,且服從正態分佈的的測量噪聲(測量過程中認爲存在噪聲)。
現在有兩個值,一個是傳感器的測量值,一個是前一狀態得到的預測值,並且它們都是服從高斯分佈的。如果我們想知道這兩種情況都可能發生的概率,將這兩個高斯分佈相乘就可以了。
用一維的高斯分佈來分析,具有方差 σ2 和 μ 的高斯曲線可以用下式表示:
N(x,μ,σ)=σ2π1e−2σ2(x−μ)2
如果把兩個高斯曲線相乘 N(x,μ0,σ0)⋅N(x,μ1,σ1)=N(x,μ′,σ′)
N(x,μ0,σ0)⋅N(x,μ1,σ1)
=σ02π1e−2σ02(x−μ0)2⋅σ12π1e−2σ12(x−μ1)2
=2π1⋅σ0σ12π1e−2(σ0σ1)2σ12(x−μ0)2+σ02(x−μ1)2
=2π⋅σ02+σ121σ02+σ121⋅σ0σ12π1e−2(σ02+σ12σ0σ1)2(x−σ02+σ12μ0σ12+μ1σ02)2
其中
μ′=σ02+σ12μ0σ12+μ1σ02=μ0+σ02+σ12(μ1−μ0)σ02(8)
σ′2=σ02+σ12σ02σ12=σ02−σ02+σ12σ04(9)
令k=σ02+σ12σ02
μ′=μ0+k(μ1−μ0)(10)
σ′2=σ02−kσ02(11)
(10),(11)式寫爲矩陣模式, Σ 表示高斯分佈的協方差,μ 表示每個維度的均值則:
K=Σ0(Σ0+Σ1)−1(12)
μ′=μ0+K(μ1−μ0)(13)
Σ′=Σ0−KΣ0(14)
預測方程 (2)
真實值 xk 與預測值 x^k′ 之間的誤差:
ek′=xk−x^k′
Pk′=E[(xk−x^k′)(xk−x^k′)T]
x^k′=Ax^k−1+Bμk
同樣的方程也適用於真實值
xk=Axk−1+Bμk+ωk
根據以上方程組得到:
Pk′=E[(Aek−1)(Aek−1)T]+E[ωkωkT]=APk−1AT+Q
更新方程(4)
x^k=x^k′+Kk(yk−Hx^k′)
卡爾曼估計在預測的結果基礎上再加上一個小的調整,用最小二乘來看待此問題,其中 x^k′相當於初始值, 其中 yk−Hx^k′相當於殘差,Kk 相當於雅各比矩陣。
卡爾曼增益(3)
真實值 xk 與估計值 x^k 之間的誤差:
ek=xk−x^k
x^k=x^k′+Kk(yk−Hx^k′)
yk=Hxk+vk
根據以上方程得到:
ek=(I−KkH)(xk−x^k′)−Kkvk
Pk=E[ekekT]=(I−KkH)Pk′(I−KkH)T+KkRKkT(15)
卡爾曼濾波本質是最小均方差估計,而均方差是Pk 的跡,將上式展開求跡:
tr(Pk)=tr(Pk′)−str(KkHPk′)+tr(Kk(HPk′HT+R)KkT)
δKkδPk=−2(HRk′)T+2Kk(HPk′HT+R)
令上式等於 0 :
Kk=Pk′HT(HPk′HT+R)−1
更新方程(5)
展開(15)式得到:
Pk=Pk′−KkHPk′−Pk′HTKkT+Pk′HT(HPk′HT+R)−1(HPk′HT+R)KkT
將 Kk代入上式右邊最後一項,KkT 保持原樣
Pk=(I−KkH)Pk′