SLAM 基本概念与目标
SLAM(Simultaneous Localization and Mapping),即同时定位与建图,是移动机器人自主导航的核心能力。
- 定位:确定机器人在环境中的位置和姿态(位姿)。例如:'我在教室第 3 排桌子左边,面朝黑板'。
- 建图:利用传感器数据构建周围环境的地图,如记录墙壁、桌子的位置。
- 同时性:定位和建图并非独立进行。机器人在'看'环境绘制地图的同时,依据已生成的部分地图判断自身位置。
最终输出通常包含一张环境地图(栅格或点云)以及机器人在地图上的位姿轨迹。
与纯定位的区别
| 对比项 | SLAM | 纯定位(Localization) |
|---|---|---|
| 地图前提 | 地图未知,需实时生成 | 地图已知(如预先绘制的地图) |
| 核心任务 | 定位 + 建图 | 仅定位(在已知地图中找自己) |
| 应用场景 | 首次进入陌生环境(如搜救) | 熟悉环境中移动(如扫地机器人) |
简单来说,SLAM 像第一次去商场,一边记店铺位置一边找路;纯定位则像在自己家闭眼走回卧室。
SLAM 经典架构(前端 / 后端)
SLAM 系统通常分为前端和后端,分工明确,类似工厂的'生产线'与'质检部'。
1. 前端(传感器数据处理层)
核心作用:处理原始传感器数据,提取特征,生成短期相对位姿约束。
主要工作包括:
- 里程计融合:结合轮子里程计与传感器数据,减少单一传感器的误差。
- 特征提取与匹配:从激光数据中提取墙角等特征点,并匹配相邻时刻的特征。
- Scan Matching(扫描匹配):对齐相邻两次激光扫描数据,计算机器人相对位姿。
- 数据关联:判断当前特征是否为之前见过的同一个,避免误匹配。
2. 后端(优化层)
核心作用:处理前端约束,解决累计误差,保证地图和轨迹的全局一致性。
主要工作包括:
- 图优化 / 因子图:将位姿视为节点,约束视为边,通过数学优化使所有节点位置最合理。
- 回环检测:识别机器人是否回到过往地点,对齐起点和终点位姿,消除全程累计误差。
- 全局一致性:确保地图无断裂、轨迹不交叉。
ROS 2 下的 2D LiDAR SLAM 数据流
工程实践中,ROS 2 话题和 TF 变换是理解 SLAM 的关键。
关键输入输出
ROS 2 通过话题传输数据,SLAM 相关的核心话题如下:
| 话题名 | 含义 | 数据类型 | 作用 |
|---|---|---|---|
/scan | 激光扫描数据 | sensor_msgs/LaserScan | 核心输入,含角度与距离信息 |
/odom | 里程计数据 |


