
课题简介
本文推荐一个基于 IMM(Interacting Multiple Model,交互式多模型)算法的目标跟踪课题。该课题使用三种典型运动模型对目标进行跟踪,分别为匀速直线运动模型、左转弯模型和右转弯模型。
在实际目标跟踪问题中,目标的运动状态往往不是固定不变的。例如,车辆、无人机、飞机等目标在运动过程中可能会经历直线运动、转弯运动以及不同运动模式之间的切换。如果只使用单一运动模型,当目标发生机动时,滤波器容易出现模型失配,从而导致跟踪误差增大。
IMM 算法的核心思想是同时运行多个运动模型,并根据每个模型与当前观测数据的匹配程度动态更新模型概率。最终,系统根据不同模型的概率对各模型的估计结果进行加权融合,从而得到更加稳定的目标状态估计结果。
本课题通过 MATLAB 实现三模型 IMM 目标跟踪仿真,能够直观展示目标轨迹、位置误差、速度误差以及模型概率变化情况,适合用于学习多模型滤波、机动目标跟踪和卡尔曼滤波扩展应用。
课题内容
本课题主要完成一个二维平面目标跟踪仿真。目标状态量包括二维位置和二维速度,观测量为目标的二维位置坐标。程序中根据不同时间段设置目标的真实运动模式,使目标先进行匀速直线运动,然后进入左转弯阶段,之后再进入右转弯阶段。
在滤波过程中,程序分别使用三个模型对目标状态进行估计:
- 模型1:匀速直线运动模型;
- 模型2:左转弯运动模型;
- 模型3:右转弯运动模型。
每个模型内部均采用卡尔曼滤波进行状态预测和观测更新。随后,IMM 算法根据各模型的观测残差计算模型似然函数,并更新模型概率。最后,对三个模型的估计结果进行概率加权融合,得到 IMM 综合估计结果。
通过该程序,可以观察目标在不同运动阶段下各个模型概率的变化规律。例如,当目标处于匀速直线运动阶段时,匀速模型的概率通常较高;当目标进入左转弯阶段时,左转模型的概率会逐渐升高;当目标进入右转弯阶段时,右转模型的概率会明显增大。
状态模型与观测模型
程序中的目标状态向量定义为:
x k = [ x k v x , k y k v y , k ] T x_k = \begin{bmatrix} x_k & v_{x,k} & y_k & v_{y,k} \end{bmatrix}^T xk=[xkvx,kykvy,k]T
其中, x k x_k xk 和 y k y_k yk 表示目标在二维平面中的位置坐标, v x , k v_{x,k} vx,k 和 v y , k v_{y,k} vy,k 分别表示目标在 x x x 方向和 y y y 方向上的速度。
观测量为目标的二维位置:
z k = [ x k y k ] T + v k z_k = \begin{bmatrix} x_k & y_k \end{bmatrix}^T + v_k zk=[xkyk]T+vk
其中, v k v_k vk 表示观测噪声。
量测方程可以写为:
z k = H x k + v k z_k = Hx_k + v_k zk=Hxk+vk
程序中使用量测矩阵 H H H 从状态向量中提取位置分量,并在真实位置基础上叠加随机观测噪声,形成含噪声的量测数据。
IMM算法流程
IMM 算法主要包括模型交互、模型条件滤波、模型概率更新和模型综合四个步骤。
首先,根据上一时刻的模型概率和模型转移概率矩阵,计算当前时刻各模型的混合概率,并得到每个模型对应的初始状态和初始协方差。这一步称为模型交互,其作用是让不同模型之间共享状态信息,避免各模型完全独立运行。
然后,分别对匀速模型、左转模型和右转模型进行卡尔曼滤波。每个模型根据自身的状态转移矩阵完成状态预测,再利用当前观测数据进行状态更新,得到该模型下的状态估计值和协方差矩阵。
接着,根据每个模型的观测残差和残差协方差计算模型似然函数。如果某个模型的预测结果更接近当前观测数据,则该模型对应的似然函数较大,模型概率也会随之增大。
最后,根据更新后的模型概率,对三个模型的状态估计结果进行加权融合,得到 IMM 的综合状态估计结果:
x ^ k = ∑ i = 1 M μ k ( i ) x ^ k ( i ) \hat{x}k = \sum{i=1}^{M} \mu_k^{(i)} \hat{x}_k^{(i)} x^k=i=1∑Mμk(i)x^k(i)
其中, M M M 表示模型数量, μ k ( i ) \mu_k^{(i)} μk(i) 表示第 i i i 个模型在当前时刻的概率, x ^ k ( i ) \hat{x}_k^{(i)} x^k(i) 表示第 i i i 个模型对应的状态估计结果。
MATLAB程序实现
本程序为单个 MATLAB 脚本文件,复制到 MATLAB 空脚本中即可直接运行。程序主要包括以下几个部分。
首先进行仿真参数初始化,包括仿真时间、采样间隔、转弯率、量测矩阵、过程噪声协方差矩阵、观测噪声协方差矩阵以及初始状态。
随后建立三种运动模型:
- 匀速直线运动模型用于描述目标的平稳运动;
- 左转弯模型用于描述目标向左侧转弯的机动过程;
- 右转弯模型用于描述目标向右侧转弯的机动过程。
然后根据预设的运动模式生成目标真实轨迹,并在真实位置基础上加入观测噪声,得到含噪声的量测数据。
在 IMM 迭代过程中,程序依次完成模型混合、三个模型的卡尔曼滤波、模型概率更新和模型状态综合。最后保存每个时刻的 IMM 综合估计结果、各模型估计结果以及模型概率。
程序中还包含几个辅助函数,主要用于完成卡尔曼滤波、模型概率更新和模型综合,使整体结构更加清晰,便于后续修改和扩展。
运行结果分析
程序运行后会输出多幅结果图,包括目标运动轨迹、位置误差、速度误差和模型概率曲线。

在目标运动轨迹图中,可以同时观察真实轨迹、含噪声观测值、三个单模型估计轨迹以及 IMM 综合估计轨迹。通常可以看到,观测值受噪声影响存在明显波动,而 IMM 综合轨迹能够较好地贴近真实轨迹。

在位置误差曲线中,可以观察 IMM 算法在 x x x 方向和 y y y 方向上的位置跟踪误差。当目标运动模式发生切换时,误差可能会出现短暂增大,这是由于模型概率需要一定时间进行调整。当模型概率逐渐收敛到更匹配的运动模型后,跟踪误差会逐渐减小。
在速度误差曲线中,可以进一步分析目标速度估计的变化情况。相比位置状态,速度状态对模型切换更加敏感,因此在目标转弯阶段可能会出现更加明显的波动。

模型概率曲线是 IMM 算法的重要输出结果。当目标处于匀速直线阶段时,匀速模型概率通常占优;当目标进入左转弯阶段时,左转弯模型概率升高;当目标进入右转弯阶段时,右转弯模型概率升高。这说明 IMM 算法能够根据观测残差自动判断当前目标更符合哪一种运动模型。
代码
部分代码展示
matlab
% 基于IMM算法的目标跟踪,三模型IMM
% 2024-09-21/Ver1
clc; clear; close all; % 清除命令窗口、工作空间和关闭所有图形窗口
rng('default'); rng(0); % 设置随机数生成器的默认状态,以确保可重复性
%% 仿真参数设置
time = 100; % 仿真迭代次数
T = 1; % 采样间隔(时间步长)
w2 = 3 * 2 * pi / 360; % 模型2的转弯率(3度)
w3 = -3 * 2 * pi / 360; % 模型3的转弯率(-3度)
H = [1, 0, 0, 0; % 模型量测矩阵
0, 0, 1, 0];
G = [T^2 / 2, 0; % 模型过程噪声加权矩阵
T, 0;
0, T^2 / 2;
0, T];
R = 10 * diag([1, 1]); % 模型量测噪声协方差矩阵
Q = 0.1 * diag([1, 1]); % 模型过程噪声协方差矩阵
F1 = [1, T, 0, 0; % 模型1状态转移矩阵(匀速直线运动)
0, 1, 0, 0;
0, 0, 1, T;
0, 0, 0, 1];
F2 = [1, sin(w2 * T) / w2, 0, (cos(w2 * T) - 1) / w2; % 模型2状态转移矩阵(左转弯)
0, cos(w2 * T), 0, sin(w2 * T);
0, (1 - cos(w2 * T)) / w2, 1, sin(w2 * T) / w2;
0, -sin(w2 * T), 0, cos(w2 * T)];
F3 = [1, sin(w3 * T) / w3, 0, (cos(w3 * T) - 1) / w3; % 模型3状态转移矩阵(右转弯)
0, cos(w3 * T), 0, sin(w3 * T);
0, (1 - cos(w3 * T)) / w3, 1, sin(w3 * T) / w3;
0, -sin(w3 * T), 0, cos(w3 * T)];
完整代码获取
https://blog.csdn.net/callmeup/article/details/143235558?spm=1011.2415.3001.5331
可扩展方向
- 扩展更多运动模型
可以在现有匀速、左转和右转模型基础上,加入匀加速模型、协调转弯模型、Singer 模型或随机机动模型,使算法适用于更复杂的目标运动场景。
- 引入非线性滤波方法
当前程序中每个模型内部采用的是标准卡尔曼滤波。后续可以将其替换为 EKF、UKF 或 CKF,使 IMM 能够处理非线性观测模型,例如雷达距离-方位角观测。
- 研究模型转移概率自适应调整
IMM 算法性能与模型转移概率矩阵密切相关。后续可以研究基于残差、似然函数或历史模型概率的自适应转移概率调整方法,提高算法对复杂机动目标的适应能力。
- 加入非高斯噪声环境
实际传感器观测中可能存在野值、脉冲噪声、遮挡误差或非高斯噪声。可以进一步引入鲁棒滤波思想,例如最大相关熵、Huber 加权或 Student-t 噪声模型,提高 IMM 算法在复杂观测条件下的鲁棒性。
- 应用于无人机或车辆目标跟踪
可以将该算法扩展到无人机轨迹跟踪、智能车辆跟踪、雷达目标跟踪或多传感器融合定位中,使课题更贴近实际工程应用。
如有代码定制、讲解的需求,可联系我: