基于MATLAB的四维扩展卡尔曼滤波(EKF)目标跟踪仿真平台
项目介绍
本项目提供了一个完整的定点目标跟踪仿真环境,核心算子采用扩展卡尔曼滤波(EKF)算法。在实际雷达或声呐探测场景中,观测数据(如距离和方位角)通常与目标的状态(位置和速度)呈非线性关系,本项目通过对观测方程进行实时线性化处理,实现了对运动目标高精度的稳态跟踪和轨迹修复。
功能特性
- 四维状态空间建模:涵盖了目标在二维平面内的水平位置、垂直位置、水平速度和垂直速度。
- 非线性观测处理:支持将极坐标系下的观测值(距离和方位角)转化为笛卡尔坐标系下的状态更新。
- 动态雅可比矩阵计算:在每个滤波周期内实时计算观测方程的雅可比矩阵。
- 角度归一化逻辑:内置方位角残差自动修正机制,有效防止角度跳变导致的滤波发散。
- 多维度性能评估:提供RMSE误差分析、协方差阵迹收敛性分析及残差分布统计。
- 高保真可视化:集成轨迹对比图、误差演变趋势、残差直方图及速度拟合对比。
使用方法
- 启动MATLAB软件。
- 将包含主脚本的文件夹设置为当前工作路径。
- 直接运行主函数。
- 程序将自动生成两组可视化图形:
- 运行第一组图可观察目标真实轨迹与原始观测点、估计轨迹的对比,并审视位置误差和收敛性能。
- 运行第二组图可对比水平与垂直两个维度上的速度估计准确度。
系统要求
- MATLAB R2016b 或更高版本。
- 建议安装 Statistics and Machine Learning Toolbox(用于生成高斯分布噪声)。
功能实现逻辑
本仿真程序严格遵循卡尔曼滤波的“预测-更新”循环逻辑:
1. 参数初始化
程序设定仿真步长为0.1秒,总时长50秒。定义系统过程噪声协方差矩阵Q,基于匀速运动模型(CV)构建状态转移矩阵A。同时设置观测噪声矩阵R,明确距离标准差和角度标准差。
2. 真实轨迹与观测生成
系统根据预设的初始状态(位置[0,0], 速度[10,5])推进目标运动。在每个采样时间点,根据非线性几何关系计算目标到原点的欧几里得距离和方位角,并叠加高斯随机噪声,模拟真实的传感器数据。
3. EKF滤波核心循环
- 预测阶段:利用上一时刻的后验估计推算当前时刻的先验状态,并同步演进协方差矩阵。
- 线性化阶段:提取预测坐标,计算方位角和距离函数对位置维度的偏导数,构造2x4维的雅可比矩阵H。
- 更新阶段:
- 计算实际观测值与预测观测值之间的创新项(残差)。
- 对方位角残差执行 While 循环检测,将其规范化在 [-π, π] 区间内。
- 计算卡尔曼增益,并根据观测残差修正先验状态,获得当前时刻的最优估计。
- 收敛监测:记录每一帧协方差矩阵的迹,通过对数坐标反映滤波器收敛过程。
4. 评估指标计算
程序自动计算各采样点真实位置与估计位置的欧氏距离误差,并统计全局均方根误差(RMSE)。
关键算法与实现细节分析
- 匀速运动模型 (CV):假设目标在采样周期内保持恒定速度,加速度被视为随机扰动进入过程噪声Q。
- 雅可比矩阵更新:观测矩阵H不再是常数。由于观测方程中包含了平方根和反正切函数,程序通过手动推导的偏导公式,将非线性函数在当前预测点处进行一阶泰勒展开,从而在保留线性系统处理框架的同时解决了非线性映射带来的信息损失。
- 协方差实时评估:通过对协方差矩阵P的迹进行实时监控。迹的演化反映了系统不确定性的变化,当迹随时间推移逐渐减小并趋于稳定时,标志着EKF算法成功进入稳态跟踪阶段。
- 残差分布特性:通过直方图分析距离和方位角的创新项分布。如果滤波器配置得当,残差应近似服从均值为零的正态分布。