揭云飞 王峰 智凯旋 熊超伟 李学易
摘要:SLAM(Simultaneous Localization and Mapping)同時定位与地图构建,是指在未知环境下,搭建在机器人上的传感器,不断的感知周围信息,从而创建周边环境地图,同时利用创建的地图实现自主定位。“视觉SLAM”是指相机作为主要传感器。该文首先介绍了视觉SLAM的总体框架和应用,然后对一些经典的视觉SLAM系统进行分类并介绍,同时总结了视觉SLAM中出现的关键性问题。最后,针对视觉SLAM的未来发展方向进行了阐述。
关键词:同时定位与地图构建; 视觉;相机;SLAM
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)19-0221-03
Abstract: SLAM (Simultaneous Localization and Mapping) simultaneous localization and mapping, refers to sensors built on robots in an unknown environment, constantly sensing surrounding information to create a map of the surrounding environment, and using the created map to achieve autonomous positioning. "Visual SLAM" refers to the camera as the main sensor. This paper first introduces the overall framework and application of visual SLAM, then classifies and introduces some classic visual SLAM systems, and summarizes the key issues that arise in visual SLAM. Finally, it elaborates on the future development direction of visual SLAM.
Key words: simultaneous localization and mapping; vision; camera; SLAM
1 视觉SLAM系统及应用
由于图象含有丰富的信息量,加上相机价格便宜,易于集成到其他硬件平台上,采用相机作为传感器的视觉SLAM得到了巨大的发展,从理论和实践上都有了巨大的转变和突破,目前在市场上的应用也越来越广。
1.1 视觉SLAM系统框架
总体来说,一个经典的视觉SLAM框架,可以大致的分为五个模块,如下图所示:
1) 传感器数据信息读取。在视觉SLAM中主要是相机图像信息的数据读取。
2) 视觉里程计(Visual Odometry,VO)。VO被定义为通过观察其环境的一系列图像来估计机器人的运动(相对于参考框架的平移和旋转)的过程。VO是一种被称为运动结构(SFM)的技术的一个特例,它解决了环境结构和摄像机从顺序排列到无序排列的图像集三维重建问题。
3) 后端优化(Optimization)。后端优化主要指采用扩展卡尔曼滤波器(Extended Kalman Filter,EKF)或其他滤波器处理SLAM过程中噪声的问题。还可以采用稀疏的光束平差法(Bundle Adjustment,BA)进行优化,从而得到全局一致的轨迹和地图。
4) 回环检测(Loop Closing)。当相机在空间中运动的时候,很有可能出现相机到达之前到过的某个点。此时表明发生了回环,后端对得到的信息进行优化处理。
5) 建图(Mapping)。根据不同的应用场景,构建不同的地图。包括二维和三维地图,栅格地图和拓扑地图。
1.2 视觉SLAM的应用
视觉SLAM可以定位相机在空间中的位置,同时创建周边的环境地图,作为当今最为前沿的技术之一,在新兴领域,如AR/VR、移动机器人、无人驾驶、无人机的应用主要有如下几点:
1) 在AR/VR领域,可以利用产生的图像信息,实时快速地进行跟踪处理,同时构建地图和当前视角进行比对,渲染虚拟物体使其看起来更具真实感。
2) 在移动机器人领域,机器人可以根据SLAM基于采集图像生成的地图,自动执行路径规划、导航等任务。
3) 在无人驾驶领域,主要使用视觉SLAM的视觉里程计功能,然后跟其他的定位方式融合。
4) 在无人机领域,视觉SLAM根据无人机采集的图像,生成环境局部地图,对无人机的路径规划、壁障等进行辅助。
2 经典的视觉SLAM系统
根据使用的视觉传感器不同,视觉SLAM系统可以划分为单目SLAM、双目SLAM和RGB-D SLAM系统。其中,单目SLAM只有一个相机,结构较为简单。双目相机由两个单目相机组成,这两个单目之间的距离称为基线。深度摄像头不仅可以采集图像信息,还能同时获取图像的深度信息。
视觉SLAM系统还可以依据对图像的处理方式,分为基于图像的直接法和基于图像特征的非直接法。依据构建地图的稀疏程度,分为稀疏和稠密两种。
下面看看视觉SLAM发展史上一些经典的系统。
2.1 MonoSLAM
提到视觉SLAM系统就不得不提Andrew Davison 教授在2007年提出的MonoSLAM[1]。
MonoSLAM系统是SLAM方法单目相机移动机器人“纯视觉”领域的第一个成功应用,相比较于SFM(Structure From Motion),更具有实时性。该方法的核心是在概率框架内在线创建稀疏但持久的自然标记地图。
主要贡献包括积极的绘图和测量方法,使用一般运动模型来平滑相机移动,以及单眼特征初始化和特征方向估计的解决方案。
2.2 PTAM
2007年,Klein等人提出了PTAM[2],是视觉SLAM发展中重要的里程碑。PTAM根据图像上的特征点检测出平面,基于平面建立三维坐标。将跟踪与建图两个过程并行化处理,采取非线性优化方案,并分离前后端。
但是PTAM的应用场景小,跟踪容易丢失。
2.3 ORB-SLAM
2015年,Raul Mur-Artal等人提出ORB-SLAM[3],ORB-SLAM系统完全围绕ORB特征点进行计算平衡了效率和精度两者的关系。在PTAM的基础上,增加了地图初始化和闭环检测的功能,对于关键帧的选取和地图构建,都进行了优化。显著提升了处理速度和追踪效果,同时提高了地图的精度。ORB-SLAM是基于单目相机的,同时要注意ORB-SLAM构建的地图是稀疏的。
该系统可以在标准CPU中实时工作,适用于各种环境,从小型手持室内场景到工业环境中的无人驾驶飞机以及在城市中驾驶的汽车。 基于单眼和立体观测的BA算法(Bundle Adjustment)的后端可以进行准确的轨迹估计。
2016年,ORB-SLAM的作者又推出了ORB-SLAM2,增加了ORB-SLAM系统的应用范围,新增了双目和RGB-D两种模式。
2.4 LSD-SLAM
2014年,J. Engle等人提出了LSD-SLAM[4]系统。LSD-SLAM系统提出了一种直接(无特征)单目SLAM算法,与当前最先进的直接方法相比,它允许构建大规模,一致的环境地图。 除了基于直接图像对齐的高度准确的姿态估计之外,还能将三维环境实时重建为具有关联的半稠密地图。
LSD-SLAM系统在回环检测这一环节,依然依赖于对特征点的计算。
2.5 DSO
2016年,J. Engle等人提出了DSO(Direct Sparse Odometry)[5]。在SLAM領域,DSO属于稀疏直接法,它将完全直接的概率模型(最小化光度误差)与所有模型参数(包括几何参数 - 表示为参考帧中的反向深度)和相机运动的一致性联合优化相结合。实验表明,在跟踪精度和稳健性方面,DSO在各种现实环境中显著优于其他的直接和间接方法。本方法不需要使用复杂而且耗时的特征提取,而在光强梯度大的区域自动选定特征点。通常这样的特征点比目前ORB-SLAM的特征点多很多,从而得到更高的精度。DSO方法能达到传统特征点法的五倍速度,并保持同等或更高精度。它的另外一个优势是可以构建半稠密甚至稠密的特征点,用于语义(semantic)SLAM,提高智能机器人对环境的认知。
3 视觉SLAM中的关键性问题
3.1 特征点检测与匹配
点特征法是视觉SLAM中常用的特征点检测方法。常见的特征点提取算法,包括SIFT(Scale invariant feature transform)[6]、SURF(Speeded up robust features)[7]和ORB(oriented fast and rotated BRIEF)[8]特征,其中SIFT具有较好的可辨识性,SURF具有较好的旋转不变性和尺度不变性,而且比SIFT的速度更快,ORB具有旋转不变性而不具有尺度不变性,在计算速度方面,显著优于SIFT和SURF特征。检测出特征点后,在视觉里程计中根据特征点进行匹配,将相邻图像中的特征点对应起来,从而计算出相机的位姿。
3.2 关键帧的选择
由于估计相机位姿过程中,帧与帧之间的对准会产生较多的误差,因此采用关键帧进行建图和定位,这样还能减少计算量,同时降低内存损耗。
不同的SLAM系统选取关键帧的时刻都有所差异。在单目SLAM中,通常新的关键帧需要跟上一个关键帧有足够的视差,在跟踪的特征点数量低于某个数值时,也会重新选取新的关键帧。ORB-SLAM系统中,新的关键帧出现在当前跟踪失败,本地建图空闲状态等情况下。对关键帧的选取方法上,较为常用的方法是依据帧间相对运动距离来选择关键帧。
3.3 闭环检测
在对相机当前的位置进行识别,判断之前是否到达过该位置,如果到达过,则检测出闭环并进行优化,消除误差。对相机位置识别的方法主要有三种,分别是地图到地图,图像到图像,图像到地图[9]。地图到地图是采用在两个子地图中的特征之间寻找对应关系,同时考虑其外观和相对位置。图像到图像的方法是在相机的最新图像和以前看到的图像之间寻找对应关系。而图像到地图是在相机的最新帧和地图中的要素之间寻找对应关系。文献9最终得出图像对图像的匹配精度更高。
3.4 地图优化
视觉SLAM视觉里程计部分,首先是构建图,采取机器人位姿作为图的定点,位姿关系作为图的边线。位姿可以通过编码器数据计算或者闭环检测等方法得出,将得到的位姿加入地图中,进行图优化。
图优化处理部分,可以采用图优化框架g2o(general graph optimization)[10]里的LM(Levenberg Marquardt)算法。
4 视觉SLAM的发展方向
在不远的将来,视觉SLAM的发展将朝向两个主要的方面:首先是利用高性能的计算器,实现高精密三维重建。其次是考虑到计算量上的限制,往嵌入式设备,例如手机等移动终端方向的发展,这一块主要是小型轻量级。
当前的视觉SLAM研究热点主要包括:相机传感器和惯性传感器(IMU)的结合,也就是视觉惯性里程计(VIO),相机在短时间内的快速移动上,精度不够,而IMU在这一点上能很好的进行很好的位姿估计。
隨着深度学习的火热,虽然SLAM的传统几何方法依然不可撼动,但是将SLAM和深度学习结合起来处理图像也成为了一种趋势,SLAM中的各个环节分别运用深度学习技术,能够提高精度和鲁棒性。
还可以将语义分割应用到SLAM中,我们通过深度学习技术从图像中获取大量的语义信息,应用到SLAM中,辅助推断关于环境的几何信息,能够起到不错的效果。
未来的视觉SLAM系统肯定会在原有的框架下做出进一步的改善,使视觉SLAM系统能够适应不同的环境,同时应付各种复杂环境下的挑战。感谢SLAM技术的研究者们,是他们的不懈努力推动着SLAM技术的不断发展。
参考文献:
[1] DAVISONA J, REID I D, N. MOLTON N D,et al. MonoSLAM: Real-time single camera SLAM[J]. IEEE transactions on Pattern Analysis and Machine Intelligence, 2007,29(6):1052-1067.
[2] KLEIN G, MURRAY D. Parallel Tracking and Mapping for Small AR Workspaces[C]//IEEE and ACM International Symposium on Mixed and Augmented Reality. Nara,Japan,2007: 225-234.
[3] MUR-ARTAL R, MONTIEL J M M, Tardós J D. ORB-SLAM: A Versatile and Accurate Monocular SLAM System[J]. IEEE Transactions on Robotics, 2015, 31(5):1147-1163.
[4] ENGEL J, SCH?PS T, CREMERS D. LSD-SLAM: Large-Scale Direct Monocular SLAM[M]// Computer Vision – ECCV 2014. Springer International Publishing, 2014:834-849.
[5] ENGEL J,Koltun V, Cremers D.Direct Sparse Odometry[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,2017,1(12): 611-625.
[6] Lowe D G. Distinctive Image Features from Scale-Invariant Keypoints[M]. Kluwer Academic Publishers, 2004.
[7] Bay H, Tuytelaars T, Gool L V. SURF: Speeded Up Robust Features[M]// Computer Vision-ECCV 2006. Springer Berlin Heidelberg, 2006:404-417.
[8] Rublee E, Rabaud V, Konolige K, et al. ORB: An efficient alternative to SIFT or SURF[C]// IEEE International Conference on Computer Vision. IEEE, 2012:2564-2571.
[9] Williams B, Cummins M, Neira J, et al. A comparison of loop closing techniques in monocular SLAM[J]. Robotics & Autonomous Systems, 2009, 57(12):1188-1197.
[10] Kümmerle R, Grisetti G, Strasdat H, et al. G2o: A general framework for graph optimization[C]// IEEE International Conference on Robotics and Automation. IEEE, 2011:e43478.