位姿图优化(图优化 SLAM)
位姿图优化,是一种寻找机器人最可能走过的路径的方法:它把整段旅程当作一张由相连节点构成的网络,再轻轻地挪动每个节点,直到所有连接都尽可能地“满意”。每一个“位姿”,是机器人在某一时刻所在位置及朝向的一张快照,画成一个点。在两个点之间,机器人画一条边,记录一条约束:一种带测量的信念,比如“我大约往前走了两米、稍微向左转了一点,才从这里到了那里”。把许多位姿串在一起,就得到一张图——一串由这些相对运动的边连接起来的点。
大多数边连接的,是一个位姿和紧随其后的那一个,也就是逐步行驶的寻常记录。但真正特殊而有力的边,是回环检测加进来的那些:“这个晚得多的位姿,其实又回到了那个早得多的位姿所在的同一个地方。”此时这张图就被过度约束了——约束比可以松动的余地还多——而它们会彼此冲突,因为每一次测量都带着一点误差。优化,就是把所有位姿同时滑动,挪到那个唯一的布局:让被违背的约束尽可能地少、违背的程度尽可能地小,就像一团乱糟糟的弹簧,最终安顿成总张力最低的那个形状。每条边都是一根弹簧,答案就是整张网静止下来时的姿态。
这种“图 SLAM”的视角之所以流行,是因为它把一个杂乱的问题拆成了两件干净的活:先搭建这张图(决定哪些位姿相连、连得有多紧),再求解它(找出最佳的布局)。求解这一步可以借助快速而成熟的数学,因为这张图大体上是局部的——每个位姿只跟少数几个邻居相连——所以即便有成千上万个位姿,也能在不到一秒里被平衡好。
一台配送机器人把整个园区测绘成一条由四千个位姿组成的链。当它认出一小时前离开的那个大堂时,便加进一条回环边;优化器随即把全部四千个位姿重新平衡,让大堂与它自己对齐,一举把整张地图都摆正。
只要加进一条新约束,整张位姿之网就会重新安顿成一致的形状。
每条边携带的不仅是一个相对测量值,还带着它有多可信的分量;优化器会更倚重可信的边、让不太牢靠的边多弯一些,于是最终的布局会尊重“哪些约束更该胜出”。