状态估计与滤波

运动模型与观测模型

当一个机器人试图弄清楚自己身在何处时,它依靠的是给自己讲的两个小故事,写成了方程的样子。第一个是运动模型,有时也叫过程模型:它是一条规则,说的是“以我现在以为所在的位置,再加上我刚发给轮子或电机的指令,我下一刻应该到达哪里”。以每秒半米向前开一秒,运动模型就预测你大约比原来的位置前进了半米。第二个是观测模型,也叫测量模型:它反着来,说的是“如果我真的站在这个点上,我的传感器理应读到什么”。站在离墙两米的地方,观测模型就预测激光测距仪应该报出大约两米。一个模型预测世界如何变化,另一个则预测感官会对此说些什么。

这两个模型是几乎每一个状态估计器的脊梁,因为它们合在一起,能让机器人把一个猜测拿去和现实比对。整个循环是这样的:先用运动模型把你最好的猜测沿时间向前推进(这叫预测步),然后取一个真实的传感器读数,用观测模型算出这个读数本该是多少,再轻轻拨动你的猜测,去弥合“预期”与“实际”之间的差距(这叫更新步)。关键在于,两个模型都不被当作完美无缺——每一个都附带着一句诚实的自白,承认自己通常会错到什么程度(运动模型配过程噪声,观测模型配测量噪声),这样机器人才知道该有多信任谁。轮子会打滑,所以运动模型靠不太住;一台好的激光器很利落,所以观测模型很锐利。估计器就据此为它们各自加权。

门道在于:把模型写得既要准到足够有用,又要简单到能每秒计算许多次。模型可以是一条干净的直线方程,也可以是纠缠又弯曲的——一台摄像头把三维位置变成像素坐标,就是出了名地弯的观测模型。一旦方程弯了起来,基础的卡尔曼滤波器就不再适用,工程师便会转而求助于它的表亲,比如能随之弯曲的扩展卡尔曼滤波器或无迹卡尔曼滤波器。但这副两段式的骨架从不改变:一个模型管我如何运动,一个模型管我如何被看见。

一台扫地机器人的运动模型说:“我让两个轮子都前进了 0.2 秒,所以我大约移动了 6 厘米。”它的观测模型说:“如果我现在离柜子 40 厘米,我前方的声呐应该回弹出大约 40 厘米。”而声呐实际读到 37 厘米,于是估计器对两个模型都信一点点,把自己的位置猜测安置在两者之间。

运动模型预测机器人去了哪里,观测模型预测它在那里该感知到什么——估计器把两者调和起来。

记住它们方向的一个窍门:运动模型是“状态 → 下一个状态”(预测未来),观测模型是“状态 → 预期测量”(预测你会感知到什么)。两者都各配一个噪声项,因为一个不肯承认任何不确定性的模型,会让估计器危险地过度自信。

又称
process model and measurement modelsystem model and sensor model运动模型与测量模型過程模型與量測模型