卡尔曼滤波器

卡尔曼滤波器

在B站看了一个卡尔曼滤波器的推导视频,感觉很详细,做一个笔记。

状态和测量方程

X k = A X k − 1 + B u k − 1 + w k − 1 Z k = H X k + v k (1) \begin{aligned} X_k &= AX_{k-1} + Bu_{k-1} + w_{k-1} \\ Z_k &= HX_{k} + v_{k} \end{aligned}\tag{1} XkZk=AXk1+Buk1+wk1=HXk+vk(1)

式(1)中 A A A, B B B H H H分别是状态矩阵、控制矩阵和测量矩阵, X k X_k Xk u k u_k uk w k w_k wk, Z k Z_k Zk v k v_k vk分别是状态变量,控制变量,过程噪声,测量变量和测量噪声,其中测量噪声和过程噪声是不确定的,一般假设满足正态分布, w w w满足分布 p ( w ) ∼ ( 0 , Q ) p(w)\sim(0,Q) p(w)(0,Q) v v v满足分布 p ( v ) ∼ ( 0 , R ) p(v)\sim(0,R) p(v)(0,R)

过程噪声和测量噪声实际应用时是不知道的,忽略掉噪声可以得到先验估计和测量结果,分别为:
X k ~ = A X k − 1 ^ + B u k − 1 X k m e a ~ = H − 1 Z k (2) \begin{aligned} \widetilde{X_k} &= A\widehat{X_{k-1}} + Bu_{k-1}\\ \widetilde{X_{k_{mea}}} &= H^{-1} Z_k \end{aligned}\tag{2} Xk Xkmea =AXk1 +Buk1=H1Zk(2)

卡尔曼的作用就是结合先验 X k ~ \widetilde{X_k} Xk 和测量 X k m e a ~ \widetilde{X_{k_{mea}}} Xkmea 结果得到比较准确的估计值 X k ^ \widehat{X_{k}} Xk ,即:
X k ^ = X k ~ + G k ( H − 1 Z k − X k ~ ) (3) \widehat{X_{k}} = \widetilde{X_k} + G_{k}(H^{-1} Z_k - \widetilde{X_k} )\tag{3} Xk =Xk +Gk(H1ZkXk )(3)

为了简化计算,令 K k = G k H K_k = G_{k}H Kk=GkH,则,
X k ^ = X k ~ + K k ( Z k − H X k ~ ) (4) \widehat{X_{k}} = \widetilde{X_k} + K_{k}(Z_k - H\widetilde{X_k} )\tag{4} Xk =Xk +Kk(ZkHXk )(4)

其中 K k ∈ [ 0 , H − 1 ] K_k \in [0,H^{-1}] Kk[0,H1],当 K k = 0 K_k=0 Kk=0时,完全相信根据状态方程估计的先验结果,当 K k = H − 1 K_k=H^{-1} Kk=H1时,完全相信测量结果,取到两者之间时,则融合两个结果。

卡尔曼增益推导

从卡尔曼增益融合两个结果后使得误差最小入手,估计卡尔曼增益,定义误差为,
e k = X k − X k ^ (5) e_{k} = X_{k} - \widehat{X_{k}} \tag{5} ek=XkXk (5)

假设 e k e_k ek满足分布 p ( e k ) ∼ ( 0 , P ) p(e_k)\sim(0,P) p(ek)(0,P),协方差P定义为,
P = E { e k e k T } (6) P=E\{e_ke_k^T\} \tag{6} P=E{ekekT}(6)

将式(1)、式(2)、式(4)和式(5)带入后得,

e k = X k − X k ^ = X k − ( X k ~ + K k ( Z k − H X k ~ ) ) = X k − ( X k ~ + K k ( H X k + v k − H X k ~ ) ) = ( I − K k H ) ( X k − X k ~ ) + K k v k = ( I − K k H ) e k ~ + K k v k (7) \begin{aligned} e_{k} &= X_{k} - \widehat{X_{k}} \\ &= X_{k} - ( \widetilde{X_k} + K_{k}(Z_k - H\widetilde{X_k} )) \\ &= X_{k} - ( \widetilde{X_k} + K_{k}(HX_{k} + v_{k} - H\widetilde{X_k} ))\\ &= (I - K_kH)(X_{k} - \widetilde{X_k}) + K_kv_k \\ &= (I - K_kH)\widetilde{e_k} + K_kv_k\end{aligned} \tag{7} ek=XkXk =Xk(Xk +Kk(ZkHXk ))=Xk(Xk +Kk(HXk+vkHXk ))=(IKkH)(XkXk )+Kkvk=(IKkH)ek +Kkvk(7)

其中 e k ~ \widetilde{e_k} ek 代表先验误差,
e k ~ = X k − X k ~ (8) \widetilde{e_k} = X_{k} - \widetilde{X_{k}} \tag{8} ek =XkXk (8)

将式(7)带入式(6)得,
P k = E { e k e k T } = E { [ ( I − K k H ) e k ~ + K k v k ] [ ( I − K k H ) e k ~ + K k v k ] T } = E { ( I − K k H ) e k ~ e k ~ T ( I − K k H ) T + ( I − K k H ) e k ~ v k T K k T + K k v k e k ~ T ( I − K k H ) T + K k v k v k T K k T } = ( I − K k H ) E { e k ~ e k ~ T } ( I − K k H ) T + K k E { v k v k T } K k T = ( I − K k H ) P k ~ ( I − K k H ) T + K k R K k T = ( P k ~ − K k H P k ~ ) ( I − K k H ) T + K k R K k T = P k ~ − K k H P k ~ − P k ~ H T K k T + K k H P k ~ H T K k T + K k R K k T (9) \begin{aligned}P_k &=E\{e_ke_k^T\} \\ &=E\{[(I - K_kH)\widetilde{e_k} + K_kv_k][(I - K_kH)\widetilde{e_k} + K_kv_k]^T\} \\ &= E\{(I - K_kH)\widetilde{e_k}\widetilde{e_k}^T(I - K_kH)^T + (I - K_kH)\widetilde{e_k} v_k^TK_k^T + K_kv_k\widetilde{e_k}^T(I - K_kH)^T + K_kv_kv_k^TK_k^T \} \\ &=(I - K_kH) E\{\widetilde{e_k}\widetilde{e_k}^T \} (I - K_kH)^T + K_kE\{v_kv_k^T\}K_k^T \\ &=(I - K_kH)\widetilde{P_k}(I - K_kH)^T + K_kRK_k^T \\ &=(\widetilde{P_k} - K_kH\widetilde{P_k})(I - K_kH)^T + K_kRK_k^T \\ &=\widetilde{P_k} - K_kH\widetilde{P_k} - \widetilde{P_k}H^TK_k^T + K_kH\widetilde{P_k}H^TK_k^T + K_kRK_k^T \end{aligned} \tag{9} Pk=E{ekekT}=E{[(IKkH)ek +Kkvk][(IKkH)ek +Kkvk]T}=E{(IKkH)ek ek T(IKkH)T+(IKkH)ek vkTKkT+Kkvkek T(IKkH)T+KkvkvkTKkT}=(IKkH)E{ek ek T}(IKkH)T+KkE{vkvkT}KkT=(IKkH)Pk (IKkH)T+KkRKkT=(Pk KkHPk )(IKkH)T+KkRKkT=Pk KkHPk Pk HTKkT+KkHPk HTKkT+KkRKkT(9)

上式化简时利用了 e k ~ \widetilde{e_k} ek v k v_k vk不相关的期望为0的性质,其中 P k ~ \widetilde{P_k} Pk 代表先验误差协方差,为了使误差方差最小,即最小化 P k P_k Pk的迹 t r ( P k ) tr(P_k) tr(Pk),求导得,
∂ t r ( P k ) ∂ K k = − 2 ( H P k ~ ) T + 2 K k H P k ~ H T + 2 K k R (10) \frac{\partial tr(P_k)}{\partial K_k} = -2(H\widetilde{P_k})^T + 2K_kH\widetilde{P_k}H^T + 2K_kR \tag{10} Kktr(Pk)=2(HPk )T+2KkHPk HT+2KkR(10)

令导数等于0,得到
K k = P k ~ H T H P k ~ H T + R (11) K_k=\frac{\widetilde{P_k}H^T}{H\widetilde{P_k}H^T + R} \tag{11} Kk=HPk HT+RPk HT(11)

其中 P k ~ \widetilde{P_k} Pk 代表先验误差估计,且 P k ~ = P k ~ T \widetilde{P_k}=\widetilde{P_k}^T Pk =Pk T,定义为:

P k ~ = E { e k ~ e k ~ T } (12) \widetilde{P_k} = E\{\widetilde{e_k}\widetilde{e_k}^T\} \tag{12} Pk =E{ek ek T}(12)

观察式(11),可以发现当测量噪声的协方差 R R R趋近于无穷大时,卡尔曼增益趋近于0,结合式(4),可以发现估计的结果等于(基于模型的)先验结果,测量噪声大时,相信模型的先验结果;当测量噪声的协方差 R R R趋近零时,卡尔曼增益趋近于 H − 1 H^{-1} H1,估计的结果等于测量结果,测量噪声小时更相信于测量结果。

误差矩阵推导

将式(1)、式(2)、式(8)带入式(12)得,
P k ~ = E { e k ~ e k ~ T } = E { e k ~ e k ~ T } = E { ( ( A X k − 1 + B u k − 1 + w k − 1 ) − ( A X k − 1 ^ + B u k − 1 ) ) e k ~ T } = E { ( A e k − 1 ^ + w k − 1 ) ( A e k − 1 ^ + w k − 1 ) T } = E { A e k − 1 ^ e k − 1 ^ T A } + E { A e k − 1 ^ w k − 1 T } + E { w k − 1 T A e k − 1 ^ T } + E { w k − 1 w k − 1 T } = A P k − 1 ^ A + Q (13) \begin{aligned}\widetilde{P_k} &= E\{\widetilde{e_k}\widetilde{e_k}^T\} \\ &= E\{\widetilde{e_k}\widetilde{e_k}^T\} \\ &= E\{((AX_{k-1} + Bu_{k-1} + w_{k-1})-(A\widehat{X_{k-1}} + Bu_{k-1}))\widetilde{e_k}^T \} \\ &=E\{ (A\widehat{e_{k-1}}+w_{k-1})(A\widehat{e_{k-1}}+w_{k-1})^T \} \\ &=E\{A\widehat{e_{k-1}}\widehat{e_{k-1}}^TA\} + E\{A\widehat{e_{k-1}}w_{k-1}^T\} + E\{w_{k-1}^TA\widehat{e_{k-1}}^T\} + E\{w_{k-1}w_{k-1}^T\} \\ &= A\widehat{P_{k-1}}A + Q \end{aligned} \tag{13} Pk =E{ek ek T}=E{ek ek T}=E{((AXk1+Buk1+wk1)(AXk1 +Buk1))ek T}=E{(Aek1 +wk1)(Aek1 +wk1)T}=E{Aek1 ek1 TA}+E{Aek1 wk1T}+E{wk1TAek1 T}+E{wk1wk1T}=APk1 A+Q(13)

上式中利用了 e k − 1 ^ \widehat{e_{k-1}} ek1 w k − 1 w_{k-1} wk1不相关的期望为0的性质,观察式(1),其中 w k − 1 w_{k-1} wk1作用于 X k X_k Xk,也就间接作用于 e k e_k ek,而 e k − 1 ^ \widehat{e_{k-1}} ek1 是上一帧的误差估计,因此两者不相关。
式(13)说明,先验误差估计可以从上一帧的误差估计推理得到,因此需要继续推导误差估计,将式(11)带入式(9)中可得,

P k = P k ~ − K k H P k ~ − P k ~ H T K k T + K k H P k ~ H T K k T + K k R K k T = P k ~ − K k H P k ~ − P k ~ H T K k T + K k ( H P k ~ H T + R ) K k T = P k ~ − K k H P k ~ − P k ~ H T K k T + P k ~ H T H P k ~ H T + R ( H P k ~ H T + R ) K k T = P k ~ − K k H P k ~ = ( I − K k H ) P k ~ (14) \begin{aligned}P_k &=\widetilde{P_k} - K_kH\widetilde{P_k} - \widetilde{P_k}H^TK_k^T + K_kH\widetilde{P_k}H^TK_k^T + K_kRK_k^T \\ &=\widetilde{P_k} - K_kH\widetilde{P_k} - \widetilde{P_k}H^TK_k^T + K_k(H\widetilde{P_k}H^T+R)K_k^T \\ &=\widetilde{P_k} - K_kH\widetilde{P_k} - \widetilde{P_k}H^TK_k^T + \frac{\widetilde{P_k}H^T}{H\widetilde{P_k}H^T + R} (H\widetilde{P_k}H^T+R)K_k^T \\ &=\widetilde{P_k} - K_kH\widetilde{P_k} \\ &=(I - K_kH)\widetilde{P_k} \end{aligned} \tag{14} Pk=Pk KkHPk Pk HTKkT+KkHPk HTKkT+KkRKkT=Pk KkHPk Pk HTKkT+Kk(HPk HT+R)KkT=Pk KkHPk Pk HTKkT+HPk HT+RPk HT(HPk HT+R)KkT=Pk KkHPk =(IKkH)Pk (14)

卡尔曼预测校正步骤

由于每一次的预测都依赖上一次的结果, P k ~ \widetilde{P_k} Pk 依赖于 P k − 1 ^ \widehat{P_{k-1}} Pk1 , X k ~ \widetilde{X_k} Xk 依赖于 X k − 1 ^ \widehat{X_{k-1}} Xk1 ,因此迭代前需要先设置初始值 X 0 ^ \widehat{X_{0}} X0 , P 0 ^ \widehat{P_{0}} P0

预测过程

  1. 先验更新:
    X k ~ = A X k − 1 ^ + B u k − 1 \widetilde{X_k} = A\widehat{X_{k-1}} + Bu_{k-1} Xk =AXk1 +Buk1

  2. 先验误差矩阵更新:
    P k ~ = A P k − 1 ^ A + Q \widetilde{P_k} = A\widehat{P_{k-1}}A + Q Pk =APk1 A+Q

校正

  1. 计算卡尔曼增益
    K k = P k ~ H T H P k ~ H T + R K_k=\frac{\widetilde{P_k}H^T}{H\widetilde{P_k}H^T + R} Kk=HPk HT+RPk HT

  2. 后验估计
    X k ^ = X k ~ + K k ( Z k − H X k ~ ) \widehat{X_{k}} = \widetilde{X_k} + K_{k}(Z_k - H\widetilde{X_k} ) Xk =Xk +Kk(ZkHXk )

  3. 更新误差矩阵
    P k ^ = ( I − K k H ) P k ~ \widehat{P_k} =(I - K_kH)\widetilde{P_k} Pk =(IKkH)Pk

参考

DR_CAN卡尔曼滤波器

张贤达. 矩阵分析与应用

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值