23年10月来自哥伦比亚大学和谷歌的论文“Scaling Up and Distilling Down: Language-Guided Robot Skill Acquisition”,发表于CoRL‘23。
本文提出一个机器人技能获取的框架,其1) 有效地扩大了语言标注机器人数据的生成,2) 有效地将这些数据提炼为强大的多任务语言条件视觉运动(visuo-motor)策略。对于 (1),用大语言模型 (LLM) 来指导高级规划,并使用基于采样的机器人规划器(例如运动或抓取采样器)来生成多样化和丰富的操作轨迹。为了增强此数据收集过程的鲁棒性,LLM 还推断出每个任务成功条件的代码片段,同时使数据收集过程能够检测失败和重试以及自动标注成功/失败的轨迹。对于 (2),将扩散策略(“Diffusion Policy: Visuomotor Policy Learning via Action Diffusion”)单任务行为克隆方法扩展到具有语言条件的多任务设置。最后,提出一个新的多任务基准,其中包含五个领域的 18 个任务,测试长期行为、常识推理、工具使用和直觉物理学。蒸馏策略在其数据收集过程中成功学习稳健的重试行为,同时在五个领域将绝对成功率平均提高 33.2%。
所有代码、数据和定性策略结果位于 https://www.cs.columbia.edu/~huy/scalingup/
如何才能大规模地获得稳健、可重复使用、适用于现实世界的操控技能?这个问题一直是机器人学习领域广泛研究的驱动力。该领域的尝试主要集中在两个方面:首先,如何扩大各种操控技能的数据收集,这涉及改进硬件 [1, 2] 和软件 [3, 4] 等努力,以支持演示收集、非机器人数据集的利用 [5, 6] 或反复试验探索 [7]。这个问题的第二个方面涉及从收集的数据中进行有效学习,这涉及探索有效的动作表示 [8–10] 和策略制定 [11, 12],以便稳健地建模训练数据并推广到新的场景。
本文提出的机器人技能获取框架如图所示:在数据生成阶段,用 LLM 将任务递归分解为分层规划(即任务树)以供探索,并将该规划转化为基于采样的机器人实用程序和运动原语;接下来,LLM 为规划中的每个任务推断成功检测函数,提供成功的标记;这个自主数据生成过程输出任务导向探索经验的一个重放缓冲,并标有语言描述和成功标签;在训练阶段,根据 LLM 推断的成功条件,过滤这些数据以确定成功,并将其蒸馏为多任务视觉和语言条件扩散策略。
简化:分解
给定任务描述,第一步是生成高级任务规划。为了提高处理任何任务和 3D 资产的灵活性,选择基于 LLM 的规划器来利用常识和零样本推理技能。与传统的 TAMP 规划器不同,该框架不需要特定领域的工程化和转换函数设计来处理新任务。
具体来说,递归 LLM 规划器将任务描述、模拟状态作为输入,并以任务树的形式输出规划(如图 a 所示)。为此,LLM 首先检查任务描述是否涉及机器人与多个目标或仅一个目标的交互。例如,“将包裹移入邮箱”涉及在拿起包裹并放入邮箱之前打开邮箱,应该被视为多目标任务。同时,“打开邮箱,将包裹移入邮箱”应该是单目标任务。对于单目标任务的基本情况,提示 LLM 与哪个目标部件名称进行交互。对于多目标任务的情况,提示LLM将任务分解为子任务,并向下递归每个子任务。
落地:编译
生成任务树后,下一步是将高级规划落实到物理动作中。在这里,低级机器人 API 的选择决定了系统的能力,因此成为不同系统之间的关键区别因素。原则上,希望在动作空间设计中看到三个理想属性:
灵活性。平面动作 [10, 37] 不够灵活,无法操纵棱柱关节和旋转关节。
可扩展。也就是说,动作不应该需要人类演示才能掌握 [9, 10, 13–16, 35]。
语言友好。虽然关节序列可以编码任何动作,但它并不语言友好。
建议将 LLM 的规划与 API 调用一起落实到一组机器人实用函数中,其中包括基于采样的运动规划器、基于几何的抓取和放置采样器以及用于关节操纵的运动原语。将这些实用程序称为 6 DOF 探索基元(如上图 b 所示),因为这些基于采样的实用程序是伪随机的,因此可以生成不同的机器人轨迹,从而能够有效探索丰富的 6 DoF 操作设置。例如,抓取和放置采样器,在目标部分点云中的所有点之间均匀采样,分别找到良好的抓取和放置姿势,这些姿势用作快速探索随机树(RRT) [55] 运动规划器的输入,该运动规划器在关节空间中均匀采样。这会产生不同的抓取、放置以及连接抓取和放置的运动轨迹。
对于推断任务树中的每个叶节点,落地过程将节点的任务描述(例如“打开邮箱”)、其关联的目标部分名称(例如“邮箱盖”)和模拟状态作为输入,并输出一系列 6 DoF 探索基元 API 调用。使用目标部件名称,可以从模拟状态解析目标的运动结构,并分别处理铰接和非铰接(即刚性、可变形)目标。对于非铰接目标,LLM 会被提示选择拾取和放置目标名称,用于采样抓取和放置姿势候选。对于铰接目标(具有旋转或棱柱形的关节),叶节点的关联目标部件名称用于采样抓取的候选,然后采样以其关节参数(即关节类型、轴和原点)为条件的旋转或平移基元。
探索规划推出。探索规划中的每个节点仅在执行时才落地,其中执行顺序遵循树前序遍历。通过跟踪子任务的状态,可以使用子任务的描述去标记机器人轨迹的子段,从而为轨迹提供密集且自动的文本标签。例如,在推断的子任务“打开邮箱”期间采取的所有操作都可以用子任务的描述“打开邮箱”和根任务的描述“将包裹移入邮箱”来标记。
由于落地仅在访问任务节点时发生,因此每个节点的落地过程都独立于其他叶节点,仅取决于评估时的模拟状态。虽然这大大简化了规划,但也意味着可能会发生执行失败。例如,抓取候选可能会使所有放置候选变得不可行。
验证&重试
回想一下,规划和落地步骤可能会失败,尤其考虑长期任务时。为了解决这个问题,提出了一个验证和重试(上图 c)方案,该方案使用环境反馈来检测失败的执行。
验证。对于每个任务,LLM 都会根据任务描述、模拟状态和 API 函数推断出一个成功函数代码片段,用于查询模拟状态(例如,检查接触或关节值等)。这相当于提示 LLM 完成任务成功函数定义,该定义输出布尔值,表示任务成功。例如,给定任务“升起邮箱标志”,LLM 推断的代码片段应该检查邮箱的标志铰链是否升起(图 c,以绿色突出显示)。
重试。当轨迹被标记为失败时,机器人会使用不同的随机种子(即基于采样的机器人实用程序)重试相同的机器人实用程序序列,而无需重置模拟状态,直到任务成功。在树遍历过程中,只有当节点推断的成功条件返回 true 时,节点才会让出执行其父任务。这种设计不仅可以提高数据生成的成功率,还可以提供如何从故障中恢复的有用演示。在输出重放缓冲区中,唯一失败的轨迹是超时或导致无效状态的轨迹。
如图所示:在一个多任务基准上验证方法,该基准解决具有挑战性的长期任务(即 800 个控制周期),需要语言理解(例如,将 [目标] 放入 [顶部] 抽屉)、常识知识(例如,发送包裹以供返回需要升起邮箱标志)、工具使用(例如,弹射器)和直观物理学(例如,平衡公共汽车玩具)。
该基准测试基于 MuJoCo [3] 模拟器构建,使用来自 Google Scanned 数据集 [59, 60] 的资源。用带有 6DoF 机械臂的桌面操作装置。评估中的任务成功是一个手动设计的函数,而不是用于数据收集的 LLM 生成的函数。
策略蒸馏
通过添加语言条件将扩散策略 [12](一种单任务行为克隆方法)扩展到多任务领域。此策略将任务描述 CLIP [56] 特征、本体感受历史和视觉观察作为输入,并输出一系列末端执行器控制命令。根据 Robomimic [4] 的发现,除了全局(工作区)视图外,还使用腕戴式视图来帮助完成需要精确操作的任务。用他们基于 ResNet18 的 [57] 视觉编码器,每个视图一个。仅使用最新的视觉观察以及本体感受的完整观察范围可以保持策略的高性能,同时减少训练时间。与 DDIM [58] 噪声调度程序结合使用时,可以在推理时使用 小10 倍的扩散过程(推理时为 5 个时间步,训练时为 50 个时间步),同时保持相当的性能。定量地说,当使用 10 维动作空间时,该策略可以在 NVIDIA RTX3080 上以 ≈ 35Hz 的速度运行。策略蒸馏框图如图所示:
如图是新目标泛化例子:
如图是域随机化的策略训练例子:Sim2Real Transfer