状态估计与滤波

里程计

里程计是机器人靠观察自己的运动、一步一步地把每一小步累加起来,从而推断自己移动到哪里的办法。它并不是从外界被告知自己的位置;相反,它一遍又一遍地问:「我刚刚转了多少、又向前滚了多远?」并把这些不断累计。这个词来自一种古老的做法——通过数车轮转了多少圈来度量行程,就像汽车的里程表一格格地累加里数,只不过机器人记录的不只是距离,还包括不断变化的方向,这样它才能描绘出自己走过的整条曲折路径。

它的工作方式,是频繁地对增量运动做一些小小的测量——车轮编码器察觉到轮子转了四分之一圈,摄像头察觉到画面向左滑了一点——再把这些拼接成对机器人位姿的猜测,也就是它的位置以及朝向哪个方向。单看每一次测量几乎都微不足道,但一环扣一环地串起来,就能重建出整段旅程。问题在于,每一小步都带着一点小误差,而由于里程计是把一步叠加在另一步之上,这些误差会越积越多:机器人走得越久,估计就会越慢慢偏离真相,正因如此,里程计通常要在漂移变得太大之前,用 GPS 或认得出来的地标这类外部参照来加以校正。

里程计之所以重要,是因为它是机器人对自身运动最廉价、也最随时可用的感知——它不需要卫星、不需要地图、不需要外部信标,只需关注自己运动的部件。它是那根可靠的主心骨,填补在那些更稀少、更可信的定位之间的空当,让机器人即便身处外界什么都无法告知它的地方,也能有一种平滑、连续的对自身所在的感觉。

一台仓库机器人离开充电桩,沿着三条通道滚动前行。室内没有 GPS,它便数着自己车轮转了多少圈、转过多少角度,把每一小步移动累加起来,从而知道自己现在「越过了两条通道、往里走了四米」——全凭观察自己的车轮。

在卫星够不到的室内,机器人依靠里程计来记录自己的运动。

里程计估计的是自上一刻以来位姿发生了怎样的变化,而不是在地图上的绝对位置。它告诉你走过的路径是什么形状;要把这条路径钉到真实世界的坐标上,仍然需要一个外部参照。

又称
odometric estimation里程估计里程推算