1. SLAM 基本概念与目标
1. 核心定义
SLAM 全称是 Simultaneous Localization and Mapping,翻译为 同时定位与建图。
- 定位:机器人知道自己在环境中的 位置和姿态(位姿),比如'我在教室第 3 排桌子左边,面朝黑板'。
- 建图:机器人根据传感器数据,画出周围环境的 地图,比如教室的桌子、墙壁的位置。
- 同时:定位和建图不是分开做的 —— 机器人一边用传感器'看'环境画地图,一边根据画好的部分地图判断自己的位置。
2. 最终输出
- 一张 环境地图(比如栅格地图、点云地图)。
- 机器人在地图上的 位姿轨迹(比如从起点到终点,每一刻的位置和朝向)。
3. 与'纯定位'的区别
| 对比项 | SLAM | 纯定位(Localization) |
|---|---|---|
| 地图前提 | 地图未知,需要实时生成 | 地图已知(比如提前画好的教室地图) |
| 核心任务 | 定位 + 建图 | 只需要定位(根据已知地图找自己位置) |
| 应用场景 | 机器人第一次进入陌生环境(比如搜救机器人进废墟) | 机器人在熟悉环境中移动(比如扫地机器人在你家) |
生活化例子:
- SLAM 像你第一次去商场,一边记店铺位置(建图),一边看路标找自己在哪(定位)。
- 纯定位像你在自己家,闭着眼睛都能走到卧室(地图已知,只需要确定自己位置)。
2. SLAM 经典架构(前端 / 后端)
SLAM 系统可以分成 前端 和 后端 两部分,分工明确,像工厂的'生产线'和'质检部'。
1. 前端(传感器数据处理层)
核心作用:处理原始传感器数据,提取有用信息,生成 短期相对位姿约束。简单说,前端负责'看眼前的环境,算自己走了多远'。主要工作内容:
- 里程计融合:把轮子的里程计(比如轮子转了多少圈,算走了几米)和传感器数据结合,减少单独使用轮子的误差。
- 特征提取 / 匹配:从激光数据中找环境的 特征点(比如墙角、桌子角),并匹配相邻时刻的特征点 —— 比如'上一秒看到的墙角,这一秒还能看到,说明我没走太远'。
- Scan Matching(扫描匹配):把相邻两次的激光扫描数据对齐,计算机器人的相对位姿。
- 数据关联:判断'当前看到的特征点,是不是之前看到过的同一个'—— 比如避免把两个长得像的墙角当成同一个。
2. 后端(优化层)
核心作用:处理前端生成的约束,解决 累计误差,保证地图和轨迹的 全局一致性。简单说,后端负责'纠偏'—— 前端算的短期轨迹可能有误差,走得越远误差越大,后端把这些误差'抹平'。主要工作内容:
- 图优化 / 因子图:把机器人的位姿当成'节点',把前端的约束当成'边',构建一个图模型,通过数学优化让所有节点的位置最合理。


