前言:這可能是網上最數學化的推導了,相較於其他的推導方法在數學上更加完備,這意味着對於其他的非線性濾波器如EKF或者信息濾波器IF很多其他地方都可以採用同樣的方法進行推導,一通百通。本文的卡爾曼濾波器的推導從最基礎的概率論中的貝葉斯準則和全概率公式推起,一步一步的完成卡爾曼濾波器,適合對卡爾曼有一定概念上的理解希望深入學習濾波器方法的同學。
卡爾曼濾波算法
μˉt=Atμt−1+Btut
Σˉt=AtΣt−1AtT+Rt
Kt=ΣˉtCtT(CtΣˉtCtT+Qt)−1
μt=μˉt+Kt(zt−Ctμˉt)
Σt=(I−KtCt)Σˉt
推導過程:
先驗條件
貝葉斯準則:
p(x∣y,z)=p(y∣z)p(y∣x,z)p(x∣z)
全概率公式:
p(x)=∫p(x∣y)p(y)dy
馬爾可夫性:認爲xt−1是zt−1、ut−1的最優估計
貝葉斯濾波器推導
p(xt∣z1:t,u1:t)=p(xt∣zt,z1:t−1,u1:t)(套用貝葉斯準則)=p(zt∣z1:t−1,u1:t)p(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)(分母與xt無關)=ηp(zt∣xt,z1:t−1,u1:t)p(xt∣z1:t−1,u1:t)(馬爾可夫性)=ηp(zt∣xt)p(xt∣z1:t−1,u1:t)(區分先驗後驗)
對於先驗分佈p(xt∣z1:t−1,u1:t)帶入全概率公式
bel(xt)=p(xt∣z1:t−1,u1:t)=∫p(xt∣xt−1,z1:t−1,u1:t)p(xt−1∣z1:t−1,u1:t)dxt−1
最終得到先驗和後驗公式
先驗:
bel(xt)=∫p(xt∣xt−1,z1:t−1,u1:t)p(xt−1∣z1:t−1,u1:t)dxt−1
後驗:
bel(xt)=ηp(zt∣xt)bel(xt)
卡爾曼濾波器推導
根據貝葉斯濾波器帶入線性的模型,推導得到卡爾曼濾波器。
模型
預測方程:
xt=Atxt−1+Btut+ϵt
xt=⎝⎜⎜⎜⎛x1,tx2,t⋮xn,t⎠⎟⎟⎟⎞ut=⎝⎜⎜⎜⎛u1,tu2,t⋮um,t⎠⎟⎟⎟⎞
觀測方程:
zt=Ctxt+δt
預測
根據貝葉斯濾波器的先驗公式
bel(xt)=∫∼N(xt;Atxt−1+Btut,Rt)p(xt∣xt−1,ut)∼N(xt−1;μt−1,Σt−1)bel(xt−1)dxt−1
其中,t-1時刻bel(xt−1)的概率分佈爲高斯分佈,均值爲μt−1,方差爲Σt−1。
bel(xt)=η∫exp{−21(xt−Atxt−1−Btut)TRt−1(xt−Atxt−1−Btut)}exp{−21(xt−1−μt−1)TΣt−1−1(xt−1−μt−1)}
僅考慮指數部分,記爲bel(xt)=η∫exp{−Lt}dxt−1,其中
Lt=21(xt−Atxt−1−Btut)TRt−1(xt−Atxt−1−Btut)+21(xt−1−μt−1)TΣt−1−1(xt−1−μt−1)
對於xt−1的積分的計算則考慮到概率分佈在整個空間中積分爲常數,由於Lt是關於$x_{t-1}的二次型,因此關於其的分佈爲高斯分佈。高斯分佈的計算只需要求一階導數爲零即可得到均值,求二階導數得到方差,因此求導如下:
∂xt−1∂Lt=−AtTRt−1(xt−Atxt−1−Btut)+Σt−1−1(xt−1−μt−1)
∂xt−12∂2Lt=AtTRt−1At+Σt−1−1=:Ψt−1
令一階導數爲零有
AtTRt−1(xt−Atxt−1−Btut)=Σt−1−1(xt−1−μt−1)AtTRt−1xt−AtTRt−1Atxt−1−AtTRt−1Btut=Σt−1−1xt−1−Σt−1−1μt−1AtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1=Σt−1−1xt−1+AtTRt−1Atxt−1xt−1=Σt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1
定義二次型函數如下:
Lt(xt−1,xt)=21(xt−1−Σt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1)TΨ−1(xt−1−Σt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1)
有det(2πΨt)21∫exp{Lt(xt,xt−1)}dxt−1=1,因此只要將原式轉換爲Lt=Lt(xt,xt−1)+Lt(xt)即可將積分去掉。
bel(xt)=η∫exp{−Lt}dxt−1=η∫exp{−Lt(xt)−Lt(xt,xt−1)}dxt−1=ηexp{−Lt(xt)}∫exp{−Lt(xt,xt−1)}dxt−1=ηexp{−Lt(xt)
因此只需要考慮Lt(xt)的分佈即可,由於對於xt是二次型,爲高斯分佈,可以採用求一階導數和二階導數的方法求得其均值和方差。
Lt(xt)=Lt−Lt(xt,xt−1)=21(xt−Atxt−1−Btut)TRt−1(xt−Atxt−1−Btut)+21(xt−1−μt−1)TΣt−1−1(xt−1−μt−1)−21(xt−1−Σt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1)TΨ−1(xt−1−Σt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1)
由於該式子的化簡過於繁瑣,就不化簡直接求導數
一階導數:
∂xt∂Lt(xt)=Rt−1(xt−Atxt−1−Btut)+Σt−1−1+AtTRt−1AtRt−1AtΨ−1(xt−1−Σt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1)=Rt−1(xt−Atxt−1−Btut)+Σt−1−1+AtTRt−1AtRt−1At(AtTRt−1At+Σt−1−1)(xt−1−Σt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1)=Rt−1(xt−Atxt−1−Btut)+Rt−1At(xt−1−Σt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1)=Rt−1(xt−Btut)−Rt−1AtΣt−1−1+AtTRt−1AtAtTRt−1xt−AtTRt−1Btut+Σt−1−1μt−1=Rt−1(xt−Btut)−Rt−1AtΣt−1−1+AtTRt−1AtAtTRt−1(xt−Btut)+Σt−1−1μt−1=[Rt−1−Rt−1AtTΣt−1−1+AtTRt−1AtAtRt−1](xt−Btut)−Rt−1AtΣt−1−1+AtTRt−1AtΣt−1−1μt−1(求逆定理)=(Rt+AtΣt−1AtT)−1(xt−Btut)−Rt−1AtΣt−1−1+AtTRt−1AtΣt−1−1μt−1
二階導數:
∂xt2∂2Lt(xt)=(Rt+AtΣt−1AtT)−1
當一階導數爲零時
0=(Rt+AtΣt−1AtT)−1(xt−Btut)−Rt−1AtΣt−1−1+AtTRt−1AtΣt−1−1μt−1(Rt+AtΣt−1AtT)−1(xt−Btut)=Rt−1AtΣt−1−1+AtTRt−1AtΣt−1−1μt−1(xt−Btut)=(Rt+AtΣt−1AtT)Rt−1At(Σt−1−1+AtTRt−1At)−1Σt−1−1μt−1(xt−Btut)=(Rt+AtΣt−1AtT)Rt−1At(I+Σt−1AtTRt−1At)−1μt−1(xt−Btut)=(At+AtΣt−1AtTRt−1At)(I+Σt−1AtTRt−1At)−1μt−1(xt−Btut)=At(I+Σt−1AtTRt−1At)(I+Σt−1AtTRt−1At)−1μt−1(xt−Btut)=Atμt−1xt=Atμt−1+Btut
後驗
根據貝葉斯濾波器的後驗公式
bel(xt)=η∼N(zt:Ctxt,Qt)p(zt∣xt)∼N(xt:μˉt,Σˉt)bel(xt)
簡化表示爲bel(xt)=ηexp{−Jt},其中
Jt=21(zt−Ctxt)TQ−1(zt−Ctxt)+21(xt−μt)TΣt−1(xt−μt)
由於依舊是xt的二次型,即滿足高斯分佈,同樣可以採用求一階導數和二階導數的方法求均值和方差。
一階導數:
∂xt∂J=−CtTQt−1(zt−Ctxt)+Σt−1(xt−μt)
二階導數:
∂xt2∂2J=CtTQt−1Ct+Σt−1
因此,Σt=(CtTQt−1Ct+Σt−1)−1
令一階導數爲零
0=−CtTQt−1(zt−Ctxt)+Σt−1(xt−μt)CtTQt−1(zt−Ctxt)=Σt−1(xt−μt)CtTQt−1zt−CtTQt−1Ctxt=Σt−1xt−Σt−1μt(CtTQt−1Ct+Σt−1)xt=CtTQt−1zt+Σt−1μtxt=(CtTQt−1Ct+Σt−1)−1CtTQt−1zt+(CtTQt−1Ct+Σt−1)−1Σt−1μt
令xt=μt+Kk(zt−Ctμt),整理得
Kk=CtTQt−1(CtTQt−1Ct+Σt−1)−1
最後將Σt也用Kk來表達,
Σt=(CtTQt−1Ct+Σt−1)−1Σt=(I−CtTQt−1(CtTQt−1Ct+Σt−1)−1Ct)ΣtΣt=(I−KkCt)Σt
綜上,卡爾曼濾波器的五個公式便推導完畢了。