1. MonoSLAM
Davison于2007年剔除的第一个实时的单目SLAM系统,被认为是许多工作的发源地。MonoSLAM以EKF为后端,追踪前端非常稀疏的特征点。
2. PTAM
Klein等人于2007年提出的
- 首次提出SLAM区分前后端的概念。(跟踪部分需要实时相应图像数据,而对地图的优化没必要实时计算)
- 第一个使用非线性优化而不是传统的滤波器作为后端的方案。(引用了关键帧机制)
3. ORB-SLAM
ORB-SLAM代表着主流的特征点SLAM的一个高峰。
- 支持单目、双目、RGB-D
- 提出ORB特征点计算方法
- ORB的回环检测是它的亮点
- 创新地使用3个线程完成SLAM
- tracking线程实时跟踪特征点
- 局部BA的优化线程(co-visibility graph,俗称小图)
- 全局位姿图的回环检测与优化线程(essential graph,俗称大图)
缺点:
- 每张图都要计算一遍ORB特征,非常耗时
- 3线程结构给CPU带来了负担,难以移植到嵌入式设备中
4. LSD-SLAM
Engel等人与2014年提出的单目直接法SLAM,核心贡献是把直接法应用到了半稠密的单目SLAM中,不仅不需要计算特征点,还能构建半稠密的地图。
版稠密地图建模了灰度图中有明显梯度的部分(纹理),很大一部分都是物体的边缘或表面上带纹理的部分。
缺点:
- 也就是光流法的缺点,对相机内参和曝光非常敏感,
- 相机快速运动时容易丢失
- 目前尚未有基于直接法实现的回环检测
5. SVO
SVO是semi-direct visual odometry的缩写,是一种hybrid方法,半直接法,2014年提出。
SVO跟踪了一些关键点(角点,没有描述子),然后根据这些关键点周围的信息估计相机运动及其位置。
优势就是极快
创新:提出深度滤波器的概念,并推导出了基于均匀-高斯混合分布的深度滤波器。并且使用了逆深度作为参数化方式。
SVO运用在无人机的俯视相机中,在钱是相机可能效果不佳。
追求速度的同时,舍弃了后端优化和回环检测的部分,也因此也没有基本的建图功能,只算VO,不算SLAM。
6. 未来的SLAM话题
目前有两个发展方向:
- 轻量化、小型化发展,毕竟SLAM是为了AR,VR无人驾驶等服务的,是嵌入式设备,我们不希望建图、定位的SLAM这个为上层应用服务的部分耗光了所有的计算资源
- 利用高性能的计算设备,进行精密的三维重建、场景理解等。
6.1 visual-inertial SLAM
视觉-惯性SLAM。IMU能够测量传感器本体的角速度,被认为与相机传感器具有明显的互补性。
- IMU虽然可以计算传感器本体的角速度和加速度,但是这些量存在明显的飘逸(drift),直接基本两次得到位姿数据非常不可靠,但是对于短时间内的快速运动,IMU能够提供一些较好的估计,这正是相机的弱点(运动模糊,无法特征匹配)。
- 相比于IMU,相机数据基本不会有漂移,所以相机数据可以有效的估计并修正IMU读数中的漂移,使得都在慢速运动后的位姿估计依然有效。
- 图像发生变化时其实我们很难知道是相机发生了运动还是物体发生了运动,所以纯视觉的SLAM难以处理动态的障碍物,而IMU能够感受到自己的运动信息,从某种程度上减轻了动态物体的影响。
总之,IMU为快速运动提供了较好的解决方式,相机又能在慢速运动下解决IMU的漂移问题,在这个意义下,两者是互补的。
VIO(visual-inertial odometry,视觉惯性里程计)分为两大类:
- 松耦合(loosely coupled):IMU和相机分别进行自身的运动估计,然后对其位姿估计结果进行耦合
紧耦合(tightly coupled):IMU的状态与相机的状态合并在一起,共同构建运动方程和观测方程,然后进行状态估计(书中讲的其他传感器输入就是这个意思)。
6.2 语义SLAM
普通只知道计算特征点或像素点,是抽象的,语义特征比如带标签的物体、地图,可以融入到SLAM中。综合来说,SLAM和语义的结合点主要有两个方面:
语义帮助SLAM:语义信息物体信息可以给运动过程的图片都带上物体标签,就能得到一个带有标签的地图,另外,物体信息也可以为回环检测、BA优化带来更多的条件。
- SLAM帮助语义(标注):在SLAM中由于我们可以估计相机的运动,可以自动的计算物体在图像中的位置,所以节省了人工标定成本,自动生成带高质量标注的样本数据。