枢纽
机器人quadruped, dexterous hand
上真机
物理感知
实时
输入模态language

DrEureka:让 LLM 自动写 reward + 自动配 domain randomization

Yecheng Jason Ma*, William Liang* 等(宾夕法尼亚大学 + NVIDIA + UT Austin)。arXiv:2406.01967 (2024)。 项目页 eureka-research.github.io/dr-eureka · 开源 · foundation_modelssim_to_realLLM4robotics

🧠 一句话心智模型:sim-to-real 这条流水线上有两个最熬人的「人类工程师」岗位——手写 reward 函数 + 手调 domain randomization 参数;DrEureka 直接用 LLM 把这两个岗位一起自动化了,输入只有「任务描述 + 模拟器源码」,输出真机能跑的策略。

🎯 为什么重要:sim-to-real 有两个巨大「人工瓶颈」

把在仿真里训出来的策略搬到真机,几乎是当下「机器人大规模获取技能」的唯一可行路径。但这条流水线上,有两个环节至今几乎只能靠人,又慢又贵:

两个长期被人类「独占」的环节
Reward 工程:写一段 dense reward 代码,要兼顾任务完成度、稳定性、不损电机——典型情况是工程师改一版、训练一次、看结果、再改一版,反复 trial-and-error。
Domain Randomization(DR)参数:选哪些物理量随机化(摩擦、质量、电机增益……)、每个量的取值范围多大——选宽了学不动,选窄了真机崩。论文原话:「form and the initial sampling distributions are typically manually chosen by practitioners with domain expertise, and these design choices have been shown to have large effect on the downstream policy performance.」

更糟的是,这两件事互相耦合:换一版 reward,最合适的 DR 范围也跟着变;反过来亦然。所以工程师常常在两件事之间来回反复。DrEureka 的问题就是:能不能把这两个瓶颈一起交给 LLM?

💡 核心思想:三阶段解耦,让 LLM 当「sim-to-real 工程师」

一个朴素想法是:让 LLM 一次性联合输出 reward + DR。但论文明确指出这条路走不通——「jointly optimizing ... requires searching in a vast, infinite-dimensional function space, which is expensive and inefficient for LLMs」。DrEureka 的关键选择是解耦成三阶段流水线

输入 任务描述 + 模拟器源码 ① LLM 写 Reward 基于 Eureka + 安全指令 (safety prompt) RL 策略训练 PPO + 候选 reward reward 反思迭代 输出最佳 R_DrEureka + 初始策略 π_initial ② RAPP:Reward-Aware Physics Prior 逐个扰动物理参数(其他保持默认) 用 π_initial 在改动后的仿真里 rollout 记录「还能成功」的参数上下界 → 每个 DR 参数的合理范围 ③ LLM 采样 Domain Randomization 输入:RAPP 范围 + 物理常识 输出:16 个 DR 候选分布 → 各训练一条策略 → 挑最好的上真机 Sim-to-Real 部署真机
图 1:DrEureka 三阶段流水线。紫色 = LLM 在干活;黄色 = RAPP 做物理探测;绿色 = RL 训练。注意 LLM 在①和③各出场一次,中间夹着 RAPP 这个「物理标定」步骤——这是 DrEureka 区别于纯 LLM reward 设计的关键。
🔮 直觉:为什么要解耦成三段,而不是让 LLM 一次性出 reward + DR?
因为 LLM 擅长「在有限选项里挑」,但不擅长「在无穷维函数空间里搜」。把任务拆成「先解决 reward(给个起点)→ 用 reward 探明 DR 的物理可行域 → 再让 LLM 在被框好的可行域里挑 DR」,等于把无限维搜索降维成两次有限维选择。每一段对 LLM 都是它擅长的那种「带上下文的代码生成」。

🛠️ 三个组件怎么串起来

组件具体怎么做关键设计点
① 安全感知的 Reward 合成
(Algorithm 1)
在 Eureka 的 reward 生成 prompt 上,额外加一段「安全指令」 l_safety——明确要求考虑稳定性、平滑性、扭矩约束、避免撞 DOF 限位等。
LLM 采样 K 个候选 reward → PPO 训练 → 算 fitness → 反馈反思,迭代 N 轮,选最佳 R_DrEureka
不是事后给 reward 加 safety 项(那样会破坏原有 reward 分量的平衡),而是在 prompt 层面让 LLM 自己把 safety 和 task 项揉在一起,让模型自己决定权重
② RAPP 物理可行域
(Algorithm 2)
对每个候选 DR 参数 p,在搜索值集合 R 上逐一测试:
· 只改这一个参数,其他保持默认
· 用 π_initial 在改过的仿真里 rollout
· 若满足「成功准则」(如前向速度接近目标)则该值标记为「可行」
· 取所有可行值的 min/max 作为该参数的 RAPP 范围 [l, h]
计算很便宜(只跑前向 rollout,可并行),且把 DR 范围与具体 reward 绑定——换 reward 就重算 RAPP,天然反映「reward 决定可学的 DR 范围」这个耦合。
③ LLM 采样 DR 分布 把所有 DR 参数 + RAPP 范围塞进 prompt(论文 Fig. 3 给了原文模板),让 GPT-4 零样本生成 m=16 个 DR 候选分布。
每个 T_i 配合 R_DrEureka 训一条策略,最后在真机上评估 best 和 average。
LLM 用物理常识收窄范围:例如它会解释「restitution 影响 bounce,跑步任务用不到,所以只取下半段」——这是 CEM/BayRn 这类黑盒优化做不到的。
反馈与策略选择 reward 阶段有反思迭代;DR 阶段论文承认没有可靠的 sim 内选择机制(每条策略在不同 DR 上训的,不可直接比较),所以 16 条全保留,在真机上报 best + average。 「策略选择」被列为论文明确的 limitation——未来工作可加「基于 sim 表现预测真机表现」的 selector。
🔮 一个被低估的细节:RAPP 不是「DR 算法」,而是「给 LLM 的提示词工程」
以前的自动 DR(如 AutoDR / CEM / BayRn)是直接把搜到的可行域当 DR 配置。DrEureka 反其道:RAPP 输出的范围只是上下文,最终 DR 由 LLM 在这个范围里再挑一次。论文的实验反复证明:直接用 RAPP 范围当 DR(即 Prompt DR 消融)会让策略过度发力、真机上扭矩爆炸;让 LLM 在范围内收窄,反而最好。

📊 结果:四足 + 灵巧手 双双超过人类设计,还解了「瑜伽球行走」新任务

实验在两个成本都低于 1 万美元的平台(Unitree Go1 四足 12 DoF、LEAP Hand 灵巧手 16 DoF)+ 一个全新任务上做。LLM 后端是 GPT-4,每个任务生成 16 个 DR 候选

主结果 1:四足前向行走(5 米跑道,目标 2.0 m/s)

Sim-to-Real 配置前向速度 (m/s)行走距离 (m)
Human-Designed [25]1.32 ± 0.444.17 ± 1.57
Eureka(无 safety、无 DR)0.0 ± 0.000.00 ± 0.00
DrEureka (Best)1.83 ± 0.075.00 ± 0.00
DrEureka (Average)1.66 ± 0.254.64 ± 0.78

相对 Human-Designed:前向速度 +34%,行走距离 +20%(论文 §I 原文)。纯 Eureka 真机直接 face-plant(0 m/s)——证明「能写 reward」≠「能 sim-to-real」。

主结果 2:LEAP Hand 立方体旋转(20 秒内尽量多转圈)

Sim-to-Real 配置旋转角 (rad)不掉落时长 (s)
Human-Designed [30]3.24 ± 1.6620.00 ± 0.00
DrEureka (Best)9.39 ± 4.1520.00 ± 0.00
DrEureka (Average)4.67 ± 3.5516.29 ± 6.28

最佳策略比人类设计多转近 3 倍(约 +190%,论文表述为「nearly three times the rotation」,文中也用「nearly 300% more」描述相对量级)。

主结果 3:新任务——Walking Globe(四足踩瑜伽球)

环境球上停留时长 (s)
仿真10.7 ± 5.20
真机(实验室,中心点保护)15.4 ± 4.17

真机停留时间甚至比仿真更长——多次做出「恢复动作」稳住球。室外在草地、人行道、木桥(含跨越高度障碍的过渡)上稳定行走 超过 4 分钟;被人踢球、球被放气等扰动下也能稳住。此任务无任何 pre-existing sim-to-real 配置可参考

关键消融与对比

配置速度 (m/s)距离 (m)说明
Without DR1.214.17不随机化,性能下降
With Human-Designed DR1.354.83用人类 DR + DrEureka reward
With Prompt DR(直接用 RAPP 范围)1.434.33范围太宽 → 真机扭矩爆炸
Without Prior(LLM 但不给 RAPP)0.090.3116 条里 15 条触发电机保护断电
With Uninformative Prior0.080.28给的范围太宽等于没给
With Random Sampling(在 RAPP 内随机抽)0.982.81LLM 比随机抽样强
CEM Random0.000.00黑盒优化崩了
CEM RAPP1.465.00给 RAPP 强先验后能跑
BayRn RAPP1.284.00同上
⏱️ Wall-clock 时间:DrEureka 全程 3 小时(所有策略并行训);CEM 10 小时;BayRn 20 小时。后两者还要在真机上反复评估中间策略——对新任务(如 walking globe)来说又危险又不现实。
🔁 真机鲁棒性:在 default / 给腿穿袜子 / 草坪 / 人行道 四种环境上,DrEureka 全部匹配或超过 Human-Designed(Fig. 5)。
📝 Safety 指令的威力:去掉 safety 指令(变回纯 Eureka)后,仿真速度反而更快(1.83 vs 1.70),但学到的是「三足+髋部拖地」的奇异步态,真机直接趴窝 0 m/s(Table XVI)。

🌐 在领域中的位置

手工 sim-to-real(人工 reward + 人工 DR) Eureka(LLM 写 reward,仅在 sim)[Ma 2023] DrEureka(LLM 同时写 reward + DR,真机验证)⭐ GenSim / RoboGen(LLM 自动生成仿真任务) 未来:全自动技能获取(仅给自然语言目标)

DrEureka 站在 Eureka(同作者,sim-only 的 LLM reward 设计)的肩膀上,把 LLM 的角色从「reward 程序员」升级成「整个 sim-to-real 工程师」。它的关键贡献是证明了 LLM 不仅能写 reward,还能处理 sim-to-real 里另一个最难的事——domain randomization 的物理参数搜索。这是 LLM4Robotics 从「写代码」走向「闭合整个训练流水线」的关键一步。

❓ 常见误区

DrEureka 不就是 Eureka 换个名字?

不是。Eureka(同作者前作)只做 sim-only reward 设计——它能在仿真里训出跑得很快的策略,但直接搬到真机会立刻趴窝(论文 Table I 中 Eureka 行:真机 0.0 m/s)。DrEureka 在 Eureka 之上加了三件事:① safety 指令让 reward 对真机友好;② RAPP 物理可行域;③ LLM 采样 DR 分布。Eureka 是 DrEureka 的子模块,不是同一件事。

它是不是彻底消除了人类调参?

大部分场景下是,但有几个明确前提(论文 §VIII Limitations 亲口承认):

  • 假设模拟器已经搭好——URDF、关节、传感器都由人提供;DrEureka 不生成模拟器。
  • 不接视觉——只用低维本体感觉(关节角、速度、重力向量),没把图像接进来。
  • DR 参数训练中固定——不会随策略变好自动调宽(AutoDR / curriculum DR 那种)。
  • 没有可靠的 sim 内策略选择器——目前 16 条候选全上真机评估。

所以准确说法是:「在给定模拟器的前提下,自动化了 reward 和 DR 这两个人工环节」。

为什么要三阶段解耦,而不是联合优化 reward + DR?

论文原文给出了直接回答:「jointly optimizing ... requires searching in a vast, infinite-dimensional function space, which is expensive and inefficient for LLMs to perform.」 reward 是连续函数(无限维),DR 参数也是连续区间——两个一起搜就是无穷维 × 无穷维。LLM 擅长「在结构化选项里做带常识的选择」,不擅长「在高维连续空间里做精细联合优化」。三阶段拆解等于把这个不可解问题切成三个 LLM 友好的子问题。

LLM 选 DR 不会比黑盒优化(CEM / BayRn)慢或差吗?

恰恰相反。DrEureka 全流程 3 小时,CEM 10 小时,BayRn 20 小时。原因有二:① DrEureka 并行训 16 条策略;CEM/BayRn 必须串行迭代,且每轮要在真机上评估中间策略(危险、慢、且新任务没有可用的中间策略)。② LLM 用物理常识做先验(如「跑步任务用不到 bounce」),CEM/BayRn 把 DR 当黑盒数值优化、抓不住这种结构。