简介
GenManip 使用流水线式的数据生成流程,本章节将简要介绍数据生成的整体过程和核心理念。
数据生成的组成部分
Section titled “数据生成的组成部分”按照 GenManip 的设计,数据生成主要包含以下几个核心要素:
- 机械臂:用于执行具体任务操作的机械臂类型。
- 物品集合:场景中用于操作或作为背景的物品集合。
- 初始布局:物体在初始状态下的相对位置和朝向,可用 Scene Graph 或具体数值描述。
- 目标布局:在任务执行后期望达到的物体布局。本版本暂不考虑过程中动态变化的布局(如依次将物品放置到不同位置)。
- 动作生成:根据上述信息生成完成任务所需的具体动作。动作生成可以通过最优的 General Action Generation(Oracle Script 方案) 实现(动作路径接近最优),也可以采用更为硬编码的方式,或基于 RL(本版本暂不支持 RL)。
在此基础上,GenManip 对上述要素进行了封装与自动化管理,使用户无需关心实现细节,只需通过 Config 配置文件 即可轻松完成数据生成。具体来说:
- 机械臂:支持自动配置机械臂,确保物理正确性,可指定初始关节位置(Joint Position)并对位置与旋转进行随机化。
- 物品集合:支持自动管理,从已导入场景中直接操作物品,或指定某三个文件夹中的所有物品作为操作物体、容器及背景物体。背景物体需包含五个不同细粒度的版本以支持 scaling up。
- 初始布局:支持多种粒度的布局配置,可使用 Scene Graph 输入,或在指定范围内随机化。例如:物体 A 固定在某个位置,物体 B 位于 A 的右侧,物体 C 在整个桌面范围内随机出现。
- 目标布局:支持简单的 Scene Graph 作为目标布局输入。
- 动作生成:支持自动解析 Pick-and-Place 任务,进而实现多粒度的 scaling up,并支持无限扩展的 长时间序列(long-horizon)任务生成。未来版本将支持通用的 1-DoF articulation 操作数据生成。同时也支持退化为硬编码方案,以便生成更适合单一模型收敛的数据。
- 随机化:在此基础上,支持贴图、光照、相机位置等多方面的随机化。相机参数可实现与真实设备的对齐(alignment)。
数据生成与资产管理
Section titled “数据生成与资产管理”基于仿真的数据生成与资产管理密不可分。在 GenManip 中,我们规定所有的资产(assets)统一管理在 saved/assets 文件夹中,而生成的数据则保存在 saved/demonstrations 文件夹下。所有路径均使用相对路径,以便在其他项目中便捷引用这些文件。如果你希望将这些文件存储在其他位置,可以使用 ln -s 创建软链接。
在仿真流程中,我们将数据生成过程划分为 planning 阶段 和 rendering 阶段:
- 在 planning 阶段,程序在随机化场景后生成动作,但不会渲染图像;
- 在 rendering 阶段,程序根据 planning 阶段保存的全部状态信息,逐时刻复原状态并进行渲染。
这种两阶段设计可以在不增加额外时间开销的前提下,有效避免由于机械臂在 planning 阶段未成功完成任务而导致的渲染时间浪费。