在非线性和非高斯噪声下诊断卡尔曼滤波器:KF、UKF 和粒子滤波器的 NEES/NIS 分析
卡尔曼滤波器仍是导航、机器人和信号处理任务中状态估计的基本工具。然而,其经典形式假设线性动力学和高斯噪声——这些条件在实际系统中很少满足。本文考察了三种流行方法——线性卡尔曼滤波器 (KF)、无迹卡尔曼滤波器 (UKF) 和粒子滤波器 (PF)——在这些假设被违反时的表现,以及哪些指标可以客观评估其性能。
为什么高斯假设重要——何时并非必需
卡尔曼滤波器仅在线性-高斯条件下才能在最小化均方误差方面达到最优。这源于正态分布的两个关键性质:仿射变换下的闭合性和贝叶斯更新中似然的共轭性。当高斯假设被违反时,这些性质丢失,但均值和协方差的递归计算仍具计算可行性。因此,KF 继续工作,但其估计不再最优,协方差矩阵可能无法准确反映真实不确定性。
在实践中,这表现为滤波器估计的过度自信或自信不足,这在决策系统中尤为关键。例如,在测量值存在异常点时,KF 可能会“卡住”并开始偏离真实轨迹,而自适应方法则保持鲁棒性。
实验设置:2×2 因子设计
使用仅 NumPy 和 SciPy 的 Python 模拟器进行了系统分析。该架构确保实验纯净:滤波器仅接收噪声测量值,无法访问真实状态。
模拟场景组织为完全因子实验:
- 线性动力学 + 高斯噪声——基准情况。
- 线性动力学 + 非高斯噪声——针对异常的鲁棒性检查。
- 非线性动力学 + 高斯噪声——非线性处理测试。
- 非线性动力学 + 非高斯噪声——所有算法的压力测试。
非线性模型专为放大效应而设计:
x₁[k+1] = x₁[k] + x₂[k] + 0.5·sin(x₁[k])
x₂[k+1] = 0.8·x₂[k] + 0.2·cos(x₁[k])
测量包括二次依赖:y₂ = x₂² + η₂,这会丢失速度符号信息并产生局部双峰性。
过程噪声建模为高斯混合(背景 + 异常点),测量噪声为重尾拉普拉斯分布。
评估指标:RMSE、NEES 和 NIS
使用三种指标进行全面评估:
- RMSE(均方根误差)——整体精度度量,但对不确定性一致性无信息。
- NEES(归一化估计误差平方)——显示经验误差与预测协方差的匹配程度。对于正确滤波器,NEES 应服从具有 n 个自由度(n = 状态维数)的 χ² 分布。
- NIS(归一化创新平方)——无真实值操作模式下的 NEES 类似物。基于创新(测量与预测的差值)。
结果显示:
- 在线性-高斯情况下,所有滤波器 RMSE 值相似,NEES 在 χ² 置信区间内。
- 在非高斯噪声下,KF 保持功能,但 NEES 系统性超出界限,表明不确定性低估。
- UKF 更好地处理非线性,但对非高斯测量噪声敏感,因为保留了高斯假设。
- PF 在所有场景下 NEES 一致性最佳,尤其在多模和重尾噪声下。
滤波器选择的实用建议
基于实验,以下建议可供参考:
- 使用 KF,如果系统接近线性且噪声仅轻微偏离高斯性(例如,弱异常点)。这确保计算成本最低。
- 切换到 UKF,如果非线性显著但噪声仍为高斯或近似高斯。UKF 有效逼近非线性变换,而不增加维数。
- 选择 PF,当噪声明显非高斯(异常点、多模性)或可观测性受损(例如,二次测量)。缺点:计算复杂度高和粒子耗尽风险。
在实际系统中,定期监测 NIS 至关重要:持续超出 χ² 阈值表明需修正噪声模型或切换到更灵活的滤波器。
关键要点
- 卡尔曼滤波器在非高斯噪声下不会“崩溃”,但失去最优性和一致性。
- NEES 是仿真中滤波器验证的关键指标;NIS 用于实时诊断。
- UKF 可补偿非线性,但无法解决非高斯性。
- 粒子滤波器最通用,但需仔细调参和大量资源。
- 非线性和非高斯噪声的组合对所有方法构成最大挑战。
— Editorial Team
暂无评论。