0
点赞
收藏
分享

微信扫一扫

卡尔曼滤波详细推导

西特张 2022-04-21 阅读 316
概率论

文章目录

卡尔曼滤波

背景

卡尔曼滤波作为一种状态最优估计的方法,其应用也越来越普遍,如在无人机、机器人等领域均得到了广泛应用。
对于Kalman Filter的理解,用过的都知道“黄金五条”公式,且通过“预测”与“更新”两个过程来对系统的状态进行最优估计,被广泛应用于估计问题中。

线性系统模型建立

对于一个线性系统来说,运动、观测模型如下
{ X k = A X k − 1 + B u k + w k Z k = H X k + n k \left\{ \begin{aligned} \bf{X}_{k} &= A\bf{X}_{k-1}+B\bf{u}_{k}+w_k \\ \bf{Z}_k & = H\bf{X}_k+n_k \end{aligned} \right. {XkZk=AXk1+Buk+wk=HXk+nk
其中: A A A表示转移矩阵、 X k \bf{X}_k Xk表示系统状态、 B B B表示控制矩阵\、 u k \bf{u}_k uk表示输入, w k w_k wk表示输入高斯噪声,其均值为0,协方差矩阵为 P P P, P ( w ) ∈ N ( 0 , P ) P(w)\in N(0, P) P(w)N(0,P) Z k \bf{Z}_k Zk表示测量值、 H H H表示观测矩阵、 n k n_k nk表示测量的噪声平均值为0,协方差为 R R R, p ( v ) ∈ N ( 0 , R ) p(v)\in N(0,R) p(v)N(0,R)
对于大多数系统来讲,并不是严格意义上的线性时变系统,或者是系统结构参数存在不确定性,这个不确定性用过程噪声和估计噪声来表征。总之,引入 w k 、 n k w_k\text{、}n_k wknk的主要目的是表征不确定性。

公式推导

对于状态估计算法来说,我们可以获得状态量的三个值:状态预测值( x ˉ k \bar{x}_k xˉk)、最佳估计值( x ~ k \tilde{x}_k x~k)以及真实值( x k x_{k} xk)。
预测值是系统先验估计值,真实值是系统的测量值,最佳估计值是系统后验最大估计值,它通过一个卡尔曼增益 K K K来调节预测值和真实值。
状态预测值为(黄金法则1):
x ˉ k = A x ~ k − 1 + B u k \bar{x}_k = A\tilde{x}_{k-1} + Bu_{k} xˉk=Ax~k1+Buk
从而得到更新方程(黄金法则2):
x ~ k = x ˉ k + K ( Z k − H x ˉ k ) ; \tilde{x}_{k} = \bar{x}_k + K(Z_k-H\bar{x}_k); x~k=xˉk+K(ZkHxˉk);
我们将联立式(1)(3)得到:
x ~ k = x ˉ k + K ( H x k + n k − H x ˉ k ) \tilde{x}_k = \bar{x}_k + K(Hx_k+n_k-H\bar{x}_k)\\ x~k=xˉk+K(Hxk+nkHxˉk)
进一步得到:
x ~ k = x ˉ k + K ( H x k − H x ˉ k ) + K n k \tilde{x}_k = \bar{x}_k + K(Hx_k-H\bar{x}_k)+Kn_k x~k=xˉk+K(HxkHxˉk)+Knk
经过变换可得:
x k − x ~ k = x k − x ˉ k − K ( H x k − H x ˉ k ) − K n k x_k-\tilde{x}_k = x_k - \bar{x}_k - K(H{x}_k-H\bar{x}_k)-Kn_k xkx~k=xkxˉkK(HxkHxˉk)Knk
我们定义:
e ˉ k = x k − x ˉ k \bar{e}_k=x_k-\bar{x}_k eˉk=xkxˉk表示真值与估计值之间的误差(先验)
e k = x k − x ~ k {e}_k=x_k-\tilde{x}_k ek=xkx~k表示真值与最优估计值之间的误差(后验)
P ˉ k = E [ e ˉ k e ˉ k T ] \bar{P}_k=E[\bar{e}_k\bar{e}_k^T] Pˉk=E[eˉkeˉkT]表示真值与估计之间的协方差矩阵
P k = E [ e k e k T ] {P}_k=E[{e}_k{e}_k^T] Pk=E[ekekT]表示真值与估计之间的协方差矩阵
于是,式(6)转换为:
e k = ( I − K H ) e ˉ k − K n k e_k =(I-KH)\bar{e}_k-Kn_k ek=(IKH)eˉkKnk
于是,可以得到后验最优协方差矩阵:
P k = E [ e k e k T ] = ( I − K H ) P ˉ k ( I − K H ) T + K R K T P_k=E[e_ke_k^T]=(I-KH)\bar{P}_k(I-KH)^T+KRK^T Pk=E[ekekT]=(IKH)Pˉk(IKH)T+KRKT
式(8)展开得到:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ P_k = \bar{P}_…
对于卡尔曼滤波来说,其目标是观测值与预测值之间的协方差最下,使得其接近真值:
J = arg ⁡ min ⁡ K t r ( P ) J = \arg\min_K tr(P) J=argKmintr(P)
对于每一项 P k P_k Pk来说,对 K K K求导:
∂ P k ∂ K = − 2 P ˉ k H T + 2 K ( H P ˉ k H T + R ) = 0 \frac{\partial P_k}{\partial K}= -2\bar{P}_kH^T+2K(H\bar{P}_kH^T+R) = 0 KPk=2PˉkHT+2K(HPˉkHT+R)=0
得到黄金法则3更新卡尔曼滤波的增益:
K = P ˉ k H T ( H P ˉ k H T + R ) − 1 K = \bar{P}_kH^T(H\bar{P}_kH^T+R)^{-1} K=PˉkHT(HPˉkHT+R)1
将式(11)带入式(8)中,得到黄金法则4更新后验最佳协方差:
P k = ( I − K H ) P ˉ k P_k = (I-KH)\bar{P}_k Pk=(IKH)Pˉk
可以通过这次状态递推得到下一阶段的先验估计值及先验误差值:
e ˉ k + 1 = x k + 1 − x ˉ k + 1 = A x k + w k − A x ~ = A e ~ k + w k \begin{aligned} \bar{e} _{k+1} &= x_{k+1} - \bar{x}_{k+1} \\ &=Ax_k+w_k-A\tilde{x}\\&=A\tilde{e}_k+w_k \end{aligned} eˉk+1=xk+1xˉk+1=Axk+wkAx~=Ae~k+wk
然后可以更新下一次的先验协方差矩阵(黄金法则5):
P ˉ k + 1 = E [ e ˉ k e ˉ k T ] = E [ ( A e ~ k + w k ) ( A e ~ k + w k ) T ] = E [ ( A e ~ k ) ( A e ~ k ) T ] + E [ w k w k T ] = A P k A T + Q \begin{aligned} \bar{P}_{k+1} &= E[\bar{e}_{k}\bar{e}_{k}^T]\\ &=E[(A\tilde{e}_{k}+w_{k})(A\tilde{e}_{k}+w_k)^T]\\ &=E[(A\tilde{e}_k)(A\tilde{e}_k)^T]+E[w_kw_k^T]\\ &=AP_kA^T+Q \end{aligned} Pˉk+1=E[eˉkeˉkT]=E[(Ae~k+wk)(Ae~k+wk)T]=E[(Ae~k)(Ae~k)T]+E[wkwkT]=APkAT+Q
至此我们递推出卡尔曼滤波的黄金五法则!

总结

从推导过程,我们可以看出,卡尔曼滤波分为两个部分:

预测

预测的过程就是根据上次的最优状态估计量,去估计下次的状态,这个估计往往是一个先验值:
x ˉ k = A x ~ k − 1 + B u k \bar{x}_k = A\tilde{x}_{k-1}+Bu_k xˉk=Ax~k1+Buk
并且,我们同样可以根据上次估计的协方差估计本次协方差:
P ˉ k = A P k − 1 A T + Q \bar{P}_k = A{P}_{k-1}A^T + Q Pˉk=APk1AT+Q
于是,我们就得到了关于先验的信息,接下来进行与观测值的加权过程(修正)

更新

首先,我们可以得到最新卡尔曼增益值:
K k = P ˉ k H T ( H P ˉ k H T + R ) − 1 K_k = \bar{P}_kH^T(H\bar{P}_kH^T+R)^{-1} Kk=PˉkHT(HPˉkHT+R)1
然后我们用卡尔曼滤波进行对估计值进行修正:
x ~ k = x ˉ k + K k ( z k − H x ˉ k ) \tilde{x}_k = \bar{x}_k+K_k(z_k-H\bar{x}_k) x~k=xˉk+Kk(zkHxˉk)
最后更新最优估计的协方差矩阵:
P k = ( I − K k H ) P ˉ k P_k = (I -K_kH)\bar{P}_k Pk=(IKkH)Pˉk

举报

相关推荐

0 条评论