作者:高翔,张涛,刘毅,颜沁睿。
编者按:本文节选自图书《视觉SLAM十四讲:从理论到实践》,系统介绍了视觉SLAM(同时定位与地图构建)所需的基本知识与核心算法,既包括数学理论基础,又包括计算机视觉的算法实现。此外,还提供了大量的实例代码供读者学习研究,从而更深入地掌握这些内容。
当前的开源方案
本文将带着读者去看看现有的SLAM方案能做到怎样的程度。特别地,我们重点关注那些提供开源实现的方案。在SLAM研究领域,能见到开源方案是很不容易的。往往论文中介绍理论只占20%的内容,其他80%都写在代码中,是论文里没有提到的。正是这些研究者们的无私奉献,推动了整个SLAM行业的快速前进,使后续研究者有了更高的起点。在我们开始做SLAM之前,应该对相似的方案有深入的了解,然后再进行自己的研究,这样才会更有意义。
本讲的前半部分将带领读者参观一下当前的视觉SLAM方案,评述其历史地位和优缺点。表1列举了一些常见的开源SLAM方案,读者可以选择感兴趣的方案进行研究和实验。限于篇幅,我们只选了一部分有代表性的方案,这肯定是不全面的。在后半部分,我们将探讨未来可能的一些发展方向,并给出当前的一些研究成果。
方案名称 | 传感器形式 | 地址 |
---|---|---|
MonoSLAM | 单目 | https://github.com/hanmekim/SceneLib2 |
PTAM | 单目 | http://www.robots.ox.ac.uk/~gk/PTAM/ |
ORB-SLAM | 单目为主 | http://webdiis.unizar.es/~raulmur/orbslam/ |
LSD-SLAM | 单目为主 | http://vision.in.tum.de/research/vslam/lsdslam |
SVO | 单目 | https://github.com/uzh-rpg/rpg_svo |
DTAM | RGB-D | https://github.com/anuranbaka/OpenDTAM |
DVO | RGB-D | https://github.com/tum-vision/dvo_slam |
DSO | 单目 | https://github.com/JakobEngel/dso |
RTAB-MAP | 双目/RGB-D | https://github.com/introlab/rtabmap |
RGBD-SLAM-V2 | RGB-D | https://github.com/felixendres/rgbdslam_v2 |
Elastic Fusion | RGB-D | https://github.com/mp3guy/ElasticFusion |
Hector SLAM | 激光 | http://wiki.ros.org/hector_slam |
GMapping | 激光 | http://wiki.ros.org/gmapping |
OKVIS | 多目+IMU | https://github.com/ethz-asl/okvis |
ROVIO | 单目+IMU | https://github.com/ethz-asl/rovio |
MonoSLAM
说到视觉SLAM,很多研究者第一个想到的是A. J. Davison的单目SLAM工作。Davison教授是视觉SLAM研究领域的先驱,他在2007年提出的MonoSLAM是第一个实时的单目视觉SLAM系统[2],被认为是许多工作的发源地。MonoSLAM以扩展卡尔曼滤波为后端,追踪前端非常稀疏的特征点。由于EKF在早期SLAM中占据着明显主导地位,所以MonoSLAM亦是建立在EKF的基础之上,以相机的当前状态和所有路标点为状态量,更新其均值和协方差。
图1所示是MonoSLAM在运行时的情形。可以看到,单目相机在一幅图像当中追踪了非常稀疏的特征点(且用到了主动追踪技术)。在EKF中