a survey of Monocular Simultaneous Localization and Mapping
同时定位与地图构建(simultaneous localization and mapping,SLAM)最早起源于机器人领域,其目标是在一个未知的环境中实时重建环境的三维结构并同时对机器人自身进行定位。在计算机视觉领域,与之类似的技术是运动推断结构(structure-from-motion,SFM)。
V-SLAM基本原理:
V-SLAM技术可以根据拍摄的视屏信息推断出摄像头在未知环境中的方位(pose),并同时构建环境地图,其基本原理为多视图几何原理。
代表性的V-SLAM系统
目前国际上主流的V-SLAM方法大致可以分为三类:
- 基于滤波器
- 基于关键帧BA(boundle adjustment, BA,集束调整)
- 基于直接跟踪的V-SLAM
基于滤波器
基本思想:将每一个时刻t的系统状态用一个高斯概率模型表达,,其中为当前时刻系统状态估计值,Pt为该估计值误差的协方差矩阵,系统状态有一个滤波器不断更新。
MonoSLAM,使用扩展卡尔曼滤波器EKF
局限性:1. EKF不能保证全局最优,更容易造成累计误差;2. 若将全部三维点引入状态变量,则复杂度为O(n3),只能处理几百个点的小场景
MSCKF,是一种VI-SLAM(visual-inertial SLAM)方法,融入了IMU数据,与EKF不同,将邻近的l帧相机运动参数全部包含进一个状态变量集合,这样子,复杂度就只有O(nl3),大大降低了计算复杂度
基于关键帧BA
PTAM,实时SFM系统,也是首个基于关键帧BA的单目V-SLAM系统。
基本思想:将相机跟踪(tracking)和地图构建(mapping)作为2个独立的任务在2个线程并行执行。地图构建县城紧维护原视频流中系数抽屉去的关键帧以及关键帧可见的三维点。这样就可以非常高效的求解目标函数(即BA)。有了BA回复的精确三维结构,相机跟踪线程为前台线程,仅需优化当前帧运动参数Ct,足以达到实时的计算效率。
如果成功匹配点(inliers)数不足(如因图像模糊、快速运动等),则判断跟踪失败,开始重新定位。
ORB-SLAM,目前性能最好的单目V-SLAM系统之一。
ORB-SLAM基本延续了PTAM的算法框架,主要有一下改进:
- ORB-SLAM选用了ORB特征,基于ORB描述量的特征匹配和重定位,都比PTAM具有更好的视角不变形。
- ORB-SLAM加入了循环回路的检测和闭合机制,消除误差累计。系统采用与重定位相同的方法来检测回路(匹配回路两侧关键帧上的公共点),通过方位图(pose graph)优化来闭合回路。与全局BA相比,方位图优化极大简化了全局优化的计算量,因此ORB-SLAM能处理大尺度场景。
- PTAM需要用户指定2帧来初始化系统,2帧之间需要有足够的公共点,又要有足够的平移量,平移运动为这些公共点提供了视差(parallax),只有足够的视差才能三角化出精确的三维位置。ORB-SLAM通过检测视差来自动选择初始化的2帧
- 扩展场景的优化,ORB-SLAM采用:先用冠松的判断条件尽可能及时地加入新的关键帧和三维点,以保证后续帧的鲁棒跟踪;再用严格的判断条件删除冗余的关键帧和不稳定的三维点,以保证BA的效率和精度。
基于直接跟踪的V-SLAM
基于滤波器和基于关键帧BA的V-SLAM通常需要在图像中提取并匹配特征点,因此对环境特征的丰富程度和图像质量(如模糊程度、图像噪声等)十分敏感。相比之下,直接跟踪发(direct tracking)不依赖于特征点的提取和匹配,而是直接通过比较像素颜色来求解相机运动,因此通常在特征缺失,图像模糊等情况下有更好的鲁棒性。同时,对于移动物体的滤除也非常好,但是计算量极大。
代表作。DTAM,LSD-SLAM,VO(visual odometry)基于直接跟踪的视觉测量系统。
各类单目V-SLAM的比较图:
注意,考虑一个SLAM系统可以从以上方面考虑:
- 定位精度
- 定位销率
- 场景尺度
- 特征缺失鲁棒性
- 重定位能力
- 快速运动鲁棒性
- 扩展效率
- 近似纯旋转扩展鲁棒性
- 场景变化鲁棒性
- 回路闭合能力
近年研究热点和发展趋势
有以下几点需要解决:
- 缓解特征依赖:V-SLAM对于场景特征的依赖,本质上是由于使用了过于底层的局部特征(点特征),如果能利用边缘、平面等更为高层的图像信息,也能有效地缓解特征依赖。
- 稠密三维重建:早起的V-SLAM大多只能重建出非常稀疏的三维点云
- 多传感器融合:基于单一传感器的定位方案不可避免的都有各自的固有局限:基于图像的V-SLAM依赖场景纹理特征;进基于IMU的定位通常有严重的误差累计;仅基于深度的SLAM依赖于场景集合特征,且设备获取深度的精度和范围受限于设备的成本和工号。只有将不同的传感器数据融合起来,才能互相取长补短,达到最高的精度和鲁棒性。如单目摄像头、IMU,双目、鱼眼、深度摄像头。
融合多传感器数据本质上就是一个非线性优化问题,每种类型的传感器信息作为能量函数中的一项,难点在于运动参数需要实时的恢复出来,而变量个数会随着运行时间不断增加。一个常见的简化方法就是设置一个滑动窗口,窗口中包含临近的l帧运动参数,每次只优化这l组运动参数和相应的三维结构,移除窗口的变量采用消元法,得到关于生育窗口内变量的先验约束,加入后续的优化中,基于滤波器的SLAM都属于这种类型(对于标准的滤波器来说l=1)。 - 其他实际问题:虽然V-SLAM算法在理想条件下已经能达到很高的精度和计算效率,但是实际运用中往往不能满足需求。如用户配合度等。