定位、建图与 SLAM

度量地图与拓扑地图

这是机器人记录世界的两种截然不同的方式。度量地图就像一张精确的建筑蓝图:它用真实的单位记下实际的距离和形状,于是机器人知道桌子就在正前方 2.3 米处、墙正好在这条线上。拓扑地图则更像一张地铁线路图:它不记精确的距离,而是记住那些重要的地点,以及哪个地点和哪个地点相连——厨房通向走廊,走廊通向客厅。前者抓住的是精确的几何,后者抓住的是连通关系,也就是各地点之间彼此相连的那副最朴素的结构。

两种风格各有所长,也各有所短。度量地图能让机器人挤过一道窄门、或把轮子停在厘米级的精度上,因为它知道确切的尺寸——可它储存起来很沉重,在整栋楼里搜索起来很慢,而且会漂移:微小的测量误差会在长距离上层层累积,到地图的远端时就再也对不齐真实世界了。拓扑地图则轻盈得令人愉快,做长途规划时推理起来很容易(“要到大堂,就走厨房 → 走廊 → 楼梯”),而且它对这种漂移毫不在意,因为它从一开始就没声称自己知道确切的距离——但单凭它,机器人无法精确地知道该如何在两道门之间转向。

正因为有这种取舍,真实的机器人通常把两者揉成一张混合地图:用一副由相连地点构成的拓扑骨架来做大局规划,并在每个地点内部存一小块精确的度量片,供你到达之后做那种细致、谨慎的腾挪。可以把它想成:先用城市地铁图来决定路线,再配上一张只画了你走出来的那个街区的详细街道图。

一台家用机器人存了一张拓扑地图——厨房、走廊、卧室,以及它们之间相连的门——用来决定路线;然后再载入一张卧室的精确度量地图,好让它轻轻地停进充电座,又不会碰到床架。

用拓扑地图选路线,用度量地图把车停准到厘米。

度量地图回答“我究竟在哪里?”,拓扑地图回答“哪些地点彼此相连?”——大多数实用系统两者都会保留一点。

又称
metric maptopological map度量图与拓扑图度量圖與拓撲圖