卡尔曼滤波算法

  卡尔曼滤波是一种基于“预测–更新”递归框架的最优线性估计器:以状态转移模型先验递推系统状态及其协方差,再以观测数据通过最小化估计协方差进行后验校正,从而在过程与测量噪声并存的环境下给出最小均方误差意义下的最优估计。

1.3 协方差矩阵

  在讲解协方差矩阵的时候,先来看下方差的计算,如式 ( 14 ) (14) (14)所示:
x ˉ = 1 k ∑ i = 1 k x i σ x x 2 = 1 k ∑ i = 1 k ( x i − x ˉ ) 2 (14) \begin{aligned} \bar{x} &= \frac{1}{k} \sum_{i=1}^{k} x_i \\ \sigma_{xx}^2 &= \frac{1}{k} \sum_{i=1}^{k} \left( x_i - \bar{x} \right)^2 \end{aligned} \tag{14} xˉσxx2=k1i=1kxi=k1i=1k(xixˉ)2(14)
  根据式 ( 14 ) (14) (14)扩展得到协方差的计算,如式 ( 15 ) (15) (15)所示:
x ˉ = 1 k ∑ i = 1 k x i , y ˉ = 1 k ∑ i = 1 k y i σ x y 2 = σ y x 2 = 1 k ∑ i = 1 k ( x i − x ˉ ) ( y i − y ˉ ) (15) \begin{aligned} \bar{x} &= \frac{1}{k} \sum_{i=1}^{k} x_i, \bar{y} = \frac{1}{k} \sum_{i=1}^{k} y_i \\ \sigma_{xy}^2 &= \sigma_{yx}^2 = \frac{1}{k} \sum_{i=1}^{k} \left( x_i - \bar{x} \right) \left( y_i - \bar{y} \right) \end{aligned} \tag{15} xˉσxy2=k1i=1kxi,yˉ=k1i=1kyi=σyx2=k1i=1k(xixˉ)(yiyˉ)(15)


  Eg2:如下系统:
弹簧阻尼系统受力分析

图4.1.3 弹簧阻尼系统受力分析

  系统微分方程如式 ( 16 ) (16) (16)所示:
F − k x − B x ˙ = m x ¨ (16) F - kx - B\dot{x} = m\ddot{x} \tag{16} FkxBx˙=mx¨(16)
  取状态量 { x 1 = x x 2 = x ˙ \begin{cases}x_1 = x \\x_2 = \dot{x}\end{cases} {x1=xx2=x˙,则系统状态空间方程:关键每一行为一阶微分方程,如式 ( 17 ) (17) (17)所示:
F − k x − B x ˙ = m x ¨    ⟹    x ¨ = − k m x − B m x ˙ + F m { x 1 = x x 2 = x ˙ { x ˙ 1 = x ˙ = x 2 x ˙ 2 = x ¨ = − k m x − B m x ˙ + F m    ⟹    [ x ˙ 1 x ˙ 2 ] = [ 0 1 − k m − B m ] [ x 1 x 2 ] + [ 0 1 m ] F (17) \begin{aligned} &F - kx - B\dot{x} = m\ddot{x} \implies \ddot{x} = -\frac{k}{m}x - \frac{B}{m}\dot{x} + \frac{F}{m} \\ &\begin{cases} x_1 = x \\ x_2 = \dot{x} \end{cases} \\ &\begin{cases} \dot{x}_1 = \dot{x} = x_2 \\ \dot{x}_2 = \ddot{x} = -\frac{k}{m}x - \frac{B}{m}\dot{x} + \frac{F}{m} \end{cases} \implies \\ &\begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ -\frac{k}{m} & -\frac{B}{m} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} 0 \\ \frac{1}{m} \end{bmatrix} F \end{aligned} \tag{17} FkxBx˙=mx¨x¨=mkxmBx˙+mF{x1=xx2=x˙{x˙1=x˙=x2x˙2=x¨=mkxmBx˙+mF[x˙1x˙2]=[0mk1mB][x1x2]+[0m1]F(17)
测量量定义,如式 ( 18 ) (18) (18)所示:
   z 1 z_1 z1:所测量的位置量;
   z 2 z_2 z2:所测量的速度量;
{ z 1 = x = x 1 z 2 = x ˙ = x 2 (18) \begin{cases} z_1 = x = x_1 \\ z_2 = \dot{x} = x_2 \end{cases} \tag{18} {z1=x=x1z2=x˙=x2(18)
  化成一般形式,如式 ( 19 ) (19) (19)所示:
{ [ x ˙ 1 x ˙ 2 ] = [ 0 1 − k m − B m ] [ x 1 x 2 ] + [ 0 1 m ] F    ⟹    X ˙ ( t ) = A X ( t ) + B U ( t ) { [ z 1 z 2 ] = [ 1 0 0 1 ] [ x 1 x 2 ]    ⟹    Z ( t ) = H X ( t ) (19) \begin{gathered} \begin{cases} \begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ -\frac{k}{m} & -\frac{B}{m} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} 0 \\ \frac{1}{m} \end{bmatrix} F \implies \dot{X}(t) = AX(t) + BU(t) \end{cases} \\[6pt] % 增加垂直间距 \begin{cases} \begin{bmatrix} z_1 \\ z_2 \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \implies Z(t) = HX(t) \end{cases} \end{gathered} \tag{19} {[x˙1x˙2]=[0mk1mB][x1x2]+[0m1]FX˙(t)=AX(t)+BU(t){[z1z2]=[1001][x1x2]Z(t)=HX(t)(19)
  离散化,如式 ( 20 ) (20) (20)所示:
{ X k = A X k − 1 + B U k Z k = H X k (20) \begin{cases} {X}_k = AX_{k - 1} + BU_k \\ Z_k = HX_k \end{cases} \tag{20} {Xk=AXk1+BUkZk=HXk(20)
  考虑系统不确定性与时间连续性:即系统包含过程噪声 w k − 1 w_{k-1} wk1和测量噪声 v k v_k vk,如式(21)所示:
{ X ˙ k = A X k − 1 + B U k + w k − 1 Z k = H X k + v k (21) \begin{cases} \dot{X}_k = AX_{k - 1} + BU_k + w_{k - 1} \\ Z_k = HX_k + v_k \end{cases} \tag{21} {X˙k=AXk1+BUk+wk1Zk=HXk+vk(21)
  问题:如何通过计算结果 X k X_k Xk和测量 Z k Z_k Zk估计相对更为精确的结果: X ^ k \hat{X}_k X^k
  解决方案:计算结果 X k X_k Xk和测量 Z k Z_k Zk曲线融合 Fusion。

参考资料

DR_CAN

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐