「具身智能落地实战」系列第 3 篇
前两篇我们拆解了具身机器人的硬件系统和 VLA 大脑。但机器人要在物理世界中行动,首先要回答两个最基本的问题:「我在哪?」和「周围有什么?」。这两个问题的答案,来自 SLAM 技术。本文从基本原理、技术路线、多传感器融合三个维度,系统性拆解 SLAM,帮你理解机器人是如何「认识」这个世界的。
引言:机器人的「方向感」从哪来
人类在熟悉的环境中行走,几乎不需要思考就能知道自己在哪、该往哪走。我们依靠视觉、前庭觉(内耳平衡)、肌肉记忆等多种感官的协同,实时构建对环境的认知。
但机器人没有这种「天生的方向感」。它被放到一个陌生环境中时,面对的是一片空白——不知道自己在哪,不知道周围有什么,更不知道该怎么走。要让机器人能够自主移动,必须先解决两个核心问题:
- 定位(Localization):机器人在环境中处于什么位置、什么姿态?
- 建图(Mapping):机器人周围的环境是什么样的?有哪些障碍物、哪些通道、哪些目标?
这两个问题看似简单,却构成了一个经典的「鸡生蛋」悖论——要定位,需要先有地图;要建图,需要先知道自己的位姿。两者相互依赖,必须同时求解。
SLAM(Simultaneous Localization and Mapping,同时定位与建图)正是解决这一悖论的技术。它让机器人在未知环境中,一边移动一边构建地图,同时利用地图推算自己的位置。可以说,SLAM 是移动机器人的「空间认知基础」,没有 SLAM,机器人就是一个「瞎子」——既不知道自己在哪,也不知道周围有什么。
一、什么是 SLAM:同时定位与建图的「鸡生蛋」问题
1.1 定位:我在哪
定位要解决的是机器人的「位姿」(Pose)问题。位姿包含两个部分:
- 位置(Position):机器人在空间中的坐标(x, y, z)
- 姿态(Orientation):机器人的朝向(roll, pitch, yaw,即横滚、俯仰、偏航)
在二维平面移动的机器人(如轮式机器人),位姿是 3 维的(x, y, yaw);在三维空间移动的机器人(如无人机、人形机器人),位姿是 6 维的(x, y, z, roll, pitch, yaw)。
定位的本质是:通过传感器数据,推算机器人相对于环境的位姿变化。
1.2 建图:周围有什么
建图要解决的是环境的「表示」问题。机器人需要把感知到的环境信息,转化为一种可以存储、可以查询、可以用于导航的地图表示。
常见的地图表示方式包括:
| 地图类型 | 表示方式 | 适用场景 |
|---|---|---|
| 2D 栅格地图 | 将平面划分为网格,每个格子标记为「占用/空闲/未知」 | 轮式机器人室内导航 |
| 3D 点云地图 | 用大量三维点表示环境的几何结构 | 无人机、人形机器人、自动驾驶 |
| 特征点地图 | 用环境中的关键特征点(角点、边缘)表示地图 | 视觉 SLAM |
| 语义地图 | 在几何地图基础上,标注每个区域/物体的语义类别 | 具身智能、人机交互 |
不同的地图表示适用于不同的任务。对于简单的避障导航,2D 栅格地图就够了;对于需要精细操作的具身机器人,3D 点云地图甚至语义地图是必要的。
1.3 鸡生蛋问题:两者如何同时进行
定位和建图构成了一个循环依赖:
- 要精确定位,需要有一张准确的地图作为参考
- 要构建准确的地图,需要知道机器人每一步的精确位姿
这就像「先有鸡还是先有蛋」——没有地图就无法定位,没有定位就无法建图。
SLAM 的核心思想是用概率的方法同时求解这两个问题。它不追求一次性得到完美的地图和精确的位姿,而是通过不断迭代优化,逐步逼近最优解:
- 机器人移动一小段,通过传感器数据估算位姿变化(里程计)
- 用估算的位姿,把新观测到的环境数据融入地图
- 用更新后的地图,反过来修正之前的位姿估计
- 不断重复这个过程,同时优化位姿和地图
这个过程中,误差会不断累积(每一步的估算都有微小误差,走得越远累积越大),因此需要「回环检测」来消除累积漂移——当机器人识别出「这个地方我之前来过」时,就可以用全局约束把漂移「拉回来」。我们在后面会详细展开。
工程视角: SLAM 不是一个「算法」,而是一个「系统」。它包含传感器选型、前端匹配、后端优化、回环检测、地图构建等多个模块,每个模块都有大量的工程细节需要打磨。在实际项目中,很少有人从零写 SLAM,通常是基于开源框架(如 ORB-SLAM、Cartographer、LOAM)进行定制和优化。选择合适的开源框架、针对具体场景调参、处理传感器标定和同步问题,才是工程落地的核心工作。
二、SLAM 的基本流程:从传感器数据到地图
一个完整的 SLAM 系统通常包含四个核心模块:前端、后端、回环检测、地图构建。
2.1 前端:帧间匹配与里程计
前端(Front-end)负责处理传感器原始数据,估算相邻两帧之间的机器人位姿变化,也就是「里程计」(Odometry)。
- 视觉前端:提取图像特征点(如 ORB、SIFT、SuperPoint),匹配相邻帧的特征点,通过对极几何或 PnP 算法估算相机位姿变化
- 激光前端:将相邻两帧点云进行配准(如 ICP、NDT 算法),估算位姿变化
- IMU 前端:通过积分 IMU 的加速度和角速度,估算位姿变化(但漂移大,通常作为辅助)
前端的输出是机器人每一步的「粗略位姿」,这个位姿有误差,而且误差会随时间累积。
2.2 后端:位姿优化与全局一致性
后端(Back-end)负责对前端输出的位姿序列进行优化,消除误差,构建全局一致的轨迹和地图。
常见的后端优化方法包括:
- 滤波方法:扩展卡尔曼滤波(EKF)、粒子滤波,递归地估计状态
- 优化方法:光束法平差(BA)、位姿图优化,将所有位姿和地图点作为变量,构建最小二乘问题进行全局优化
目前主流的 SLAM 系统大多采用位姿图优化——把机器人的每个位姿作为图中的一个节点,把相邻帧之间的位姿约束作为边,通过优化整个图来得到全局一致的轨迹。
2.3 回环检测:消除累积漂移的关键
回环检测(Loop Closure Detection)是 SLAM 中最关键也最有挑战性的模块之一。
机器人长时间移动后,前端的累积误差会越来越大,导致轨迹和地图严重失真。回环检测的作用是:当机器人识别出「这个地方我之前来过」时,建立一个全局约束,把漂移的轨迹「拉回来」。
回环检测的方法包括:
- 词袋模型(BoW):将图像特征转化为视觉词袋向量,通过计算向量相似度判断是否回环
- 深度学习特征:用预训练的神经网络提取图像全局特征,进行相似度匹配
- 几何验证:初步判断回环后,通过几何一致性验证(如 RANSAC)排除误检
回环检测一旦成功,后端就可以利用这个全局约束进行优化,显著提升地图的全局一致性。可以说,没有回环检测的 SLAM,只能叫「里程计」——走得越远,误差越大,最终地图完全失真。
2.4 地图构建:从栅格到点云到语义
有了优化后的位姿序列,就可以把传感器观测到的环境数据「拼」成一张完整的地图。
- 2D 栅格地图:将激光扫描数据根据位姿投影到平面,统计每个格子被占用的概率
- 3D 点云地图:将多帧点云根据位姿拼接,形成完整的三维点云
- 稠密地图:用 TSDF(截断符号距离函数)等方法构建稠密的三维表面
- 语义地图:在几何地图基础上,用语义分割网络标注每个区域/物体的类别
地图构建的输出,最终会用于导航、避障、路径规划、人机交互等下游任务。
三、vSLAM vs Lidar SLAM:两条技术路线的对比
根据使用的主传感器不同,SLAM 主要分为两条技术路线:vSLAM(视觉 SLAM)和 Lidar SLAM(激光雷达 SLAM)。
3.1 vSLAM:用眼睛看世界
vSLAM(visual SLAM)以摄像头作为主传感器,通过视觉信息实现定位与建图。
摄像头类型:
| 类型 | 原理 | 特点 |
|---|---|---|
| 单目相机 | 一个摄像头 | 成本最低,但有尺度不确定性(无法确定物体真实大小) |
| 双目相机 | 两个摄像头,模拟人眼 | 通过视差计算深度,有真实尺度,但基线短、远距离精度差 |
| RGB-D 相机 | 彩色相机 + 深度传感器 | 直接获取深度信息,精度高,但有效距离短(通常<5m),受光照影响 |
代表算法: ORB-SLAM 系列、VINS-Mono、SVO、DSO、Kimera 等。
优点:
- 成本低,摄像头比激光雷达便宜得多
- 信息丰富,图像包含颜色、纹理、语义等信息,便于做语义理解
- 体积小、功耗低,适合小型机器人和消费级产品
- 可以识别物体、文字、人脸等语义信息,这是激光雷达做不到的
缺点:
- 受光照影响大,强光、逆光、黑暗环境下性能急剧下降
- 弱纹理场景(白墙、空旷走廊)特征点少,容易跟踪失败
- 单目相机有尺度不确定性,需要其他传感器(如 IMU)提供尺度
- 快速运动时容易模糊、丢帧
3.2 Lidar SLAM:用激光量世界
Lidar SLAM 以激光雷达作为主传感器,通过激光测距实现定位与建图。
激光雷达类型:
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 2D 激光雷达 | 单线扫描,只获取平面信息 | 室内轮式机器人、AGV |
| 3D 机械激光雷达 | 多线旋转扫描,获取三维点云 | 自动驾驶、室外机器人 |
| 3D 固态激光雷达 | 无机械旋转部件,体积小、可靠性高 | 量产机器人、车规级应用 |
代表算法: GMapping、Hector SLAM、Cartographer(2D);LOAM、LeGO-LOAM、LIO-SAM、FAST-LIO(3D)。
优点:
- 精度高,激光测距精度通常在厘米级甚至毫米级
- 直接获取三维几何信息,不需要像视觉那样通过三角化计算深度
- 不受光照影响,白天黑夜都能正常工作
- 测距范围远,工业级激光雷达可以测几十米甚至上百米
缺点:
- 成本高,3D 激光雷达价格昂贵(虽然近年来固态激光雷达在降价)
- 体积大、重量大,不适合小型机器人
- 空旷地带(如走廊、大厅)点云特征少,容易匹配失败
- 点云稀疏(尤其是低线数雷达),难以获取精细的纹理和语义信息
- 雨雪雾天气下激光会衰减,影响室外性能
3.3 对比分析
| 维度 | vSLAM(视觉) | Lidar SLAM(激光) |
|---|---|---|
| 主传感器 | 摄像头 | 激光雷达 |
| 成本 | 低 | 高 |
| 精度 | 中等(受特征和光照影响) | 高(厘米级) |
| 光照影响 | 大(强光/黑暗失效) | 无 |
| 弱纹理场景 | 容易失败 | 相对鲁棒 |
| 空旷场景 | 可工作(有纹理就行) | 容易失败(点云特征少) |
| 语义信息 | 丰富(可识别物体) | 无(只有几何) |
| 体积/功耗 | 小/低 | 大/高 |
| 测距范围 | 近(RGB-D<5m,双目<20m) | 远(几十到上百米) |
| 代表算法 | ORB-SLAM、VINS | LOAM、Cartographer、FAST-LIO |
| 典型应用 | 消费级机器人、AR/VR、无人机 | 自动驾驶、工业 AGV、室外巡检 |
工程视角: vSLAM 和 Lidar SLAM 不是「谁更好」的关系,而是「谁更适合什么场景」的关系。室内、结构化、成本敏感的场景(如家用机器人、服务机器人),vSLAM 更合适;室外、大范围、高精度要求的场景(如自动驾驶、矿山机器人),Lidar SLAM 更合适。而对于具身机器人(人形、四足),通常需要两者融合——视觉提供语义和丰富纹理,激光提供精确几何和测距,再加上 IMU 提供高频运动估计,三者协同才能在复杂环境中稳定工作。
四、多传感器融合:VIO、LIO 与 VILIO
单一传感器都有各自的局限性,实际机器人系统通常采用多传感器融合方案,取长补短。
4.1 为什么需要融合
| 传感器 | 优势 | 劣势 |
|---|---|---|
| 视觉 | 信息丰富、成本低 | 受光照影响、快速运动丢帧、弱纹理失效 |
| 激光 | 精度高、不受光照影响 | 成本高、空旷场景失效、无语义信息 |
| IMU | 高频(几百到上千 Hz)、不受环境影响 | 漂移大(积分误差随时间累积) |
没有任何一种传感器能在所有场景下都稳定工作。融合多种传感器,可以让它们互相弥补缺陷:
- 视觉/激光提供低频但精确的位姿估计
- IMU 提供高频但漂移的运动估计
- 两者融合后,得到既精确又高频、既鲁棒又平滑的位姿估计
4.2 VIO:视觉 + IMU 的黄金组合
VIO(Visual-Inertial Odometry,视觉惯性里程计)是视觉 SLAM 中最常用的融合方案,将摄像头和 IMU 紧密结合。
融合原理:
- IMU 提供高频(200-1000Hz)的运动估计,在视觉帧之间(通常 30Hz)「填补空白」
- 视觉提供低频但无漂移的位姿估计,用来校正 IMU 的累积漂移
- 两者联合优化,得到既高频又精确的位姿
VIO 的优势:
- 解决了单目视觉的尺度不确定性问题(IMU 提供加速度,可以恢复尺度)
- 快速运动时视觉丢帧,IMU 可以继续提供位姿估计
- 体积小、成本低,适合消费级产品(如无人机、AR 眼镜、手机)
代表算法: VINS-Mono、MSCKF、OKVIS、Kimera-VIO 等。
4.3 LIO:激光 + IMU 的高精度方案
LIO(Lidar-Inertial Odometry,激光惯性里程计)将激光雷达和 IMU 融合,是目前室外和工业场景中最主流的高精度 SLAM 方案。
融合原理:
- IMU 提供高频运动估计,用于激光点云的去畸变(机器人运动时,一帧点云的不同扫描线是在不同时刻获取的,需要用 IMU 运动补偿来校正)
- 激光提供精确的位姿估计,用来校正 IMU 漂移
- 两者紧耦合优化,得到高精度、高鲁棒的位姿和地图
LIO 的优势:
- 精度高,激光 + IMU 融合可以达到厘米级甚至毫米级定位精度
- 鲁棒性强,激光不受光照影响,IMU 填补激光帧间空白
- 适合室外、大范围、高精度要求的场景
代表算法: LIO-SAM、FAST-LIO、FAST-LIVO、R3LIVE 等。
4.4 融合方法:松耦合 vs 紧耦合
多传感器融合有两种基本架构:
松耦合(Loosely Coupled):
- 每个传感器先独立估计位姿,然后把多个位姿结果进行融合
- 优点:模块化、易于实现、每个模块可以独立调试
- 缺点:信息损失(每个传感器的原始观测在独立估计时已经被压缩),精度相对较低
紧耦合(Tightly Coupled):
- 把所有传感器的原始观测放在一起,联合优化一个目标函数
- 优点:信息保留完整、精度高、鲁棒性强
- 缺点:实现复杂、计算量大、调试困难
目前主流的 VIO/LIO 算法(如 VINS、FAST-LIO)都采用紧耦合架构,通过因子图优化或迭代卡尔曼滤波,将视觉/激光观测和 IMU 预积分联合优化,得到最高精度。
工程视角: 多传感器融合说起来简单,做起来全是细节。最大的挑战不是算法,而是传感器标定和时间同步。多个传感器的安装位置有偏差(外参标定)、时钟不同步(时间偏移)、采样频率不一致,这些问题如果处理不好,融合效果还不如单一传感器。在实际项目中,标定和同步的工作量往往占整个 SLAM 开发的 40% 以上。因此,选择已经做好硬件同步和标定的传感器套装(如深度相机自带 IMU 且出厂标定),可以大幅降低开发难度。
五、具身机器人 SLAM 的特殊挑战
传统 SLAM 主要面向轮式机器人和自动驾驶,假设环境相对静态、机器人运动平稳。但具身机器人(人形、四足)面临更复杂的挑战。
5.1 动态环境:移动的人和物
传统 SLAM 假设环境是静态的——所有物体都不动,只有机器人自己在动。但真实环境中充满了动态物体:走来走去的人、行驶的车辆、移动的货物。这些动态物体会干扰特征匹配和点云配准,导致 SLAM 跟踪失败或地图失真。
应对方法:
- 动态物体检测与剔除:用语义分割网络识别出动态物体(人、车),在特征匹配和点云配准时剔除这些区域
- 多视图几何约束:利用动态物体在多视图中的运动不一致性,区分静态背景和动态物体
- 动态 SLAM 算法:如 DynaSLAM、MaskFusion、Detect-SLAM 等,专门针对动态环境设计
5.2 机器人运动带来的干扰
人形机器人和四足机器人的运动方式与轮式机器人完全不同:
- 颠簸和震动:行走时脚底接触地面的冲击会传递到传感器,导致图像模糊、点云畸变
- 频繁遮挡:机器人的手臂、腿部可能会遮挡摄像头和激光雷达
- 运动模式复杂:行走、跑步、转弯、下蹲、上下楼梯,运动模式多样且剧烈
- 姿态变化大:人形机器人的俯仰、横滚角度变化大,不像轮式机器人基本保持水平
这些因素都会增加 SLAM 的难度,需要更鲁棒的算法和更精心的传感器安装设计(如增加减震机构、选择合适的安装位置避免自遮挡)。
5.3 语义 SLAM:从几何到语义
传统 SLAM 只构建几何地图——知道「这里有一堵墙」「那里有一个障碍物」,但不知道「这堵墙是什么颜色」「那个障碍物是椅子还是桌子」。
但具身机器人要完成复杂任务(如「把桌子上的红色杯子拿给我」),不仅需要知道环境的几何结构,还需要知道环境中每个物体的语义类别、位置、属性。这就是语义 SLAM(Semantic SLAM)。
语义 SLAM 在传统几何 SLAM 的基础上,增加了语义理解模块:
- 用语义分割网络对每一帧图像进行像素级语义标注
- 将语义信息与几何信息融合,构建「语义地图」
- 语义地图不仅知道「那里有个物体」,还知道「那是一把椅子,在桌子旁边」
语义地图是 VLA 模型的重要输入——VLA 模型需要知道环境中有哪些物体、在哪里,才能根据语言指令生成正确的动作。
5.4 SLAM 与 VLA 的协同
在具身智能系统中,SLAM 和 VLA 不是孤立的两个模块,而是紧密协同的:
- SLAM 为 VLA 提供空间认知:SLAM 构建的地图(尤其是语义地图)告诉 VLA 模型「环境中有什么、在哪里」,VLA 模型基于这些信息进行任务规划和动作生成
- VLA 为 SLAM 提供任务引导:VLA 模型根据任务需求,可以引导 SLAM 重点关注任务相关的区域(如「我要去拿杯子,SLAM 请重点关注桌子区域的建图」)
- 两者共享感知输入:摄像头图像同时输入 SLAM(用于定位建图)和 VLA(用于语义理解和动作生成),避免重复计算
未来的趋势是 SLAM 和 VLA 的深度融合——不再是两个独立模块,而是一个统一的「空间认知与动作生成」模型,同时完成定位、建图、语义理解、任务规划和动作生成。
六、总结
SLAM 是移动机器人和具身智能的「空间认知基础」,它让机器人能够回答「我在哪」和「周围有什么」这两个基本问题。
核心要点回顾:
- 基本原理:SLAM 同时求解定位和建图这两个相互依赖的问题,通过概率方法和迭代优化逐步逼近最优解
- 基本流程:前端(帧间匹配/里程计)→ 后端(位姿优化/全局一致性)→ 回环检测(消除累积漂移)→ 地图构建(栅格/点云/语义)
- 两条技术路线:vSLAM(视觉,成本低、信息丰富、受光照影响)和 Lidar SLAM(激光,精度高、不受光照影响、成本高),各有适用场景
- 多传感器融合:VIO(视觉+IMU)和 LIO(激光+IMU)是目前的主流方案,紧耦合融合精度更高,但传感器标定和时间同步是工程难点
- 具身机器人的特殊挑战:动态环境、复杂运动干扰、语义 SLAM、SLAM 与 VLA 协同,是具身智能对 SLAM 技术提出的新要求
SLAM 是一个已经发展了三十多年的成熟领域,但在具身智能时代,它正在经历新的变革——从纯几何到语义、从单传感器到多模态融合、从独立模块到与大模型深度协同。理解 SLAM 的基本原理和工程实践,是做好具身机器人落地的必备基础。
关于作者: 越微智能(Yuewell)专注具身智能与工业 AI 视觉落地,基于自研 VLA 多模态大模型,提供全品牌机器人二次开发(适配宇树/优必选/智元/傅利叶)与工业级视觉算法定制,支持从算法、硬件到产线实机部署的全栈交付。
下一篇预告: 《Sim-to-Real 全链路:物理引擎、合成数据与领域随机化》,我们将拆解如何让机器人在虚拟世界中「训练一万次」,然后安全地迁移到真实世界,敬请关注。