激光SLAM的发展和应用
年份 | 方案 | 传感器 | 优缺点 |
---|---|---|---|
1988年 | EKF-SLAM | 2D 激光 | 构建特征地图,计算量复杂,鲁棒性较差。 |
2002年 | FastSLAM | 2D激光 | 最早实时输出栅格地图;消耗内存,粒子耗散严重 |
2007年 | Gmapping | 2D激光 | 缓解粒子耗散;非常依赖于里程计信息 |
2010年 | Optimal RBPF | 2D激光 | 进一步减少粒子退化问题 |
2011年 | Hector-SLAM | 2D激光 | 不需要里程计数据;强旋转漂移,初值敏感,难处理闭环 |
2014年 | LOAM | 3D激光 | 实时性好,匀速运动假设,无闭环检测 |
2015年 | V-LOAM | 3D激光,视觉 | 精度高,算法鲁棒性好;漂移匀速假设,无闭环检测 |
2016年 | Cartographer | 2D激光 | CSM与梯度优化前端,图优化的后端,加速的闭环检测 |
2016年 | VELO | 3D激光,视觉 | 有闭环检测模块,低漂移,无运动畸变假设 |
2018年 | IMLS | 3D激光 | 不依赖与GPS、IMU、相机等传感器,低漂移。 |
2018年 | LVIO | 3D激光,视觉 | 低漂移,光照,旋转,结构退化环境下鲁棒性极好 |
激光SLAM简介
- 1.SLAM是什么
- 1.1 SLAM的定义
- 1.1.1 Localiztion: 在给定地图的情况下,估计机器人的位姿
- 1.1.2 Mapping: 在给定机器人位姿的情况下,估计环境地图
- 1.1.3 SLAM:同时估计机器人的位姿和环境地图
- 1.2 SLAM解决的问题
- 1.2.1 机器人在环境中的位姿
- 1.2.2 导航过程中需要的环境地图
- 2.SLAM的分类
- 3.SLAM的框架
- 3.1 图优化
- 3.1.1 Graph : 表示SLAM的过程
- 3.1.2 Node : 机器人的位姿
- 3.1.3 Edge : 节点之间的空间约束关系
- 3.2 Filter-based SLAM
- 3.2.1状态预测(State Prediction):
- 3.2.2 测量预测(Measurement Prediction)
- 3.2.3 进行测量(Measurement)
- 3.2.4 数据关联(Data Association)
- 3.2.5 状态更新&地图更新(State & Map Update)
- 激光SLAM
- 4.1 传感器
- 4.1.1 惯性测量单元(IMU)
- 4.1.2 轮式里程计(Wheel Odometry)
- 4.1.3 激光雷达(Lidar)
- 4.2 地图类型
- 4.2.1 覆盖栅格地图(Occupany Grid Map)
- 4.2.2 点云地图
- 4.3 帧间匹配算法
- 4.3.1 ICP(Iterative Cloest Point)
- 4.3.2 PI-ICP(Point-to-Line Iterative Closest Point)
- 4.3.3 NDT(Normal Distribution Transformation)
- 4.3.4 CSM(Cirrelation Scan Match)
- 4.4 回环检测
- 4.4.1 Scan-to-Scan
- 4.4.2 Scan-to-Map
- 4.4.3 Map-to-Map
- 2D 激光SLAM的介绍
- 5.1 2D 激光SLAM的输入
- 5.1.1 IMU数据
- 5.1.2 里程计数据
- 5.1.3 2D激光雷达数据
- 5.2 2D激光SLAM的输出
- 5.2.1 覆盖栅格地图
- 5.2.2 机器人的轨迹 or PoseGraph
- 5.3 2D 激光SLAM的帧间匹配方法
- 5.3.1 PI-ICP
- 5.3.2 CSM(Correlation Scan Match)
- 5.3.3 梯度优化方法
- 5.3.4 State of Art: CSM + 梯度优化
- 5.4 2D 激光SLAM的回环检测方法
- 5.4.1 Scan-to-Map
- 5.4.2 Map-to-Map
- 5.4.3 Branch and Bound % Lazy Decision
- 6 2D 激光SLAM的发展
- 6.1 Filter-based
- 6.1.1 EKF-SLAM —- 90年代
- 6.1.2 FastSLAM —- 02~03
- 6.1.3 Gmapping —- 07
- 6.1.4 Optimal RBPF—- 10
- 6.2 Graph-based
- 6.2.1 Globally Consistant Range Scan For Enviroment Mapping —- 97
- 6.2.2 Incremental Mapping of Large Cyclic Enviroments —- 99
- 6.2.3 Karto SLAM —- 10
- 6.2.4 Cartographer — 16
- 7 2D 激光SLAM的应用
- 7.1 数据的预处理 —- 非常重要
- 7.1.1 轮式里程计的标定
- 7.1.2 激光雷达运动畸变去除
- 7.1.3 不同系统之间的时间同步
- 7.2 实际环境中的问题
- 7.2.1 动态物体
- 7.2.2 环境变化
- 7.2.3 几何结构相似环境
- 7.2.4 建图的操作复杂
- 7.2.5 全局定位
- 7.2.6 地面材质的变化
- 7.2.7 地面凹凸不平
- 7.2.8 机器人载重的改变
- 2D 激光SLAM 的趋势—-与视觉融合
- 8.1. 视觉提供的信息
- 8.1.1 高精度的里程信息
- 8.1.2 信息量丰富的视觉地图
- 8.2. 融合解决的问题
- 8.2.1 动态物体
- 8.2.2 环境变化
- 8.2.3 几何结构相似环境
- 8.2.4 建图的操作复杂
- 8.2.5 全局定位
- 8.2.6 地面材质的变化
- 8.2.7 地面凹凸不平
- 8.2.8 机器人载重的改变
- 9 3D 激光SLAM的介绍
- 9.1 3D 激光SLAM的输入
- 9.1.1 IMU数据
- 9.1.2 里程计数据
- 9.1.3 3D激光雷达数据
- 9.2 3D激光SLAM的输出
- 9.2.1 3D 点云地图
- 9.2.2 机器人的轨迹 or PoseGraph
- 9.3 3D 激光SLAM的帧间匹配方法
- 9.3.1 Point-to-Plane ICP
- 9.3.2 NDT
- 9.3.3 Feature-based Method
- 9.4 3D 激光SLAM的回环检测方法
- 9.4.1 Scan-to-Scan
- 9.4.2 Scan-to-Map
- 9.4.3 Branch and Bound & Lazy Decision
- 3D 激光SLAM的发展
- 10.1 LOAM-纯激光,匀速运动假设,无回环
- 10.2 V-LOAM-视觉激光融合、漂移匀速假设,无回环。
- 10.3 VELO-视觉激光融合,无运动畸变假设,有回环
- 3D 激光SLAM的应用
- 11.1 数据的预处理
- 11.1.1 轮式里程计的标定
- 11.1.2 激光雷达运动畸变的去除
- 11.1.3 不同系统之间的时间同步
- 11.2 与视觉融合
- 11.2.1 3D激光雷达为视觉特征提供深度信息
- 11.2.2 视觉辅助激光雷达进行运动畸变去除
- 11.2.3 视觉辅助回环检测
- 11.2.4 视觉提供精确的里程信息
- 激光SLAM中的问题
- 12.1 环境退化问题(Degeneration)
- 12.2 地图的动态更新(Map Update)
- 12.3 全局定位(Global Localization)
- 12.4 动态环境定位(Dynamic Localization)
1.SLAM是什么
1.1 SLAM的定义
slam是自主移动机器人自主移动的核心技术之一。
1.1.1 Localiztion: 在给定地图的情况下,估计机器人的位姿
1.1.2 Mapping: 在给定机器人位姿的情况下,估计环境地图
1.1.3 SLAM:同时估计机器人的位姿和环境地图
1.2 SLAM解决的问题
1.2.1 机器人在环境中的位姿
1.2.2 导航过程中需要的环境地图
2.SLAM的分类
首先分为两种,一种是静态环境,一种是动态环境,绝大多数的SLAM算法都是假设环境是静态的,不发生改变的;另一种是动态环境,动态环境分为两种,一种是高动态环境,一种是低动态环境。机器人在建图的过程中,在机器人的视野中看到走来走去的车或者人,这是高动态环境。另一种是低静态环境,是机器人检测不到的,比如停车库里的车,早上和中午有的车不动,有的车开出去了。
在静态环境中,根据SLAM的输出过程可以分为三种地图,一种是尺度地图,一种是拓扑地图,一种是混合地图。拓扑地图在环境比较大的情况下比较有用。因为一般的导航算法都是搜索算法,A*算法,D杰斯塔拉算法,随机算法,RT等,当搜索范围很大的情况下,搜索算法都是很耗时的,所以需要拓扑地图,将每一个地图简化成一个个的点,两个点是相连的,在中间连一条边,然后边的值表示两个点的距离。尺度地图。尺度不是真的,而是按比例缩放,与现实世界对应起来的,包括常用的Hector SLAM Cartographer SLAM。混合地图是刚才说的两种地图的结合,首先是一个拓扑地图,每一个点都是尺度地图。在全局路径是使用是拓扑地图,在局部路径规划是尺度地图。
而基于尺度地图主要分为两种,一种是基于贝叶斯的地图。
3.SLAM的框架
3.1 图优化
3.1.1 Graph : 表示SLAM的过程
3.1.2 Node : 机器人的位姿
3.1.3 Edge : 节点之间的空间约束关系
优化是在见图过程中产生误差,通过非线性最小二乘的方式让误差最小来优化建图过程中产生的误差。必须形成回环才会产生误差。
3.2 Filter-based SLAM
只估计当前时刻t的位姿(Gmapping), 一旦前面位姿出错,就无法修复,效果不是很好。基本上在Cartographer出现之后就被淘汰了,没有什么用了。
p ( x t , m ∣ z 1 : t , u 1 ) p(x_t,m|z_{1:t},u_1) p(xt,m∣z1:t,u1)
3.2.1状态预测(State Prediction):
里程计预测 大概预测机器人到什么地方
3.2.2 测量预测(Measurement Prediction)
测量预测: x t x_t xt
3.2.3 进行测量(Measurement)
真实测量: z t z_t zt
3.2.4 数据关联(Data Association)
grid based
3.2.5 状态更新&地图更新(State & Map Update)
4. 激光SLAM
4.1 传感器
4.1.1 惯性测量单元(IMU)
算角度
4.1.2 轮式里程计(Wheel Odometry)
算距离
4.1.3 激光雷达(Lidar)
室内二维激光雷达 和 室外三维激光雷达
4.2 地图类型
4.2.1 覆盖栅格地图(Occupany Grid Map)
对环境进行了鲜明区分。什么是障碍物,对于机器人来说,我们要知道哪个地方可以通行,哪个地方不能通行。
4.2.2 点云地图
4.3 帧间匹配算法
4.3.1 ICP(Iterative Cloest Point)
误差是点对点
4.3.2 PI-ICP(Point-to-Line Iterative Closest Point)
误差是点对线,实际情况比ICP好,求一个点的到地图上最近的两个点连成线的直线距离。
4.3.3 NDT(Normal Distribution Transformation)
主要用在2D 用高斯分布求匹配
4.3.4 CSM(Cirrelation Scan Match)
不会陷入局部极值,误差不会很大。前三种方法容易陷入局部极值。
4.4 回环检测
4.4.1 Scan-to-Scan
基本上被淘汰了,2D激光应用信息太少,非常容易被匹配错
4.4.2 Scan-to-Map
典型的标准是Cartographer, 当前一帧,和历史上所有的子图submap去匹配。
4.4.3 Map-to-Map
把当前最近的n帧激光聚合成一张子图,增加信息量,和过去的子图匹配。是滑动窗口。(没有开源的方法)
5. 2D 激光SLAM的介绍
5.1 2D 激光SLAM的输入
5.1.1 IMU数据
5.1.2 里程计数据
5.1.3 2D激光雷达数据
5.2 2D激光SLAM的输出
室内机器人使用最多
仓储物流,扫地机器人。
5.2.1 覆盖栅格地图
5.2.2 机器人的轨迹 or PoseGraph
5.3 2D 激光SLAM的帧间匹配方法
5.3.1 PI-ICP
5.3.2 CSM(Correlation Scan Match)
受限于分辨率
5.3.3 梯度优化方法
Hector SLAM
把一个匹配问题建模为一个非线性二乘最小优化问题
5.3.4 State of Art: CSM + 梯度优化
Cartographer
梯度优化能够保证足够的精度,CSM能够保证它不陷入局部极值。
5.4 2D 激光SLAM的回环检测方法
5.4.1 Scan-to-Map
5.4.2 Map-to-Map
5.4.3 Branch and Bound % Lazy Decision
前两种还是存在错误回环问题。 这个分支定界(15年提出)是剪枝方法
构造一个树,越到下面,叶子越多。定义一个Function, 父节点的cost 是 子节点的cost的上界。
6 2D 激光SLAM的发展
6.1 Filter-based
6.1.1 EKF-SLAM — 90年代
feature-based 只能定位,不能导航,grid-based 可以导航
6.1.2 FastSLAM — 02~03
比较早的可以用来构建比较大的地图算法。的输出一个大的栅格地图
6.1.3 Gmapping — 07
Grid 版本的FastSLAM 加入了 scan match 模块,优化proposal分布
有很大问题,粒子在做里程计传播的时候,误差是随机的。即使有一个很优的粒子,也不会被区别对待。主要原因 非常依赖于里程计
6.1.4 Optimal RBPF— 10
基于上面的一点,
假设传播n次得到n个粒子,从这n个粒子取出一个最优的粒子,作为真实传播,每个粒子都给了n次机会,大大减少了出现误差的概率。
6.2 Graph-based
6.2.1 Globally Consistant Range Scan For Enviroment Mapping — 97
97年提出图优化的论文,没有认识到稀疏性
6.2.2 Incremental Mapping of Large Cyclic Enviroments — 99
跨时代的论文,整个2D 激光SLAM的框架都是从这里来的。回环检测用的是map-to-map
6.2.3 Karto SLAM — 10
基于图优化的SLAM
局部匹配预先构建子图浪费时间。
6.2.4 Cartographer – 16
Karto的优化版本
没有认识到稀疏性。
真正意识到稀疏性的的是SPA,也是图优化工具
局部子图实时构建,分支定界。
所有开源代码中效果最好的。
基于滤波器的基本已经淘汰了。
7 2D 激光SLAM的应用
7.1 数据的预处理 — 非常重要
7.1.1 轮式里程计的标定
决定初始解的精度。
一个是离线标定。出厂标定,轮径 轮间距 等
一个是在线标定。 载重的时候,轮子会被压扁,轮径会有变化,为了克服这种影响,需要增加在线标定。对SLAM的意义非常重大。
7.1.2 激光雷达运动畸变去除
离线情况下,激光转一圈需要花时间,并不是同步,然后再加上以某个速度向前运动
7.1.3 不同系统之间的时间同步
7.2 实际环境中的问题
7.2.1 动态物体
7.2.2 环境变化
7.2.3 几何结构相似环境
7.2.4 建图的操作复杂
7.2.5 全局定位
7.2.6 地面材质的变化
7.2.7 地面凹凸不平
7.2.8 机器人载重的改变
8. 2D 激光SLAM 的趋势—与视觉融合
8.1. 视觉提供的信息
8.1.1 高精度的里程信息
VIO VWO
8.1.2 信息量丰富的视觉地图
解决环境变化,全局定位问题
8.2. 融合解决的问题
8.2.1 动态物体
8.2.2 环境变化
8.2.3 几何结构相似环境
8.2.4 建图的操作复杂
8.2.5 全局定位
8.2.6 地面材质的变化
8.2.7 地面凹凸不平
8.2.8 机器人载重的改变
9 3D 激光SLAM的介绍
9.1 3D 激光SLAM的输入
9.1.1 IMU数据
9.1.2 里程计数据
9.1.3 3D激光雷达数据
除了2D 激光雷达的帧间匹配算法 还可以模仿视觉来输出。
9.2 3D激光SLAM的输出
9.2.1 3D 点云地图
9.2.2 机器人的轨迹 or PoseGraph
导航 转化成 栅格地图
9.3 3D 激光SLAM的帧间匹配方法
9.3.1 Point-to-Plane ICP
三个点构成一个平面,求一个点到平面的距离,这个方法还是比较鲁棒的。
9.3.2 NDT
纯定位比较多,激光SLAM不是很多,计算量小
9.3.3 Feature-based Method
跟视觉匹配类似,提取特征点,以特征点的描述符进行匹配。
LOAM Kitti 霸榜第一名
Line Point Plane Point
9.4 3D 激光SLAM的回环检测方法
跟2D 没有区别
9.4.1 Scan-to-Scan
9.4.2 Scan-to-Map
9.4.3 Branch and Bound & Lazy Decision
10. 3D 激光SLAM的发展
10.1 LOAM-纯激光,匀速运动假设,无回环
10.2 V-LOAM-视觉激光融合、漂移匀速假设,无回环。
10.3 VELO-视觉激光融合,无运动畸变假设,有回环
11. 3D 激光SLAM的应用
11.1 数据的预处理
11.1.1 轮式里程计的标定
11.1.2 激光雷达运动畸变的去除
11.1.3 不同系统之间的时间同步
11.2 与视觉融合
11.2.1 3D激光雷达为视觉特征提供深度信息
11.2.2 视觉辅助激光雷达进行运动畸变去除
11.2.3 视觉辅助回环检测
11.2.4 视觉提供精确的里程信息
12. 激光SLAM中的问题
12.1 环境退化问题(Degeneration)
走廊 —> 建短 起到了1+1 小于2的效果
12.2 地图的动态更新(Map Update)
地图动态更新,机器人要运动必须要有的。DPG
12.3 全局定位(Global Localization)
对每个极限都很重要 MHT来做 视觉
还没有评论,来说两句吧...