IMM模型基本运作原理
若只使用一种系统动态模型的卡尔曼滤波器去对一个系统动态模型处于变化之中的目标进行状态跟踪估测的话,会产生不准确性。那么一个很直观的想法就是,使用几种它可能处于的系统动态模型的卡尔曼滤波器模型去分别对它进行状态估测,然后将这些结果以一定的比例进行融合。基于这种思路开发出来的算法就是Interacting Multiple Model(IMM)模型。
其中,它将基于目标有可能具备的系统状态模型的卡尔曼滤波模型,利用同一个测量值,来对不同的目标物的系统状态模型,进行状态估测,最后以一定的比例,将这些估测结果融合,最终得到目标的最优状态估测。
交互式多模型跟踪的算法主要包含以下四个步骤即输入模型交互、滤波器的滤波、概率模型的更新和新的数据融合。
假设在交互式多模型IMM中设置 r r r个运动模型,其状态方程:
X ( k + 1 ) = A j X ( k ) + W j ( k ) j = 1 , 2 , 3 , . . . , r (1) X(k+1)=A_jX(k)+W_j(k) qquad j=1,2,3,…,r ag{1} X(k+1)=AjX(k)+Wj(k)j=1,2,3,…,r(1)
其中 X ( k ) X(k) X(k)为系统的状态向量, A j A_j Aj为目标的状态转移矩阵, W ( k ) W(k) W(k)是均值为0,协方差矩阵为 Q j Q_j Qj的高斯白噪声。
模型集中任意模型 j j j的观测方差为:
Z ( k ) = H j X ( k ) + V j ( k ) (2) Z(k)=H_jX(k)+V_j(k) ag{2} Z(k)=HjX(k)+Vj(k)(2)
其中 Z ( k ) Z(k) Z(k)为量测向量, H j H_j Hj为模型j的观测矩阵, V j ( k ) V_j(k) Vj(k)是均值为0,协方差矩阵为 R j R_j Rj的高斯白噪声。
模型转移矩阵可以表示为:
[ p 11 p 1 r p r 1 p r r ] (3) egin{bmatrix} p_{11}&cdots & p_{1r} \ dots & ddots & dots\ p_{r1}& cdots & p_{rr}\ end{bmatrix} ag{3} p11pr1p1rprr(3)
其中: p i j p_{ij} pij表示模型 i i i到模型 j j j的转移矩阵
根据前一时刻系统状态估计和协方差估计来推测当前时刻量测值 Z ( k ) Z(k) Z(k),然后对模型进行重新初始化计算,其中新的初始值是通过不同模型之间的马尔科夫运算矩阵获得的,设定模型 k 1 k-1 k1时刻的状态最优估计为 x k 1 j x_{k-1}^j xk1j,协方差矩阵为 P k 1 j P_{k-1}^j Pk1j
则进一步推到出交互后模型的初始条件为:
x k 1 j , 0 = ∑ i = 1 r x k 1 i . μ k 1 i j i = 1 , 2 , 3 , . . . , r (4) x_{k-1}^{j,0} = sum^{r}_{i=1} x_{k-1}{i}.mu_{k-1}{ij} qquad i=1,2,3,…,r ag{4} xk1j,0=i=1∑rxk1i.μk1iji=1,2,3,…,r(4)
P k 1 j , 0 = ∑ i = 1 r μ k 1 i j . [ P k 1 i + ( P k 1 i x k 1 i x k 1 j , 0 ) T ] (5) P_{k-1}^{j,0} =sum_{i=1}^r mu_{k-1}{ij}.[Pi_{k-1}+(P_{k-1}i-x_{k-1}i-x_{k-1}{j,0})T] ag{5} Pk1j,0=i=1∑rμk1ij.[Pk1i+(Pk1ixk1ixk1j,0)T](5)
其中: 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 1 i j mu_{k-1}^{ij} μ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 (6) mu_{k-1}^{ij}= rac{p_{ij}mu_{k-1}i}{sum_{i=1}{r} p_{ij}mu_{k-1}^i} ag{6} μk1ij=∑i=1rpijμk1ipijμk1i(6)
由于卡尔曼滤波的效果较好,通常将该算法用于多模型交互跟踪中对目标进行滤波和预测,k-1时刻 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 = A j x k 1 j , 0 P k / k 1 j = A j P k 1 J , 0 A j T + P j (7) x_{k/k-1}^j = A_jx_{k-1}^{j,0} \ P_{k/k-1}^j = A_jP_{k-1}{J,0}A_jT+P_j ag{7} xk/k1j=Ajxk1j,0Pk/k1j=AjPk1J,0AjT+Pj(7)
卡尔曼增益为:
K j ( k ) = p k / k 1 j H j T [ H j P k / k 1 j H j T + R j ] 1 (8) K_j(k)=pj_{k/k-1}HT_j[H_jPj_{k/k-1}HT_j+R_j]^{-1} ag{8} Kj(k)=pk/k1jHjT[HjPk/k1jHjT+Rj]1(8)
k k k时刻对应单个滤波器输出的系统状态估计和协方差估计分别为:
X k j = x k / k 1 j + K k j [ z k H j x k / k 1 j ] P k j [ I K k j H j ] P k / k 1 j (9) Xj_k=x_{k/k-1}j +K_kj[z_k-H_jxj_{k/k-1}] \ P_k^j - [I-Kj_kH_j]Pj_{k/k-1} ag{9} Xkj=xk/k1j+Kkj[zkHjxk/k1j]Pkj[IKkjHj]Pk/k1j(9)
- https://blog.csdn.net/weixin_43135053/article/details/121033470spm=1001.2101.3001.6650.12&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-12.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-12.pc_relevant_default&utm_relevant_index=14
- https://blog.csdn.net/O_MMMM_O/article/details/88094994