卡尔曼滤波算法

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

1.9 扩展卡尔曼滤波(EKF)

  由卡尔曼滤波算法完整公式可知,经典卡尔曼滤波算法为线性系统,状态空间方程,如式22所示。
   E K F EKF EKF是在经典卡尔曼滤波算法的基础上进行非线性操作,为了适配不确定的非线性问题,非线性系统,如式 ( 78 ) (78) (78)所示:
{ x k = f ( x k − 1 , u k − 1 , w k − 1 ) z k = h ( x k , v k ) (78) \begin{cases} x_k = f\left( x_{k - 1}, u_{k - 1}, w_{k - 1} \right) \\ z_k = h\left( x_k, v_k \right) \end{cases} \tag{78} {xk=f(xk1,uk1,wk1)zk=h(xk,vk)(78)
   f , h f,h fh为非线性表达形式。误差都符合正态分布。
  但正态分布的随机变量通过非线性系统后,就不再是正态分布的形式,如图1.9.1所示:
线性与非线性系统对正态分布变量作用的分布差异示意图

图1.9.1 线性与非线性系统对正态分布变量作用的分布差异示意图

  因此需要线性化:Linearization。
  线性化工具:泰勒级数,高维需要雅可比矩阵,如式 ( 79 ) (79) (79)与图1.9.2所示为非线性的线性化处理。
{ f ( x ) = f ( x 0 ) + ∂ f ∂ x ( x − x 0 ) f ( x ) = f ( x 0 ) + k ( x − x 0 ) (79) \begin{cases} f(x) = f(x_0) + \frac{\partial f}{\partial x} (x - x_0) \\ f(x) = f(x_0) + k(x - x_0) \end{cases} \tag{79} {f(x)=f(x0)+xf(xx0)f(x)=f(x0)+k(xx0)(79)
非线性的线性化处理

图1.9.1 非线性的线性化处理

   x 0 x_0 x0为:线性化点。
  因为系统有误差,无法在真实点线性化。处理方法: f ( x k ) f(x_k) f(xk) x ^ k − 1 \hat{x}_{k-1} x^k1处线性化。因此,如式 ( 80 ) (80) (80)所示:
{ x k = f ( x k − 1 , u k − 1 , w k − 1 ) z k = h ( x k , v k ) (80) \begin{cases} x_k = f\left( x_{k - 1}, u_{k - 1}, w_{k - 1} \right) \\ z_k = h\left( x_k, v_k \right) \end{cases} \tag{80} {xk=f(xk1,uk1,wk1)zk=h(xk,vk)(80)
  可转化为,如式 ( 81 ) (81) (81)所示:
x k = f ( x ^ k − 1 , u k − 1 , w k − 1 ) + A ( x k − x ^ k − 1 ) + W k w k − 1 (81) x_k = f\left( \hat{x}_{k - 1}, u_{k - 1}, w_{k - 1} \right) + A \left( x_k - \hat{x}_{k - 1} \right) + W_k w_{k - 1} \tag{81} xk=f(x^k1,uk1,wk1)+A(xkx^k1)+Wkwk1(81)
  误差 w k − 1 w_{k-1} wk1 0 0 0 f ( x ^ k − 1 , u k − 1 , 0 ) = x ~ R f\left( \hat{x}_{k - 1}, u_{k - 1}, 0 \right) = \tilde{x}_R f(x^k1,uk1,0)=x~R,如式(82)所示:
x k = x ~ R + A ( x k − x ^ k − 1 ) + W k w k − 1 (82) x_k = \tilde{x}_R + A \left( x_k - \hat{x}_{k - 1} \right) + W_k w_{k - 1} \tag{82} xk=x~R+A(xkx^k1)+Wkwk1(82)
  其中: A A A为雅各比矩阵,如式 ( 83 ) (83) (83)所示:
A = ∂ f ∂ x ∣ x ^ k − 1 , u k − 1 (83) A = \left. \frac{\partial f}{\partial x} \right|_{\hat{x}_{k - 1}, u_{k - 1}} \tag{83} A=xf x^k1,uk1(83)
  求矩阵 A A A,如式 ( 84 ) (84) (84)所示:
已知函数:
{ f 1 = x 1 + sin ⁡ x 2 f 2 = x 1 2 \begin{cases} f_1 = x_1 + \sin x_2 \\ f_2 = x_1^2 \end{cases} {f1=x1+sinx2f2=x12

雅可比矩阵 ( A ) 为:
A = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ] = [ 1 cos ⁡ x 2 2 x 1 0 ] ∣ x ^ 1 k − 1 x ^ 2 k − 1 A = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} \\ \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} \end{bmatrix} = \begin{bmatrix} 1 & \cos x_2 \\ 2x_1 & 0 \end{bmatrix} \Bigg|_{\substack{\hat{x}_{1k-1} \\ \hat{x}_{2k-1}}} A=[x1f1x1f2x2f1x2f2]=[12x1cosx20] x^1k1x^2k1

代入估计值后,( A ) 为:
A = [ 1 cos ⁡ ( x ^ 2 k − 1 ) 2 x ^ 1 k − 1 0 ] (84) A = \begin{bmatrix} 1 & \cos\left( \hat{x}_{2k-1} \right) \\ 2\hat{x}_{1k-1} & 0 \end{bmatrix} \tag{84} A=[12x^1k1cos(x^2k1)0](84)
  同理:
W k = ∂ f ∂ w ∣ x ^ k − 1 , u k − 1 (85) W_k = \left. \frac{\partial f}{\partial w} \right|_{\hat{x}_{k - 1}, u_{k - 1}} \tag{85} Wk=wf x^k1,uk1(85)
   z k = h ( x k , v k ) z_k=h(x_k,v_k) zk=h(xk,vk) x ^ R \hat{x}_R x^R处线性化:
z k = h ( x ~ k , v k ) + H ( x k − x ~ k ) + V v k ( v k = 0 , z ~ k = h ( x ~ k , 0 ) ) (86) z_k = h\left( \tilde{x}_k, v_k \right) + H \left( x_k - \tilde{x}_k \right) + V v_k \quad \left( v_k = 0, \tilde{z}_k = h\left( \tilde{x}_k, 0 \right) \right) \tag{86} zk=h(x~k,vk)+H(xkx~k)+Vvk(vk=0,z~k=h(x~k,0))(86)
{ H = ∂ h ∂ x ∣ x ^ k V = ∂ h ∂ v ∣ x ^ k (87) \begin{cases} H = \left. \frac{\partial h}{\partial x} \right|_{\hat{x}_k} \\ V = \left. \frac{\partial h}{\partial v} \right|_{\hat{x}_k} \end{cases} \tag{87} {H=xh x^kV=vh x^k(87)
因此:
{ x k = x ~ k + A ( x k − x ^ k − 1 ) + W w k − 1 z k = z ~ k + H ( x k − x ~ k ) + V v k (88) \begin{cases} x_k = \tilde{x}_k + A \left( x_k - \hat{x}_{k - 1} \right) + W w_{k - 1} \\ z_k = \tilde{z}_k + H \left( x_k - \tilde{x}_k \right) + V v_k \end{cases} \tag{88} {xk=x~k+A(xkx^k1)+Wwk1zk=z~k+H(xkx~k)+Vvk(88)
  概率分布:
   P ( w ) ∼ N ( 0 , Q ) P(w) \sim N(0, Q) P(w)N(0,Q),转化为 P ( W w k ) ∼ N ( 0 , W Q W T ) P(W w_k) \sim N\left(0, W Q W^T\right) P(Wwk)N(0,WQWT)
  Eg:
  期望: E ( a x ) = a E ( x ) = 0 E(ax) = aE(x) = 0 E(ax)=aE(x)=0
  方差: V a r ( a x ) = a 2 V a r ( x ) Var(ax) = a^2 Var(x) Var(ax)=a2Var(x)
  同理:
   P ( v ) ∼ N ( 0 , R ) P(v) \sim N(0, R) P(v)N(0,R),转化为 P ( V v k ) ∼ N ( 0 , V R V T ) P(V v_k) \sim N\left(0, V R V^T\right) P(Vvk)N(0,VRVT)
  因此,非线性卡尔曼滤波算法完整公式为:
EKF完整算法公式

参考资料

DR_CAN

Logo

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

更多推荐