1.摘要
SLAM是simultaneous localization and mapping
的缩写,主要用来在未知环境下
估计传感器的位姿
和场景重建
,本文从技术和历史的角度对不同研究机构提出的vSLAM算法进行分类和总结,主要分为三类:特征点法、直接法、基于RGB-D相机
的方法。
2.介绍
- SLAM首次提出:1985《Position referencing and consistent world modeling for mobile robots》,主要用于实现机器人的自主控制。
- SLAM目前主要应用于基于计算机视觉的在线 3D 建模、增强现实,AR和自动驾驶汽车等领域。
- VSLAM的
技术难度相对来说更大
,因为对比360°的激光雷达来说,从有限的视野范围获取的输入信息更少。 - 为了处理低纹理、特征少的环境,
直接法
被提出。另外随着微软的Kinect的发展,因为能够提供图像信息和深度信息,因此基于RGB-D的方法
被提出。
3.VSLAM的组成
重点
:掌握每个模块的原理、优点、局限性
- 基本组成部分:
- 初始化(Initialization);
- 跟踪(Tracking);
- 建图(Mapping)。
跟踪是每帧为一个线程,建图是某个时刻开启一个线程,所以有tracking and mapping(TAM)和Parallel Tracking and Mapping (PTAM)
- 额外组成部分:(精确和稳定的VSLAM)
- 重定位;
由于相机运动过快或者一些干扰,造成跟踪失败,有必要重新计算相机相对于地图的姿态。
- 闭环检测;(为了实现全局优化)
闭环检测可以通过使用与重新定位相同的技术来完成
- 全局地图优化。
随着相机的移动,地图通常包含累计误差,全局优化通常用来减少累计误差。
- 重定位;
- 大环境,位姿图优化可以有效减小估计误差
- 小环境,BA(Bundle adjustment)可以使用(没有回环),因为累积误差很小。
注意
:重定位是恢复相机的位姿,闭环检测是获得几何一致性的地图。
4.相关技术
1.视觉里程计
-
里程计的定义:
里程计是使用车轮编码器
等传感器来估计传感器位置随时间的连续变化,获取传感器的相对运动。 -
VSLAM和VO的关系:
视觉里程计(VO):只是在地图的一小部分上考虑地图的几何一致性,或者只计算相机的位姿而不建图
2.SFM (Structure from motion)
一种以批处理
方式估计相机运动
和环境3D 结构
的技术。从技术的角度出发,VSLAM和real time SFM没有明显的区别
5.基于特征的方法
主要分为两大类:基于滤波的方法
和基于BA的方法
1.monoSLAM
在2003
, Davison首次提出MonoSLAM:《Real-time simultaneous localisation and mapping with a single camera》(一种具有代表性的基于滤波的SLAM方法,使用的是扩展卡尔曼滤波EKF,)
- 方法:
- 通过已知的目标进行地图初始化;
- 相机的位姿(6 DOF)和特征点的3D位置构成一个状态向量,通过EKF进行估计;
- 在预测模型中假设均匀运动;
- 特征点跟踪结果被用作观察。
- 缺点:
计算成本随着环境的规模逐渐增加,在大环境中,状态量的维度变得很大,因为特征点的数量很多,因此很难实现实时
。
2.PTAM
- 目的:
为了解决MonoSLAM计算成本的问题。 - PTAM:2007
《Parallel tracking and mapping for small AR workspaces. In: Proceedngs of International Symposium on Mixed and Augmented Realit》 - 方法:
PTAM是第一种方法将 BA 整合到real time VSLAM 算法中的方法,后续大多数vslam方法都采用多线程方案
将tracking和mapping分成两个不同的线程,两个线程并行处理
,以至于mapping线程的计算成本不影响tracking
,将优化中需要一定计算成本的BA用在mapping中,这就意味着tracking可以实时估计相机的位姿,而mapping需要一定计算成本估计特征点的3D位置。- 使用
五点法
进行地图初始化; - 通过将地图点投影到输入图像,通过
纹理匹配
实现2D-3D
的匹配关系进行位姿估计; - 新的特征点的3D位置通过三角测量进行获得,特征点的3D位置使用一些关键帧的局部BA和地图中所有关键帧的全局BA进行优化;
- 在跟踪线程,通过使用基于随机树的特征分类器来搜索输入帧的最近关键帧实现重定位。(
新版本添加的
)
当输入帧和关键帧的某一帧具有较大视差时,选取为关键帧,因为精确的三角测量需要大的视差。
- 使用
- 贡献:
- 在VSLAM中介绍了一种基于关键帧的地图
- 输出的是稀疏的点云地图
3.总结
增加地图中特征点的数量可以提高VSLAM的精度,而且基于BA的方法比基于EKF的方法更加适合,能够处理大量的点。
4.全局地图优化
- 通过对关键帧使用BA使得整个地图保持全局一致性,但是,
BA
存在局部最优的问题
,因为存在大量的参数,其中包括关键帧的位姿和地图点,而位姿图优化
可以避免BA存在的问题。因此,在闭环中,首先使用闭环约束优化相机位姿。然后在使用BA优化地图点和位姿
。 - 对于闭环,主要使用词袋模型检查所有关键帧和当前输入的相似性 (ORB_SLAM2)。
- 在双目相机中,系统坐标系的尺度固定而且已知;
- 在单目相机中,如果不使用全局 BA,则存在
尺度不确定性
,并且在相机移动的过程中,尺度可能会发生变化,出现尺度漂移问题,每一帧坐标系的尺度可能不一致,为了解决尺度漂移问题,相机位姿视为7DOF进行优化
。
5.总结
- 多线程方法能够处理上千的特征点;
- 在大环境中,BA由于局部最优问题导致地图和相机的位姿不能全局最优,为了避免BA的问题,
通常在其前使用闭环检测和位姿图优化
; - 基于特征点的方法通常使用人工特征点和描述子,在具有富纹理环境中能够提供稳定的检测,
但是不能处理曲边、复杂的线索、弱纹理区域情况
,需要使用线特征或者点-线结合。
6.直接法
- 定义:
直接法直接使用输入图像,而不进行
任何的手工特征和描述子的提取。
- 直接法和间接法误差衡量对比
误差衡量 | |
---|---|
直接法 | 光度一致性 |
间接法 | 几何一致性 |
1.DTAM
-
方法:
- 地图初始化通过双目测量实现;
- 相机运动是通过重建地图的合成视图生成来估计的;
- 使用多基线立体估计每个像素的深度信息,然后考虑空间连续性进行优化。
-
用途:
- 在手机上实现实时处理;
《MobileFusion: real-time volumetric surface reconstruction and dense tracking on mobile phones 》 - 快速的在线3D建模;
《dense tracking and mapping in real-time 》
《Real-time dense geometry from a handheld camera 》
《MobileFusion: real-time volumetric surface reconstruction and dense tracking on mobile phones 》
- 在手机上实现实时处理;
2.LSD SLAM
- 方法:
- 每个像素初始的深度值设置为
任意值
; - 相机运动是通过从重建地图生成的合成视图来估计的;
- 重建区域仅限于高强度的梯度区域(DTAM是整个区域),忽略了弱纹理区域,因为这些区域很难估计精确的深度信息;
- 7 DoF 位姿图优化用于获得几何一致的地图。
- 每个像素初始的深度值设置为
- 应用:
在手机上结合cpu的架构实现实时,双目相机,360全景相机。
3.SVO/DSO
SVO为semi-direct VO 。
tracking | mapping | |
---|---|---|
方法 | 特征匹配 | 直接法 |
- 方法:
- 特征点匹配:通过特征描述子和LK光流进行特征匹配;
- 直接法:通过最小化特征点周围的光度误差估计相机的位姿;
- SVO视为稀疏版的DTAM或者LSD-SLAM。
DSO为fully-direct VO。
- 方法:
- 输入图像分为几块;
- 灰度值大的点选为重建的候选点(特征点分布在整幅图像);
- 使用几何和光度相机的标定结果实现精确的位姿估计;
- DSO只考虑了局部的几何一致性,属于VO范畴。
4.总结
直接法可以根据地图的稠密程度进行分类。
设备 | 应用 | |
---|---|---|
Dense | GPU | 3D建模 |
semi-Dense | CPU | 手机,3D建模 |
sparse | CPU | 手机 |
7.RGB-D VSLAM
- 传感器:
RGB-D相机,可以直接获得3d场景的纹理信息。通常在室内使用
,在室外用很难,检查范围1-4m。 - 常用匹配算法:ICP
1.KinectFusion(2011)
- 方法:
- 使用体素来表示3D环境;
- 通过结合体素空间中获得的深度图重建环境的 3D 结构;
- 使用估计的 3D 结构和输入深度图通过 ICP 算法估计相机运动。
- 应用:在GPU上能实时实现,应用于移动设备。
2.SLAM++
物体级的RGB-D VSLAM。
8.存在的问题
1.纯旋转
主要是单目 SLAM,没有视差。
2.地图初始化
baseline大,能够获得精确的初始化地图。
3.相机的内参
4.卷帘快门失真
目前大多数SLAM算法都假设为:全局快门,但是目前市面上的相机由于成本基本上使用卷帘快门,造成图像中每一行具有不同的位姿。
解决办法:插值-估计。
5.尺度模糊
主要为单目SLAM,一些应用需要获得绝度尺度信息。
解决办法:以一些物体为参考,例如:人的脸,身体。