SLAM

Simultaneous Localization and Mapping 同步定位与地图构建

在不知道环境地图的情况下,同时估计自身的位置和构建地图
本质上是一个 递归状态估计问题,可以抽象成概率图模型

在未知环境中,让机器人或自动驾驶汽车等智能体通过传感器数据实时地构建环境地图并同时定位自身位置的技术。

Map

SLAM的基本知识

SLAM 两大任务:定位建图

  1. 运动估计(前端):根据传感器信息估计机器人当前位姿。
  2. 地图优化(后端):构建地图,纠正漂移,保证全局一致性。

关键技术组件

模块 主要算法
前端里程计 ICP、scan matching、光流、特征点匹配
后端优化 非线性最小二乘法、图优化(g2oCeres Solver
闭环检测 Bag-of-Words(DBoW2)、光流匹配、扫描匹配
地图表示 占据栅格地图、稀疏特征图、点云地图
传感器融合 卡尔曼滤波、因子图、滑窗优化

数学基础

1. 基本任务

假设机器人的状态为 xt ,控制输入为 ut ,观测为 zt ,地图为 m
SLAM 的目标是求解状态估计问题:

p(x1:t,mz1:t,u1:t)

即:在已知的控制输入和观测下,估计机器人运动路径 x1:t 和环境地图 m 的后验概率。其中:

经典贝叶斯递归公式

p(xt,mz1:t,u1:t)=ηp(ztxt,m)p(xtut,xt1)p(xt1,mz1:t1,u1:t1)dxt1

2. 概率图基础

机器人运动遵循运动模型:

p(xt|xt1,ut)

传感器观测遵循观测模型:

p(zt|xt,m)

整个 SLAM 问题的贝叶斯公式递归表示:

p(x1:t,m|z1:t,u1:t)p(zt|xt,m)p(xt|xt1,ut)p(x1:t1,m|z1:t1,u1:t1)

SLAM 的信息流可以用图结构描述:

3. 误差建模与优化目标

机器人控制输入存在误差,运动模型用高斯误差建模:

xt=f(xt1,ut)+wt,wtN(0,Qt)

传感器测量存在误差,观测模型用高斯误差建模:

zt=h(xt,m)+vt,vtN(0,Rt)

整个 SLAM 转化为最小化所有约束误差的非线性最小二乘问题:

min{xi},m(i,j)zijh(xi,xj)Ωij2

其中:

这个优化问题用以下方法求解求解:

一、按状态估计方法分类

1. 基于滤波

用递归滤波(如扩展卡尔曼滤波 EKF 或粒子滤波)维护机器人状态和地图状态的联合概率分布。
代表算法:EKF-SLAM、FastSLAM、Particle Filter SLAM

扩展卡尔曼滤波 SLAM(EKF-SLAM)

基于粒子滤波的 SLAM:FastSLAM

2. 基于图优化 Graph-Based SLAM

用图模型表示机器人的运动约束与观测约束,转化为非线性最小二乘优化问题。
代表算法:Graph-SLAM、G2O、Cartographer、slam_toolbox
常用优化器:g2o,Ceres Solver。

将机器人轨迹和地图中的约束建模成图结构,通过非线性优化求解最优解。

二、按传感器类型分类

1. 激光 LiDAR SLAM

代表算法:Gmapping、Hector SLAM、Cartographer、LIO-SAM
特点:

2. 视觉 V-SLAM

代表算法:ORB-SLAM、DSO、LSD-SLAM、RTAB-Map

ORB-SLAM 系列(特征点法)

LSD-SLAM(半稠密直接法)
不依赖特征点,直接利用图像像素灰度进行优化。

RTAB-Map RGB-D SLAM

3. 多传感器融合 SLAM

代表算法:VINS-Mono、LIO-SAM、Cartographer 3D
特点:

三、按构建地图类型分类

  1. 稠密建图(Dense Mapping):完整还原环境,适用于三维重建
  2. 稀疏建图(Sparse Mapping):只记录特征点与轨迹,适合导航定位
  3. 拓扑建图(Topological Mapping):使用图结构表示节点和连边,不保存具体几何信息

四、发展趋势与实际使用

1. 发展趋势

多传感器融合(激光、视觉、IMU、GPS)
高精度 3D 稠密建图(自动驾驶、AR/VR)
实时闭环检测与自适应图优化
基于深度学习的 SLAM(特征提取、数据关联)
端到端学习型 SLAM(研究阶段)

2. 实际使用

ROS2 slam_toolbox

开源库