Bootstrap

MANISKILL2:可泛化操作技能的统一基准

23年2月来自UCSD和清华的论文“ManiSkill2: A Unified Benchmark for Generalizable Manipulation Skills”。

可泛化的操作技能是具身人工智能的基石之一,可用来处理长期而复杂的日常事务。然而,现有的基准测试大多由一套可模拟的环境组成,不足以推动前沿研究工作,因为它们缺乏目标级的拓扑和几何变化,不是基于完全动态模拟,或者缺乏对多种操作任务的原生支持。为此,提出 ManiSkill2,即下一代 SAPIEN ManiSkill 基准测试,以解决研究人员在使用可泛化操作技能基准测试时经常遇到的关键痛点。ManiSkill2 包含 20 个操作任务系列,拥有 2000 多个目标模型和 400 多万个演示帧,涵盖固定/移动基座、单臂/双臂和刚体/软体操作任务,输入数据由全动态引擎模拟。它定义一个统一的接口和评估协议,支持各种算法(例如经典的感知-规划-动作、RL、IL)、视觉观测(点云、RGBD)和控制器(例如动作类型和参数化)。此外,它还支持快速视觉输入学习算法,以便基于 CNN 的策略可以在常规工作站上使用 1 个 GPU 和 16 个进程以大约 2000 FPS 的速度收集样本。它实现渲染服务器基础架构,允许在所有环境中共享渲染资源,从而显着减少内存使用量。

开放了基准测试(模拟器、环境和基线)的所有代码 https://github.com/haosulab/ManiSkill2, 并举办面向跨学科研究人员的在线挑战赛:https://sapien.ucsd.edu/challenges/maniskill/2022/

掌握类似人类的操控技能,是具身人工智能的一个基本但具有挑战性的问题,它是视觉、学习和机器人技术的结合点。值得注意的是,一旦人类学会了操控一类目标,他们就能够在未见过的配置(例如初始姿势)下操控同一类别的未见过目标(例如,具有不同的外观和几何形状)。将这种与各种甚至未见过不同配置目标的交互能力称为可泛化的操控技能。可泛化的操控技能是具身人工智能的基石之一,可以用来处理长期和复杂的日常琐事(Ahn,2022;Gu,2022)。为了促进对可泛化操控技能的进一步跨学科和可重复研究,建立一个多功能的公共基准至关重要,该基准侧重于目标级拓扑和几何变化以及实际操控挑战。

ManiSkill2 包含 20 个任务系列的异构集合。任务系列表示一组具有相同目标但与不同资产和初始状态相关的任务变型。涵盖不同类型的操作任务:刚体/软体、固定/移动基座、单臂/双臂。如图所示:ManiSkill2 提供了一个统一、快速且易于访问的系统,其中包括精心策划的操作任务。

请添加图片描述

软体操控:ManiSkill2 实现 6 项软体操控任务,这些任务要求智体通过交互将软体移动或变形为指定的目标状态。

  1. 填充:将桶中的粘土填充到目标烧杯中;
  2. 悬挂:将面条挂在目标杆上;
  3. 挖掘:舀出一定量的粘土并将其举到目标高度;
  4. 倒水:将瓶中的水倒入目标烧杯中。最终液位应与烧杯上的红线相匹配。
  5. 捏:将橡皮泥从初始形状变形为目标形状;目标形状是通过随机捏合初始形状生成的,并以 4 个视图的 RGBD 图像或点云形式给出。
  6. 写:在粘土上写一个目标字符。目标字符以 2D 深度图形式给出。

这些任务的一个关键挑战是推理动作如何影响软体,例如估计位移量或变形。

精确的销-孔组装:销-孔组装是一项涉及接触的代表性机器人任务。包括一系列销-孔组装任务,这些任务要求智体将目标放入其相应的插槽中。与其他现有的组装任务相比,这些任务有两个明显的改进。首先,任务以毫米级的高精度(小间隙)为目标,这是大多数日常组装任务所要求的。其次,任务强调接触的插入过程,而不是仅仅测量位置或旋转误差。
1)PegInsertionSide:受 MetaWorld (Yu, 2020) 启发的单个销孔组装任务。它涉及智体拾起一个长方体形状的钉子并将其插入盒子上间隙为 3 毫米的孔中。只有插入一半钉子,任务才会成功,而之前工作中的对应任务只需要钉头接近孔的表面。
2) PlugCharger:受 RLBench (James, 2020) 启发的双钉孔组装任务,其中涉及智体拿起充电器并将其插入垂直插座。资产(充电器和插座上的孔)以现实的尺寸建模,允许 0.5 毫米的间隙,而先前工作中的对应物仅检查充电器与预定义位置的接近度,根本没有建模孔。
3) AssemblingKits:受 Transporter Networks (Zeng, 2020) 启发,此任务涉及智体拿起形状并将其插入板上的相应插槽中,总共有 5 个插槽。设计一种编程方式,可以在给定任何指定间隙(例如 0.8 毫米)的情况下在板上雕刻插槽,这样就可以生成任意数量有插槽物理逼真的板。请注意,先前工作环境中的插槽是视觉标记(marks),板上实际上没有孔。

通过任务和运动规划(TAMP)为上述任务生成演示。这表明,在模拟环境中构建可解决的精确钉孔装配任务是可行的。

固定 6 自由度拾取和放置:6 自由度拾取和放置目标是机器人技术中一个广泛研究的课题。核心是抓取姿势 (Mahler 2016);(Qin 2020);(Sundermeyer 2021)。在 ManiSkill2 中,提供拾取和放置任务的课程,这些任务都需要智体拾取一个目标并将其移动到一个目标,指定为一个 3D 位置。目标之间的不同拓扑和几何变化需要可泛化的抓取姿势预测。

  1. PickCube:拾起一个立方体并将其放置在指定的目标位置;
  2. StackCube:拾起一个立方体并将其放在另一个立方体的顶部。与 PickCube 不同,目标放置位置没有明确给出;相反,它需要从观察中推断出来。
  3. PickSingleYCB:从 YCB 拾取和放置目标 (Calli, 2015);
  4. PickSingleEGAD:从 EGAD 拾取和放置目标 (Morrison, 2020);
  5. PickClutterYCB:该任务类似于 PickSingleYCB,但单个场景中存在多个目标。目标物体由其表面上可见的 3D 点指定。

拾取和放置任务,故意设计得具有挑战性。例如,目标位置是在大型工作空间 (30 × 50 × 50 cm^3) 内随机选择的。它对在评分抓取姿势时,对不考虑运动学约束的感知-规划-动作流水线提出了挑战,因为某些高质量的抓取姿势可能无法由机器人实现。

铰接目标的移动/固定操作:从 ManiSkill 1 (Mu, 2021) 继承四个移动操作任务,分别是 PushChair、MoveBucket、OpenCabinetDoor 和 OpenCabinetDrawer。还添加一个固定操作任务 TurnFaucet,它使用固定臂打开各种几何形状和拓扑结构的水龙头。

除了上述任务之外,还有最后一项,AvoidObstacles,它测试固定臂的导航能力,在主动感知场景的同时避开空间中密集障碍物。

控制器的选择决定了动作空间。ManiSkill 2 支持多个控制器,例如关节位置、增量关节位置、增量末端执行器姿势等。除非另有说明,ManiSkill 2 中的控制器将输入动作,即所需配置(例如关节位置或末端执行器姿势),转换为驱动相应关节电机,实现所需动作的关节扭矩。例如,对关节位置、增量关节位置和增量末端执行器姿势控制器的输入动作,分别是所需的绝对关节位置、相对于当前关节位置的所需关节位置、以及相对于当前末端执行器姿势的所需 SE(3) 变换。

演示由一个控制器生成,并带有相关的动作空间。但是,研究人员可能会选择符合任务但与原始动作空间不同的动作空间。因此,要利用大规模演示,在重现演示中的运动学和动态过程的同时,将原始动作空间转换为许多不同的目标动作空间至关重要。考虑一对环境:一个是带有关节位置控制器的源环境,用于通过任务和运动规划(TAMP)生成演示;另一个是带有增量末端执行器姿势控制器的目标环境,用于模仿/强化学习应用。

ManiSkill2 有用于软体的新物理模拟器,与现有刚体模拟,二者存在动态相互作用。主要贡献包括:1)高效的 GPU MPM 模拟器;2)有效的双向动态耦合方法,用于支持软体模拟器与任何刚体模拟器(即 SAPIEN)之间的交互。这些功能能够创建第一个具有双向耦合的基于物质点法(MPM)实时软体操控环境。

刚-软耦合:基于连续力学的 MPM 解算器是 MLS-MPM(Hu,2018),类似于 PlasticineLab(Huang,2021),但采用不同的接触建模方法,可实现与外部刚体模拟器的双向耦合。耦合的工作原理是将刚体姿势传递到软体模拟器并将软体力传递到刚体模拟器。在模拟开始时,外部刚体模拟器中的所有碰撞形状,都会复制到软体模拟器中。原始形状(盒子、胶囊等)由解析有符号距离函数 (SDF) 表示;网格转换为 SDF 体积,存储为 3D CUDA 纹理。在每个刚体模拟步骤之后,将刚体的姿势和速度复制到软体模拟器。在软体模拟步骤期间,评估 MPM 粒子位置的 SDF 函数并对粒子施加惩罚力,从而累积刚体的力量和扭矩。相比之下,PlastineLab 评估 MPM 网格节点上的 SDF 函数,并将力量施加到 MPM 网格。模拟器支持这两种方法,但施加粒子力产生的伪影(例如穿透)较少。在软体步之后,从软体模拟器读取累积的力和扭矩,并将其应用于外部刚体模拟器。尽管这是一种简单的双向耦合方法,但它非常灵活,可以与任何刚体模拟器耦合,因此可以将刚体模拟器中的任何内容引入软体环境,包括机器人和控制器。

性能优化:软体模拟器的性能在 4 个方面进行了优化。首先,模拟器在 Warp(Nvidia 的 JIT 框架)中实现,用于将 Python 代码转换为原生 C++ 和 CUDA。因此,模拟器具有与 C 和 CUDA 相当的性能。其次,通过进一步扩展和优化 Warp 框架优化了 CPU 和 GPU 之间的数据传输(例如,双向耦合中的姿势和力);此类数据传输是其他 JIT 框架,如 PlasticineLab 基于 Taichi(Hu,2019)的性能瓶颈。第三,由于正确使用 Warp 编译器和缓存机制,与 PlasticineLab 相比,环境的编译时间和启动时间要短得多。最后,由于该模拟器是为视觉学习环境设计的,还为 MPM 粒子实现快速表面渲染算法。

ManiSkill2 旨在成为一个通用且用户友好的框架,定制门槛低,限制最少。因此,选择 Python 作为脚本语言来建模环境,并选择开源、高度灵活的 SAPIEN (Xiang, 2020) 作为物理模拟器。Python 语言决定了有效并行执行的唯一方法是通过多进程,它集成在常见的视觉 RL 训练库中 (Raffin, 2021; Weng, 2021)。在多进程环境范式下,通过工程努力使环境能够通过提高吞吐量和减少 GPU 内存使用量超越以前的框架。

**视觉学习环境优化的目标是什么?**视觉学习环境中性能优化的主要目标是最大化总吞吐量:从所有(并行)环境中收集的样本数,以每秒步数(帧数)为单位。另一个目标是减少 GPU 内存使用量。典型的基于 Python 多进程环境在 GPU 内存使用方面非常浪费,因为每个进程都必须维护 GPU 资源(例如网格和纹理)的完整副本。给定固定的 GPU 内存预算,在渲染资源上花费的 GPU 内存越少,意味着可以为神经网络分配更多的内存。

如图所示用于视觉 RL 样本收集的两个流水线。(a)顺序流水线。(b)异步渲染和渲染服务器的流水线,提高了 CPU 利用率,减少了数据传输并节省了内存。

请添加图片描述

异步渲染和基于服务器的渲染器:如图 (a) 说明了从多进程环境中收集样本的典型流水线(顺序模拟和渲染)。它包括以下阶段:(1)对工作进程进行物理模拟;(2)拍照(更新渲染器 GPU 状态并提交绘制调用);(3)等待 GPU 渲染完成;(4)将图像观测值复制到 CPU;(5)计算奖励并获取其他观测值(例如机器人本体感受信息);(6)将图像复制到主 Python 进程并同步;(7)将这些图像复制到 GPU 进行策略学习;(8)在 GPU 上转发策略网络;(9)将输出操作从 GPU 复制到模拟工作进程。

一个观察是,在 GPU 渲染(第 3 阶段)期间 CPU 处于空闲状态,而奖励计算(第 5 阶段)通常不依赖于渲染结果。因此,可以在第 2 阶段之后立即启动奖励计算,提高 CPU 利用率。这种技术称为异步渲染

另一个观察是,图像在每个进程上从 GPU 复制到 CPU,传递到主 Python 进程,然后再次上传到 GPU。如果可以始终将数据保存在 GPU 上,那就太理想了。解决方案是,使用渲染服务器,它在主 Python 进程上启动线程池并执行来自模拟工作进程的渲染请求,如图 (b) 所示。渲染服务器消除了 GPU-CPU-GPU 图像复制,从而减少了数据传输时间。它允许 GPU 资源在任意数量的环境中共享,从而显着减少内存使用量。它支持通过网络进行通信,从而有可能在多台机器上进行模拟和渲染。它需要最少的 API 更改——对原始代码库的唯一更改是从渲染服务器接收图像。在使用 Nvidia GPU 进行软件开发时,它还具有其他好处。

比较:将 ManiSkill2 的吞吐量与其他 3 个支持视觉 RL 的框架进行比较,即 Habitat 2.0 (Szot, 2021)、RoboSuite 1.3 (Zhu, 2020) 和 Isaac Gym (Makoviychuk, 2021)。在所有模拟器中构建一个 PickCube 环境。使用相似的物理模拟参数(500Hz 模拟频率和 20Hz 控制频率),并使用 GPU 流水线进行渲染。图像的分辨率为 128x128。所有框架的计算预算均为 16 个 CPU 核心(逻辑处理器),包括具有 128G 内存的 Intel i9-9960X CPU 和具有 24G 内存的 1 个 RTX Titan GPU。用随机动作进行测试,并使用随机初始化的自然 CNN(Mnih,2015)作为策略网络。在 16、32、64、128、256、512 个并行环境中测试所有框架,并报告最高的性能如表 (a) 所示。
请添加图片描述
一个有趣的观察是,当并行环境的数量超过 CPU 核心的数量时,环境表现最佳。这是因为当请求的计算远远超过可用资源时,CPU 和 GPU 上的执行自然会通过操作系统或驱动程序级调度程序高效地交错。

为了补充上表中的结果,如图绘制了不同框架中并行环境数量与策略样本收集速度之间关系的更多细节。采用输出随机动作的一个智体,以及使用随机初始化的自然 CNN(Mnih,2015)作为其视觉主干的基于 CNN 智体。启用异步渲染(且不使用渲染服务器)的 ManiSkill2 已经能够超越其他框架的速度。启用渲染服务器后,ManiSkill2 在单个 GPU 上通过 16 个并行环境进一步实现了 2000+ FPS。

此外,得益于渲染服务器,内存共享具备优势。扩展 PickClutterYCB 环境,使其每个场景包含 74 个 YCB 对象,并在 Habitat 2.0 中创建了相同的设置。如上表 (b) 所示,即使为 Habitat 启用 GPU 纹理压缩并对 ManiSkill2 使用常规纹理,Habitat 的内存使用量也会随着环境数量的增加而线性增长,而 ManiSkill2 只需要很少的内存来创建额外的环境,因为所有网格和纹理都是在环境之间共享的。

ManiSkill2 的应用:Sim2Real、带演示的模仿和强化学习、感知-规划-行动。

捡起:在捡起立方块上训练视觉 RL 策略并评估其对现实世界的可迁移性。设置如图所示,它由英特尔 RealSense D415 深度传感器、7DoF ROKAE xMate3Pro 机械臂、Robotiq 2F-140 2 指夹持器和目标立方体组成。首先获取真实深度传感器的固有参数及其相对于机器人底座的姿势。然后,构建与真实环境一致的模拟环境。为 10M 时间步训练基于点云的策略,其中策略输入包括机器人本体感受信息(关节位置和末端执行器姿势)和从深度图反向投影的无色点云。模拟成功率为 91.0%。最终在现实世界中以不同的初始状态直接评估该策略 50 次,成功率为 60.0%。推测性能下降是由深度图的域差距引起的,因为在模拟策略训练期间仅使用高斯噪声和随机像素丢失作为数据增强。

请添加图片描述

捏:通过在模拟和现实世界中执行由运动规划生成的相同动作序列并比较最终的橡皮泥形状来进一步评估软体模拟的保真度。结果如图所示,这表明双向耦合刚性-MPM 模拟能够合理地模拟由多次抓握引起的橡皮泥变形。

请添加图片描述

;