![](/style/images/good.png)
![](/style/images/bad.png)
【精华】VSLAM技术综述
source link: https://leezhao415.github.io/2022/03/10/%E3%80%90%E7%B2%BE%E5%8D%8E%E3%80%91VSLAM%E6%8A%80%E6%9C%AF%E7%BB%BC%E8%BF%B0/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
【精华】VSLAM技术综述
文章目录
随着 ORB-SLAM 的崛起,视觉 SLAM 技术掀起了一波热潮,今天小白带着小伙伴一起学习视觉 SLAM 经典的解决方案。
1 什么是视觉 SLAM
SLAM 是 “Simultaneous Localization And Mapping” 的缩写,可译为同步定位与建图。概率 SLAM 问题 (the probabilistic SLAM problem) 起源于 1986 年的 IEEE Robotics and Automation Conference 大会上,研究人员希望能将估计理论方法 (estimation-theoretic methods) 应用在构图和定位问题中。 SLAM 最早被应用在机器人领域,其目标是在没有任何先验知识的情况下,根据传感器数据实时构建周围环境地图,同时根据这个地图推测自身的定位。
假设机器人携带传感器 (相机) 在未知环境中运动,为方便起见,把一段连续时间的运动变成离散时刻 t=1,…k,而在这些时刻,用 x 表示机器人的自身位置,则各时刻的位置就记为 x1,x2…xk,它构成了机器人的轨迹。地图方面,假设地图由许多个路标组成,而每个时刻,传感器会测量到一部分路标点,得到它们的观测数据。设路标点共有 N 个,用 y1,y2…yn 表示。通过运动测量 u 和传感器读数 z 来求解定位问题 (估计 x) 和建图问题 (估计 y)。
![vSLAM技术综述_vSLAM](https://s8.51cto.com/images/blog/202107/29/9e930d6b379bc81df2cfefc0cdb0103f.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
只利用相机作为外部感知传感器的 SLAM 称为视觉 SLAM (vSLAM)。相机具有视觉信息丰富、硬件成本低等优点,经典的 vSLAM 系统一般包含前端视觉里程计、 后端优化、 闭环检测和构图四个主要部分。
![vSLAM技术综述_vSLAM_02](https://s7.51cto.com/images/blog/202107/29/2be47cb0ee887e3e6b63f1711e20a794.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
● 视觉里程计 (Visual Odometry):仅有视觉输入的姿态估计;
● 后端优化 (Optimization): 后端接受不同时刻视觉里程计测量的相机位姿,以及闭环检测的信息,对它们进行优化,得到全局一致的轨迹和地图 [5];
● 闭环检测 (Loop Closing): 指机器人在地图构建过程中,通过视觉等传感器信息检测是否发生了轨迹闭环,即判断自身是否进入历史同一地点 [6];
● 建图 (Mapping): 根据估计的轨迹,建立与任务要求对应的地图 [5]。
2 VSLAM 算法分类
根据生成方法的不同,SLAM 可以分成两大类:间接方法和直接方法
(1)间接法及其典型系统
间接法首先对测量数据进行预处理来产生中间层,通过稀疏的特征点提取和匹配来实现的,也可以采用稠密规则的光流,或者提取直线或曲线特征来实现。然后计算出地图点坐标或光流向量等几何量,因此间接法优化的是几何误差:
![vSLAM技术综述_vSLAM_03](https://s3.51cto.com/images/blog/202107/29/f47ca6d0787ab03dbad2e921887ce4b1.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
其中 ui 为 Ik-1 中任意像素点,它投影到空间点的坐标为 Pi, u′i 是 Pi 投影到 Ik 上的坐标。之后利用中间层的数值来估计周围环境的三维模型和相机运动。
![vSLAM技术综述_vSLAM_04](https://s5.51cto.com/images/blog/202107/29/93b9a6766f7185f25040f322af7f91bd.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
MonoSLAM 是第一个实时的单目视觉 SLAM 系统 [7]。 MonoSLAM 以 EKF (扩展卡尔曼滤波) 为后端,追踪前端稀疏的特征点,以相机的当前状态和所有路标点为状态量,更新其均值和协方差。在 EKF 中,每个特征点的位置服从高斯分布,可以用一个椭球表示它的均值和不确定性,它们在某个方向上越长,说明在该方向上越不稳定。 该方法的缺点:场景窄、路标数有限、稀疏特征点易丢失等。
![vSLAM技术综述_vSLAM_05](https://s2.51cto.com/images/blog/202107/29/28dc022b704dc9604084b9ed8b90140c.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
PTAM [8] 提出并实现了跟踪和建图的并行化,首次区分出前后端 (跟踪需要实时响应图像数据,地图优化放在后端进行),后续许多视觉 SLAM 系统设计也采取了类似的方法。PTAM 是第一个使用非线性优化作为后端的方案,而不是滤波器的后端方案。提出了关键帧 (keyframes) 机制,即不用精细处理每一幅图像,而是把几个关键图像串起来优化其轨迹和地图。该方法的缺点是:场景小、跟踪容易丢失。
![vSLAM技术综述_vSLAM_06](https://s5.51cto.com/images/blog/202107/29/056374056f2d69d2120a93785c588f17.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
ORB-SLAM [9] 围绕 ORB 特征计算,包括视觉里程计与回环检测的 ORB 字典。ORB 特征计算效率比 SIFT 或 SURF 高,又具有良好的旋转和缩放不变性。ORB-SLAM 创新地使用了三个线程完成 SLAM,三个线程是:实时跟踪特征点的 Tracking 线程,局部 Bundle Adjustment 的优化线程和全局 Pose Graph 的回环检测与优化线程。该方法的缺点:每幅图像都计算一遍 ORB 特征非常耗时,三线程结构给 CPU 带来了较重负担。稀疏特征点地图只能满足定位需求,无法提供导航、避障等功能。
![vSLAM技术综述_vSLAM_07](https://s7.51cto.com/images/blog/202107/29/4d63756f6f63ded35f24d4eed7b2183f.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
ORB-SLAM2 [10] 基于单目的 ORB-SLAM 做了如下贡献:第一个用于单目、双目和 RGB-D 的开源 SLAM 系统,包括闭环,重定位和地图重用;RGB-D 结果显示,通过使用 bundle adjustment,比基于迭代最近点 (ICP) 或者光度和深度误差最小化的最先进方法获得更高的精度;通过使用近距离和远距离的立体点和单目观察结果,立体效果比最先进的直接立体 SLAM 更准确;轻量级的本地化模式,当建图不可用时,可以有效地重新使用地图。
(2)直接法及其典型系统
直接法跳过预处理步骤直接使用实际传感器测量值,例如在特定时间内从某个方向接收的光,如下图所示。在被动视觉的情况下,由于相机提供光度测量,因此直接法优化的是光度误差:
![vSLAM技术综述_vSLAM_08](https://s4.51cto.com/images/blog/202107/29/58e9d9ae882690ff6e489aa6f0aaf6fb.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![vSLAM技术综述_vSLAM_09](https://s3.51cto.com/images/blog/202107/29/0f55571be0181780fca4d2d81e3645ca.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![vSLAM技术综述_vSLAM_10](https://s3.51cto.com/images/blog/202107/29/a33e09938b52d1dcc4ef81735cf7712e.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
DTAM [11] 是单目 VSLAM 系统,是一种直接稠密的方法,通过最小化全局空间规范能量函数来计算关键帧构建稠密深度图,而相机的位姿则使用深度地图通过直接图像匹配来计算得到。对特征缺失、 图像模糊有很好的鲁棒性。该方法的缺点是:计算量非常大,需要 GPU 并行计算。 DTAM 假设光度恒定,对全局照明处理不够鲁棒。
2> LSD-SLAMLSD-SLAM [12] 建了一个大尺度直接单目 SLAM 的框架,提出了一种用来直接估计关键帧之间相似变换、尺度感知的图像匹配算法,在 CPU 上实现了半稠密场景的重建。该方法的缺点:对相机内参敏感和曝光敏感,相机快速运动时容易丢失,依然需要特征点进行回环检测。
![vSLAM技术综述_vSLAM_11](https://s3.51cto.com/images/blog/202107/29/113b0b61808e7a64bcc034c0f6989f6a.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
SVO 是一种半直接法的视觉里程计,它是特征点和直接法的混合使用:跟踪了一些角点,然后像直接法那样,根据关键点周围信息估计相机运动及位置。由于不需要计算大量描述子,因此速度极快,在消费级笔记本电脑上可以达到每秒 300 帧,在无人机上可以达到每秒 55 帧。该方法的缺点是:舍弃了后端优化和回环检测,位姿估计存在累积误差,丢失后重定位困难。
![vSLAM技术综述_vSLAM_12](https://s3.51cto.com/images/blog/202107/29/7fc1778d4c435fd0c7c3f04558a220cc.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
DSO 是基于高度精确的稀疏直接结构和运动公式的视觉里程计的方法。不考虑几何先验信息,能够直接优化光度误差。并且考虑了光度标定模型,其优化范围不是所有帧,而是由最近帧及其前几帧形成的滑动窗口,并且保持这个窗口有 7 个关键帧。DSO 中除了完善直接法位姿估计的误差模型外,还加入了仿射亮度变换、 光度标定、 深度优化等。该方法没有回环检测。
![vSLAM技术综述_vSLAM_13](https://s3.51cto.com/images/blog/202107/29/ce84242bda9b58b50cb19936fd8ef114.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
传统的视觉 SLAM 在环境的适应性方面依然存在瓶颈,深度学习有望在这方面发挥较大的作用。目前,深度学习已经在语义地图、重定位、回环检测、特征点提取与匹配以及端到端的视觉里程计等问题上有了相关工作,下面列举一些典型成果:
●CNN-SLAM [17] 在 LSD-SLAM [12] 基础上将深度估计以及图像匹配改为基于卷积神经网络的方法,并且可以融合语义信息,得到了较鲁棒的效果;
● 剑桥大学开发的 PoseNet [18],是在 GoogleNet [19] 的基础上将 6 自由度位姿作为回归问题进行的网络改进,可以利用单张图片得到对应的相机位姿;
● 《视觉 SLAM 十四讲》[5] 一书的作者高翔,利用深度神经网络而不是常见的视觉特征来学习原始数据的特征,实现了基于深度网络的回环检测 [20];
● LIFT [21] 利用深度神经网络学习图像中的特征点,相比于 SIFT [22] 匹配度更高,其流程图如下图所示:
![vSLAM技术综述_vSLAM_14](https://s7.51cto.com/images/blog/202107/29/6c2f019a8a2140424d1a5c6d7e5db643.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
LIFT (Learned Invariant Feature Transform) 由三个部分组成:Detector,Orientation Estimator 和 Descriptor。每一个部分都基于 CNN 实现,作者用 Spatial Transformers 将它们联系起来,并用 soft argmax 函数替代了传统的非局部最大值抑制,保证了端到端的可微性。
![vSLAM技术综述_vSLAM_15](https://s2.51cto.com/images/blog/202107/29/834dcb13745181287c227fb3ba0d7f84.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
孪生训练架构(Siamese Network)包含四个分支,其中 P1 和 P2 对应同一个点的不同视角,作为训练 Descriptor 的正样本,P3 代表不同的 3D 点,作为 Descriptor 的负样本;P4 不包含特征点,仅作为训练 Detector 的负样本。由大 P,Detector,softargmax 和 Spatial Transformer layer Crop 共同得到的小 p 反馈到 Orientation Estimator,Orientation Estimator 和 Spatial Transformer layer Rot 提供 pθ 给 Descriptor,得到最终的描述向量 d。作者给出了 LIFT 与 SIFT 特征匹配的效果对比。
![vSLAM技术综述_vSLAM_16](https://s9.51cto.com/images/blog/202107/29/d682f3582473880344c8cf2b5fbb00f5.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
特征匹配对比图中左列为 SIFT 匹配结果,右列为 LIFT。绿色线条代表正确匹配,红色圆圈代表描述子区域,可以看到,LIFT 得到了比 SIFT 更稠密的匹配效果。
UnDeepVO [23] 能够通过使用深度神经网络估计单目相机的 6 自由度位姿及其视野内的深度,整体系统框架概图见下图。
![vSLAM技术综述_vSLAM_17](https://s3.51cto.com/images/blog/202107/29/a1c47e2036fc75798931a4863f80fdc0.jpeg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
UnDeepVO 有两个显著的特点:一个是采用了无监督深度学习机制,另一个是能够恢复绝对尺度。UnDeepVO 在训练过程中使用双目图像恢复尺度,但是在测试过程中只使用连续的单目图像。该文的主要贡献包括以下几点:
1. 通过空间和时间几何约束,用无监督的方式恢复了单目视觉里程计的绝对尺度;
2. 利用训练过程中的双目图像对,不仅估计了姿态还估计了稠密的带有绝对尺度的深度图;
3. 在 KITTI 数据集上评价了该系统, UnDeepVO 对于单目相机有良好的位姿估计结果。
UnDeepVO 由位姿估计和深度估计构成,两个估计系统均把单目连续图像作为输入,分别以带有尺度的 6 自由度位姿和深度作为输出。对于位姿估计器,它是基于 VGG 的 CNN 架构。 它把两个连续的单目图像作为输入,并预测它们之间的 6 自由度变换。 由于旋转(由欧拉角表示)具有高非线性,因此与平移相比通常难以训练。 在有监督训练中,一种常用的方法是将旋转损失作为一种归一化方式给予更大的权重。 为了使用无监督学习更好地训练旋转,作者在最后一个卷积层之后用两组独立的全连接层解耦平移和旋转。 这使得作者能够引入一个权重来标准化旋转和平移的预测,以获得更好的性能。对于深度估计器,它基于 encoder-decoder 结构来生成稠密的深度图。 与其他深度估计方法不同的是,该方法从网络中产生视差图像(深度的倒数),UnDeepVO 的深度估计器可以直接预测深度图,以这种方式训练整个系统更容易收敛。系统结构图如下图所示。
本文介绍了基于传统算法和深度学习的代表性 SLAM 方法。当前的 SLAM 算法在复杂的机器人运动和环境中很容易失效 (例如:机器人的快速运动, 高度动态性的环境),通常不能面对严格的性能要求,例如,用于快速闭环控制的高速率估计。大多数的 SLAM 没有自由主动地收集数据,行动方案不够高效,并且,目前 vSLAM 方案中所采用的图像特征的语义级别太低,造成特征的可区别性太弱。因此,今后的视觉 SLAM 将向着主动 SLAM、语义 SLAM 以及与其它传感器(例如 IMU)融合的方向发展。
[1] Durrant-Whyte, H, and Bailey, Tim. ”Simultaneous Localization and Mapping: Part I.” IEEE Robotics & Amp Amp Automation Magazine 13.2(2006):99 - 110.
[2] Fuentes-Pacheco, Jorge, J. Ruiz-Ascencio, and J. M. Rendón-Mancha. ”Visual simultaneous localization and mapping: a survey.” Artifcial Intelligence Review 43.1(2015):55-81.
[3] 陈常,朱华,由韶泽。基于视觉的同时定位与地图构建的研究进展 [J/OL]. 计算机应用研究,2018,(03):1-9 (2017-08-18).
[4] Nister, D, O. Naroditsky, and J. Bergen. ”Visual odometry.” Computer Vision and Pattern Recognition, 2004. CVPR 2004. Proceedings of the 2004 IEEE Computer Society Conference on IEEE, 2004:I-652-I-659 Vol.1.
[5] 高翔。视觉 SLAM 十四讲 [M]. 北京:电子工业出版社,2017.
[6] 赵洋等. ” 基于深度学习的视觉 SLAM 综述.” 机器人 39.6 (2017):889-896.
[7] Davison, Andrew J., et al. ”MonoSLAM: Real-time single camera SLAM.” IEEE transactions on pattern analysis and machine intelligence 29.6 (2007): 1052-1067.
[8] Klein, Georg, and David Murray. ”Parallel tracking and mapping for small AR workspaces.” Mixed and Augmented Reality, 2007. ISMAR 2007. 6th IEEE and ACM International Symposium on. IEEE, 2007.
[9] Mur-Artal, Raúl, J. M. M. Montiel, and J. D. Tardós. ”ORB-SLAM: A Versatile and Accurate Monocular SLAM System.” IEEE Transactions on Robotics 31.5(2015):1147-1163.
[10] Mur-Artal, Raul, and Juan D. Tardós. ”Orb-slam2: An open-source slam system for monocular, stereo, and rgb-d cameras.” IEEE Transactions on Robotics 33.5 (2017): 1255-1262.
[11] Newcombe, Richard A, S. J. Lovegrove, and A. J. Davison. ”DTAM: Dense tracking and mapping in real-time.” International Conference on Computer Vision IEEE Computer Society, 2011:2320-2327.
[12] Engel, Jakob, T. Schöps, and D. Cremers. ”LSD-SLAM: Large-Scale Direct Monocular SLAM.” 8690(2014):834-849.
[13] Forster, Christian, M. Pizzoli, and D. Scaramuzza. ”SVO: Fast semi-direct monocular visual odometry.” IEEE International Conference on Robotics and Automation IEEE, 2014:15-22.
[14] Engel, Jakob, V. Koltun, and D. Cremers. ”Direct Sparse Odometry.” IEEE Transactions on Pattern Analysis & Machine Intelligence PP.99(2016):1-1.
[15] Cadena, Cesar, et al. ”Past, Present, and Future of Simultaneous Localization and Mapping:Toward the Robust-Perception Age.” IEEE Transactions on Robotics 32.6(2016):1309-1332.
[16] 吕霖华。基于视觉的即时定位与地图重建 (V-SLAM) 综述 [J]. 中国战略新兴产业,2017 (4).
[17] Tateno K, Tombari F, Laina I, et al. CNN-SLAM: Real-time dense monocular SLAM with learned depth prediction[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017, 2.
[18] Kendall A, Grimes M, Cipolla R. Posenet: A convolutional network for real-time 6-dof camera relocalization[C]//Proceedings of the IEEE international conference on computer vision. 2015: 2938-2946.
[19] Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.
[20] Gao X, Zhang T. Loop closure detection for visual slam systems using deep neural networks[C]//Control Conference (CCC), 2015 34th Chinese. IEEE, 2015: 5851-5856.
[21] Yi K M, Trulls E, Lepetit V, et al. Lift: Learned invariant feature transform[C]//European Conference on Computer Vision. Springer, Cham, 2016: 467-483.
[22] Lowe D G. Distinctive image features from scale-invariant keypoints[J]. International journal of computer vision, 2004, 60(2): 91-110.
[23] Li R, Wang S, Long Z, et al. Undeepvo: Monocular visual odometry through unsupervised deep learning[C]//2018 IEEE International Conference on Robotics and Automation (ICRA). IEEE, 2018: 7286-7291.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK