不敏卡尔曼滤波器(UKF)量测跟踪系统实现说明
项目介绍
本项目实现了一个基于不敏卡尔曼滤波器(Unscented Kalman Filter, UKF)的非线性目标跟踪系统。在雷达跟踪等实际应用中,观测模型(如距离和角度)通常与系统状态(位置和速度)呈非线性关系。传统的扩展卡尔曼滤波(EKF)采用一阶泰勒展开进行线性化,容易在高度非线性或大初始误差下产生发散。本项目通过无迹变换(Unscented Transform)技术,直接处理系统的非线性特性,通过采集一组确定性的采样点(Sigma点)来捕捉状态分布的统计特性,从而提供更高精度的状态估计。
功能特性
- 完整滤波器框架:涵盖了从初始化、权重计算、Sigma点采样、预测步到更新步的标准化UKF流程。
- 非线性坐标处理:专门针对雷达量测场景设计,实现了从笛卡尔坐标(直角坐标)到极坐标(距离、方位角)的非线性映射。
- 动态轨迹生成:内置基于匀速运动模型(CV)的真实轨迹生成器,并注入高斯过程噪声。
- 综合性能分析:实时计算位置与速度的均方根误差(RMSE),并提供多维度的可视化图表。
- 参数可调性:支持对缩放参数、分布常数以及噪声协方差矩阵进行灵活配置。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 必备工具箱:Statistics and Machine Learning Toolbox(用于生成多维正态分布随机数 mvnrnd)。
核心实现逻辑
项目逻辑主要分为五个阶段:
1. 参数与环境初始化
系统首先定义采样频率、仿真步数以及状态向量维度(4维:x位置、x速度、y位置、y速度)和观测向量维度(2维:距离、角度)。
初始化过程噪声协方差矩阵 Q,该矩阵基于采样时间 T 的幂次构建,模拟加速度扰动对速度和位置的影响。
初始化观测噪声协方差矩阵 R,设定雷达测距标准差为10米,测角标准差为0.01弧度。
计算采样权重:基于 alpha (1e-3)、ki (0) 和 beta (2) 计算 Sigma 点的均值权重(Wm)和协方差权重(Wc)。
2. 轨迹与观测数据模拟
生成真实状态:使用匀速运动模型转移矩阵 F 驱动系统状态演进。
生成观测值:将每一时刻的真实笛卡尔坐标位置转换为极坐标,即计算目标到原点的欧几里得距离和四象限反正切角度,并叠加符合 R 矩阵分布的量测噪声。
3. 主循环滤波算法(核心)
滤波算法在每个时间步迭代执行以下子逻辑:
预测步骤:对上一时刻的协方差进行 Cholesky 分解,生成 2n+1 个 Sigma 点。将这些点通过转移矩阵映射到下一时刻,并通过加权求和计算预测均值和预测协方差。
量测更新步骤:对预测出的分布重新采样生成一组 Sigma 点。将这组点代入非线性量测方程(计算距离和角度)。通过加权计算出预测观测值。
增益计算与校正:计算状态预测值与观测预测值的互协方差矩阵。随后计算卡尔曼增益 K,利用实际观测值与预测观测值的差值(残差)对状态均值进行修正,并同步更新状态协方差矩阵。
4. 性能指标计算
系统在滤波结束后,逐步对比真实状态与估计状态的差异。计算位置分量和速度分量的逐点欧氏距离误差,并以此推导出全局均方根误差(RMSE),作为评价滤波器收敛性和准确性的核心指标。
5. 数据可视化
系统生成一个包含四个子图的综合看板:
轨迹对比:展示真实轨迹、带噪声的观测点(转换回直角坐标)以及 UKF 估计后的平滑轨迹。
误差曲线:通过收敛曲线直观反映位置误差和速度误差随时间的变化趋势。
残差分布:展示距离残差和角度残差的波动情况,用于评估滤波器的一致性和白噪声特性。
分轴细节:专注于 X 轴方向的跟踪精度对比,直观展示估计值对真值的随动效果。
关键算法与细节分析
无迹变换(UT):与 EKF 忽略高阶项不同,本实现通过对称采样生成的 Sigma 点能够捕捉状态分布的前三阶矩(对于高斯输入)。
Sigma 点生成:利用 sqrt(nx + lambda) * sP 控制点的分布范围,其中 sP 是利用 chol 函数计算得到的协方差矩阵下三角分解,确保了协方差矩阵的正定性。
非线性映射处理:代码中直接在循环内通过 sqrt(sx^2 + sy^2) 和 atan2(sy, sx) 处理观测非线性,无需计算复杂的雅可比矩阵,不仅降低了推导难度,也提高了在强非线性环境下的稳健性。
噪声平衡:通过卡尔曼增益 K 实时调整过程噪声 Q 和量测噪声 R 之间的权重。若量测噪声 R 较大,K 减小,系统更倾向于信任预测模型;反之,系统更倾向于信任实时观测。
使用方法
- 在 MATLAB 环境中定位到包含脚本的目录。
- 直接运行主逻辑程序。
- 程序运行结束后,命令行窗口将输出位置和速度的 RMSE 统计值。
- 自动弹出的可视化窗口将展示详细的跟踪轨迹和性能评估结果。