IMM算法介绍

IMM算法介绍

IMM模型基本运作原理

若只使用一种系统动态模型的卡尔曼滤波器去对一个系统动态模型处于变化之中的目标进行状态跟踪估测的话,会产生不准确性。那么一个很直观的想法就是,使用几种它可能处于的系统动态模型的卡尔曼滤波器模型去分别对它进行状态估测,然后将这些结果以一定的比例进行融合。基于这种思路开发出来的算法就是Interacting Multiple Model(IMM)模型。

其中,它将基于目标有可能具备的系统状态模型的卡尔曼滤波模型,利用同一个测量值,来对不同的目标物的系统状态模型,进行状态估测,最后以一定的比例,将这些估测结果融合,最终得到目标的最优状态估测。

IMM算法的数学过程

IMM数学模如下:
x k j = Φ j x k − 1 j + w k − 1 j j = 1 , 2 , 3 , ⋯   , r ; x_k^j=\Phi_jx_{k-1}^j+w_{k-1}^j\quad j=1,2,3,\cdots,r; xkj=Φjxk1j+wk1jj=1,2,3,,r;
z k = H j x k + v k j ; z_k=H_jx_k+v_k^j; zk=Hjxk+vkj;
已知:

  1. 共有   r \ r  r 个系统动态模型的卡尔曼滤波器模型   M k j \ M_k^j  Mkj 参与到IMM模型中,其中   k \ k  k 为离散的时间顺序。
  2.   Y k \ Y_k  Yk 为时间   k \ k  k 时的测量值。
  3. 模型之间存在相互关系为,模型之间的转移概率为   p i j = P ( M k j ∣ M k − 1 i , Y k − 1 ) \ p_{ij} =P(M_k^j|M_{k-1}^i,Y_{k-1})  pij=P(MkjMk1i,Yk1)。换言之,基于模型   i \ i  i,以及观测值   Y \ Y  Y,确定模型   i \ i  i到模型   j \ j  j的转移概率。
  4. 每个模型都存在能准确描述目标状态的概率   μ k j = P ( M k j ∣ Y k ) \ \mu^j_k=P(M_k^j|Y_k)  μkj=P(MkjYk)

IMM模型算法的步骤:

  • 交互输入
      k − 1 \ k-1  k1 时刻,模型   j \ j  j 的状态最优估计值为   x k − 1 j \ x_{k-1}^j  xk1j和估计协方差矩阵为   P k − 1 j \ P_{k-1}^j  Pk1j。假设   x k − 1 j , 0 \ x_{k-1}^{j,0}  xk1j,0为模型   M k j \ M_k^j  Mkj 在时间点   k \ k  k 时,用来预测当前时间点来自各个模型以一定比例混合的状态值,以及其不准确性,同样来自各个模型混合而得到的协方差矩阵   P k − 1 j , 0 \ P_{k-1}^{j,0}  Pk1j,0
    同时   x k − 1 j , 0 \ x_{k-1}^{j,0}  xk1j,0   P k − 1 j , 0 \ P_{k-1}^{j,0}  Pk1j,0   k \ k  k 时刻模型   j \ j  j 交互后的初始条件,计算如下:

x k − 1 j , 0 = ∑ i = 1 r x k − 1 i ⋅ μ k − 1 i j i = 1 , 2 , 3 ⋯   , r ; x_{k-1}^{j,0}=\sum_{i=1}^rx^{i}_{k-1}\cdot\mu^{ij}_{k-1}\quad i=1,2,3\cdots,r; xk1j,0=i=1rxk1iμk1iji=1,2,3,r;
P k − 1 j , 0 = ∑ i = 1 r μ k − 1 i j ⋅ [ P k − 1 i + ( x k − 1 i − x k − 1 j , 0 ) ⋅ ( x k − 1 i − x k − 1 j , 0 ) T ] ; P_{k-1}^{j,0}=\sum_{i=1}^r\mu^{ij}_{k-1}\cdot[P^i_{k-1}+(x_{k-1}^i-x_{k-1}^{j,0})\cdot(x_{k-1}^i-x_{k-1}^{j,0})^T]; Pk1j,0=i=1rμk1ij[Pk1i+(xk1ixk1j,0)(xk1ixk1j,0)T];
其中   μ k − 1 i j \ \mu^{ij}_{k-1}  μk1ij 为模型   i \ i  i   j \ j  j的相关性系数,
μ k − 1 i j = p i j μ k − 1 i ∑ i = 1 r p i j μ k − 1 i \mu^{ij}_{k-1}=\frac{p_{ij}\mu^i_{k-1}}{\sum_{i=1}^rp_{ij}\mu^i_{k-1}} μk1ij=i=1rpijμk1ipijμk1i

  • 滤波器的滤波
    由于卡尔曼滤波算法效果较好,故通常将该算法用于多模型交互跟踪中对目标进行滤波和预测,   k − 1 \ k-1  k1 时刻   j \ j  j 模型输入为   x k − 1 j , 0 \ x_{k-1}^{j,0}  xk1j,0   P k − 1 j , 0 \ P_{k-1}^{j,0}  Pk1j,0,跟踪过程与单模型卡尔曼滤波算法类似,IMM算法的卡尔曼滤波过程如下:
    卡尔曼滤波的一次预测方程:
    x k / k − 1 j = Φ j x k − 1 j , 0 x^j_{k/k-1} = \Phi_jx^{j,0}_{k-1} xk/k1j=Φjxk1j,0
    预测协方差矩阵:
    P k / k − 1 j = Φ j P k − 1 j , 0 Φ j T + Q j P^j_{k/k-1}=\Phi_jP_{k-1}^{j,0}\Phi_j^T+Q_j Pk/k1j=ΦjPk1j,0ΦjT+Qj
    卡尔曼滤波增益:
    K k j = P k / k − 1 j H j T [ H j P k / k − 1 j H j T + R j ] − 1 K_k^j=P^j_{k/k-1}H_j^T[H_jP^j_{k/k-1}H_j^T+R_j]^{-1} Kkj=Pk/k1jHjT[HjPk/k1jHjT+Rj]1
      k \ k  k 时刻对应单个模型滤波器输出的系统状态估计和协方差估计分别为:
    x k j = x k / k − 1 j + K k j [ z k − H j x k / k − 1 j ] x_k^j=x_{k/k-1}^j+K_k^j[z_k-H_jx_{k/k-1}^j] xkj=xk/k1j+Kkj[zkHjxk/k1j]
    P k j = [ I − K k j H j ] P k / k − 1 j P_k^j=[I-K_k^jH_j]P^j_{k/k-1} Pkj=[IKkjHj]Pk/k1j
  • 模型概率更新
    采用极大似然估计实现模型更新,通过计算当前模型和当前目标状态的相似度来给出当前最合适的跟踪模型所占权重
      k \ k  k 时刻模型   j \ j  j 的最匹配的极大似然函数为:
    Λ k j = 1 2 π N d e t ∣ S k j ∣ e x p [ − 1 2 ( d k j ) T ( S k j ) − 1 ( d k j ) ] \Lambda_k^j=\frac{1}{\sqrt{2\pi^Ndet|S_k^j|}}exp[-\frac{1}{2}(d^j_k)^T(S_k^j)^{-1}(d^j_k)] Λkj=2πNdetSkj 1exp[21(dkj)T(Skj)1(dkj)]
    其中:
    S k j = H j P k / k − 1 j H j T + R j ; S_k^j=H_jP^j_{k/k-1}H_j^T+R_j; Skj=HjPk/k1jHjT+Rj;
    d k j = z k − H j x k / k − 1 j d_k^j=z_k-H_jx^j_{k/k-1} dkj=zkHjxk/k1j
    模型   j \ j  j 的更新概率为:
    μ k j = 1 c Λ k j ⋅ ∑ i = 1 r p i j μ k − 1 i \mu^j_k=\frac{1}{c}\Lambda^j_k\cdot\sum_{i=1}^rp_{ij}\mu_{k-1}^i μkj=c1Λkji=1rpijμk1i
    其中   c \ c  c 为归一化常数:
    c = ∑ i = 1 r ( Λ k j ⋅ ∑ i = 1 r p i j μ k − 1 i ) c=\sum_{i=1}^r(\Lambda_k^j\cdot\sum_{i=1}^rp_{ij}\mu^i_{k-1}) c=i=1r(Λkji=1rpijμk1i)
  • 新的融合数据
    根据每个模型单独计算的跟踪结果和模型匹配的权重给出   k \ k  k 时刻交互数据的最终输出结果。
    总体估计值:
    x k = ∑ j = 1 r x k j μ k j x_k = \sum_{j=1}^rx_k^j\mu_k^j xk=j=1rxkjμkj
    总体协方差:
    P k = ∑ j = 1 r μ k j { P k j + [ x k j − x k ] [ x k j − x k ] T } P_k=\sum_{j=1}^r\mu_k^j\{P_k^j+[x_k^j-x_k][x_k^j-x_k]^T\} Pk=j=1rμkj{Pkj+[xkjxk][xkjxk]T}

你可能感兴趣的:(算法,卡尔曼滤波算法)