SLAM 是 Simultaneous Localization and Mapping,同步定位与建图。它解决的是:机器人或设备在未知环境里,一边估计自己在哪里,一边构建周围环境地图。

SLAM 常见于机器人、无人车、无人机、AR、扫地机、移动测绘、仓储 AGV 和自动驾驶感知定位。

一句话理解

1
传感器数据 -> 估计当前位姿 -> 构建地图 -> 修正累计误差 -> 输出可用定位和地图

其中最关键的问题是误差会累积。只靠里程计或相机连续估计,走久了就会漂移,所以 SLAM 需要后端优化和回环检测来把轨迹拉回正确位置。

基本术语

术语 含义
Pose 位姿,通常包含位置和姿态
Odometry 里程计,估计相邻时刻运动
Landmark 路标点,环境中可重复观测的特征
Front-end 前端,负责特征提取、匹配、跟踪、里程计
Back-end 后端,负责优化轨迹和地图
Loop Closure 回环检测,识别回到旧位置
Map 地图,可以是稀疏点云、稠密点云、栅格图、语义地图
IMU 惯性测量单元,提供加速度和角速度

SLAM 系统常见结构

1
2
3
4
5
6
7
传感器输入
-> 数据预处理
-> 前端里程计
-> 局部地图
-> 后端优化
-> 回环检测
-> 全局地图

前端追求实时,后端追求全局一致性。

按传感器分类

类型 传感器 特点
视觉 SLAM 单目、双目、RGB-D 相机 成本低,受光照和纹理影响大
激光 SLAM 2D/3D LiDAR 几何精度高,成本和数据量较高
视觉惯性 SLAM 相机 + IMU 运动估计更稳,标定要求更高
激光惯性 SLAM LiDAR + IMU 适合移动机器人和室外场景
多传感器 SLAM 相机、LiDAR、IMU、轮速计、GPS 鲁棒性更好,系统复杂度更高

按算法思想分类

滤波 SLAM

早期常见方法,包括 EKF-SLAM、FastSLAM 等。

特点:

  • 以概率滤波方式递推状态。
  • 适合理解 SLAM 基础。
  • 在大规模环境里状态维度和计算压力会变大。

图优化 SLAM

现代 SLAM 常用思路,把位姿和约束表示成图,再做非线性优化。

1
2
3
节点:机器人位姿、地图点
边:里程计约束、观测约束、回环约束、IMU 约束
目标:让所有约束误差整体最小

优点:

  • 更适合大规模场景。
  • 能自然加入回环。
  • 可以融合多传感器约束。

视觉 SLAM

视觉 SLAM 主要依赖图像。

常见路线:

路线 思路
特征点法 提取 ORB、SIFT、SURF 等特征,再匹配跟踪
直接法 直接利用像素灰度误差估计运动
半直接法 结合特征和直接法思想

典型问题:

  • 光照变化导致匹配失败。
  • 白墙、玻璃、纯色地面缺少纹理。
  • 快速运动造成模糊。
  • 单目相机尺度不确定。
  • 动态物体干扰特征匹配。

常见处理:

  • 增加 IMU。
  • 使用双目或 RGB-D。
  • 提高快门速度和图像质量。
  • 剔除动态区域。
  • 做回环检测和重定位。

激光 SLAM

激光 SLAM 依赖 LiDAR 扫描。

常见路线:

  • 2D 激光 + 栅格地图。
  • 3D LiDAR + 点云匹配。
  • LiDAR + IMU 融合。

常见算法模块:

模块 作用
Scan Matching 当前扫描和地图匹配
ICP 点云配准
NDT 点云概率栅格匹配
Deskew 消除运动畸变
Loop Closure 闭环修正

常见问题:

  • 长走廊退化,几何约束不足。
  • 玻璃、雨雾、反光物体导致异常点。
  • 运动太快,点云畸变严重。
  • IMU 外参或时间同步不准。

VIO 视觉惯性里程计

VIO 使用相机和 IMU 融合估计运动。

优势:

  • 比纯视觉更抗快速运动。
  • IMU 可以补充短时间图像跟踪失败。
  • 适合无人机、AR、手持设备。

难点:

  • 相机和 IMU 时间同步。
  • 外参标定。
  • IMU 噪声建模。
  • 初始化尺度、重力方向和偏置。

回环检测为什么重要

只靠前端里程计,误差会一直积累。回环检测用于识别“我又回到了曾经来过的地方”。

1
发现回环 -> 添加回环约束 -> 后端优化 -> 修正整条轨迹

没有回环时,地图可能越来越歪;有错误回环时,地图可能被拉坏。所以回环检测既要召回,也要防误匹配。

地图表示

地图 用途
稀疏点云 定位、回环、视觉地图
稠密点云 重建、测绘、三维展示
栅格地图 2D 导航、避障
OctoMap 3D 占据地图
TSDF/ESDF 三维重建和路径规划
语义地图 带物体类别和场景理解

不是地图越密越好。导航常用栅格地图,视觉定位可能只需要稀疏地图。

常见问题

SLAM 和导航是什么关系

SLAM 负责定位和建图,导航负责根据地图规划路径并控制机器人移动。导航依赖定位,但 SLAM 不等于完整导航系统。

单目 SLAM 为什么有尺度问题

单目相机只看到二维图像,无法直接知道真实距离。没有额外信息时,只能得到相对尺度。可以通过双目、RGB-D、IMU、已知物体尺寸或高度约束补尺度。

为什么机器人走久了地图会歪

前端里程计有误差,每一帧叠加一点,时间长了就会漂移。需要后端优化、回环检测、传感器融合来修正。

为什么特征点突然丢失

常见原因:

  • 画面模糊。
  • 光照突变。
  • 纹理太少。
  • 物体快速移动。
  • 相机曝光不稳定。

处理:

  • 降低运动速度。
  • 提高图像质量。
  • 使用更合适的相机。
  • 融合 IMU。

激光 SLAM 在长走廊里为什么不稳

长走廊几何结构重复,横向约束不足,匹配容易退化。可以融合 IMU、轮速计、视觉,或增加人工标志物、优化环境特征。

SLAM 一定要 ROS 吗

不一定。ROS 方便传感器接入、消息通信、可视化和算法集成,但 SLAM 算法本身可以脱离 ROS 运行。学习和机器人项目中,ROS 2 会让工程组织更方便。

学习路线

  1. 先理解坐标系、旋转、平移、矩阵、四元数。
  2. 学 OpenCV 基础,理解相机模型和特征匹配。
  3. 学非线性优化,理解图优化思想。
  4. 跑通一个开源视觉 SLAM 或激光 SLAM 示例。
  5. 学 ROS 2、TF、rosbag、RViz。
  6. 再进入 VIO、LiDAR-Inertial、多传感器融合。

工程排查清单

  • 传感器时间戳是否准确。
  • 相机内参是否标定。
  • 相机和 IMU、LiDAR 外参是否正确。
  • 坐标系方向是否统一。
  • rosbag 数据是否丢帧。
  • 运动速度是否超过算法承受范围。
  • 环境纹理或几何特征是否足够。
  • 回环是否误匹配。
  • CPU/GPU 性能是否足够实时运行。

常见开源方向

  • ORB-SLAM 系列:经典视觉 SLAM。
  • VINS 系列:视觉惯性方向。
  • Cartographer:2D/3D 激光 SLAM。
  • LOAM 系列:激光里程计和建图。
  • LIO-SAM:LiDAR、IMU、因子图融合方向。

学习时不要一开始就追求“最强算法”,先跑通数据、理解坐标系、看懂前端和后端各自做什么。

延伸阅读

站内搜索

没有找到内容!