1. 课程导入
欢迎进入《机器人3D场景图建模工程》课程。本课程面向希望把机器人感知、地图构建与任务决策真正打通的工程师与研究者。我们不会停留在“点云可视化”或“建一张漂亮地图”的层面,而是围绕一个核心问题展开:机器人如何把三维空间中的几何、语义与拓扑关系组织成可计算、可查询、可推理的场景图,并让这张图服务于导航、操作与交互。
学习目标可以概括为四句话:看得见三维结构,分得清物体语义,连得起空间关系,用得上任务决策。也就是说,从原始传感器数据出发,经过几何建图、语义标注、关系抽取与图结构优化,最终得到一张机器人可理解、可维护、可扩展的3D场景图。
一、核心概念:从“地图”到“场景图”
传统机器人地图通常回答“哪里能走、哪里是障碍”。而3D场景图回答的是更丰富的问题:“桌子在厨房里,杯子在桌子上,机械臂可以从左侧接近杯子,厨房与客厅通过走廊相连。”这背后涉及几个关键概念。
- 三维几何层:点云、网格、体素、TSDF、八叉树等,描述空间的形状与占据状态。
- 语义层:对区域、物体、部件进行分类与实例分割,如“墙、地板、门、椅子、杯子”。
- 拓扑层:用节点和边表达房间、走廊、物体之间的连通、包含、支撑、邻近关系。
- 属性与位姿:每个节点带有位置、朝向、尺寸、置信度、时间戳等参数。
- 图查询与推理:支持“找到所有可抓取杯子”“从当前位置到冰箱的最短路径”等查询。
因此,3D场景图不是单一算法,而是一条工程流水线:传感器输入 → 几何重建 → 语义理解 → 关系抽取 → 图优化 → 任务接口。
二、整体框架:一条可落地的工程链路
下图给出本课程贯穿始终的整体框架。它把数据流、模块与输出结果放在同一张图中,便于你建立全局视角。
这条链路中,几何重建解决“空间是什么样”,语义理解解决“空间里有什么”,关系抽取解决“它们如何关联”,图优化解决“如何保持一致”,任务接口解决“机器人怎么用”。任何一环薄弱,都会导致场景图在真实任务中不可用。
三、典型应用场景
3D场景图的价值在具体任务中体现得最清楚。以下是本课程会反复引用的四类场景。
| 应用场景 | 核心需求 | 场景图提供的能力 |
|---|---|---|
| 室内服务机器人 | 跨房间取物、避障、人机交互 | 房间拓扑、物体位置、可通行区域查询 |
| 机械臂抓取 | 识别目标、判断支撑关系、规划抓取位姿 | 物体节点、支撑边、可操作区域与位姿 |
| 仓储物流 | 货架、托盘、通道的语义理解与调度 | 货架层级、通道连通、动态更新 |
| 多机器人协同 | 共享地图、任务分配、一致性维护 | 分布式图结构、节点合并与冲突消解 |
四、方法流程:从数据到可查询图
为了让工程实现有章可循,我们把建模流程拆成六个步骤。每一步都有明确的输入、输出与验收标准。
- 数据采集与标定:同步RGB-D、LiDAR、IMU与里程计,完成内外参标定。
- 几何重建:使用SLAM或离线重建得到点云/网格,建立坐标系与尺度。
- 语义标注:对区域和物体进行检测、分割与分类,赋予语义标签。
- 关系抽取:根据几何与语义计算包含、支撑、邻近、连通等边。
- 图优化:合并重复节点、更新边权重、处理回环与时序变化。
- 接口封装:提供查询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 ”设计,往往比单个算法更影响工程成败。
五、常见误区与复盘
初学者最容易陷入三个误区。第一,把场景图当成“带标签的点云”,只做可视化,不做关系抽取,导致无法支持任务查询。第二,忽视坐标系与尺度一致性,不同传感器或不同时间的数据直接叠加,造成节点位置漂移。第三,只关注静态建图,忽略动态更新,机器人运行一段时间后图就“过期”了。
复盘时请重点检查:节点是否可唯一标识?边是否有方向与权重?查询是否能在毫秒级返回?更新是否支持增量?如果这四个问题有任何一个答不上来,说明场景图还没有达到工程可用标准。