里程碑
机器人Unitree G1
数据集AMASS
上真机
物理感知
实时
输入模态proprioception

ASAP:让仿真里的「C 罗跳」落到真机器人上——靠学一个「残差动作」补 sim-to-real gap

Tairan He, Jiawei Gao, Wenli Xiao 等(CMU + NVIDIA)。arXiv:2502.01143v3, 2025。 项目页 · 代码 · humanoid whole-bodylocomotion 线索 T03sim-to-real

🧠 一句话心智模型:你仿真里练好了 C 罗的庆祝跳,搬到真机器人上一跳——摔了。为什么?仿真器把电机功率算大了、关节阻尼算错了、连杆质量偏了。Domain Randomization 让策略变保守(什么都防等于什么都不精),SysID 又找不全参数。ASAP 的招:在仿真里加一个「残差动作」 $\Delta a$,让 $a + \Delta a$ 在仿真里复现真机的失败——这样训练时就已经在「假真机」上练,搬到真机自然就稳。

🎯 为什么重要:sim-to-real gap 是人形敏捷动作的死穴

想让人形机器人做出 C 罗 180° 转体跳、LeBron 单腿平衡、Kobe 后仰跳投这种高动态全身动作,靠人在真机上 RL 试错是不现实的(论文坦承两台 G1 在数据采集期间被弄坏)。必须先在仿真练好再搬过去——但仿真跟真机有 gap:

三种应对 sim-to-real gap 的传统路子 SysID(系统辨识) 直接估物理参数 (质量 / 阻尼 / 摩擦) 问题: ·需要预定义参数空间 ·需要真实 torque 测量 ·参数空间可能漏掉 真机的关键差异 → 复杂真实动力学难抓 Domain Randomization 把参数当随机变量训 (覆盖各种可能) 问题: ·策略被迫「对什么都鲁棒」 → 策略变得保守 ·牺牲了敏捷性 ·敏捷动作(跳跃 / 单腿) 仍然失败 ASAP(Delta Action) 真机上跑一遍,收集数据 学一个残差动作补 gap 优势: ·不需要预定义参数 ·直接学「怎么改动作」 ·配合 RL fine-tune ·保留敏捷性 → 真机跳投成功
图 1:ASAP 的定位——不是辨识参数,也不是盲目随机化,而是学一个直接修正动作的残差模型

💡 核心思想:在仿真里装一个「假装是真机」的残差头

ASAP 两阶段流程 阶段 1: Pre-training + 真机数据收集 人类视频 → TRAM 估 SMPL → sim-to-data 清洗 → 重定向到 G1 → 训练 phase-based tracking policy → 真机部署这个 policy,收集 (st, at, st+1) 真实轨迹 5 任务 × 每任务 30 次尝试(≈150 试)→ 筛出 100 段 clips;外加 10 分钟 locomotion 阶段 2a: 训 Delta Action 模型 在仿真里用真机 action ar 加上 Δa 复现真机轨迹 st+1 = fsim(st, ar + Δa) ≈ srt+1 阶段 2b: RL Fine-tune 策略 冻结 Δa 模型,把它嵌进仿真器 fine-tune 原 policy 适应「修正过的物理」 → 部署时丢掉 Δa,直接跑 fine-tuned policy 真机部署:只用 fine-tuned policy,Δa 已内化
图 2:ASAP 两阶段——先把策略部署到真机采数据,再学残差补 gap,最后在「修正过的仿真」里 fine-tune 策略。Δa 不上真机,只是「训练时的脚手架」。

形式化:训练阶段 2a 的目标,是学一个 $\pi_\Delta(s, a)$ 使得 $$f_{\text{sim}}(s, a + \pi_\Delta(s, a)) \approx f_{\text{real}}(s, a).$$ 注意:$\pi_\Delta$ 是一个 RL policy(不是简单回归),由 PPO 优化(奖励 = 仿真下一状态 ≈ 真机下一状态)。

🛠️ 怎么做到的:从视频到 delta 模型的完整管线

组件心智关键数字(来自 PDF)
① 数据生成(视频 → 动作)TRAM 从视频估 SMPL → MaskedMimic 在 sim 中清洗不可行动作 → shape-and-motion 两阶段重定向到 G123-DoF;多个运动难度等级
② Phase-based Tracking Policy状态包含时间相位 $\phi\in[0,1]$ 当 goal;不需要 odometry23-DoF action;5 步历史
③ Asymmetric ACactor 只看 proprioception + 相位;critic 看全局位置 + root velocity消除部署时对 odometry 的依赖
④ Termination Curriculumtolerance 从 1.5m 逐步收紧到 0.3m,避免策略一开始就摆烂1.5m → 0.3m
⑤ Reference State Init (RSI)随机采样相位起点初始化——让策略能并行学动作不同阶段,不必从头顺学backflip 必须先会落地
⑥ Delta Action 模型真机 4-DoF 踝关节 delta(不是全身 23-DoF);用 RL 训练100 段真机轨迹足够训 4-DoF;全身 23-DoF 需要 >400 段
🔮 直觉:为什么 delta action 而不是 delta dynamics?
论文专门做了对比(Fig.4):Delta Dynamics 是学「下一状态的残差」 $\Delta s_{t+1}$——它会过拟合,开环短期内准,但闭环 rollout 时残差累积爆炸。Delta Action 是学「怎么改当前 action」 $\Delta a$——它能被 policy 主动「反推」,闭环稳定。这就像「修工具」比「修结果」更稳。
🔮 直觉:为什么真机只用训 4-DoF ankle delta?
两个理由:(1) 真机数据太贵——论文坦承 2 台 G1 在数据采集期间坏掉,全身 23-DoF delta 至少要 400 段,采不动;(2) Unitree G1 的踝关节是机械连杆设计,仿真建模误差最大——sim-to-real gap 的「重灾区」就在脚踝。把宝贵的真机数据集中训 ankle delta,性价比最高。

📊 关键结果:sim-to-sim 和 sim-to-real 都显著好

评估关键数字
sim-to-sim(IsaacGym → IsaacSim/Genesis)Tab.IV Hard 级别:IsaacSim 上 Eg-mpjpe 129 vs Vanilla 148 / SysID 165 / DeltaDyn 137;Genesis 上 100% 成功率,DeltaDyn 只有 60%
开环重放(Tab.III)长程(1.0s)IsaacSim 上 Eg-mpjpe 37.9 vs OpenLoop 80.8,DeltaDyn 反而 68.1——证明 delta action 抗长程误差累积
真机(Tab.V)Real-Kick:Eg-mpjpe 50.2 vs Vanilla 61.2;Real-LeBron (OOD):112 vs 159——sim-to-real 误差减少最高 52.7%
RL fine-tune > training-free 方法Fig.11:fixed-point iteration 和 gradient search 都不如直接 RL fine-tune(因为它们假设 one-step matching)
结构性 insight(Fig.13)Δa 在各关节上的幅值不均匀——下肢显著大于上肢,脚踝 pitch 最大,证明它学到了真实的物理 gap 分布
vs Random Action NoiseFig.12:适度噪声 β ∈ [0.025, 0.2] 能帮一些,但远不及 delta action(MPJPE 126 vs 噪声最好 173)——证明 Δa 学的是结构性修正,不是单纯增强鲁棒性
关键洞察:ASAP 把 sim-to-real 这个老问题,重新定义成「学一个动作空间的残差」而非「辨识参数」或「盲目随机化」。这个视角转换让敏捷动作(C 罗跳、Kobe 后仰)第一次在真机上跑起来。而且 $\pi_\Delta$ 在关节上的幅值分布还顺带诊断出 sim-to-real gap 集中在哪——脚踝。

🌐 在领域中的位置

SysID / BayesSim(参数辨识) Domain Randomization(保守鲁棒) RMA / Online SysID(在线隐式适应) ASAP(delta action RL fine-tune)⭐

ASAP 是 sim-to-real 流派里「学残差而非学参数」思路的代表。它与 HOVER(论文 [26])等工作互补——前者(ASAP)解决「仿真和真机不对齐」,后者(HOVER,versatile whole-body controller)解决「策略通用性与表达力」。关联线索:T01 locomotion 谱系

❓ 常见误区

delta action 模型在部署时还要用吗?

不用。这是 ASAP 的关键设计:Δa 只在「修正过的仿真器」里用,目的是让 fine-tune 阶段的仿真环境贴近真机。fine-tune 完成后,Δa 已经被「内化」进 policy——部署时直接跑 policy,丢掉 Δa。否则真机上还得跑 Δa 模型,多了延迟和不可靠性。

为什么不直接在真机上 RL?

论文里写到:数据采集期间弄坏了 2 台 Unitree G1。敏捷动作(跳跃 / 单腿平衡)会让电机迅速过热、关节受损。真机 RL 不仅危险,而且数据效率极低。ASAP 的两阶段——sim 大量预训 + 真机小量 fine-tune Δa——是务实折衷。

它和 DreamWaQ / RMA 这类在线适应方法有什么不同?

RMA / DreamWaQ 学的是「状态 / 隐变量」的在线适应(policy 自己根据 proprioception 推断环境)。ASAP 学的是「动作残差」——直接补物理 gap。前者适合 locomotion(环境相对稳定),后者适合敏捷动作(一次性、高动态、容错小)。两者可以组合。

delta action 会不会过拟合到采集的那几个动作?

论文做了 OOD 实验(Real-LeBron,训练时未见过)——Δa fine-tune 后真机 MPJPE 从 159 降到 112,说明它学到的是通用的物理 gap 修正,不是某个动作的特化。但作者也指出,数据规模是关键限制——全身 23-DoF delta 还需要 >400 段真机数据,未来要解决 sample efficiency。