1 介绍
1.1 概述
- SLAM (Simultaneous Localization and Mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建,或并发建图与定位。
- 同步定位和建图( SLAM ) 是构建或更新未知环境的地图,同时跟踪代理在其中的位置的计算问题。虽然这最初看起来是一个先有鸡还是先有蛋的问题,但有几种已知的算法可以在某些环境下至少在大约可处理的时间内解决这个问题。流行的近似求解方法包括粒子滤波器、扩展卡尔曼滤波器、协方差交集和 GraphSLAM。
1.2 发展历程
三个时代
SLAM技术历经的三个时代。
- 1986~2004:传统时代,提出SLAM概念,作为状态估计问题进行求解;
- 2004~2015:算法分析时代,研究其基本特性;
- 2015~至今:预测性-鲁棒性时代。
重要时间节点
- 1986年,ICRA会议上首次提出SLAM,先应用在军事机器人领域
- 1987年,EKF-SLAM
- 1993年,PF-SLAM,粒子滤波算法兴起
- 1997年,LU等最早提出基于图优化理论的SLAM方案
- 2000年,RBPF-SLAM具有划时代意义
- 2002年,FastSLAM
- 2003年,MonoSLAM第一个纯视觉方案
- 2007年,Cmapping应用广泛、PTAM(视觉)、MSCKF,首个VIO算法
- 2010年,Optimal-RBPF,Karto-SLAM首个基于图优化框架的开源方案
- 2011年,Hector-SLAM、DTAM(视觉)、KinectFusion, 第一个基于kinect的算法
- 2014年,LSD-SLAM(视觉)、SVO(视觉),LOAM,首个3D激光SLAM、OKVIS(VIO)
- 2015年,RB-SLAM、V-LOAM(视觉+激光+IMU),最早将视觉与3D激光融合的SLAm
- 2016年,DSO(视觉)、Cartographer(建图效果最好,应用广泛)、VELO(视觉+激光)
- 2017年,ROVIO(VIO)
- 2018年,IMIS-SLAM、LeGO-LOAM、LVIO(视觉+激光+IMU)、LIMO(视觉+激光)、VIMS-Mono(VIO)
- 2019年,HDL_Graph_SLAM
- 2020年,LIO-SAM、GP-SLAM
- 2021年,ORB-SLAM3、T-LOAM
视觉SLAM分类及里程碑技术发展
1.3 SLAM与各模块关系
- 机器人自主定位导航技术中包括:定位和地图创建(SLAM)与路径规划和运动控制两个部分,而SLAM本身只是完成机器人的定位和地图创建,二者有所区别。
- 自主导航的解决方案:SLAM + 路径规划 + 运动控制;
1.5 SLAM分类
1.4 应用领域
- 机器人定位导航:SLAM 可用于生成移动机器人所处环境的地图。基于这个地图,机器人执行路径规划、自主定位、导航等任务。
- 无人驾驶领域:SLAM 技术可以提供视觉里程计功能,然后与GPS等其他定位方式相融合。
- 无人机领域:SLAM可以构建局部地图,辅助无人机进行自主避障、规划路径。
- VR/AR 方面:根据 SLAM 得到地图和当前视角对叠加虚拟物体做相应渲染,这样做可以使得叠加的虚拟物体看起来比较真实,没有违和感。
2 SLAM框架
视觉/惯性SLAM系统框架结构
经典框架
3 常见方案
from 马志艳,邵长松,杨光友,李辉.同步定位与建图技术研究进展 [J].中国光学期刊2023, 30(3):78-85
3.1 常见激光雷达方案
年份 |
方案 |
原理 |
优缺点 |
其他 |
1987 |
EKF-SLAM |
滤波器 |
计算复杂,实时性较差,鲁棒性低 |
适用于室内、小范围场景 |
2000 |
RBPF |
滤波器 |
解决了环境非高斯,降低了计算复杂度,提高了效率 |
Rao-Blackwellized与 PF结合 |
2002 |
FastSLAM |
滤波器 |
降低了计算的复杂度,鲁棒性较好;内存消耗和粒子耗散问题严重 |
融合EKF和PF优点 |
2007 |
Gmapping |
滤波器 |
优化了粒子耗散问题;依赖里程计信息 |
适用于小尺度环境和低特征环境 |
2010 |
Karto-SLAM |
图优化 |
认识到稀疏性问题 |
首个基于图优化框架的开源方案 |
2011 |
Hector-SLAM |
图优化 |
不需要里程计,对激光测量频率要求较高,依赖初值,缺少闭环检测 |
可用于崎岖路面或空中无人机 |
2014 |
LOAM |
图优化 |
实时性高;缺少回环检测 |
最早3D激光SLAM |
2016 |
Cartographer |
图优化 |
累计误差较小,建图效果好,提速闭环检测,容易引起错误的闭环 |
分为前端和后端;室内2D较为优越,室外3D建图效果不佳 |
2018 |
IMLS-SLAM |
图优化 |
仅基于激光雷达,不依赖相机、GPS,IMU |
核心思想是选择具有代表性的激光点进行匹配 |
2018 |
LeGO-LOAM |
图优化 |
计算轻量化,增加了闭环检测,降低了计算的复杂度,精度略有欠缺 |
一种轻量级和地面优化的激光雷达里程计和建图方法 |
2019 |
HDL_Graph_SLAM |
图优化 |
降低计算复杂度,更好地构建全局一致性地图 |
融合 GPS,IMU, Lidar 约束信息 |
2020 |
LIO-SAM |
图优化 |
实现紧密耦合激光雷达惯性测距,鲁棒性更好 |
融合激光里程计、IMU、GPS和回环 |
2020 |
GP-SLAM |
图优化 |
存储消耗小,易于更新,效率、精度表现较好;GP地图边界的不连续性影响建图的效果 |
位姿估计方法与地图更新方法相结合;适用于大尺度环境 |
2021 |
T-LOAM |
图优化 |
计算效率高、鲁棒性强,减轻异常值 |
设计了一种新的特征提取模块 |
3.2 常见视觉方案
年份 |
方案 |
原理 |
优缺点 |
其他 |
2003 |
MonoSLAM |
特征提取 |
可达到实时;地图尺度与计算的复杂度成正比 |
第一个纯视觉SLAM方案,基于滤波的单目SALM |
2007 |
PTAM |
特征提取 |
提高了鲁棒性和准确性;需要强大的计算硬件 |
第一个提出的多线程SLAM处理算法 |
2011 |
DTAM |
直接法 |
可在图片模糊、特征不明显的环境中直接跟踪;对GPU硬件要求较高 |
依赖于密集的每像素方法 |
2011 |
KinectFusion |
RGB-D相机 |
解决光照敏感问题;成本高,有效探测距离短 |
第一个基于 Kinect实时构建稠密三维地图的算法 |
2014 |
LSD-SLAM |
直接法 |
允许构建大规模、一致的环境地图 |
一种直接单目SLAM算法 |
2014 |
SVO |
直接法 |
更精确、速度更快、鲁棒性更好 |
一种半直接单目视觉里程计算法;适用于无人机系统 |
2015 |
ORB-SLAM |
特征提取 |
定位精度高、鲁棒性好,可以实时运行 |
基于特征点的最完整单目视觉SLAM系统 |
2016 |
DSO |
直接法 |
考虑了镜头的曝光时间、渐晕效应和非线性响应函数 |
一种基于新颖、高精度的稀疏直接结构和运动公式的视觉里程计方法 |
2017 |
ORB-SLAM2 |
特征提取 |
精度更高,使用范围更广,保证实时性 |
扩展了双目相机和深度相机 |
2021 |
ORB-SLAM3 |
特征提取 |
实现实时鲁棒操作,比以前的方法精确两到十倍 |
第一个能够使用单目、立体和RGB-D相机,使用针孔和鱼眼镜头模型执行视觉、视觉惯性和多图SLAM的系统 |
3.3 多传感器融合方案
年份 |
方案 |
原理 |
优缺点 |
其他 |
2007 |
MSCKF |
视觉+IMU |
可运行复杂的环境中,速度快;精度略低 |
紧耦合的滤波方法;提出VIO算法 |
2014 |
OKVIS |
视觉+IMU |
建图效果较好;缺少闭环 |
紧耦合的优化方法 |
2015 |
V-LOAM |
视觉+激光+IMU |
鲁棒性较好,漂移较小 |
最早视觉与3D激光融合的方案 |
2016 |
VELO |
视觉+激光 |
有闭环模块,低漂移误差 |
利用位姿图的稀疏性优化位姿误差 |
2017 |
ROVIO |
视觉+IMU |
计算量小;缺少闭环,需要调参数 |
紧耦合的滤波方法 |
2018 |
VINS-Mono |
视觉+IMU |
重定位计算量小,适用于高精度定位 |
紧密耦合的非线性优化方法 |
2018 |
LVIO |
视觉+激光+IMU |
可运行高度动态、黑暗、无纹理、无结构的环境中 |
一个顺序的多层运行模块 |
2018 |
LIMO |
视觉+激光 |
递进式策略更加开放;精度略低于V-LOAM方案 |
一种从激光雷达测量中提取相机特征轨迹的深度算法 |
4 地图类型
各类地图优缺点
地图类型 |
优点 |
缺点 |
拓扑地图 |
适用于范围广且障碍物类型较少的场景、占用内存小、计算效率高、路径规划高效 |
路径规划最优性差、相似物体分辨准确度低 |
几何地图 |
简化环境信息、障碍物辨识更直观、目标提取更方便 |
广域环境中数据精度低、计算量大 |
栅格地图 |
不受环境地形影响、感知数据易保存与维护 |
保存数据过多会导致信息更新难度加大、目标识别效果变差 |
视觉SLAM构建地图类型
5 各传感器优缺点
6 应用
- 二维激光SLAM构建的二维栅格地图,可以用来做机器人的定位与导航。
- 三维激光SLAM构建的三维点云地图,可以用来做无人车的定位与导航,也可以用来做三维建模。
视觉SLAM构建的稀疏点云地图,可以用来做定位。
- 视觉SLAM构建的半稠密与稠密的点云地图,可以用来做定位与导航,也可以用来做VR领域的交互场景,也可以用来做三维建模。
二维激光 |
三维激光 |
|
|
参考
1、wiki–Simultaneous localization and mapping
2、马志艳,邵长松,杨光友,李辉.同步定位与建图技术研究进展 [J].中国光学期刊2023, 30(3):78-85
3、高翔,张涛,刘毅,等.视觉SLAM十四讲[M].北京:电子工业出版社,2017:10-23.
4、曾庆化,罗怡雪,孙克诚,李一能,刘建业. 视觉及其融合惯性的SLAM技术发展综述 [J].南京航空航天大学学报2022
5、Past, Present, and Future of Simultaneous Localization And Mapping: Towards the Robust-Perception Age
6、EKF-SLAM A Very Quick Guide
7、吴建清,宋修广.同步定位与建图技术发展综述 [J].山东大学学报2021, 51(5):16-31
8、从零开始一起学习SLAM | 学习SLAM到底需要学什么?
9、如何学习SLAM(超全面)
10、机器人开发–二维激光SLAM介绍
11、机器人开发–Cartographer
12、近十年的VI-SLAM算法综述与发展
13、slam学习路线与心得总结
14、SLAM学习–2D激光SLAM–入门学习
15、仙知机器人|技术干货,带你了解SLAM技术的前世今生
16、gradslam(∇SLAM)开源:论文、代码全都有