交互式多模型-无迹卡尔曼滤波IMM-UKF算法matlab实现(跟踪场景二)

Posted 脑壳二

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交互式多模型-无迹卡尔曼滤波IMM-UKF算法matlab实现(跟踪场景二)相关的知识,希望对你有一定的参考价值。

交互式多模型-无迹卡尔曼滤波IMM-UKF算法matlab实现——机动目标跟踪

原创不易,路过的各位大佬请点个赞

针对机动目标跟踪的探讨、技术支持欢迎联系,也可以站内私信
WX: ZB823618313

交互式多模型-无迹卡尔曼滤波IMM-UKF算法matlab实现——机动目标跟踪

基于IMM机动目标跟踪算法设计最重要的核心部分主要包括:

  1. IMM框架
  2. 滤波器选择:(这里基于UKF)
  3. 目标运动模型:(这里基于CV CT)

1. IMM算法介绍

核心思想: IMM算法的基本思想是用多个不同的运动模型匹配机动目标的不同运动模式,不同模型间的转移概率是–个马尔可夫矩阵,目标的状态估计和模型概率的更新使用卡尔曼滤波。其算法流程图如图5.3所示。

具体算法推导见另一个博客,这里不再赘述

2. UKF介绍

  从算法层面,在机动目标跟踪系统中,常用的滤波算法是以卡尔曼滤波器为基本框架的估计算法。卡尔曼滤波器是一种线性、无偏、以误差均方差最小为准则的最优估计算法,它有精确的数学形式和优良的使用效能。卡尔曼滤波方法实质上是一种数据处理方法,它采用递推滤波方法,根据获取的量测数据由递推方程递推给出新的状态估计。由于计算量和存储量小,比较容易满足实时计算的要求,在工程实践中得到广泛应用。
  除此之外,非线性滤波也广泛应用与机动目标跟踪,比如:

扩展卡尔曼滤波EKF
无迹卡尔曼滤波UKF
容积卡尔曼滤波CKF
求积卡尔曼滤波QKF
中心差分卡尔曼滤波CDKF
Divided difference filter DDF
高斯混合滤波GSF
强跟踪滤波STF
粒子滤波PF
… …

UKF算法的推导及介绍,见博主其他博客

3. 目标运动模型概述

  机动目标模型描述了目标状态随着时间变化的过程。一个好的模型抵得上大量的数据。当前几乎所有的目标跟踪算法都是基于模型进行状态估计的。在卡尔曼滤波器被引入目标跟踪领域后,基于状态空间的机动目标建模成为主要研究对象之一。

匀速运动模型CV
匀速转弯运动CT
匀加速运动CA
Singer模型
Jerk模型
当前统计模型CS
… …

这对这些模型的介绍,见博主其他博客

5. IMM-UKF仿真实现:案列二

5.1. 仿真参数

一、目标模型:CV CT CT
第一阶段:1:39s,匀速运动CV
第二阶段:40:71s,匀速圆周运动CT,角速度: 2 ∗ π / 180 ; 2*\\pi/180; 2π/180;
第三阶段:72:99s,匀速运动CV
第四阶段:100:131s,匀速圆周运动CT,角速度: − 3 ∗ π / 180 ; -3*\\pi/180; 3π/180;
第五阶段:72:99s,匀速运动CV

CV CT 模型的具体方程形式见另一个博客

二、测量模型:2D主动雷达
在二维情况下,雷达量测为距离和角度
r k m = r k + r ~ k b k m = b k + b ~ k r_k^m=r_k+\\tilder_k\\\\ b^m_k=b_k+\\tildeb_k rkm=rk+r~kbkm=bk+b~k
其中
r k = ( x k − x 0 ) + ( y k − y 0 ) 2 ) b k = tan ⁡ − 1 y k − y 0 x k − x 0 r_k=\\sqrt(x_k-x_0)^+(y_k-y_0)^2)\\\\ b_k=\\tan^-1\\fracy_k-y_0x_k-x_0\\\\ rk=(xkx0)+(yky0)2) bk=tan1xkx0yky0
[ x 0 , y 0 ] [x_0,y_0] [x0,y0]为雷达坐标,一般情况为0。雷达量测为 z k = [ r k , b k ] ′ z_k=[r_k,b_k]' zk=[rk,bk]。雷达量测方差为
R k = cov ( v k ) = [ σ r 2 0 0 σ b 2 ] R_k=\\textcov(v_k)=\\beginbmatrix\\sigma_r^2 & 0 \\\\0 & \\sigma_b^2 \\endbmatrix Rk=cov(vk)=[σr200σb2] σ r = 120 m \\sigma_r=120m σr=120m σ b = 80 m r a d \\sigma_b=80mrad σb=80mrad

三、性能评估
RMSE(Root mean-squared error):蒙塔卡罗次数 M = 500 M=500 M=500 x ^ k ∣ k i \\hatx_k|k^i x^kki为第 i i i次仿真得到的估计。
RMSE ( x ^ ) = 1 M ∑ i = 1 M ( x k − x ^ k ∣ k i ) ( x k − x ^ k ∣ k i ) ′ \\textRMSE(\\hatx)=\\sqrt\\frac1M\\sum_i=1^M(\\mathbfx_k-\\hat\\mathbfx_k|k^i)(\\mathbfx_k-\\hat\\mathbfx_k|k^i)' RMSE(x^)=M1i=1M(xkx^kki)(xkx^kki)
Position RMSE ( x ^ ) = 1 M ∑ i = 1 M ( x k − x ^ k ∣ k i ) 2 + ( y k − y ^ k ∣ k i ) 2 \\textPosition RMSE(\\hatx)=\\sqrt\\frac1M\\sum_i=1^M(x_k-\\hatx_k|k^i)^2+(y_k-\\haty_k|k^i)^2 Position RMSE(x^)=M1i=1M(xkx^kki)2+(yk交互式多模型-无迹卡尔曼滤波IMM-UKF仿真一——机动目标跟踪中的应用

交互式多模型-无迹卡尔曼滤波IMM-UKF——CV/CT/CA模型交互机动目标跟踪(模型维数不同IMM算法设计)

交互式多模型-无迹卡尔曼滤波IMM-UKF——CV/CT/CA模型交互机动目标跟踪(模型维数不同IMM算法设计)

滤波算法 | 无迹卡尔曼滤波(UKF)算法及其Python实现

机动目标跟踪—当前统计模型(CS模型)扩展卡尔曼滤波/无迹卡尔曼滤波 matlab实现

机动目标跟踪—当前统计模型(CS模型)扩展卡尔曼滤波/无迹卡尔曼滤波 matlab实现