AR + V-SLAM的学习资料汇总

Author: Steven Date: Oct 13, 2015 Updated On: May 13, 2019
Categories: 科研笔记
3.1k words in total, 12 minutes required.

1. 一开始

说到AR,现在往往要说起来SLAM (Simultaneous Localization and Mapping),这两者之间是什么关系呢,可能会困扰很多的初学者。且先看点定义~

Augmented reality (AR) is a technique that allows to seamlessly composite virtual objects or information into real scene.

Simultaneous localization and mapping (SLAM) is a key fundamental technique for augmented reality, which provides the ability of self-localization in an unknown environment and mapping the 3D environment simultaneously. The localization and mapping enables fusion of virtual objects and real scenes in a geometrically consistent way.

注意现在在AR当中多使用的是Visual SLAM,即V-SLAM的技术。

两段简短的话,直接从文献[12]里抽出来的,实话来讲,AR里头可以借助多种多样的技术,例如

  • 采用marker (QR code / 激光栅格),通过识别marker在图像中的位置来恢复相机三维运动,缺点是场景扩展差,要求marker始终在图像之中;
  • 采用IMU (Inertial Measurement Unit)结合定位技术(如GPS和wireless技术),由于通常局部精度不够,会出现虚拟物体跳跃和偏移现象,且高精度的仪器目前还比较昂贵;
  • 采用场景布置方式,在场景中布置无线信号发射,通过信号交换的方式进行自身位置的确定,多使用在机器人领域中,不适合移动端进行AR

那么以上这些方法,要么受到精度和效率的影响,要么受到花费代价的影响,存在着一些局限。而SLAM,无需事先部署场景或昂贵设备,是一种markerless的方式,且能够扩展场景保证局部的定位精度,使得虚拟物体能够和现实场景进行很好的吻合,目前而言,是AR技术中最为合适的底层解决方案。

因此,目前而言,学习AR的算法基础,还是从SLAM和SFM (Structure From Motion)开始吧。

2. 书籍和教程

3. 经典论文和框架系统

3.1 介绍SLAM算法框架的一些文献

  • MonoSLAM. 基于滤波器的V-SLAM 主要的参考为文献[1],是一个基于单目摄像头的SLAM系统,MonoSLAM中每个时刻的系统状态是由当前的运动参数 $ C_t $ 和所有的三维点 $ \mathbf{X_1}, \ldots, \mathbf{X_n} $ 构成的,而当前状态的概率偏差由滤波器来控制和进行更新,选用的是扩展卡尔曼滤波器(Extended Kalman Filter,EKF),预测阶段(prediction)利用 $ C_{t-1} $ 和线性、旋转加速度和时间差对 $ C_t $进行确认,随后在更新阶段(update)则将观测到的图像点投影到三维场景中,得到新的三维点位置。注意每一时刻参与计算的系统状态只有 $ C_t $ 和所有的三维点 $ \mathbf{X_1}, \ldots, \mathbf{X_n} $ ,而不考虑 $ C_1, \ldots, C_{t-1} $ 的影响。

  • MSCKF. 是一个基于IMU的滤波器V-SLAM,参考文献为[2]。和MonoSLAM一样,诞生于2007年,基于滤波器对系统状态进行预测更新,不同在于:预测阶段,IMU数据被用来传递系统状态;更新阶段,MSCKF是利用一个窗口大小,将临近的多帧的运动参数都加入到一个状态变量集合中。这个集合中的运动参数在不断更新的过程中不断被优化,可以用来缓解误差的累积。

  • PTAM. 是基于关键帧进行Bundle Adjustment的V-SLAM,07年进行了开源,其文献可见[3] [4] [5] [6]。PTAM对于SLAM技术的发展做出的贡献源于其提出的分离tracking和mapping过程提高计算效率实现实时SLAM。在mapping的线程中仅仅维护一些稀疏关键帧(key frame)和关键帧中的可见三维点,用来进行BA (Bundle Adjustment);在tracking的线程中可以利用后台BA出的三维结构,仅仅需要优化当前帧的运动参数即可。多说一下重定位 (re-localizing)[6]的事情,即当当前帧的成功匹配点不足时,认为跟踪失败,进行重定位,需要将当前帧和已有关键帧进行比较,选择最相似的关键帧作为当前帧方位的预测;如果跟踪成功,就计算当前的运动参数是否符合关键帧的条件,若符合则传递给后台构建地图。

  • ORB-SLAM. 无疑的PTAM之后基于关键帧进行BA的明星算法了,2016年又有了ORB-SLAM2,其参考文献为[7] [8]。基本上延续了PTAM的算法框架,但是其在工程方面的扩展和优化使得其成为当前最稳定可靠的单目SLAM框架。一是其选用ORB特征并基于ORB做特征匹配和重定位,在视角不变性上有一定的优势;二是加入了回路检测和闭合机制,用来消除误差累积,最后使用了方位图pose graph来完成优化实现闭合回路;三是相比PTAM对于关键帧的选择更为宽松,尽可能及时加入关键帧做BA,保证鲁棒跟踪,但是也可以删除冗余的关键帧保证BA的效率。

  • DTAM. 是一个基于直接跟踪法 (Direct Tracking) 的SLAM系统[9],直接跟踪即不依赖于特征点的特区和匹配,而是直接通过比较像素颜色来求解相机的运动参数。DTAM是2011年提出的,特点在于能够实时恢复三维场景模型,能够保证在特征缺失、图像质量模糊的情况下依然可以稳定地直接跟踪。为了恢复三维场景,DTAM的后台程序需维护参考帧的深度图信息,其选用了逆深度方式来表达深度。

  • LSD-SLAM. 也是一个直接跟踪的SLAM系统[10]。其主要相比DTAM采用了半稠密的深度图,且每个像素的深度独立计算,计算效率更高。LSD也采用关键帧表达场景,每个关键帧不仅有其图像,还有逆深度图和逆深度的方差信息。而前台采用直接跟踪的方式,恢复当前帧和关键帧的相对运动关系。后台程序通过对关键帧信息采用EKF进行更新得到优化的场景信息。同时,LSD和ORB的类似之处,在于使用了方位图pose graph的优化来取代全局优化,因此具备闭合循环回路和扩展大场景的能力。

  • SVO. 查看文献[15],基于半稠密法的直接跟踪框架。特征跟踪采用SVO方法,对场景的要求不是特别敏感,而且效率较高,目前SVO的SLAM部分依然很难用,原因在于选择关键帧做优化,特别是地图构建方面做得还不够优。用在三维场景构建中的鲁棒性很强。

基本上SLAM可以分为前端的tracking和后端的mapping两大块。

  • 在tracking方面,基本上现在都采用的是图像和RGBD这两种,图像的配准分为基于稀疏(sparse)特征和稠密(dense)两种。例如MonoSLAM、MSCKF、PTAM、ORB-SLAM这些都是基于提取的特征,如FAST\ORB等等,的方法;而DTAM、LSD、SVO都是基于稠密或者半稠密进行直接跟踪的方法。
  • 在后端的mapping方面,主要是将前端tracking中计算的累积误差的校正的基础上构建关键三维场景,主流有基于概率学的贝叶斯滤波器EKF\PF做优化的,还有基于稀疏的图进行优化的方法。例如MonoSLAM、MSCKF都是基于滤波进行的,PTAM和DTAM都考虑在关键帧的基础上进行BA,而LSD-SLAM和ORB-SLAM都是基于方位图进行全局优化的。

3.2 介绍SLAM基础或关键技术的一些文献

  • Graph-based SLAM,图优化方法. Davison在文献[13]中介绍了图优化方法Graph-based SLAM来取代传统的EKF方法的SLAM. 相关的g2o可以查看文献[11].

  • 光束平差 (Bundle Adjustment),请看文献[14],权威的BA文献.

  • 回路闭合 (loop closure),参照文献[16],回路闭合检测机制可以有效的减轻在tracking过程中的误差累积导致的飘移.

4. 在线课程和文档

5. 网站

  • OpenSLAM: https://openslam.org/ ,其中包含的g2o[11]是目前最流行的graph optimization的实现工具.

  • ROSROS http://www.ros.org/ 机器视觉框架工具,跨平台,包含一整套常用的机器人理论的算法和工具的实现.

  • M家的 Kinect 可看做一个RGBD Camera.

  • G家的 ATAP(先进技术与计划)部门开发的 Project Tango.

6. 一些有用的博客地址

7. 数据集

引用


  1. 1.Andrew J. Davison, Ian D. Reid, Nicholas Molton, Olivier Stasse. MonoSLAM: Real-Time Single Camera SLAM. IEEE Trans. Pattern Anal. Mach. Intell. 29(6): 1052-1067 (2007).
  2. 2.Anastasios I. Mourikis, Stergios I. Roumeliotis. A Multi-State Constraint Kalman Filter for Vision-aided Inertial Navigation. ICRA 2007: 3565-3572.
  3. 3.Georg Klein, David W. Murray. Parallel Tracking and Mapping for Small AR Workspaces. ISMAR 2007: 225-234.
  4. 4.Georg Klein, David W. Murray. Parallel Tracking and Mapping on a camera phone. ISMAR 2009: 83-86.
  5. 5.Robert Oliver Castle, David W. Murray. Keyframe-based recognition and localization during video-rate parallel tracking and mapping. Image Vision Comput. 29(8): 524-532 (2011).
  6. 6.Georg Klein, David W. Murray. Improving the Agility of Keyframe-Based SLAM. ECCV (2) 2008: 802-815.
  7. 7.Raul Mur-Artal, J. M. M. Montiel, Juan D. Tardós. ORB-SLAM: A Versatile and Accurate Monocular SLAM System. IEEE Trans. Robotics 31(5): 1147-1163 (2015).
  8. 8.Raul Mur-Artal, Juan D. Tardós. ORB-SLAM2: an Open-Source SLAM System for Monocular, Stereo and RGB-D Cameras. CoRR abs/1610.06475 (2016).
  9. 9.Richard A. Newcombe, Steven Lovegrove, Andrew J. Davison. DTAM: Dense tracking and mapping in real-time. ICCV 2011: 2320-2327.
  10. 10.Jakob Engel, Thomas Schöps, Daniel Cremers. LSD-SLAM: Large-Scale Direct Monocular SLAM. ECCV (2) 2014: 834-849.
  11. 11.Rainer Kümmerle, Giorgio Grisetti, Hauke Strasdat, Kurt Konolige, Wolfram Burgard. G2o: A general framework for graph optimization. ICRA 2011: 3607-3613.
  12. 12.基于单目视觉的同时定位与地图构建方法综述. 《计算机辅助设计与图形学学报》, 2016, 28(6):855-868.
  13. 13.Hauke Strasdat, J. M. M. Montiel, Andrew J. Davison. Visual SLAM: Why filter? Image Vision Comput. 30(2): 65-77 (2012).
  14. 14.Bill Triggs, Philip F. McLauchlan, Richard I. Hartley, Andrew W. Fitzgibbon. Bundle Adjustment - A Modern Synthesis. Workshop on Vision Algorithms 1999: 298-372.
  15. 15.Christian Forster, Matia Pizzoli, Davide Scaramuzza. SVO: Fast semi-direct monocular visual odometry. ICRA 2014: 15-22.
  16. 16.Raul Mur-Artal, Juan D. Tardós. Fast relocalisation and loop closing in keyframe-based SLAM. ICRA 2014: 846-853.