不敏卡尔曼滤波(UKF)算法实现与状态估计系统
项目介绍
本项目提供了一套完整的不敏卡尔曼滤波(Unscented Kalman Filter, UKF)算法实现方案,专门用于解决非线性动态系统中的状态预测与参数估计问题。通过无损变换(Unscented Transform)技术,系统能够精确捕捉轨迹的均值和方差,有效避免了传统扩展卡尔曼滤波(EKF)在强非线性环境下因线性化误差导致的精度下降。该系统模拟了一个在二维平面运动的目标,并利用带有噪声的极坐标雷达观测数据,实时恢复目标的完整运动状态(位置与速度)。
功能特性
- 高度非线性处理:通过确定性采样点(Sigma点)捕捉非线性映射后的统计特性,无需计算雅可比矩阵。
- 高精度状态估计:支持位置与速度的联合估计,在存在观测噪声的情况下实现快速收敛。
- 参数灵活配置:内置比例因子、分布参数及噪声协方差调节机制,可适配不同强度的非线性场景。
- 实时性能评估:自动计算位置误差分布及累计均方根误差(RMSE),通过动态曲线直观展示滤波效果。
- 鲁棒的数值计算:核心步骤采用Cholesky分解获取平方根矩阵,确保协方差矩阵的正定性和计算的稳定性。
系统要求
- 运行环境:MATLAB R2016b 或更高版本。
- 核心组件:无需额外工具箱,基于标准矩阵运算及随机数生成函数。
实现逻辑与功能细节
1. 系统参数初始化
- 运动模型:系统预设为恒速运动模型,状态向量包含四个维度:X轴位置、X轴速度、Y轴位置、Y轴速度。
- 观测模型:模拟雷达探测,将状态空间映射为极坐标系下的距离和方位角。
- 噪声定义:通过配置过程噪声协方差(Q)模拟环境扰动,配置观测噪声协方差(R)模拟传感器的测量误差。
2. 无损变换(UT)配置
- 选取参数:利用 alpha (控制采样点分布)、ki (辅助缩放) 和 beta (引入状态分布先验信息) 计算比例因子 lambda。
- 加权系数:系统自动计算均值权重 (w_m) 和协方差权重 (w_c),其和满足单位约束,确保重构后的均值与协方差在数学上的严谨性。
3. 核心算法流程
- Sigma点生成:在每一采样时刻,基于当前的估计状态和协方差矩阵,通过Cholesky分解提取特征偏移量,生成 2n+1 个确定性采样点。
- 预测步(时间更新):将生成的Sigma点带入状态转移函数进行传播。系统根据传播后的采样点加权计算预测状态均值及预测协方差矩阵,并叠加过程噪声。
- 更新步(测量更新):
- 将预测的Sigma点带入非线性测量模型,映射到观测空间。
- 计算预测观测值的均值与方差。
- 计算状态空间与观测空间的互协方差矩阵。
- 求解卡尔曼增益,并结合实际测得的数据修正状态估计值和协方差。
4. 仿真与可视化
- 动态模拟:通过循环迭代模拟 100 个时间步的运动,实时存储真实状态、观测值以及滤波器输出结果。
- 图表展示:
- 绘制二维平面内的轨迹对比图(真实值 vs 滤波器估计值)。
- 绘制X与Y方向的绝对位置误差随时间的变化曲线。
- 绘制累计均方根误差(RMSE)曲线,量化评估滤波器的长期稳定性。
关键算法细节说明
- 非线性映射处理:系统中的测量函数(计算距离和角度)涉及到平方根与反正切运算。算法通过将Sigma点直接带入上述函数而非进行线性化展开,保留了更高阶的统计信息。
- 数值稳定性处理:在计算增益和协方差更新时,利用矩阵除法和权重分配机制,保证了在大协方差波动下的数值安全性。
- 误差度量:系统实时捕获估计坐标与真实坐标之间的欧几里得距离,作为精度考核的核心指标。