状态估计与滤波

过程噪声与测量噪声

当机器人试图追踪一个它无法直接看到的东西——它真实的位置、它真实的速度——它会依靠两幅关于世界的图景,而每一幅都自带某种模糊。一幅图景是预测:「根据我之前的运动方式,我现在大致应该在这里。」另一幅是观测:「我的传感器刚刚告诉我,我在那边。」两者都不完美,而这两种不完美各有其名。过程噪声是预测里的那份偏差——真实世界拒绝乖乖遵循机器人所用的那条整洁规则的种种小方式。测量噪声则是观测里的那份偏差——传感器误报自己所见的种种小方式。

过程噪声来自这样一个事实:预测步骤依赖于一个把运动方式简化了的模型,而现实总会在这个模型之外游走一点:车轮打滑、一阵风推了无人机一把、电机比指令多使了那么一丝劲。它是运动本身的不确定性——「我假定我会怎么动」与「我实际怎么动了」之间的落差。相比之下,测量噪声是「看」这件事里的不确定性:GPS 抖动了几米、摄像头糊了、温度计在真实温度附近晃来晃去。机器人的实际状态也许稳稳当当,可传感器每次去查,递回来的数字仍会略有不同。

把这两者区分开来,正是卡尔曼滤波器这类滤波器运作的核心所在,因为滤波器必须裁定:自己的预测,相对于一次新鲜的传感器读数,该信几分。如果它认为运动模型可靠、而传感器跳来跳去,它就倚重预测,对那条带噪声的读数一笑置之;如果传感器清晰、而运动难以预料,它就转而倚重测量。把这两种噪声的平衡拿捏对了,估计就能保持平滑又准确;拿捏错了,机器人要么追着传感器的每一次抽动跑,要么固执地无视真实世界。

一台扫地机器人根据电机指令预测自己向前移动了 30 厘米,但它蹭到了一块地毯、打了个滑——这道落差就是过程噪声。它的碰撞传感器随后报告说墙比实际近了 5 厘米——这个抖动就是测量噪声。滤波器把两者糅合起来,定下它对自己所在位置的最佳猜测。

过程噪声搅浑了预测;测量噪声搅浑了传感器读数。滤波器必须把两者一起权衡。

一个好记的口诀:过程噪声是「动」里的不确定性(运动模型),测量噪声是「看」里的不确定性(传感器)。滤波器需要对两者都有诚实的估计——把其中之一夸大了,机器人就会去信错误的那一方。

又称
system noise and sensor noise过程噪声与观测噪声系统噪声