地图合并

地图合并是将不同机器人(或同一机器人的不同会话)构建的子地图对齐为单一一致的全局地图的过程。每个机器人在自己任意选定的坐标系中启动SLAM;合并操作将一组互不相连的局部地图转变为一个共享的表示。

标准流程

  1. 找到锚点。 跨机器人回环检测(位置识别+几何验证)提供了不同地图关键帧之间的相对位姿约束。一个经过验证的回环就足以关联两个坐标系;多个回环则能使对齐问题的条件更加良好。
  2. 估计地图间变换。 根据匹配的关键帧,计算两个地图坐标系之间的变换——当两幅地图都是度量地图时(立体、RGB-D、VIO)为SE(3)\mathrm{SE}(3),当合并尺度不同的单目地图时(加入尺度)为Sim(3)\mathrm{Sim}(3)。估计方法使用匹配特征上的PnP或本质矩阵方法,或共享地标的3D-3D对齐。
  3. 融合数据。 将一幅地图变换到另一幅地图的坐标系中,然后合并重复内容:被两个机器人共同观测到的共视地标被统一,关键帧数据库和共视图/位姿图被合并,回环边成为普通的图边。
  4. 联合优化。 对合并后的图运行位姿图优化或光束法平差,使对齐误差分散到两条轨迹上,而不是集中在接缝处。在去中心化系统中,这一步是分布式优化;在集中式系统中,服务器运行全局BA。

对齐的数学原理

给定NN对对应的三维点{piqi}\{\mathbf{p}_i \leftrightarrow \mathbf{q}_i\}(两幅地图共同观测到的共享地标),地图间变换是如下最小二乘对齐问题的闭式解:

mins,R,tipi(sRqi+t)2,\min_{s,\,\mathbf{R},\,\mathbf{t}} \sum_i \left\| \mathbf{p}_i - (s\,\mathbf{R}\,\mathbf{q}_i + \mathbf{t}) \right\|^2,

由Horn/Umeyama方法求解:减去质心,对相关矩阵取SVD得到R\mathbf{R},从方差比恢复ss(对SE(3)\mathrm{SE}(3)情形则s1s \equiv 1),再由质心得到t\mathbf{t}。将其包裹在对应关系上的RANSAC中,就是第2步的主力方法。当只能获得2D观测时(单目情形),一幅地图的地标相对于另一幅地图的关键帧进行PnP,或进行本质矩阵分解,可以起到相同的作用。

必须选定一幅地图坐标系作为参考(规范化坐标系,gauge):通常是较旧的地图、较大的地图,或服务器的规范坐标系保持其坐标不变,另一幅地图则被变换到其中。

正确融合重复部分

对齐之后,重叠区域会存在两份。良好地合并这部分至关重要:

设计考量与陷阱

对SLAM的意义

地图合并正是协作真正产生回报的地方:它将NN份局部、存在漂移的地图转化为一幅覆盖范围更广、回环数量比任何单个机器人所能达到的都更多的地图。同样的概念——地图间变换、重复地标融合、联合优化——也反复出现在多会话建图、向先前地图的重定位,以及面向AR和自动驾驶的众包建图中。

相关条目