基于双目视觉的多机器人SLAM
2019-06-12胡新宇
许 晨 胡新宇
(武汉科技大学信息科学与工程学院,湖北 武汉 430081)
0 前言
随着机器人技术的快速发展, 机器人的市场需求逐步增多, 但由于此领域多项核心技术仍不成熟,导致机器人大规模生产受限, 难以满足人们的需求。 这些核心技术瓶颈包括多机器人协作、 人机语义交互、精确定位、自动避障等[1]。 SLAM(同时定位与地图构建) 是指带有传感器的机器人在没有先验信息的条件下,通过运动来构建地图。
目前对多机器人SLAM 的研究还处于基础阶段,文献[2]提出了一种分布式多机器人SLAM,通过共享地图来确定机器人间的相对位置, 但该方法无法适应有大型障碍物的环境。 文献[3]提出了一种多机器人协作SLAM 算法, 在该算法中, 将多个机器人进行随机分布, 通过无线通信链路来广播动作和观测信息, 此算法需要大量人工信息,不易实现。 文献[4]提出一种使用拓扑/度量混合地图的多机器人SLAM 算法,该算法是将多机器人SLAM 分解为若干小的SLAM 问题,但不能进行实时SLAM,需要不断的对拓扑地图进行离线优化。 文献[5]提出了一种基于局部子地图方法的多机器人SLAM, 该方法将全局环境的SLAM 问题进行分解,即多个机器人之间独立进行SLAM,然后对局部子地图进行融合得到全局地图。
多机器人SLAM 在快速构图、精确定位等方面有较好的应用前景。 由于多机器人SLAM 的众多优点和应用前景, 本文提出了基于双目视觉的多机器人SLAM。该方法将多机器人与SLAM 相结合, 通过关键帧的共享,不断更新每个局部地图,然后进行局部地图融合。该方法与单机器人SLAM 相比, 多个机器人可以同时进行定位与构图, 然后将生成的局部地图进行融合,得到一个大规模环境下的地图。
1 基于双目视觉的多机器人SLAM 实现方法
从现有的研究成果来看,对多机器人SLAM 的研究仍处于初级阶段, 远达不到应用的程度, 此技术需要对特征提取、目标检测、多机器人间信息共享、实时构图、简化算法等方面进行深入研究。
本文提出了一种基于双目视觉的多机器人SLAM,通过提出的方法可以融合每个机器人的局部地图从而构建大规模地图, 其方案如下图1 所示。 假设有两个机器人参与了这个协作SLAM 任务,机器人A 和B。 关键帧A 和地图A 来自机器人A,关键帧B 和地图B 来自机器人B。基于ORB-SLAM2 算法将两个机器人的关键帧进行共享, 经过相对位姿估计不断的更新局部地图。 闭环检测解决了位置随时间漂移的现象。 再将局部地图进行融合, 从而实现多机器人协同定位与地图构建。
图1 基于双目视觉的多机器人SLAM 构建方案图
跟踪 (Tracking) 模块的主要是从图像中提取ORB(Oriented FAST and Rotated BRIEF)特征,根据上一帧进行姿态估计, 或者进行通过全局重定位初始化位姿,然后跟踪已经重建的局部地图,优化位姿,再确定新的关键帧。
局部建图(Local Mapping)代码逻辑如下图2 所示。结合图1, 当机器人A 收到一个关键帧B 时 (假设是从机器人B 收到的第一个关键帧), 机器人将这个关键帧作为起点添加到地图A 中。 经过相对位姿变化,然后使用局部BA(Bundle Adjustment)来优化当前关键帧B 及已构建的局部地图。 机器人B 收到关键帧A 时也做同样的处理。
闭环检测(Loop Closing)也称回环检测,根据词袋法(Bog-of-Words, BoW)通过对两幅图像的特征点进行匹配, 当匹配数量大于某一阈值, 则认为实现了回环检测。 它通过检测机器人是否到达过先前的位置,解决了位置随时间漂移的问题。
图2 局部建图模块代码逻辑图
相对位姿估计与地图融合模块代码逻辑如下图3所示, 对于相对位姿估计, 通常用词袋法来选择与当前关键帧最匹配的关键帧, 计算两者之间的相似变换。 在相对位姿估计的基础上可以融合机器人A 和B的局部地图,最后用g2o 对地图进行优化。
图3 相对位姿估计与地图融合模块代码逻辑图
2 结语
本文提出一种基于双目视觉的多机器人SLAM 构建大规模地图的方法, 在共享关键帧的基础上可将每个机器人构建的局部地图进行融合, 从而实现多机器人SLAM。在下一步工作中,将在开源机器人操作系统(ROS)上利用Gazebo 进行仿真,通过实验验证此方法的性能。