协作SLAM通常是部署在多台机器人上的多个SLAM系统,它们各自实现自己的定位和建图,当地图区域出现重叠时进行地图融合,然后共同维护一个融合后的全局地图。协作SLAM使得SLAM系统能够分布式的部署在移动终端,比如微型飞行器(Micro Aerial Vehicles,MAV),并将大部分的计算量部署在地面设备上,使得低成本、低功耗设备的定位成为可能。
本文介绍协作SLAM领域的一篇论文,2013年发表的《Collaborative Monocular SLAM with Multiple Micro Aerial Vehicles》。文章作者提出一套完整的协作SLAM实时运行系统,系统分为MAVs和地面基站两个部分。每个MAV内置VO,可以实时计算相机位姿和特征点。地面基站负责为每个MAV维护一个单独的地图,并执行闭环检测,当检测到闭环时进行地图融合。系统如图1所示。
简单来说,协作SLAM就是多个SLAM系统共用一个地图。其中,单个SLAM系统的解决方案,与主流方案保持一致,基于特征点法的前端,基于局部地图的后端(类似于ORB-SLAM中的Covisibility Graph)加上基于视觉词袋的回环检测。
除此之外,我们主要关注该系统的创新点,或者说它主要解决的问题。
1. MAV与地面基站的通信
地面基站就是一台计算机,作者将运行于其上的算法称为CSfM(Collaborative Structure from Motion)。由图一可知,CSfM中为每一个MAV创建了对应的Frame Handler Thread,负责与MAV通信。MAV上部署了轻量级VO(视觉里程计),该VO实时地将关键帧的特征点和相对于上一关键帧的相对位姿发送给对应的Frame Handler Thread。注意,VO只发送关键帧的特征点和相对位姿,而不是所有帧,因此降低了通信流量。
CSfM获取到相对位姿后,叠加到上一帧的位姿上,就得到了当前帧的位姿。计算公式为:
2.CSfM与VO的尺度漂移问题
所有的单目SLAM都或多或少有尺度漂移问题。尺度漂移是指随着SLAM系统的运行,真实场景在地图中的尺度发生变化,既可能变大也可能变小。特别是对于不含回环检测的VO,尺度漂移尤为严重。由于CSfM中有局部BA和回环检测,因此可以认为尺度漂移很小,不予考虑。但MAV上的VO,任意时刻只保留5个关键帧,尺度漂移非常严重。因此在CSfM接收到VO的数据后,需要采用一个尺度变换,以消除VO尺度漂移的影响。
设CSfM中某Frame Handler Thread与其对应的VO的尺度缩放因子为λk,修改式(1)为
即可。λk是需要随时更新的,这可以通过简单的计算得出,具体公式可以查看论文原文。
3.如何跨地图检测回环?
基于外观的回环检测方法已经很成熟了,所以作者用的也是视觉词袋。只不过,与每个MAV拥有单独的地图不同,整个系统只有唯一的视觉词袋。因此,无论哪个Frame Handler Thread执行闭环检测,用的都是同一个视觉词袋,检测到的回环就有可能是跨地图的。
4.检测到回环后,如何做地图融合?
检测到回环后立即估计当前帧与回环帧之间的位姿转移矩阵{R, t, s},其中s是两个地图之间的尺度缩放因子。由于两个单目SLAM系统开始时的定位和建图是互相独立的,所以它们的尺度肯定不一致,s可以通过计算任意一对同时出现在当前帧与回环帧的特征点的距离的比值来确定。
使用RANSAC P3P方法计算出当前帧和回环帧的位姿转移矩阵R和t,然后将其中一个地图和位姿按照该矩阵投影到另一个坐标系下,融合成一个地图。融合的时候,需要将相同的地图点合并成一个,以免产生冗余。
地图融合后,应当执行一次全局BA优化,以降低位姿和地图点的误差。但全局BA计算量太大,而且容易陷入局部极小值。因此作者采用两步优化策略,先执行一次全局位姿图优化(Pose-Graph Optimization),再执行全局BA。全局BA和位姿图优化以及两者的区别,请参考文末参考资料。
5.多线程并发访问融合后的地图
地图一旦融合,对应的多个Frame Handler Thread以后就要同时操作这同一个地图。因此多线程并发的效率和安全性成为需要考虑的重点。
如图四所示,CSfM中每个地图维护了一个KF-List,用来保存所有关键帧。每一个关键帧KF又维护了一个MP列表,可以访问到所有可观测的地图点。而每个地图点反过来也保存了所有能够观察到该地图点的关键帧。为了保证局部BA或全局优化不产生多线程冲突,对KF修改前需要获取该KF的锁,对MP修改前需要获取所有可观测到该MP的KFs的锁。也就是说,锁只加在KF上,而不加在MP上,因为MP远多于KF,对MP加锁会大大加重性能负担。
采用该方案使得并发的局部BA成为可能,在一定程度上保证了系统的实时性。
最后,作者通过几个室内和室外的实验验证了系统的可行性,精度与state-of-the-art的视觉SLAM系统相当。
图9中,地图融合前,两个地图分别在不同的位置,用红色和绿色点表示。检测到回环后,两个地图通过坐标变换融合到一起,成为一个地图。
这种分布式的协作SLAM方案对多机器人协作、飞行器协作提供了良好的技术支持。
参考资料
《SLAM后端优化》 金戈大王
《SLAM后端优化(续)》 金戈大王