23年6月 Nvidia 的论文“RVT: Robotic View Transformer for 3D Object Manipulation”。
对于 3D 目标操作,构建显式 3D 表征的方法比仅依赖相机图像的方法表现更好。但使用像体素这样的显式 3D 表征需要大量的计算成本,从而对可扩展性产生不利影响。RVT,是一种用于 3D 操作的多视图 Transformer,既可扩展又准确。RVT 的一些主要特性包括注意机制,用于跨视图聚合信息,以及重渲染来自机器人工作空间周围虚拟视图的相机输入。在模拟中,单个 RVT 模型在 18 个 RLBench 任务(249 个任务变化)中运行良好,比现有的最先进方法(PerAct)成功率高 26%。比 PerAct 快 36 倍的速度训练,实现相同的性能,并实现 PerAct 的 2.3 倍的推理速度。此外,RVT 可以在现实世界中执行各种操作任务,每个任务只需几次(∼10)次演示。
传统上,机器人控制策略的学习是通过低维状态观测来研究的 [9、10、11、12、13]。最近,基于视觉的策略 [14、15、16、17、18、19、20、21] 受到越来越多的关注,因为高维视觉感官输入提供了跨任务更具泛化的观察表征,并且在现实世界的感知系统中更容易获得。人们探索了各种形式的视觉输入。先前的工作直接将 RGB 图像编码到低维潜空间中,并依靠基于模型的 [22、23] 或无模型的 [24、25] 强化学习 (RL) 来训练策略以在此空间中运行。最近,RT-1 [26] 利用 Transformer 架构 [27] 从图像历史中推断机器人的动作。
RVT 也使用Transformer来预测动作,但与 RT-1 不同的是,还利用深度来构建多视图场景表示。深度输入的使用也得到了广泛的研究。CLIPort [3] 和 IFOR [1] 等方法直接处理 RGB-D 图像以进行目标操作,因此仅限于在 2D 自上而下的设置中执行简单的拾取和放置任务。为了解决这个问题,人们使用点云等显式 3D 表示。C2F-ARM [5] 和 PerAct [6] 对点云进行体素化,并使用 3D 卷积网络作为控制推理的主干。然而,高精度任务通常需要高分辨率的体素化,从而导致高内存消耗和训练速度慢。
通过将点云转换为来自多个视图的一组 RGB-D 图像解决了可扩展性问题。与直接使用 RGB(-D) 或点云输入相比,这显著提高内存占用和训练效率,并带来了更高的性能(如表所示)。
另一项相关工作是 MIRA [28],它也使用新视图图像来表示 3D 场景以进行动作推理。MIRA 通过从一组 RGB 图像中隐式构建场景的神经辐射场 (NeRF) 表征,然后从优化的 NeRF 模型生成新视图图像来实现这一点。然而,优化场景 NeRF 模型的要求会减慢测试时的推理速度,并且依赖于来自一组密集视图的 RGB 图像作为输入。
近来,机器人社区特别关注为许多不同任务学习单一模型。大量工作通过使用可泛化的任务或动作表示(例如目标点云 [18, 19]、语义分割和光流 [1] 以及以目标为中心的表示 [29, 30])实现了多任务泛化。然而,这些表示的有限表达能力限制了它们只能在任务类别中进行泛化。任务参数化 [31, 32] 和离散任务-相关的输出层 [33, 34] 方法与强化学习一起被研究,以学习不同类别任务的策略。随着大语言模型的最新突破,多任务机器人学习已经通过使用自然语言来指定广泛的任务并从大型预收集的数据集中学习策略来实现 [35, 26, 36, 2, 37, 38, 39, 40, 41]。
目标是学习一个可以完成各种操作任务的单一模型。输入包括(1)任务的语言描述、(2)当前视觉状态(来自 RGB-D 摄像机)和(3)当前夹持器状态(打开或关闭)。模型应预测下一个关键帧的目标末端执行器姿势和夹持器状态指定的动作。关键帧表示夹持器,在任务执行过程中的重要步骤或瓶颈步骤 [55],例如预先拾取、抓取或放置姿势。给定目标末端执行器姿势,假设一个低级运动规划器和控制器可以将末端执行器移动到目标姿势。为了训练模型,假设给出一个包含 n 个专家演示的数据集 D = {D1 , D2 ,· · · , Dn },涵盖各种任务。每个演示 Di = ({oi1…mi }, {ai1…mi }, li ) 都是长度为 mi 的成功推出,其中 li 是任务的语言描述,{oi1,oi2,…,oimi } 是来自具有夹持器状态的 RGB-D 摄像机的观测序列,{ai1,ai2,…,aimi } 是相应的机器人动作序列。此演示数据集可用于训练具有行为克隆(BC)的模型。
提出的方法 (RVT) 是一个Transformer模型 [27],它处理在机器人工作空间周围重新渲染的图像,为每个视图生成一个输出,然后反向投影到 3D 中以预测夹持器姿势动作,如图所示。
渲染。第一步是重新渲染摄像头输入。给定一个或多个传感器摄像头捕获的 RGB-D 图像,首先重建场景的点云。然后从一组虚拟视点重新渲染点云,这些视点锚定在以机器人底座为中心的空间中。具体来说,对于每个视图,渲染三个图像图,总共有 7 个通道:(1) RGB(3 个通道)、(2) 深度(1 个通道)和 (3) 世界框架中点的 (x, y, z) 坐标(3 个通道)。(x, y, z) 坐标有助于建立不同视图之间像素的对应关系,即,如果不同视图的像素共享相同的 (x, y, z),则它们对应于 3D 中的同一点。用 PyTorch3D [56] 进行渲染。通过经验验证渲染流水线中的各种设计选择。
重渲染过程将输入图像与输入到 Transformer 的图像分离。这提供了几个好处,例如:能够在任意有用的位置(例如,桌子正上方)重渲染,而不受现实世界相机位置的限制;即使使用单个传感器相机也可以进行多视图推理;允许使用正交图像而不是通常提供的透视图像;促进 3D 点云增强并启用传感器图像中原本未呈现的点对应等附加通道。通过经验发现,这些有助于通过基于视图的网络实现高性能。
联合的 Transformer。重渲染的图像、任务的语言描述和夹持器状态(打开或关闭)由联合的 Transformer 模型处理。对于语言,用预训练的 CLIP [57] 嵌入(ResNet-50 变型),为每个单词提供一个token。对于虚拟图像,将每个图像分成 20 × 20 的块,并通过多层感知器 (MLP) 生成图像tokens,类似于 ViT [58]。对于抓取器状态,类似于 PerAct [6],将其通过 MLP 并将其连接到图像tokens。还向所有图像和语言tokens添加位置嵌入以保留位置信息。
总体而言,RVT 有八个自注意层。在前四层中,图像tokens仅允许关注来自同一图像的其他tokens。这会使网络偏向于先处理单个图像,然后再在图像之间共享信息。将所有图像tokens与语言tokens连接起来。在最后四层中,允许注意层在不同的图像和文本之间传播和积累信息。最后,将图像tokens重排列回原始空间配置,从而得到每幅图像的特征通道。
动作预测。该模型输出一个 8 维动作,包括 6-DoF 目标末端执行器姿势(3-DoF 用于平移,3-DoF 用于旋转)、1-DoF 夹持器状态(打开或关闭)以及用于指示是否允许低级运动规划器发生碰撞的二进制指示器。对于平移,首先根据来自联合Transformer的每个图像特征预测每个视图的热图。然后将不同视图之间的热图反向投影,以预测密集覆盖机器人工作空间的离散 3D 点集得分。最后,末端执行器的平移由得分最高的 3D 点确定。请注意,这种用于平移预测的多视图热图表示,扩展了 2D 自上而下视图设置中的先前方法 [4]。因此,RVT 通过在相同的空间结构中表示视觉输入和动作来继承卓越样本效率的优势 [4]。
对于末端执行器的旋转,遵循 PerAct 使用欧拉角表示,其中每个角度离散化为 5◦ 分辨率的bins。夹持器状态和运动规划器的碰撞指示器表示为二进制变量。为了预测旋转、夹持器状态和碰撞指示器,用全局特征 (G)。全局特征是 (1) 沿空间维度的图像特征总和,由预测的平移热图加权; (2) 沿空间维度的最大池化图像特征串联。具体而言,让 fi 为图像特征,hi 为第 i 个图像的预测平移热图。然后全局特征 G 由 G = [φ(f1 ⊙h1); ··· ; φ(fK ⊙hK); ψ(f1); ··· ; ψ(fK)] 给出,其中 K 是图像数量,⊙ 表示元素乘法,φ 和 ψ 表示高度维和宽度维的和和最大池化。加权和的运算,为预测的末端执行器位置附近的图像位置提供更高的权重。
仿真环境实验,遵循 PerAct [6] 中的模拟设置,其中应用 CoppelaSim [59] 来模拟各种 RLBench [7] 任务。控制带有平行夹持器的 Franka Panda 机器人完成任务。在与 PerAct 相同的 18 项任务上进行测试,包括拾取和放置、工具使用、抽屉打开和高精度挂钩插入。每个任务都包含由相关语言描述指定的几种变型。如此广泛的任务和任务内变化,要求模型不仅要专注于一项特定技能,还要学习不同的技能类别。视觉观测由四个无噪声 RGB-D 摄像机捕获,分别位于前部、左肩、右肩和手腕处,分辨率为 128×128。为了实现目标夹持器姿势,用与 [5, 6] 中相同的基于采样运动规划器 [60, 61] 来生成关节空间动作。
真实环境实验,使用静态安装的 Franka Panda 手臂在桌面装置上进行实验。场景通过静态安装在第三人称视角中的 Azure Kinect (RGB-D) 相机感知。标定机器人相机外参,并将感知的点云转换到机器人基座坐标系,然后传递到 RVT。给定来自 RVT 的目标夹持器姿势,用 FrankaPy [63] (一个模块化的机器人手臂控制工具)通过轨迹生成和反馈控制将机器人移动到目标。
总共采用 5 个类似于 PerAct [6] 中的任务:堆叠块、压消毒剂、将记号笔放入杯子/碗中、将物体放入抽屉、将物体放入架子。每个任务都可以用语言描述定义的不同变型来实例化。例如,对于堆叠块,一些变体可能是“将黄色块放在蓝色块上”和“将蓝色块放在红色块上”。给定一个任务和变化,将与任务相关的目标和一组干扰目标以随机配置放置在桌子上来对场景进行采样。
首先通过人工演示收集用于训练 RVT 的数据集。给定一个采样的任务和场景配置,要求人类演示者通过感知移动机械臂来指定夹持器目标姿势序列。一旦有了目标姿势序列,就将机器人重置为起始姿势,然后控制它按照指定的顺序依次移动到每个目标姿势。在机器人向目标移动的过程中同时记录来自摄像机的 RGB-D 流。这就提供了一个与目标姿势注释配对的 RGB-D 帧数据集。总共在所有 5 个任务中收集了 51 个演示序列。