1. 噪声博弈:卡尔曼滤波的“信任天平”
大家好,我是老张,在自动驾驶和机器人领域做了十几年传感器融合。今天想和大家聊聊卡尔曼滤波里一个既基础又核心,但新手最容易踩坑的话题:过程噪声和测量噪声的平衡。很多人学卡尔曼滤波,公式推导得滚瓜烂熟,但一到实际项目,滤波器不是“反应迟钝”就是“上蹿下跳”,问题多半就出在这两个噪声参数的设置上。
你可以把卡尔曼滤波想象成一个经验丰富的领航员。他手里有两份信息:一份是根据过去速度和方向预测出来的当前位置(模型预测),另一份是GPS、雷达等设备测量到的当前位置(传感器观测)。这个领航员有多相信自己的预测,又有多相信传感器的读数,直接决定了最终汇报的位置是否靠谱。过程噪声(Q) 量化的是你对预测模型的不信任程度——车子可能突然加速或转弯,模型没法完美描述。测量噪声(R) 量化的是你对传感器的不信任程度——GPS有漂移,雷达有误差。
这个“信任分配”就是个动态博弈的过程。Q设大了,意味着你认为模型很不准,会更相信传感器,滤波器对观测值反应灵敏,但也容易把传感器的瞬时噪声当成真实信号,导致估计结果抖动剧烈(过拟合观测噪声)。R设大了,则意味着你认为传感器很不可靠,会更相信自己的模型预测,结果就是滤波器反应迟钝,跟不上目标的真实机动(欠拟合动态变化)。我见过不少项目,算法理论完美,却因为这两个参数没调好,在实际路测中翻车。
2. 过程噪声(Q):为模型的“不完美”留出余地
2.1 它从哪来?不只是数学假设
过程噪声Q,本质上是你承认自己的数学模型无法100%描述真实世界的物理过程。这太正常了。比如,你用匀速(CV)模型去跟踪一辆城市里行驶的汽车,但真实情况是司机随时可能踩油门、刹车或转弯。这些未被模型描述的加速度、加加速度,就是过程噪声的来源。
在数学上,我们通常把它建模为零均值的高斯白噪声,协方差矩阵为Q。但这里有个关键:Q不是传感器测出来的,而是你作为算法工程师,根据对系统动力学的理解“设计”出来的。它是一种先验知识。比如,对于一个在平直公路上巡航的汽车,它的加速度变化可能很小,Q就可以设得小一些;而对于一个在做规避动作的无人机,它的加速度变化剧烈,Q就必须设得大一些。
我刚开始做无人机跟踪时,曾天真地把Q设得非常小,认为自己的匀速模型很准。结果滤波器非常“固执”,一旦无人机开始绕圈飞行,估计轨迹就严重滞后,画出一个大弧线才能跟上,这就是典型的模型过于刚性。
2.2 如何构建Q矩阵?从连续时间到离散化的关键一步
很多教程直接给出离散时间的Q矩阵,但理解其连续时间起源更重要。假设我们有一个连续时间的系统模型:
dx/dt = F x + G w
其中,w是连续时间过程噪声,其功率谱密度为Q_c。当我们以周期T进行离散化采样时,得到的离散时间过程噪声协方差矩阵Q并不是简单地等于Q_c,而是需要通过积分计算:
<


1429

被折叠的 条评论
为什么被折叠?



