枢纽
机器人Franka/UR5e/Fetch
数据集ManiSkill2
物理感知
输入模态vision

ManiSkill2:把「操作基准」做成一个能换控制器的多面体

Jiayuan Gu, Fanbo Xiang, Xuanlin Li, Zhan Ling 等(UCSD + 清华)。ICLR 2023 · arXiv:2302.04659。 项目页 · 全开源 · imitationbenchmarkSAPIEN

🧠 一句话心智模型:把 4 类原本各做各的机器人操作任务——软体、精密装配、6-DoF 抓放、铰接物体——塞进同一个 Gym 接口,并让你能一键换控制器(关节空间 / 笛卡尔 / 增量)。它不是「再做一个仿真器」,而是把操作研究的跨任务、跨资产、跨动作空间比较变成可能。

🎯 为什么重要:操作研究的「基础设施断层」

2022 年前你若想做「泛化操作」,会发现一个尴尬现实:每个基准都故意绕开了一个真问题

核心痛点:要么资产变化太少(RoboSuite / MetaWorld 几个固定物体),要么抓取是被抽象掉的「魔法 grasp」(Habitat / TEACh),要么只支持一类操作(4-DoF 拿取)。结果:算法之间的对比几乎不可重复,研究者为了把方法跑在新场景上要花数月改环境。

ManiSkill2 的回答是「都给」——同一个接口里塞下 4 大类、20 个任务族、2000+ 物体、4M 帧演示,并且原生支持刚体 + 软体的全动力学仿真:

ManiSkill2 统一 Gym 接口 · 全动力学 软体操作 (6 任务) Fill / Hang / Excavate Pour / Pinch / Write MPM 实时软体仿真 精密装配 (3 任务) PegInsertionSide (3mm) PlugCharger (0.5mm) 真实物理缝隙,非视觉标记 6-DoF 抓放 (5 任务) PickCube / StackCube PickSingleYCB/EGAD YCB + EGAD 多物体泛化 铰接 + 移动 (6 任务) OpenCabinet/Drawer TurnFaucet / PushChair PartNet-Mobility 铰接资产
图 1:ManiSkill2 的「四象限」——一个接口承载 4 类差异极大的操作,每类都对应真实世界难题。

💡 核心思想:把基准做成「可换控制器」的可组合积木

论文最被引用的不是任务本身,而是几个让基准「真正可用」的系统设计。最关键的一条是动作空间可转换

TAMP 演示生成 用 joint position 控制器生成轨迹 动作空间转换器 把同一轨迹重投影到 任意目标控制器: joint / delta-joint / delta-EE / PD RL 用 delta-EE IL 用 joint pos 软体用 delta-joint 同一份演示 → 适配任意算法偏好的动作空间
图 2:动作空间转换。TAMP 生成的演示只绑定一种控制器;ManiSkill2 把它的轨迹重新解释到任意目标控制器,让 RL / IL 算法都能用同一份数据。
🔮 直觉:为什么「换控制器」这么重要?
控制器决定了策略的动作空间——而动作空间直接决定 RL 的探索效率和 IL 的拟合难度。论文 §5.2 给出实证:在 PickSingleYCB 上,把 delta-EE 换成 delta-joint,成功率从 0.51 掉到 0.22。同一个任务、同一份演示,控制器一换,结果差 2 倍多。所以「不能换控制器的基准 = 把动作空间的设计选择强加给所有用户」。

🛠️ 四个让基准真跑通的工程关键

设计心智为什么必要
① 实时 MPM 软体仿真用 Nvidia Warp + CUDA 自己写 MPM 求解器,并实现刚-柔 2-way coupling此前 PlasticineLab 不能耦合机器人,SoftGym 不能仿真弹塑性。ManiSkill2 是第一个实时刚性-MPM 耦合的环境
② 异步渲染服务器渲染从环境进程剥离,多个环境共享同一份网格/纹理74 个 YCB 物体的场景,Habitat 2.0 内存随环境数线性增长,ManiSkill2 几乎不增长
③ 多控制器 + 动作空间转换同一轨迹可在 joint/delta-joint/delta-EE 之间重投影研究者拿到一份 TAMP 演示,可立刻用到任意动作空间的算法上,不必重新生成数据
④ 统一评估协议统一接口、统一指标(seen/unseen 资产、initial states)、云端评测过去「A 方法在 A 环境、B 方法在 B 环境」无法比较;现在可在同一排行榜直接对比

📊 关键结果:速度 + 「_baseline 都搞不定」的事实

维度数字(来自原文)
规模20 个任务族 · 2000+ 物体模型 · 4M+ 演示帧
采样速度(rigid-body, PickCube, Nature CNN)~2000 FPS(1 GPU + 16 CPU 工作站)
内存共享74 YCB 物体的 PickClutterYCB,多环境共享网格/纹理;Habitat 2.0 在同设置下显存线性增长
BC 成功率(Point Cloud / RGBD)PickCube 0.22 / 0.01 · Fill 0.45 / 0.62 · AssemblingKits 0.00 · PegInsertionSide 0.00
DAPG+PPO,25M 步(Point Cloud / RGBD)PickCube 0.94 / 0.91 · StackCube 0.95 / 0.87 · PickSingleYCB 0.51 / 0.18 · PegInsertionSide 0.01 · AssemblingKits 0.00
控制器消融PickSingleYCB:delta-EE 0.51 → delta-joint 0.22
Sim2RealPickCube 视觉策略:仿真 91.0% → 真机 60.0%(50 次实测)
关键洞察:作者故意把 baseline 跑得很差——这恰恰是基准的价值。0.01 的精密装配0.00 的 Pinch/Write 不是说论文失败,而是说「这些任务目前社区还做不好」,把后面 3 年的研究议程(包括 DexArt、RLBench、ManiSkill3)划出来了。

🌐 在领域中的位置

MetaWorld / RoboSuite(小资产变化) ManiSkill1(铰接物体 + SAPIEN) ManiSkill2(四象限 + 软体 + 换控制器)⭐ ManiSkill3(2024,更大资产 + 真机标定) / RoboCasa / RLBench2

ManiSkill2 是操作基准「从单一任务走向系统化」的分水岭。它确立的几个习惯——多控制器、统一接口、软体仿真、TPN/CGN/BC/PPO 全跑一遍——成了后续基准的标配。同时它把 4M 演示帧开放出来,成了后来 diffusion policy / 3D policy 等方法在仿真里复现的公共数据底座。

❓ 常见误区

ManiSkill2 是「一个仿真器」吗?

不是。它建立在 SAPIEN(刚体)+ 自研 Warp-MPM(软体)之上,本身是一套任务环境 + 统一接口 + 评估协议。它的贡献是「把分散的资产和任务组织成可比的标准件」,而不是再写一个物理引擎。

2000 FPS 是怎么做到的?是 Isaac Gym 那种全 GPU 仿真吗?

不是。它是多进程 Python + 异步 RPC 渲染服务器的折中方案。Isaac Gym 全 GPU 快但渲染弱、加资产难;EnvPool 快但要写 C++。ManiSkill2 选了「Python 写环境 + 渲染独立服务化」,在可定制性和速度之间取平衡,且把网格/纹理在多环境间共享。

BC 在 PickCube 上只有 0.22,是不是任务太难?

相反,任务不难,是 BC 太弱——同样的 PickCube,DAPG+PPO 能到 0.94。0.22 反映的是「行为克隆对初始状态分布、对误差累积的脆弱」。这正是基准想暴露的:不同的算法在不同任务上能力差异巨大,单看一个数字会被误导。

软体仿真(Pinch/Write)真的能用吗?

能用,但训练难度极高。论文 §5.3 把 Pinch 的运动规划轨迹同步在仿真和真机上执行,最终 plasticine 形状对得上——证明 MPM 仿真精度足够。但 BC/RL 学习层面还是 0.00,说明感知 → 软体控制的策略学习问题在 2023 年仍未解决。