SLAM
传感器分类
- 二维激光
- 三维激光
- 视觉传感器
- 声纳传感器
后端处理分类
- 图优化(Graph-based,优化全部位姿,属于全局优化,可能存在计算量的问题,影响实时性???)
- 滑动窗口方法(sliding-window优化固定数目的位姿,常用于VIO方法,MSCKF)
- 滤波器方法(filter-based, 卡尔曼滤波,EKF,UKF)
Graph-based SLAM architecture
- 前端匹配(帧间匹配)
- 回环检测
- 后端优化(非线性最小二乘,构建约束最小化代价方程)
图结构
- Graph:SLAM 进程
- Node: 机器人位姿
- Edge: 节点之间的空间约束关系
激光SLAM流程
- 数据预处理(激光雷达去畸变,里程计标定)
- 激光帧间匹配(计算相对位姿)
- 回环检测(loop closure)
- 后端优化(pose-graph,非线性最小二乘)
数据预处理
里程计标定: 机械标定存在误差/累计误差/存在漂移问题; 提供初始解
激光雷达运动畸变去除:激光数据采集需要时间/传感器移动
帧间匹配算法(核心部分)
ICP/PI-ICP/NICP/NDT/CSM
回环检测
- scan-to-scan(逐帧匹配,有歧义,计算量小)
- scan-to-map(帧组合成子图,当前帧与子图匹配)
- map-to-map(子图与子图进行匹配,基本无歧义,计算量大)
后端优化
高斯牛顿/LM方法
2D SLAM
输入
IMU/里程计/2D激光雷达数据
输出
覆盖栅格地图/机器人轨迹(建图*定位)
帧间匹配方法
PL-ICP: 点到线的距离,符合室内结构化场景,依赖初始解
CSM(Correlation Scan Match):暴力搜索
Optimization-Based:依赖地图的梯度,可以轻易的引入额外约束
State-of-Art: CSM+梯度优化
回环检测方法
- scan-to-map
- map-to-map
- Branch and Bound&Lazy Decision(延迟决策)
主要方法
Filter-based
- EKF
- FastSLAM 粒子滤波
- Gmapping
- Optimal RBPF
Graph-based
- Karto-SLAM(首个开源算法,经典)
- Cartographer(与Karto-SLAM 类似)
应用中的问题
数据预处理(最重要的部分)
- 里程计
- 激光雷达运动畸变
- 不同系统间的时间同步
实际环境中的问题
动态物体/环境变化/几何结构相似环境
3D SLAM
与2D激光不同: 3D激光雷达数据
帧间匹配方法
Point-to-Plane ICP: 点到面的ICP
Plane-to-Plane ICP:面到面的距离
NDT:划分网格,拟合高斯分布
NICP:在ICP基础上引入法向量信息
IMLS-ICP:点云进行局部曲面拟合,曲面匹配
Feature-Based: 提取特征点和描述符进行匹配
应用
预处理
同2D SLAM,但预处理任务更重
与视觉融合
3D雷达提供深度信息,辅助回环和提供里程信息,消除运动畸变
激光SLAM问题
退化环境(Degeneration Environment)
空旷的环境
地图的动态更新
全局定位
动态环境定位
动态物体滤除,检测与跟踪