枢纽
上真机
物理感知
实时
输入模态proprioception

ReActor:在物理引擎里「重写」人类动作给机器人

David Müller, Agon Serifi, Sammy Christen, Ruben Grandia, Espen Knoop, Moritz Bächer(Disney Research, Switzerland)。ACM Trans. Graph. 45(4) Art.97, July 2026。arXiv:2605.06593。 retargetingbilevel optimizationmotion_prior 线索

🧠 一句话心智模型:别再「先 kinematic 重定向、再 RL 跟踪」两步走——把它们塞进同一个物理仿真里,做成一个双层优化:上层调「参考动作怎么偏移」,下层让 RL 跟着学。物理引擎自动帮你擦掉脚滑、自穿模、不可行动作——它们根本生不出来。

🎯 为什么重要:重定向的「脏数据」是模仿学习的隐形杀手

人形机器人学动作的标配流程是:人类动捕数据 → 重定向到机器人 → RL 跟踪。第二步看起来是预处理,但其实是性能瓶颈点。Araujo et al. 2025 已经指出:重定向产物的 kinematic 质量直接决定下游 RL 训练能否成功。

核心痛点:传统重定向方法(不管是优化型还是学习型)都是在运动学层面做事,不进物理引擎。于是会出现三类经典伪影:
  • 脚滑(foot sliding):脚贴地却滑行——机器人按这个学,落地就摔。
  • 自穿模(self-penetration):参考动作里手穿过身体——目标机器人 DoF 不够,强行跟踪会震荡。
  • 动力学不可行(dynamically infeasible):参考要求浮空一秒——物理上做不到,policy 学出来全靠辅助力硬撑。

更糟的是,优化型方法(GMR、OmniRetarget)在关节极限附近会陷进局部极小:手臂在奇异构型附近转一下、撞上关节限位,整个动作就「卡住」,输出变成不可用的废料。ReActor 把整个流程拉进物理仿真,这些问题被「物理一致性」一刀切掉。

💡 核心思想:双层优化 = 让「参考动作」和「跟踪策略」互相打磨

形式上是一个标准双层优化(bilevel optimization):

$$\min_{p \in P}\; L(p,\phi^*(p))\quad \text{s.t.}\quad \phi^*(p)=\arg\max_\phi R(p,\phi)$$

翻译成人话:外层调重定向参数 $p$(每个对应刚体对的位置偏移、朝向偏移、垂直微调),内层是 RL 训练跟踪策略 $\pi_\phi$。两边交替更新——参考动作越来越适配机器人,策略越跟越稳,互相收敛。

上层:参数优化(Upper Level) 输入:人类动捕 m_t → 参数化映射 p(pos / ori / 垂直偏移) → 重定向后的参考 g_t 目标:min L(p, φ*) = ‖g_t − s_t*‖²(参考 vs. 实际仿真状态) 下层:强化学习(Lower Level, PPO + Isaac Sim) 策略 π_φ(a_t | o_t, g_t):PD setpoints + 辅助 root wrench → 仿真出 s_t* 目标:max R = 跟踪奖励 − 力矩/动作平滑度/wrench 惩罚 g_t(参考) s_t*(仿真状态反馈) 同一物理仿真里跑:脚滑/穿模/不可行动作 → reward 直接掉 → 两层一起避开
图 1:ReActor 的双层优化。把重定向「拉进」RL 训练所在的物理引擎,让参考与策略互相校准(Fig.2 改绘)。

🛠️ 三个让双层优化真跑得起来的关键设计

设计心智为什么必要
① 简化的上层次梯度(不用逆 Hessian) 标准 TTSA 要用隐函数定理算 $\nabla_p L$,涉及下层次最优策略对 $p$ 的灵敏度——RL 里几乎算不出。ReActor 假设 $\partial s_t^*/\partial g_t = \alpha I$(α∈[0,1],最优轨迹只「部分」跟随参考变化),梯度简化为 $\widetilde{\nabla}_p \ell = (1-\alpha)\,\partial_{g_t}\ell \cdot \nabla_p g_t$。 把「双层 RL」从理论上美好、实践上跑不动 → 变成「单循环交替更新」,能在 20k PPO 迭代里同时收敛两层。
② 极简参数化 + 凸约束 每个语义刚体对只有 3 个待优化量:位置偏移 $p_b^\text{pos}$、朝向偏移 $p_b^\text{ori}$、每段动作的垂直微调 $p_z$。约束在球内:$\|p_b^\text{pos}\|_2\le 0.5$ 等。 参数空间小 + 凸 → 上层不会乱漂;只需用户提供稀疏的刚体语义对应(甚至「头↔左手」这种错配都能稳定运行)。
③ Residual Force + 相位变量 ψ 策略除 PD setpoints 外可对 root 施加辅助 wrench(RFC);用 ψ_t∈[0,1] 的「重定向准备阶段」替代 DeepMimic 的 Reference State Initialization。 跨形态时无法直接从参考取初始关节角,必须让策略自己「走过去」;辅助力让单一策略能覆盖整个 AMASS(包括倒立等极端动作),后期 reward 惩罚把它压回 0。
🔮 直觉:为什么「物理一致性」几乎是免费的?
因为参考动作 $g_t$ 不是直接给到 RL 当目标——它是被仿真出来的状态 $s_t^*$ 拿来跟 $g_t$ 比。任何脚滑、穿模、悬浮,都意味着 $s_t^*$ 无法贴合 $g_t$,loss 直接上涨;上层自然把 $p$ 往「物理上能做到」的方向调。换言之,物理引擎就是天然的可行性过滤器

📊 关键结果:四类伪影全部归零,下游 RL 成功率 +2~17%

对比对象:GMR(Araujo 2025)与 OmniRetarget(Yang 2025a)——均为 SOTA kinematic 重定向。目标机器人:Unitree G1(1.27 m / 35 kg / 29 DoF)和 Disney 自研小型人形 Lima(0.84 m / 16.2 kg / 20 DoF)。数据集:PHC-filtered AMASS。

指标(G1)GMROmniRetargetReActor
地面穿透时间占比 ↓0.530.000.00
自穿模时间占比 ↓0.070.120.00
脚滑速度 [cm/s] ↓1.252.000.17
脚悬浮高度 [cm] ↓0.340.490.12
下游 RL 成功率 [%] ↑89.9395.5197.45
下游关节跟踪误差 [deg] ↓9.796.624.22
指标(Lima,尺度差异更大)GMROmniRetargetReActor
下游 RL 成功率 [%] ↑91.2379.85(陷局部极小)95.07
下游位置误差 [cm] ↓3.535.861.46
下游关节误差 [deg] ↓10.4514.104.38
其他维度数字(来自原文)
训练成本20k PPO 迭代,~6.5 h / 单 GPU(4096 并行环境,Isaac Sim,RTX 5090)。与 OmniRetarget ~7h / GMR ~5h(CPU)相当。
实时部署交互式动画场景下推理 88.3 Hz,超过实时需求;艺术家可在线编辑动作。
跨形态同一框架 retarget 到四足 ANYmal D(50 kg, 12 DoF),动作视觉外观保留。
真机Lima 机器人 sim-to-real 部署成功(DeepMimic-style 跟踪 policy + ReActor 参考数据)。
泛化在 AMASS 上训的 policy 迁移到 100STYLE 测试集,跟踪误差仅比专门训练的 pseudo-GT 多 ~0.07 cm / ~0.6-1.1°(Tab.5)。
关键洞察:ReActor 不是在「平均分」上小赢——它在所有四个物理伪影指标上几乎归零(这是 baselines 结构性做不到的),下游 RL 成功率则是结构性提升。「kinematic 做重定向 → 物理做跟踪」的两步范式,被合并成单步物理重定向。

🌐 在领域中的位置

运动学重定向(Gleicher 1998 / 静态优化) 学习型重定向(SKAN / 对抗) 可微物理重定向(DOC, Grandia 2023) ReActor(双层优化 + RL)⭐

位置上,ReActor 处在「motion retargeting」与「physics-based motion tracking」两条线的并轨点:上游接 DeepMimic / PHC / ProtoMotions 这类跟踪框架,下游服务人形与四足的 sim-to-real。和 BeyondMimicDeepMimic 形成「参考数据生成 → 跟踪策略」的耦合链条。

❓ 常见误区

ReActor 是 motion tracking / imitation learning 吗?

不是。论文明确区分:retargeting ≠ imitation。DeepMimic 这类工作 RL 跟踪的是「给定」参考;ReActor 解决的是更前面一步——怎么造一个「适合机器人跟踪」的参考。它当然也训 RL,但那个 RL 是重定向流程的一部分,最终产物是参考数据(+ 一个可复用的重定向 policy)。

为什么需要 bilevel?直接把 p 当作可学习参数丢进 RL 不行?

可以,但发散。p 影响每条轨迹的每一帧目标,把它和策略一起用 PPO 单层更新,上层梯度方向会被 RL 的随机性淹没。Two-Timescale(TTSA)的精髓是两个学习率:上层慢、下层快,让策略「近似收敛」后再可信地评估 $L(p)$。ReActor 的 $(1-\alpha)$ 估计就是为了避免算逆 Hessian。

辅助 wrench(RFC)不是作弊吗?机器人又不能飞。

论文承认这是 sensitive hyperparameter:惩罚太轻 → policy 全靠 wrench 硬撑(不物理);太重 → 极端动作(倒立)直接失败。Fig.8 给了 pareto 曲线。在下游 tracking 阶段,wrench 会被移除(Tab.4 的下游 RL 是「without residual forces」),所以最终部署的机器人不依赖外挂力。

它和 BeyondMimic、CALM、PHC 的关系?

它们是下游消费者。BeyondMimic 用 diffusion 做多样化控制器,PHC 用大规模 RL 跟踪 AMASS——但它们都假设已有 retargeted reference。ReActor 给它们喂更干净的参考数据。文中也讨论:把 ReActor 当作 generative motion model 的训练数据生产器,是未来方向。