时间:2017
作者:
实现条件:
多agent+一中心服务器。每一个agent自带单目摄像头,中心服务器可与所有agent通信。agent没有任何先验知识。不考虑任何的传输延时所带来的不良影响。
分工
agent工作:采集数据+建立局部地图+传送数据
服务器工作:place recognition(位置识别),map fusion(地图融合),bundle adjustment(束调整)
注:agent和server通信频率不是固定的
物理结构:
多资源有限无人机(配置单目摄像头,单机ORB-SLAM2算法)+中心资源控制
中心型相较于分布式优点(在节点资源有限情况下):
1)保持数据一致性、避免重复计算信息
2)大计算任务/对时延不敏感任务交给server,资源有限初计算关键任务
理论结构:
agent包括:
1)VO:用来处理图像信息,形成KF
2)Communication:与server进行通信(帧的传输)
3)Local map:自身维护局部地图
server包括:
1)agent Handler(数量同agent):包括communication(帧的传输)和Intra-MapPlicae(匹配自身的Server Map)。解决数据传输和数据转换的问题
2)Global Map Stack:用于存储每个agent的Server Map(初始化数量与agent相同),单一agent反馈信息改进该agent对应的Server Map,多agent遇到特征点相同时Server Map彼此融合。
3)Place Recognition Database:存储所有agent采集的所有关键帧,用于进行匹配,为匹配数据库(因agent资源有限,每个agent只能保存N个KF,而数据库不限制)
4)Inter-Map Place(匹配其他的Server Map, 匹配成功说明两个Server Map可融合)
5)Map Fusion:地图融合模块,操作对象是Server Map(两层:单一agent融合,多agent融合)
6)Global BA:对全局地图进行优化,每发生一次Map Fusion要进行一次优化。
通信方式:
1)server→agent
2)agent→server→agent(当server识别到agent有共同特征时,利用已知的其他agent信息反馈给原agent)
本文创新点及思想:
提出了一种协同SLAM框架可实现更好的感知。试验使用单目视觉SLAM完成,每个agent采集数据,数据以KF(keyframe关键帧)为数据结构基本单位。采集一帧后传给server。由server做place recognition,如果从两帧中提取到大量相同特征认为两agent走过相同地方。用B的经验传给A,用A的经验传给B以实现agent之间的交流(同时发生),强化agent的局部地图完整。同时server处会进行一次BA(bundle adjustment,束调整)。利用两帧数据强化全局地图中这部分的细节。
实验证明:
上图agentB(蓝)形成自己的识别轨迹,agentA(黑)形成的轨迹被用于加强B的轨迹。可明显看出左侧红色点分布更密集,说明此处B的缺失数据被A进行补齐。实现了更好的全局地图。
备注:
1.KF(Key Frame)和MP(Map Point)之间的关系?
一张KF是由很多MP组成,MP之间相互连线组成KF
2.关于这篇文章还有一个扩展的版本:CCM-SLAM: Robust and Efficient Centralized Collaborative Monocular SLAM for Robotic Teams。两篇文章的作者相同,这篇相比本文谈到这个篇幅更多,介绍了更多的实现细节,没有太多新的东西。
配套资料:
源码网址:https://github.com/raulmur/ORB_SLAM2
示例视频网址:https://www.youtube.com/watch?v=L9rHht8fE5E
因作者水平有限,如有错误之处,请在评论区下方指出,谢谢!