CVPR 2020 · 机器人仿真

SAPIEN: A SimulAted Part-based Interactive ENvironment

首个支持大规模关节体的物理仿真环境,为机器人感知与交互研究提供基础设施
Fanbo Xiang, Yuzhe Qin, Kaichun Mo, Yikuan Xia, Hao Zhu, Fangchen Liu, Minghua Liu, Hanxiao Jiang, Yifu Yuan, He Wang, Li Yi, Angel X. Chang, Leonidas J. Guibas, Hao Su  ·  UC San Diego / Stanford / Simon Fraser / Google Research / UC Los Angeles

SAPIEN 是一个真实物理感知的仿真平台,集成了 46 个物体大类、14,068 个关节体模型(PartNet-Mobility 数据集),提供完整的 PhysX 物理仿真、ROS 接口以及 Python API,支持机器人感知(部件检测、运动属性估计)和交互(启发式控制、强化学习)研究。

CVPR 2020 Physics Simulation Articulated Objects arXiv:2003.08515 Project Page
机器人仿真 关节体 PartNet-Mobility 部件感知 articulated objects robotic simulation part segmentation PhysX 强化学习 物体操作

01 动机

构建家庭辅助机器人一直是视觉与机器人领域的核心追求。机器人要完成开冰箱、拿取物品等日常任务,就必须能够感知并操作具有可动部件的关节体(如门、抽屉、水龙头)。然而现有仿真环境在物理真实性、关节体规模和向真实机器人的迁移能力上均存在明显不足。

"We take one step further in constructing an environment that supports household tasks for training robot learning algorithm. Our work, SAPIEN, is a realistic and physics-rich simulated environment that hosts a large-scale set for articulated objects."
SAPIEN robot-object interaction
图 1. SAPIEN 中的机器人-物体交互示例。上方为整体场景的光线追踪渲染,下方展示机器人摄像头视角输出:RGB 图像、表面法线、深度图以及运动部件语义分割图——机器人正在学习操作一台洗碗机。
46关节体物体大类
14,068PartNet-Mobility 模型数
2,346带运动属性标注的模型
~5000Hz仿真器最高运行频率

为什么需要 SAPIEN?

现有仿真环境(OpenAI Gym、RLBench、DeepMind Control Suite 等)普遍存在以下问题:

如表 1 所示,与 Shape2Motion、RPM-Net、Hu et al. 等已有部件数据集相比,SAPIEN 以 46 类、2,346 个模型(14,068 个可动部件)显著领先,且提供丰富的纹理和真实渲染效果。

02 方法

SAPIEN 围绕三个核心模块构建:SAPIEN Engine(基于 PhysX 的物理仿真)、SAPIEN Renderer(支持 OpenGL、光线追踪的渲染器)和 SAPIEN Asset(PartNet-Mobility 数据集及机器人模型库)。三者通过统一框架集成,提供 Python API 和 ROS 接口。

SAPIEN Simulator Overview
图 2. SAPIEN 仿真器总览。左侧为 SAPIEN Renderer,接受场景信息,输出自定义着色和场景信息(RGB-D 及语义分割)。中间的 SAPIEN Engine 集成了 PhysX 物理仿真和 ROS 控制接口,支持多种机器人动作与功能。右侧的 SAPIEN Asset 包含大规模的 PartNet-Mobility 数据集,提供部件级可仿真模型。

SAPIEN Engine — 物理仿真核心

SAPIEN 使用开源的 Nvidia PhysX 4.1 提供精确的关节体物理仿真,支持机器人操作系统(ROS)。提供三种关节体类型:kinematic joint system(运动学关节,提供运动对象约束)、dynamic joint system(动态关节,模拟受力变化)以及 PhysX articulation(关节铰链)。仿真器可在单核上以约 5000Hz 运行,使用 OpenGL 渲染约 700Hz,支持同步与异步两种运行模式,后者允许仿真与客户端算法独立运行。

SAPIEN Renderer — 多模态渲染

SAPIEN Renderer 支持 OpenGL 4.5 和 GLSL,提供 RGB 图像、深度图、法线图以及语义分割图的同步输出。还集成了基于 OmniNavi diffuse model 的 GGX specular model,并通过将 OpenGL 替换为 Nvidia OptiX 光线追踪引擎,以较低渲染速率(约 1 帧/步)生成高质量照片真实感图像(见图 1 上方)。

PartNet-Mobility 数据集 — 大规模关节体资产

SAPIEN Asset 提供 PartNet-Mobility 数据集:涵盖 46 个物体大类的 2,346 个三维交互模型,每个模型均标注了部件级关节(运动类型:平移、转动)和关节极限。模型使用 URDF 格式描述,支持 PhysX 物理模拟;接触采用网格分解方案,确保在仿真中精确处理碰撞。针对每个可动部件,还提供了运动限制的相对位置标注(作为 part states),以及针对螺钉等特殊运动的处理(combined hinge+slider = screw)。

SAPIEN Enables Many Robotic Interaction Tasks
图 3. SAPIEN 支持的多样机器人交互任务示例(从左至右):水龙头操作(faucet manipulation)、物体抓取(object fetching)、椅子折叠(chair folding)、物品放置(object placing)。每列展示任务的初始状态、中间过程与目标状态。

机器人接口与控制

SAPIEN 通过 ROS 接口提供传感器数据、控制指令和运动规划能力。在最低层,力和力矩可直接作用于关节,类似 OpenAI Gym;ROS 控制器提供关节空间和笛卡尔坐标空间控制;高层提供基于 MoveIt! 的轨迹规划和逆运动学求解。客户端 API 统一了接口,使仿真机器人与真实机器人使用完全相同的 ROS API,无需额外适配即可部署。

03 实验

论文在两类核心视觉任务上评估 SAPIEN:Movable Part Detection(可动部件检测)和 Motion Attributes Estimation(运动属性估计),并展示两类机器人交互任务(door/drawer 开合)的启发式方法与强化学习结果。

任务一:可动部件检测

使用 Mask R-CNN(以 2D RGB 图像为输入)和 PartNet-InsSeg(以 3D RGB-D partial scans 为输入)两种算法在 PartNet-Mobility 数据集上评估。数据集:46 个类别共 2,346 个物体,使用 75%(1,772 个形状)训练、25%(574 个形状)测试;从随机视角采样 20 张 512×512 图像,在仿真中用简单照明渲染(RGB、深度、法线、语义分割图)。评估指标为 per-part-category Average Precision(AP)及全类平均 mAP。

算法输入CabinetTableFaucetAll mAP
Mask R-CNN2D RGB 62.0 / 94.2 / 66.4 / 27.7 54.3 / 88.0 / 3.4 / 6.3 / 0.0 52.5 / 47.9 / 99.7 / 54.4 / 67.5 53.0
PartNet-InsSegPC (XYZ) 20.6 / 65.9 / 33.1 / 9.8 15.7 / 71.3 / 1.7 / 1.0 60.2 / 58.8 / 99.4 / 42.7 43.8
PartNet-InsSegPC (XYZRGB) 17.6 / 64.3 / 23.6 / 5.0 16.4 / 8.1 / 8.1 / 1.3 / 2.1 / 1.0 29.0 / 64.1 / 78.0 / 42.0 / 63.5 37.1

结果表明:两种方法在检测小型可动部件(如桌脚轮 table wheel 和桌子脚轮 table caster)上表现较差;对具有相对均衡尺寸分布的物体类别(如风扇 fan 和水龙头 faucet)效果更好。

Movable Part Detection Results
图 4. 可动部件检测定性结果。左列:Mask R-CNN 检测结果(每个边界框代表检测到的可动部件);中间与右列:PartNet-InsSeg 的结果(含点云实例分割)及 ground truth(不同颜色代表不同部件)。

任务二:运动属性估计

针对关节体的运动属性估计任务,论文考虑两类刚性运动:3D rotation(3D 旋转)和 3D translation(3D 平移)。对平移运动用 3 维向量表示方向;对旋转运动用两个 3 维向量分别表示旋转轴方向和轴上一点的相对位置。评估指标包括:方向差(direction diff)、旋转轴起点差(origin diff)、以及旋转角误差与平移距离误差。

SettingDir (°)↓Orig (cm)↓Rot (°)↓Trans (cm)↓
2D acc, 2D acc7.9476.6243.538.24
2D acc, 5 acc5.4859.3534.057.48
5 acc, 5 acc3.1336.8519.996.41
5 acc, 5 acc + depth2.8435.0918.236.42

实验表明加入深度信息对方向估计和旋转轴定位有明显帮助;增加视角数量(从 2 到 5)显著提升各项指标。

机器人交互任务

论文在 SAPIEN 中演示了两类机器人操作任务的执行:

04 局限性

Note: 论文未设立独立的 Limitations 章节。以下局限性部分为作者在论文中明确提及(stated),部分为从设计中推断(inferred)。
关节体物理仿真的精度权衡(stated)

论文指出,"it is still infeasible to simulate real-world physics exactly, any physical simulator needs to decide the level-of-details and accuracy it operates on." 现有物理仿真无法完全复现真实世界的物理特性,特别是软体和流体(SAPIEN 仅支持刚体关节体)。

小型部件检测性能较差(stated)

论文在实验结果中明确指出:"both methods perform poorly on detecting small movable parts (e.g., table wheel and table caster)",这一现象在真实机器人操作中尤为关键,需要更好的算法设计。

仅支持刚体关节体(inferred from design)

SAPIEN 的 PartNet-Mobility 数据集仅覆盖家用场景中的刚性可动部件(门、抽屉、水龙头等),不支持软体变形物体(如布料、果蔬)的仿真。这限制了其在更广泛操作任务(如食品处理、衣物整理)中的应用。

Sim-to-Real 迁移差距(inferred from design)

尽管 SAPIEN 提供光线追踪渲染和 ROS 接口,但仿真图像与真实摄像头图像之间仍存在外观差距(domain gap),可能影响模型在真实机器人上的迁移效果,需要额外的 domain adaptation 方法。