3.3 语义 SLAM 与开放词汇场景理解 一个只有点云和位姿的地图对机器人来说意义有限。它需要知道「这是桌子、那是椅子、杯子在桌沿」——这就是语义 SLAM:把几何地图升级为有含义的环境表征。 3.3.1 为什么需要语义 SLAM 纯几何 SLAM 解决了「我在哪、墙在哪」的问题,但机器人执行任务还需要: 物体级信息:「把那个红色杯子拿给我」——机器人得知道地图里哪些点是杯子。 结构化关系:「把杯子放到桌上」——机器人得知道杯子和桌子的相对位置。 属性标签:「不要碰易碎的」——机器人得知道物体类别甚至属性。 开放词汇查询:用户用任意自然语言描述目标,机器人要在地图里定位。 这就引出了从几何地图到语义地图的演进: 3.3.
一个只有点云和位姿的地图对机器人来说意义有限。它需要知道「这是桌子、那是椅子、杯子在桌沿」——这就是语义 SLAM:把几何地图升级为有含义的环境表征。
纯几何 SLAM 解决了「我在哪、墙在哪」的问题,但机器人执行任务还需要:
这就引出了从几何地图到语义地图的演进:
点云地图 → 网格地图(Occupancy Grid) → 物体级地图 → 3D 场景图 → 开放词汇场景表征 几何 占有/空闲 离散物体实例 关系图结构 任意自然语言查询
先回顾几何地图的三种基础表征(第 2 章已部分介绍):
| 表征 | 描述 | 适用 |
|---|---|---|
| 点云地图 | 一堆 3D 点 | 视觉 SLAM 输出,用于定位 |
| 占据网格(Occupancy Grid) | 2D/3D 网格每格存占有概率 | 导航避障,路径规划 |
| TSDF / ESDF | 截断/欧氏距离场 | 稠密建图、碰撞检测 |
这三种都是纯几何的——它们只知道空间哪里有东西,不知道是什么。语义 SLAM 在其之上叠加语义层。
语义 SLAM 在传统 SLAM 三段式架构上增加语义模块:
关键改动:
语义不只是给地图加标签,它反过来帮助几何 SLAM:
物体级 SLAM(Object-oriented SLAM / Object SLAM) 把每个物体作为地图的一等公民。代表方法:
| 方法 | 思路 | 输出 |
|---|---|---|
| CubeSLAM | 用 3D 立方体拟合物体,物体作为路标 | 物体立方体 + 位姿 |
| QuadricSLAM | 用椭圆锥(quadric)表示物体 | 椭球体地图 |
| DSP-SLAM | 深度语义 + 物体因子 | 稠密点云 + 物体实例 |
| ObjectFusion | 物体先验形状 + 重建 | 形状补全的物体模型 |
| vMAP | 用神经辐射场表示每个物体 | 高保真物体 NeRF |
物体级 SLAM 让机器人地图从「一堆点」变成「一堆物体」,这是从几何理解走向任务理解的关键一步。
更进一步,3D 场景图(3D Scene Graph) 把环境组织成层次化的关系图:
楼层 Floor └── 房间 Room └── 物体 Object(桌、椅、杯、电器) └── 部分 Part(桌腿、抽屉) └── 关系 Relation(杯子在桌上、椅子靠近桌)
场景图的节点是实体(房间、物体、部分),边是关系(on、near、in、behind 等)。MIT 的 Kimera 系统、ETH 的 Hydra 系统是 3D 场景图的代表作。
场景图的价值在于:
传统语义 SLAM 用固定类别表(COCO 80 类、ADE20K 150 类)训练检测器,机器人只能识别训练时见过的物体。开放词汇(Open-Vocabulary) 场景理解打破这一限制:
| 方法 | 思路 | 代表 |
|---|---|---|
| CLIP-Fields | 用 CLIP 把场景点云编码到文本对齐空间 | 任意文本查询 3D 位置 |
| LERF / LangSplat | NeRF/3DGS + 语言特征嵌入 | 在 3D 场景中点对查询 |
| ConceptFusion | 把 CLIP 特征融合进 3D 重建 | 开放词汇物体定位 |
| ConceptGraphs | 物体级 3D 场景图 + 开放词汇 | 开放词汇场景图 |
| OpenMask3D | SAM 分割 + CLIP 特征 | 任意物体实例查询 |
以 ConceptGraphs 为例:
这让机器人能响应任意自然语言指令定位物体,无需为每个新物体训练检测器。
💡 VLA 的关键支撑:第 5 章 VLA 模型之所以能用自然语言指令操作机器人,部分原因就是底层有开放词汇场景理解——机器人能从语言指令定位到 3D 物体。两者构成「大脑(VLA)+ 空间记忆(语义 SLAM)」的协作。
把语义特征嵌入 NeRF 或 3DGS 表征是当前热门方向:
这些方法的共同价值:让 3D 场景表征同时具备几何、外观、语义三重信息,成为下一代机器人「空间记忆」的候选。
| 挑战 | 描述 | 当前应对 |
|---|---|---|
| 算力消耗 | 实时跑 SAM/CLIP 是沉重负担 | 模型蒸馏、量化、关键帧策略 |
| 跨视角一致性 | 多帧看到的同一物体语义可能矛盾 | 投票、置信度加权 |
| 物体边界不准 | 分割边界漂移影响 3D 物体位置 | 多视角融合、精细化 |
| 开放词汇精度 | 罕见物体 CLIP 识别率低 | 检索增强、上下文提示 |
| 场景图构建错误 | 关系判断(on/near/in)易错 | 物理约束 + 大模型推理 |
⚠️ 当前痛点:语义 SLAM 在学术 demo 上效果惊艳,但工业落地仍受限于实时语义模型的算力消耗。一个跑 SAM + CLIP + 因子图优化的系统,单 GPU 实时运行已是挑战,更别说边缘部署。这是为什么生产系统常用「轻量检测器 + 关键帧策略 + 离线语义增强」的折中方案。
把所有概念综合起来,一个面向具身智能的语义地图应该包含:
| 层 | 内容 | 用途 |
|---|---|---|
| 几何层 | 点云、TSDF、占据网格 | 导航、避障、定位 |
| 物体层 | 物体实例(位置、形状、类别) | 操作目标定位 |
| 关系层 | 3D 场景图(on/near/in) | 任务规划、空间推理 |
| 语义层 | 开放词汇特征、属性(易碎、可食用) | 自然语言交互 |
| 可微层 | NeRF/3DGS 表征 | 可微渲染、新视角合成 |
| 持久层 | 多会话地图、生命周期管理 | 长期使用 |
这种多层语义地图是机器人理解环境的终极目标,也是当前研究最活跃的方向之一。
下一节《3.4 长程自主与环境表征》将讨论机器人长时间运行时如何维护这些地图——重定位、地图持久化、生命周期管理。