“语言对于机器人技能综合的奖励”
奖励语言技能综合
由于Google的研究科学家Wenhao Yu和Fei Xia发布
使最终用户能够与机器人进行互动教学以执行新任务是其成功融入实际应用的关键能力。例如,用户可能希望教机器狗执行新的技巧,或者教可操作机器人如何根据用户偏好整理午餐盒。在经过广泛互联网数据预训练的大型语言模型(LLM)的最新进展已经显示出实现这一目标的有希望的途径。事实上,研究人员已经探索了利用LLM进行机器人学的各种方式,从逐步规划和目标导向对话到机器人代码编写代理。
尽管这些方法提供了新的组合泛化模式,但它们专注于使用语言将新行为与现有的控制基元库进行链接,这些基元库要么是手动设计的,要么是先验学习的。尽管LLM对机器人运动有内部知识,但由于相关训练数据的有限可用性,LLM很难直接输出低级机器人命令。因此,这些方法的表达受到可用基元的广度的限制,其设计通常需要大量的专家知识或大规模数据采集。
在“用于机器人技能合成的语言到奖励”中,我们提出了一种通过自然语言输入使用户能够教机器人新动作的方法。为此,我们利用奖励函数作为连接语言和低级机器人动作之间差距的接口。我们认为奖励函数在这些任务中提供了理想的接口,因为它们在语义、模块化和可解释性方面非常丰富。它们还通过黑盒优化或强化学习(RL)为低级策略提供了直接的连接。我们开发了一个语言到奖励的系统,利用LLM将自然语言用户指令转化为指定奖励的代码,然后应用MuJoCo MPC来找到最大化生成奖励函数的最佳低级机器人动作。我们在仿真环境中使用四足机器人和灵巧机械手机器人展示了我们的语言到奖励系统,进一步验证了我们的方法在实际机械手机器人上的有效性。
语言到奖励系统由两个核心组件组成:(1)奖励翻译器,和(2)动作控制器。奖励翻译器将用户的自然语言指令映射到以Python代码表示的奖励函数。动作控制器使用逐步优化来优化给定的奖励函数,以找到最佳的低级机器人动作,例如应该对每个机器人电机施加的扭矩量。
由于预训练数据集中缺乏数据,LLM无法直接生成低级机器人动作。我们提出使用奖励函数来连接语言和低级机器人动作,从而能够通过自然语言指令实现新的复杂机器人运动。 |
奖励翻译器:将用户指令翻译为奖励函数
奖励翻译器模块的目标是将自然语言用户指令映射到奖励函数。奖励调整高度特定于领域,并且需要专业知识,因此当我们发现在通用语言数据集上训练的LLM无法直接为特定硬件生成奖励函数时,这并不令人意外。为了解决这个问题,我们应用了LLM的上下文学习能力。此外,我们将奖励翻译器分为两个子模块:动作描述符和奖励编码器。
动作描述符
首先,我们设计了一个动作描述符,将用户的输入解释为预定义模板下所需机器人运动的自然语言描述。这个动作描述符将潜在的模糊或不明确的用户指令转化为更具体和描述性的机器人运动,使奖励编码任务更加稳定。此外,用户通过动作描述字段与系统交互,因此相比直接显示奖励函数,这也为用户提供了更可解释的接口。
为了创建运动描述符,我们使用LLM将用户输入转化为所需机器人运动的详细描述。我们设计提示语,指导LLM以正确的细节和格式输出运动描述。通过将模糊的用户指令转化为更详细的描述,我们能够更可靠地使用我们的系统生成奖励函数。这个想法也可以潜在地应用于机器人任务之外,并且与内心独白和思维链提示相关。
奖励编码器
在第二阶段中,我们使用与运动描述符相同的LLM来进行奖励编码器,将生成的运动描述转化为奖励函数。奖励函数使用Python代码表示,以充分利用LLM对奖励、编码和代码结构的知识。
理想情况下,我们希望使用LLM直接生成一个将机器人状态s和时间t映射到标量奖励值的奖励函数R(s, t)。然而,从头开始生成正确的奖励函数对LLM仍然是一个具有挑战性的问题,并且纠正错误需要用户理解生成的代码以提供正确的反馈。因此,我们预定义了一组常用于感兴趣的机器人的奖励术语,并允许LLM组合不同的奖励术语来制定最终的奖励函数。为了实现这一点,我们设计了一个提示语,指定奖励术语并指导LLM为任务生成正确的奖励函数。
奖励翻译器的内部结构,用于将用户输入映射到奖励函数。 |
运动控制器:将奖励函数翻译成机器人动作
运动控制器接收奖励翻译器生成的奖励函数,并综合生成一个将机器人观测映射到低级机器人动作的控制器。为了实现这一点,我们将控制器综合问题定式为马尔可夫决策过程(MDP),可以使用不同的策略来解决,包括强化学习、离线轨迹优化或模型预测控制(MPC)。具体来说,我们使用基于MuJoCo MPC(MJPC)的开源实现。
MJPC已经证明了对多样化行为的交互式创建,例如四足行走、抓取和手指步态,并支持多种规划算法,如迭代线性-二次-高斯(iLQG)和预测采样。更重要的是,MJPC中的频繁重新规划使其对系统中的不确定性具有鲁棒性,并且与LLM结合时能够实现交互式运动合成和修正系统。
示例
机器狗
在第一个示例中,我们将语言到奖励系统应用于模拟四足机器人,并教它执行各种技能。对于每个技能,用户将向系统提供简洁的指令,然后系统将使用奖励函数作为中间接口来综合机器人运动。
灵巧操纵手
然后,我们将语言到奖励系统应用于灵巧操纵手机器人,以执行各种操纵任务。灵巧操纵手有27个自由度,非常具有挑战性。其中许多任务要求超出抓取的操纵技能,使预先设计的基本操作很难实现。我们还包括一个示例,用户可以与机器人互动,指导机器人将一个苹果放入抽屉中。
在真实机器人上验证
我们还使用真实世界的操纵机器人验证了语言到奖励的方法,执行诸如捡起物体和打开抽屉等任务。为了在运动控制器中进行优化,我们使用了AprilTag,一个基准标记系统,和F-VLM,一个开放词汇的物体检测工具,来识别桌子和被操纵物体的位置。
结论
在这项工作中,我们描述了一种通过奖励函数与机器人进行交互的新范式,该范式由低级模型预测控制工具MuJoCo MPC提供支持。使用奖励函数作为接口使得低级模型能够在语义丰富的空间中发挥其优势,同时确保所得控制器的表达能力。为了进一步提高系统的性能,我们建议使用结构化运动描述模板,以更好地从低级模型中提取有关机器人运动的内部知识。我们在两个模拟机器人平台和一个真实机器人上展示了我们提出的系统,用于行走和操作任务。
致谢
我们要感谢我们的合著者Nimrod Gileadi、Chuyuan Fu、Sean Kirmani、Kuang-Huei Lee、Montse Gonzalez Arenas、Hao-Tien Lewis Chiang、Tom Erez、Leonard Hasenclever、Brian Ichter、Ted Xiao、Peng Xu、Andy Zeng、Tingnan Zhang、Nicolas Heess、Dorsa Sadigh、Jie Tan和Yuval Tassa在项目的各个方面给予的帮助和支持。我们还要感谢Ken Caluwaerts、Kristian Hartikainen、Steven Bohez、Carolina Parada、Marc Toussaint和Google DeepMind团队的反馈和贡献。