卡尔曼滤波 (Kalman Filter)

这一周的视频质量很一般,slides 做得也不仔细有不少错误。最后看了一些其他网站的文章和视频才有了比较深刻的理解,本文结尾有推荐资料。

KF 模型

  • 以匀速运动的动力学模型为例
    • 状态 xt+1=Axt+Butut 为外部影响
    • 观测结果 zt=Cxt
    • xtzt 都有测量误差
    • 状态 xt+1 仅包含位置和速度:xt+1:=[vdvdt]
    • 动力学模型可以通过矩阵 A 描述,A=[1dt01]

基于动力学的贝叶斯模型 p(xt+1|xt)=Ap(xt)p(zt|xt)=Cp(xt)

加入运动和观测的误差 p(xt+1|xt)=Ap(xt)+vmp(zt|xt)=Cp(xt)+v0

假设误差基于高斯分布 p(xt+1|xt)=AN(xt,Pt)+N(0,Σm)p(zt|xt)=CN(xt,Pt)+N(0,Σ0)

把线性变换 A 和 C 代入正态分布 p(xt+1|xt)=N(Axt,APtAT)+N(0,Σm)p(zt|xt)=N(Cxt,CPtCT)+N(0,Σ0)

线性加和 p(xt+1|xt)=N(Axt,APtAT+Σm)p(zt|xt)=N(Cxt,CPtCT+Σ0)

最大后验概率估计卡尔曼滤波

最大后验概率估计的目的在于最大化 p(xt|zt,xt1),即 xt^=argmaxxtp(xt|zt,xt1)

由贝叶斯公式 p(xt|zt,xt1)=p(zt|xt,xt1)p(xt|xt1)P(zt) 代入正态分布得 xt^=argmaxxtN(Cxt,CPtCT+Σ0)N(Axt,APtAT+Σm) 求导可解得(具体过程参考 slides) xt^=Axt1+K(ztCAxt1)Pt^=PKCPK=PCTR1KCPCTR1P=APt1AT+ΣmR=Σ0

这里 K 就是 Kalman gain。

扩展卡尔曼滤波 (Extended Kalman Filter)

KF 的局限之一在于假设了线性模型,EKF 去掉了线性模型的限制,接受任何 xt+1=Axt+But=>xt+1=f(xt,ut)zt=Cxt=>zt=h(xt)

无迹卡尔曼滤波 (Unscented Kalman Filter)

参考资料