摘要
大型语言模型(LLM)在通过上下文学习(从逻辑推理到代码编写)获取各种新能力方面取得了令人兴奋的进展。机器人研究人员也探索了使用LLMs来提升机器人控制的能力,然而,由于低级机器人动作依赖于硬件,并且在LLM训练语料库中代表性不足,目前在将LLMs应用于机器人领域的努力主要将LLMs视为语义规划器,或者依赖于人工设计的控制原语与机器人进行接口交互。另一方面,奖励函数被证明是一种灵活的表示形式,可以为控制策略进行优化以实现多样的任务,而它们的语义丰富性使它们适合由LLMs指定。在这项工作中,我们引入了一种新的范式,利用LLMs来定义可以进行优化并完成各种机器人任务的奖励参数。通过使用由LLMs生成的奖励作为中间接口,我们可以有效地弥合高级语言指令或修正与低级机器人动作之间的差距。同时,结合实时优化器MuJoCo MPC,赋予了交互式行为创建体验,用户可以立即观察结果并向系统提供反馈。为了系统地评估我们提出的方法的性能,我们为模拟四足机器人和灵巧机械手机器人设计了总共 17 个任务。我们证明了提出的方法可以可靠地解决90%的设计任务,而基于原始技能作为与代码策略的接口的基准方法只能完成50%的任务。我们还在真实的机器人手臂上进一步验证了我们的方法,其中复杂的操作技能(例如非抓握式推动)可以通过我们的交互系统出现。
1 引言
在广泛利用互联网数据进行预训练的大型语言模型(LLMs)取得了重大进展,革新了对自然语言用户输入的解释和操作能力。这些LLMs展现了对新环境(如APIs、任务描述或文本反馈)的惊人适应能力,使得从逻辑推理到代码生成等任务能够以最少的手工样例完成。这些多样化的应用也在机器人领域得到了拓展,通过使用LLMs驱动机器人行为取得了实质性进展:从逐步规划、面向目标的对话、再到机器人代码生成代理。尽管这些方法提供了新的组合泛化方式,但它们侧重于使用语言将新行为从现有的控制原语库中串联起来,这些原语要么是手工设计的,要么是先验学习的。尽管LLMs具有关于机器人动作的内部知识,但由于相关训练数据的有限可用性,LLMs很难直接输出低级机器人命令(图1)。因此,这些方法的表达受到可用原语的广度的限制,而这些原语的设计通常需要广泛的专业知识或大量的数据收集。 为了解决这些挑战,我们需要在一个抽象的层面上操作,以利用LLMs提供的直观和交互能力。我们的关键是将奖励函数作为一个接口,以弥合语言和低级机器人动作之间的差距。这是因为人类的语言指令往往倾向于描述行为结果,而不是低级行为细节,因此我们认为,考虑到奖励中的语义丰富性,将指令与奖励联系起来比将指令与低级动作联系起来更容易。此外,奖励项通常是模块化和组合的,这使得复杂行为、目标和约束可以简洁地表示。这种模块化进一步为用户提供了与机器人行为进行交互的机会。然而,在强化学习(RL)或模型预测控制(MPC)的许多先前工作中,手动奖励设计需要广泛的领域专业知识。尽管奖励设计可以自动化,但这些技术样本效率低,仍然需要手动指定每个任务的客观指标函数。这指出了奖励结构与任务规范之间的缺失连接,而任务规范通常以自然语言形式存在。因此,我们提出利用LLMs自动生成奖励,并利用在线优化技术来解决它们。

图1:LLMs对机器人动作具有一定的内部知识,但不能直接将其转化为行动(左侧)。低级行动代码可以在机器人上执行,但LLMs对其了解甚少(中间)。为了弥合这一差距,我们提出了一个系统(右侧),包括奖励转换器(Reward Translator),它解释用户输入并将其转化为奖励规范。然后,奖励规范由运动控制器(Motion Controller)消耗,该控制器交互地合成优化给定奖励的机器人动作。
具体来说,我们探索LLMs的代码编写能力,将任务语义转化为奖励函数,并使用MuJoCo MPC,一个实时优化工具,实时合成机器人行为。因此,LLMs生成的奖励函数可以使非技术用户生成和引导新颖而复杂的机器人行为,而无需大量数据或工程低级原语的专业知识。 以前的工作探索了将语言与奖励联系起来,以提取用户偏好和任务知识。尽管取得了有希望的结果,但它们通常需要训练数据来学习语言到奖励的映射关系。通过我们提出的方法,我们实现了一种数据有效的交互系统,其中人类与LLMs进行对话,引导奖励的生成,从而引导机器人行为(图1)。
我们在模拟的四足机器人和灵巧操纵机器人上设计了17个控制问题,展示了这种方法提供了多样且具有挑战性的运动和操作技能。例如,让四足机器人站立起来,要求它做一次月球漫步舞蹈,或者让一个操纵机器人的灵巧手打开一个水龙头。我们进行了大规模评估,以衡量我们提出的方法的整体性能,我们将我们的方法与使用固定的一组原始技能和将语言与奖励联系的替代方法进行比较。我们展示了我们提出的方法可以解决比基准方法多40%的技能,并且在解决个体技能方面更稳定。我们进一步将我们的方法部署到一个真实的机器人操纵器上,并通过语言指令展示了复杂的操作技能。
2 相关工作
在这里,我们讨论了关于语言指令生成机器人动作、代码或奖励的相关先前工作,以将自然语言与低级机器人控制相连接。然后,我们讨论了关于响应交互式人类反馈(如语言纠正)的工作。
从语言到动作,使用各种机器人学习框架直接基于语言指令预测低级控制动作已经得到研究。语言社区的早期工作研究了将模板化语言映射到带有时间逻辑的控制器,或学习一个解析器来生成运动原语,而近期的工作则利用端到端模型,在自然语言描述的条件下生成动作,一个例子是导航中的指令跟随方法。然而,它们通常假设低维动作从图的一个节点导航到另一个节点,为了将端到端方法扩展到操作,一种常见的方法是利用语言命令的潜在嵌入作为多任务输入上下文,并使用行为克隆、离线强化学习、目标条件强化学习或在共享自主性范例中进行训练。虽然端到端训练的策略可以表现出良好的性能,但它们需要大量的数据,形式可以是离线数据集或在线环境交互。相反,我们研究了一种对数据需求较少的方法,其中低级动作不是由端到端策略直接产生,而是由最优控制器产生。
从语言到代码,代码生成模型在机器人领域内外都得到了广泛研究。这些模型的能力范围从解决编程竞赛问题和基准测试、到绘制简单图形、生成解决2D任务的策略以及复杂的指令跟随任务。在这项工作中,我们研究了LLMs用于生成奖励函数代码,并展示了奖励的表达可以导致具有表现力的低级策略。
从语言到奖励,关于将自然语言指令转化为奖励的想法已经在一些先前的工作中进行了探索。在这个方向上的一个常见策略是训练领域特定的奖励模型,将语言指令映射到奖励值或约束条件。虽然这些方法可以实现具有挑战性的语言条件机器人任务,如物体推动]和抽屉打开,但它们需要大量带有语言标签的数据来训练奖励模型。最近的工作研究了直接使用LLMs作为奖励函数,用于推断谈判游戏或人机协作交互游戏中的用户意图。通过利用LLMs在强化学习训练过程中分配奖励值,他们展示了与用户意图和偏好相一致的训练代理,而无需明确的奖励建模。然而,这些工作在训练RL策略时接收回放的奖励值,这在训练过程中需要大量的LLMs查询。相比之下,我们利用LLMs生成一个可以优化的参数化奖励函数。与这项工作类似的方向是奖励函数的自动参数化,这在AutoRL中已经进行了探索,但它们没有提供语言接口。
结合迭代人类反馈,过去也曾探索过使用迭代语言反馈来纠正计划的方法。Broad等人利用分布式对应图来基于语言进行高效的在线纠正。然而,该工作依赖于具有预定义映射的语义解析器来进行语言纠正。更多端到端的方法也展示了学习一个以语言纠正为条件的策略,但它们同样对数据需求较大,因此退而求其次采用共享自主性来降低复杂性。后续通过训练一个预测模型从示教中学习将语言纠正映射到可组合的成本函数,并应用轨迹优化进行控制。后续的工作通过使用大量配对纠正和示教数据集,将语言纠正集成到直接修改轨迹的路径点中,进一步简化了系统。与这些先前的工作相比,我们展示了一种灵活且数据高效的方法,
3 将语言与动作通过奖励连接起来
3.1 背景和奖励接口
我们的系统接受自然语言的用户指令,并通过利用奖励函数作为与低级控制器通信的接口来合成相应的机器人动作。我们将奖励函数定义在马尔可夫决策过程(MDP)的背景下,这是常用的机器人控制问题的表述形式:(S,A,R,P,p ),其中S是状态空间,A是动作空间,R:S×A→ 是奖励函数,P:S×A→S是动力学方程,p 是初始状态分布。给定一个奖励函数R,最优控制器找到一系列动作a ={a ,...,a },最大化预期累积奖励:

其中H是回放的时间范围。 在本工作中,我们假设奖励函数采用一种特定的形式,适用于与MJPC(见下文)一起使用。奖励是一组个体项的总和:

其中w ∈ R+是非负权重,n(·):R → R+是二阶可微的范数函数,其在0处取得最小值,r ∈ R是残差项,在r=0时达到最优,ψi是第i个残差项的参数。例如,如果我们希望机器人将身体高度h提升到目标高度,我们可以设计一个残差项

其中奖励参数ψ表示期望的高度,并使用l2范数构建最终的奖励函数:

原则上,可以设计特定任务的残差项来解决特定的控制任务。然而,设计这些残差项需要领域专业知识,并且可能无法推广到新的任务。在本工作中,我们使用一组通用且简单的残差项,并利用LLMs的能力来组合不同的项以生成复杂的行为。
我们提出的系统由两个关键组件组成(图1右侧):i) 基于预训练的大型语言模型(LLMs)构建的奖励转换器,与用户进行交互并理解用户意图,调节所有奖励参数ψ和权重w;ii) 基于MuJoCo MPC的运动控制器,接收生成的奖励并通过交互式优化生成最优的动作序列a。以下我们将详细介绍奖励转换器和运动控制器的设计。
3.2 奖励转换器
受到最近大型语言模型(LLMs)的进展的启发,我们建议基于LLMs构建奖励转换器(Reward Translator),将用户的交互映射到对应所需机器人运动的奖励函数。由于奖励调整高度依赖于特定领域的专业知识,而基于通用语言数据集训练的LLMs无法直接为特定硬件生成奖励函数,这并不令人意外。因此,我们探索了LLMs在上下文学习方面的能力,受到先前工作的启发,该先前工作展示了LLMs在各种上下文学习技能方面的应用。
此外,我们将语言到奖励的问题分解为两个阶段:运动描述和奖励编码任务,如图2所示。

图2:奖励转换器的详细数据流。运动描述器LLM接收用户输入并用自然语言描述用户指定的运动,奖励编码器将运动转换为奖励参数。
运动描述:在第一阶段,我们设计了一个运动描述器LLM,它将用户输入解释并扩展为所需机器人运动的自然语言描述,遵循预定义的模板(见图2中的示例)。尽管LLMs直接为相对简单的任务生成合理的奖励函数是可能的,但对于需要复杂推理的任务,它往往失败。另一方面,如图1(左)所示,LLMs可以成功地用详细的自然语言描述来描述复杂的运动。受到这一观察的启发,我们设计了一个模板,用于描述机器人的常见运动(见图2右上角的模板示例和LLM的提示),以有效利用LLMs关于运动的内部知识。运动描述器的作用是完成提供的模板(例如,替换示例中的CHOICE和NUM等元素)。这有助于运动描述器生成更有结构和可预测性的输出,并提高整个系统的稳定性。此外,由于我们是用自然语言描述运动,所以无需在提示中提供任何具体的示例,完全依赖LLMs生成结果。
奖励编码:在第二阶段中,我们使用第二个LLM将生成的运动描述转换为奖励函数。我们将语言到奖励函数的问题形式化为编写代码的任务,以利用LLM对编码和代码结构的知识,因此我们将第二个LLM称为奖励编码器。我们设计了一个提示,指导LLM生成指定奖励的代码(参见图2右下方的示例)。提示包括三个部分:i)奖励API的描述,LLM可以调用这些API来指定奖励函数的不同参数,ii)我们期望奖励编码器生成的示例响应,iii)奖励编码器需要遵循的约束和规则。请注意,示例是为了向LLM演示响应的样式,而不是教它如何执行特定任务。因此,奖励编码器需要根据自己对自然语言描述中的运动的知识来指定奖励参数。
3.3 运动控制器
运动控制器需要将Reward Translator生成的奖励函数映射到最大化累积奖励J(a )的低级机器人动作a 。有几种可能的方法可以实现这一点,包括使用强化学习(RL)、离线轨迹优化,或者像本文中一样,使用回溯轨迹优化,即模型预测控制(MPC)。在每个控制步骤中,MPC计划一系列优化的动作a ,并发送给机器人。机器人应用与当前时间戳相对应的动作,前进到下一步,并将更新后的机器人状态发送给MJPC规划器以启动下一个规划周期。MPC中频繁的重新规划增强了它对系统中的不确定性的鲁棒性,并且重要的是,它实现了交互式的运动合成和校正。具体而言,我们使用基于MuJoCo模拟器的开源实现MJPC 。MJPC已经证明了对各种行为的交互式创建,例如四足行走、抓取和指关节运动,并支持多种规划算法,例如iLQG和预测抽样。根据Howell等人的观察,二阶规划器(如iLQG)产生更平滑和更准确的动作,而零阶规划器(如预测抽样)在探索非平滑优化空间方面效果更好。在本文中,我们在四足行走任务中使用iLQG,而在操作任务中使用预测抽样。
4 实验
我们设计实验来回答以下问题:
1)我们提出的方法是否能够通过自然语言界面结合LLMs和MJPC生成多样且复杂的机器人动作?
2)与直接与低级或原始动作进行接口相比,与奖励函数进行接口是否会产生更具表达力的流程,使用Motion Descriptor是否有助于实现可靠的性能?
3)我们的方法能否应用于真实的机器人硬件?
4.1 实验设置
我们在两个模拟机器人系统上评估我们的方法:一个四足机器人和一个灵巧的机器人操作器(图3)。这两个机器人都在MuJoCo MPC 中进行建模和仿真。在所有实验中,我们使用GPT-4作为底层LLM模块。下面我们描述每个机器人的关键设置。
四足机器人
在这个示例中,我们展示了如何使用我们的系统命令一个四足机器人(图3(a))执行各种运动技能。四足机器人有12个关节,每条腿有3个关节。已经证明四足机器人可以执行各种技能,包括行走、跳跃、双足站立、跑酷]等。我们将我们的系统应用于四足机器人,以使用自然语言作为输入执行类似的技能套件。

图3:我们实验中使用的两个机器人和示例任务:(a) 一个具有12个自由度的四足机器人。(b) 一个具有27个自由度的灵巧机械手机器人。(c) 我们算法生成的示例轨迹。
灵巧的机器人操作器
在第二个示例中,我们在一个灵巧的机器人操作器上展示我们的系统。该机器人由一个7自由度的Franka Emika机械臂和一个20自由度的shadow手作为末端执行器组成(如图3(b)所示)。这样产生了一个庞大的动作空间,使得通过手动训练一个控制器直接使用这个机器人执行任务变得具有挑战性。
4.2 基线方法
我们将我们提出的系统与两种基线方法进行比较:
i) 仅使用Reward Coder而没有使用Motion Descriptor的我们方法的消融版本,以及ii) Code-as-Policies ,其中LLM使用一组预定义的机器人基本技能而不是奖励函数生成机器人运动的计划。对于Code-as-Policies(CaP)基线,我们根据机器人可用的常见命令设计了基本技能。
4.3 任务
我们设计了九个任务用于评估四足机器人的性能,以及八个任务用于评估灵巧机械手的性能,图3显示了一些任务的示例。
对于四足机器人,任务可以分为四类:
1)头部方向控制,系统需要解释关于机器人头部方向的间接指令,并控制机器人面向正确的方向(例如,识别日出或日落的方向);
2)身体姿势控制,我们评估系统理解和处理指令的能力,使机器人达到不同的身体姿势,受到人们给狗下达的常见指令的启发,如坐下和翻滚;
3)肢体控制,系统需要将机器人的特定脚抬起。此外,我们还测试了系统接受附加指令以修改现有技能的能力,例如带抬起的脚原地转身;
4)运动方式,我们评估我们提出的系统在生成不同的运动方式方面的能力。特别地,我们设计了一个具有挑战性的任务,即让四足机器人两后腿站立以双足模式行走。
对于灵巧机械手,我们设计了各种任务来测试其与物体的不同交互能力,例如举起、移动和重新定位。对于每个任务,我们在不同形状和尺寸的各种对象上进行测试(如图3所示)。我们还包括两个涉及与不同关节类型的关节物体交互的任务。
4.4 评估结果
对于每个任务和方法,我们从Reward Translator生成10个响应,并在MJPC中进行50次评估,从而测量整个流程的端到端稳定性,图4显示了两个机器人的结果。我们提出的方法在11/17个任务类别中实现了显著更高的成功率,并在其余任务中表现出可比较的性能,显示了所提方法的有效性和可靠性。

图4:我们的方法与替代方法在通过率方面的比较:如果我们为每个任务生成N个代码片段并选择表现最佳的一个,系统能够成功解决的任务的百分比。
与CaP基线相比,我们的方法在几乎所有任务中都取得了更高的成功率。这是因为CaP在可以用给定的基本动作表达的任务(例如“触摸物体”)或非常接近提示中给定示例的任务(例如“坐下”)上表现良好,但在新颖的低级技能上无法推广。另一方面,仅使用Reward Coder可以在某些任务上取得成功,但在需要更多推理的任务中失败。例如,当被要求打开抽屉时,仅使用Reward Coder的基线通常会忘记让机器手靠近抽屉把手,并且只设计鼓励抽屉打开的奖励。
为了进一步了解不同系统的整体性能,我们还在图4的右侧显示了通过率,这是分析代码生成性能的标准指标。在图中的每个点代表系统可以解决的任务的百分比,假设它可以为每个任务生成N个代码并选择表现最好的一个。因此,通过率曲线衡量了系统的稳定性(曲线越平坦,系统越稳定)以及系统的任务覆盖范围(收敛点表示系统可以解决多少任务,给定足够的试验次数)。从结果中可以清楚地看出,对于两种机器人实体,使用奖励作为接口使LLMs能够更可靠地解决更多任务,并且结构化运动描述的使用显著提升了系统的性能。
4.5 交互式运动合成结果
使用像MJPC这样的实时优化工具的一个好处是人类可以实时观察合成的运动并提供反馈。我们展示了两个示例,其中我们通过多轮互动教导机器人执行复杂任务。在第一个示例中,我们要求四足机器人站起来并执行月球步技能(图5a)。我们给出了四个指令来完成任务,如图5所示。每个指令都根据互动合成的结果改进了行为,使其更接近期望的行为。这展示了用户可以通过自然语言互动地塑造机器人的行为。在第二个示例中,我们展示了另一种利用系统互动性的方式,通过顺序命令巧妙的操纵机器人将苹果放入抽屉中,如图5b所示。

图5:使用我们建议的系统的两个交互示例。
4.6 真实机器人实验
我们将我们的方法实施到一个移动式操纵器上,并在现实世界中进行非握持式操纵任务的测试。在模拟中,我们可以获得场景中物体的真实状态。在现实世界中,我们使用一种开放词汇的检测器F-VLM在图像空间中检测物体。我们从遮罩后的点云中提取相关点,并对可能属于背景的点进行离群点剔除。从鸟瞰图中,我们拟合一个最小体积矩形,并取极值来确定z轴上的范围。我们将这个3D边界框作为相应物体在模拟中的状态估计。为了检测具有正确方向的桌面表面,我们使用AprilTag 。此外,正如在补充视频中所看到的,MJPC可以发现高度灵巧和动态的动作来完成所需的任务。然而,这些动作超出了当前真实硬件的能力。为了缓解这个问题,当将我们的系统应用到真实机器人时,我们设计了一个特定的正则化残差项,以鼓励稳定的机器人运动(在图6中)。

图6:在现实世界中提出的系统的实现和部署
我们在两个任务上展示了从模拟到实际的迁移:物体推动和物体抓取。我们的系统能够生成相关的奖励代码,而Mujoco MPC能够合成推动和抓取动作。
5 讨论与结论
本文研究探讨了一种通过奖励函数将LLM与机器人接口化的新范式,该范式由低级模型预测控制工具MuJoCo MPC提供支持。使用奖励函数作为接口使LLMs能够在语义丰富的空间中发挥其优势,同时确保生成的控制器的表达能力。为了进一步提高系统的性能,我们提出使用运动描述模板来更好地从LLMs中提取关于机器人动作的内部知识。我们在两个仿真机器人平台上评估了我们的系统:四足机器人和灵巧操纵器机器人,我们将我们的方法应用于这两种机器人,以获得各种各样的技能。与不使用奖励作为接口或不使用运动描述模板的替代方法相比,我们的方法在稳定性和可解决任务的数量方面取得了显著的改进。
限制和未来工作。虽然我们展示了我们的系统可以通过自然语言交互获得多样化的技能,但仍存在一些限制。首先,我们目前为每种机器人形态设计运动描述模板,这需要手动工作。未来方向是统一或自动化模板设计,使系统可以轻松扩展到新的机器人形态。其次,我们的方法目前依赖于语言作为与人类用户的交互界面。因此,设计不容易用语言描述的任务(例如,“优雅地行走”)可能具有挑战性。缓解这个问题的一种潜在方式是将系统扩展到多模态输入,以允许更丰富的用户交互形式(例如,通过展示期望行为的视频)。第三,我们目前使用预定义的奖励项,其权重和参数由LLMs调节。限制奖励设计空间有助于提高系统的稳定性,但也牺牲了一些灵活性。例如,我们目前的设计不支持时变奖励,并且需要重新设计提示以支持时变奖励。因此,使LLMs能够可靠地从零开始设计奖励函数是一个重要且有成果的研究方向。