定位、建图与 SLAM

蒙特卡洛定位

蒙特卡洛定位,是机器人在拿不准时回答“我在哪”的一种巧妙、甚至带点玩兴的办法。它不急着认定某一个猜测,而是把成千上万个小小的猜测——称为粒子——撒满整张地图,每一个都是一份完整的小假设,说着“也许我就在这里、朝着这个方向”。这一整群猜测,就是机器人的“信念”:粒子聚得密的地方,机器人强烈怀疑自己就在那儿;一个粒子都没有的地方,它则把这个位置排除掉了。这个名字借自蒙特卡洛的赌场,因为这套方法倚靠大量随机抽样,就像赌徒一掷又一掷之后,结果会一点点堆积出规律。

接着,这群粒子会玩一场分三步反复进行的生存游戏。第一步,当机器人移动时,每个粒子都照同样的方式移动,并掺进一点随机噪声,因为真实的运动从来都不完美。第二步,机器人取一次传感器读数,并问每个粒子:如果我真的就在你说的位置,这个读数说得通吗?与读数吻合得好的粒子拿到高分,也就是高权重;与读数相抵触的粒子则拿到低分。第三步是重采样——机器人培育出新一批粒子,把高分的复制下来、把落败的淘汰掉,就像演化保留适者、淘汰其余。一轮又一轮,幸存者构成的这团云会朝真实位置漂移过去,并越收越紧。

这套办法之所以惹人喜爱,在于它处理“困惑”的方式何其自然。一开始,当机器人真的毫无头绪时,粒子可以撒得到处都是,甚至凝成好几个彼此分开的团——如实地反映出“两条长得一模一样的走廊,都可能是答案”这个事实。随着更多传感器证据到来,错误的团会渐渐“饿死”,直到只剩一团胜出。它不需要完美的数学,又能从容应对杂乱、含混的真实世界,这正是它成为移动机器人主力的原因。而在它的引擎盖之下,它是一种叫作粒子滤波器的工具里著名的一支。

一台扫地机器人在一个未知的位置被打开后,把粒子撒满它整张地面地图。随着它撞到一堵墙、绕过一个拐角、读到一道门口,错误的猜测纷纷消亡,直到只剩下一团密集的粒子——于是机器人有把握地宣布:它就在厨房中岛旁边。

成千上万个猜测彼此竞争;只有那些持续与传感器吻合的才能存活下来。

有一种实用的小技巧叫自适应采样:当机器人迷失、困惑时,让它用很多粒子;一旦它有了把握,就自动把粒子数减下来——既省下计算量,又不损失可靠性。

又称
MCLparticle-filter localization粒子滤波定位蒙特卡羅定位