机器人建图
机器人建图,是机器人一边行进、一边把传感器捕捉到的一切缝合起来,从而建立一份关于周围环境长什么样的记录。想象一位测量员走遍一片地,把每道篱笆、每棵树、每条沟渠的位置都记下来,直到这些零散的笔记凑成一张能用的地图。机器人做的是同一件事,只不过它的笔记是一连串的传感器读数——激光测到的距离、摄像头拍到的图像、声呐返回的回声——而完成的地图,则是一份它日后能存储、复用、并据以推理的、关于这处空间的数字模型。
让建图成为一项独立技艺的关键之处在于:单单一次传感器扫描,只能告诉你某一瞬间、从某一个位置看出去时机器人四周的样子。要建起一整张地图,你必须从许多个位置取得读数,再把它们融合成一幅前后一致的画面;而要做到这一点,你就得知道每一次读数时机器人站在哪里。建图在它最纯粹的形式下,预设那些位置已经已知且可信——比方说,机器人被沿着一条精确测量过的轨道带着走,或者它的位置由某个外部系统钉死。一旦有了可信的位置,要做的工作就是把每一次扫描都变换到一个共同的参考系里,再把它们一层层叠上去,让墙与墙对齐、让整幅画面严丝合缝。
得出的结果可以有不同的形态,取决于机器人需要什么。它可能是一张占据栅格地图,把空间被挡住或空闲的地方涂出来;可能是一张地标地图,只记录角落、立柱这样寥寥几个醒目的特征;也可能是一份更丰富的三维模型。当然,在实际中,机器人很少能事先完美地知道自己的各个位置,而这恰恰就是为什么纯粹的建图,常常要和定位捆在一起,合成 SLAM 这个联合问题。
一家工厂装了一台机器人,它的精确路径由轨道固定下来,因此它每一刻的位置都精确到毫米、清清楚楚。它一边滑行,一边用激光扫过货架,把这些扫描缝合成一张仓库通道的详细地图,供其他机器人取用。
当机器人的各个位置都已知时,建图不过就是把那些扫描正确地对齐。
建图与定位互为镜像:建图假定你知道自己在哪,去问“世界长什么样”;定位则假定你知道世界,去问“你在哪”。两者之所以都难,恰恰是因为在真实世界里,这两样你通常都得不到现成的。