基于JPDA算法的双目标匀速运动点迹与航迹关联仿真系统
项目介绍
本项目是一个用于多目标跟踪设计的仿真实验系统,核心目的在于演示和验证联合概率数据关联(JPDA)算法在含有杂波干扰的环境下的表现。系统模拟了两个目标在二维空间内进行匀速直线运动(CV模型)的过程,并利用带有观测噪声和随机散布杂波的传感器数据进行实时状态估计。通过联合确认门筛选、联合事件概率解析以及卡尔曼滤波更新,该系统能够有效地在多个候选观测值中识别出属于特定目标的点迹,并维持稳定的航迹输出。
功能特性
- 双目标协同跟踪:支持两个运动轨迹相似或交叉的目标点迹关联。
- 匀速直线运动模型:采用经典的CV模型作为目标状态转移方程,包含位置和速度分量。
- 复杂环境模拟:生成符合泊松分布的随机杂波,模拟传感器在实际运行中受到的背景干扰。
- 确认门技术:利用马氏距离建立验证区域,有效剔除远离预测位置的无效观测。
- JPDA核心算法:实现了互斥性约束下的联合事件概率计算,通过计算边缘关联概率打破关联模糊性。
- 不确定性评估:系统在更新滤波状态的同时,计算考虑关联不确定性的修正协方差矩阵。
- 多维度可视化:提供运动轨迹、估计误差、滤波器增益及关联概率的实时动态展示。
实现逻辑说明
仿真流程严格遵循以下五个逻辑阶段:
- 参数初始化:
设定仿真步数为60步,采样间隔为1秒。配置检测概率(0.9)和门限概率。定义过程噪声协方差矩阵Q(基于加速度随机扰动)和观测噪声协方差矩阵R。设置目标1和目标2的初始位置与速度分量。
- 轨迹与观测生成:
递归计算目标的真实状态。在每个时刻,根据状态矩阵产生真实量测,并根据指定的杂波密度在目标周围区域通过泊松分布产生干扰点。所有观测值(真实测量+杂波)被混合并随机打乱顺序,以模拟真实传感器输出。
- 预测与筛选(滤波循环内):
使用卡尔曼步进方程预测下一时刻的目标状态和预测观测。计算预测观测与当前所有观测点之间的马氏距离。仅保留落在阈值(Gamma=9.21)范围内的观测索引,形成有效观测集合。
- 联合概率关联计算:
构建确认矩阵,识别哪些观测点进入了哪些目标的确认门。通过穷举法解析所有可能的联合事件(即:目标1关联点i,目标2关联点j,且i不等于j,除非均为0),计算每个事件的似然概率。最后通过归一化和求和计算出边缘关联概率(Beta值),包括每个观测值属于各目标的概率以及目标漏检的概率。
- 状态更迭与输出:
利用Beta值对所有门内观测的残差进行加权求和,计算等效创新(Innovation)。根据JPDA修正公式更新状态向量和协方差矩阵。修正项特别考虑了因点迹关联不确定性而引入的额外估计误差。
关键算法与实现细节
- CV运动模型:状态向量定义为[x; vx; y; vy],利用状态转移矩阵F同步更新位移和速度。
- 杂波建模:杂波数量服从均值为lambda*area的泊松分布,其位置在以目标预测位置为中心的区域内均匀分布。
- 联合事件概率解析:在计算事件概率时,综合考虑了检测概率Pd、空间体积/杂波密度lambda以及由高斯分布计算出的观测似然值。程序特别处理了“目标未被检测”的特殊情况。
- 协方差修正:不同于标准卡尔曼滤波,JPDA在更新协方差时引入了加权残差平方项和漏检项,这能够反应出当环境变得复杂(多个观测竞争)时,滤波器会自动增大估计的不确定性。
- 性能度量:通过计算欧氏距离评估估计位置与真实位置的偏差,并监控卡尔曼增益的范数以观察滤波器的收敛性。
系统要求
- 环境要求:MATLAB R2016b 或更高版本。
- 必要工具箱:Statistics and Machine Learning Toolbox(用于执行mvnrnd多元正态随机数生成和poissrnd泊松随机数生成)。
使用方法
- 在MATLAB集成开发环境中打开程序文件。
- 直接运行程序脚本。
- 程序将自动执行60个步长的仿真计算。
- 仿真结束后,系统将弹出可视化窗口,展示包含四个子图的性能分析报告:
- 轨迹对比:展示真实路径、含杂波的原始点迹以及滤波后的估计航迹。
- 误差分布:展示随时间变化的两目标位置估计误差趋势。
- 增益演变:记录滤波器增益范数的变化,用于判断滤波过程的平稳性。
- 关联概率:实时展示最近10个时刻目标的关联权重分配与漏检概率变化。