地图合并
地图合并是将不同机器人(或同一机器人的不同会话)构建的子地图对齐为单一一致的全局地图的过程。每个机器人在自己任意选定的坐标系中启动SLAM;合并操作将一组互不相连的局部地图转变为一个共享的表示。
标准流程
- 找到锚点。 跨机器人回环检测(位置识别+几何验证)提供了不同地图关键帧之间的相对位姿约束。一个经过验证的回环就足以关联两个坐标系;多个回环则能使对齐问题的条件更加良好。
- 估计地图间变换。 根据匹配的关键帧,计算两个地图坐标系之间的变换——当两幅地图都是度量地图时(立体、RGB-D、VIO)为,当合并尺度不同的单目地图时(加入尺度)为。估计方法使用匹配特征上的PnP或本质矩阵方法,或共享地标的3D-3D对齐。
- 融合数据。 将一幅地图变换到另一幅地图的坐标系中,然后合并重复内容:被两个机器人共同观测到的共视地标被统一,关键帧数据库和共视图/位姿图被合并,回环边成为普通的图边。
- 联合优化。 对合并后的图运行位姿图优化或光束法平差,使对齐误差分散到两条轨迹上,而不是集中在接缝处。在去中心化系统中,这一步是分布式优化;在集中式系统中,服务器运行全局BA。
对齐的数学原理
给定对对应的三维点(两幅地图共同观测到的共享地标),地图间变换是如下最小二乘对齐问题的闭式解:
由Horn/Umeyama方法求解:减去质心,对相关矩阵取SVD得到,从方差比恢复(对情形则),再由质心得到。将其包裹在对应关系上的RANSAC中,就是第2步的主力方法。当只能获得2D观测时(单目情形),一幅地图的地标相对于另一幅地图的关键帧进行PnP,或进行本质矩阵分解,可以起到相同的作用。
必须选定一幅地图坐标系作为参考(规范化坐标系,gauge):通常是较旧的地图、较大的地图,或服务器的规范坐标系保持其坐标不变,另一幅地图则被变换到其中。
正确融合重复部分
对齐之后,重叠区域会存在两份。良好地合并这部分至关重要:
- 地标统一:通过将一幅地图的点投影到另一幅地图的关键帧中,并以描述子距离和重投影误差作为门限,找出候选的重复地标;匹配的对被合并为一个继承两份观测列表的单一地标。
- 图重接线:在接缝两侧重建共视边和词袋数据库,使未来的跟踪、重定位和回环检测将合并后的区域视为同一个地点——这本质上就是ORB-SLAM3的Atlas在再次遇到旧地图时执行的”焊接”操作。
- 然后进行优化:只有联合优化(第4步)才能真正消除接缝;单纯的刚性对齐会保留两幅地图各自内部的漂移,只是把锚点处的不连续性掩盖了起来。
设计考量与陷阱
- 一次性合并还是持续合并:合并可以在首次相遇时发生,也可以随着更多地图间回环的到来而持续细化;后续到来的回环应该继续改善对齐效果,而不是被丢弃。
- 错误合并是灾难性的:一次错误的跨机器人回环会将两个并非同一地点的地方合并在一起,因此鲁棒后端(PCM、GNC)会在提交之前审查回环集合——一幅无法合并的地图也好于一幅被破坏的地图。
- 尺度不匹配:用变换合并两幅单目地图会在不知不觉中把一幅地图的尺度强加到另一幅上;除非两幅地图都是度量地图,否则应使用。
- 重复计数:如果重复地标没有被统一,同一个物理特征会在优化中重复贡献两次,使重叠区域权重过高,从而使结果产生偏差。
- 同样的机制也支撑着多会话SLAM(maplab 2.0、ORB-SLAM3的Atlas):一个”机器人”完全可以就是昨天的一次建图运行。
对SLAM的意义
地图合并正是协作真正产生回报的地方:它将份局部、存在漂移的地图转化为一幅覆盖范围更广、回环数量比任何单个机器人所能达到的都更多的地图。同样的概念——地图间变换、重复地标融合、联合优化——也反复出现在多会话建图、向先前地图的重定位,以及面向AR和自动驾驶的众包建图中。