1. 课程导入

欢迎进入《机器人3D场景图建模工程》课程。本课程面向希望把机器人感知、地图构建与任务决策真正打通的工程师与研究者。我们不会停留在“点云可视化”或“建一张漂亮地图”的层面,而是围绕一个核心问题展开:机器人如何把三维空间中的几何、语义与拓扑关系组织成可计算、可查询、可推理的场景图,并让这张图服务于导航、操作与交互。

学习目标可以概括为四句话:看得见三维结构,分得清物体语义,连得起空间关系,用得上任务决策。也就是说,从原始传感器数据出发,经过几何建图、语义标注、关系抽取与图结构优化,最终得到一张机器人可理解、可维护、可扩展的3D场景图。

一、核心概念:从“地图”到“场景图”

传统机器人地图通常回答“哪里能走、哪里是障碍”。而3D场景图回答的是更丰富的问题:“桌子在厨房里,杯子在桌子上,机械臂可以从左侧接近杯子,厨房与客厅通过走廊相连。”这背后涉及几个关键概念。

  • 三维几何层:点云、网格、体素、TSDF、八叉树等,描述空间的形状与占据状态。
  • 语义层:对区域、物体、部件进行分类与实例分割,如“墙、地板、门、椅子、杯子”。
  • 拓扑层:用节点和边表达房间、走廊、物体之间的连通、包含、支撑、邻近关系。
  • 属性与位姿:每个节点带有位置、朝向、尺寸、置信度、时间戳等参数。
  • 图查询与推理:支持“找到所有可抓取杯子”“从当前位置到冰箱的最短路径”等查询。

因此,3D场景图不是单一算法,而是一条工程流水线:传感器输入 → 几何重建 → 语义理解 → 关系抽取 → 图优化 → 任务接口。

二、整体框架:一条可落地的工程链路

下图给出本课程贯穿始终的整体框架。它把数据流、模块与输出结果放在同一张图中,便于你建立全局视角。

机器人3D场景图建模工程:数据流与模块关系 传感器输入 RGB-D / LiDAR / IMU 里程计 / 标定参数 几何重建 点云配准 / TSDF融合 网格 / 体素 / 八叉树 语义理解 目标检测 / 实例分割 区域分类 / 部件识别 关系抽取 包含 / 支撑 / 邻近 连通 / 可操作关系 图结构优化与一致性维护 节点合并 / 边权重更新 / 回环校正 / 时序融合 场景图数据库 节点 / 边 / 属性 / 位姿 支持查询与更新 任务接口 导航 / 抓取 / 交互 路径规划 / 目标检索 评估与迭代 精度 / 召回 / 延迟 鲁棒性 / 可扩展性

这条链路中,几何重建解决“空间是什么样”,语义理解解决“空间里有什么”,关系抽取解决“它们如何关联”,图优化解决“如何保持一致”,任务接口解决“机器人怎么用”。任何一环薄弱,都会导致场景图在真实任务中不可用。

三、典型应用场景

3D场景图的价值在具体任务中体现得最清楚。以下是本课程会反复引用的四类场景。

应用场景 核心需求 场景图提供的能力
室内服务机器人 跨房间取物、避障、人机交互 房间拓扑、物体位置、可通行区域查询
机械臂抓取 识别目标、判断支撑关系、规划抓取位姿 物体节点、支撑边、可操作区域与位姿
仓储物流 货架、托盘、通道的语义理解与调度 货架层级、通道连通、动态更新
多机器人协同 共享地图、任务分配、一致性维护 分布式图结构、节点合并与冲突消解

四、方法流程:从数据到可查询图

为了让工程实现有章可循,我们把建模流程拆成六个步骤。每一步都有明确的输入、输出与验收标准。

  1. 数据采集与标定:同步RGB-D、LiDAR、IMU与里程计,完成内外参标定。
  2. 几何重建:使用SLAM或离线重建得到点云/网格,建立坐标系与尺度。
  3. 语义标注:对区域和物体进行检测、分割与分类,赋予语义标签。
  4. 关系抽取:根据几何与语义计算包含、支撑、邻近、连通等边。
  5. 图优化:合并重复节点、更新边权重、处理回环与时序变化。
  6. 接口封装:提供查询API、可视化工具与任务调用接口。

下面是一段典型的场景图节点与边的配置示例,用于说明工程中如何组织数据。

{
  "nodes": [
    {"id": "room_kitchen", "type": "room", "pose": [2.1, 0.0, 1.5], "label": "厨房"},
    {"id": "table_01", "type": "object", "pose": [2.4, 0.0, 1.8], "label": "餐桌"},
    {"id": "cup_03", "type": "object", "pose": [2.45, 0.75, 1.82], "label": "杯子"}
  ],
  "edges": [
    {"source": "room_kitchen", "target": "table_01", "relation": "contains"},
    {"source": "table_01", "target": "cup_03", "relation": "supports"},
    {"source": "cup_03", "target": "table_01", "relation": "on_top_of"}
  ]
}
建议在项目初期就定义好节点类型、边类型与属性字段,避免后期因语义不一致导致图查询失败。场景图的“ schema ”设计,往往比单个算法更影响工程成败。

五、常见误区与复盘

初学者最容易陷入三个误区。第一,把场景图当成“带标签的点云”,只做可视化,不做关系抽取,导致无法支持任务查询。第二,忽视坐标系与尺度一致性,不同传感器或不同时间的数据直接叠加,造成节点位置漂移。第三,只关注静态建图,忽略动态更新,机器人运行一段时间后图就“过期”了。

复盘时请重点检查:节点是否可唯一标识?边是否有方向与权重?查询是否能在毫秒级返回?更新是否支持增量?如果这四个问题有任何一个答不上来,说明场景图还没有达到工程可用标准。