HUMAN DATA → RETARGETING · READING 01

GMR:先修好参考运动,再要求控制器跟上

Retargeting Matters: General Motion Retargeting for Humanoid Motion Tracking
Araújo, Ze, Xu, Wu & Liu · arXiv:2510.02252v1 · 2025-10-02 · 9 页 · 本次核读 2026-10-22

运动重定向两阶段 IK不是动力学保证
一句话核心洞见

人体动作换到 G1 后的穿地、自相交和关节跳变,会变成 RL 的互相冲突的学习目标。GMR 用分部位局部缩放 + 两阶段 IK改善参考;论文的关键贡献还在于固定 BeyondMimic 配方,观察重定向质量如何改变策略表现。

仿真
21 条 LAFAN1 运动、每条单独训练策略。平均全局位置误差:GMR 104.1 mm,PHC 247.8,ProtoMotions 139.7,Unitree 77.2。
扰动与 OOD
IsaacSim / sim-dr / MuJoCo-ROS;不是未见运动泛化。GMR Dance 5 在 sim2sim 只有 51%,并非全面胜出。
真机
这版论文未报告真机闭环成功率。sim2sim 的传感估计与时序更接近部署,但仍是仿真。
最强可支持结论
在单一 G1、本数据源、固定 tracker 配方下,参考质量显著影响鲁棒性;不能推出任意接触操作都可行。

证据:§III–V,Table I–III,pp.3–7。固定版本 · 官方代码快照 bb1bbe4 · PDF 哈希与图源

1. 为什么“交给 RL 修正”不总是成立?

从参考到控制的第一道边界

高层想要的是“同一种动作”,不是复刻人体坐标。先区分外形相似、关节可达、动力学可跟踪,才能判断误差发生在哪一层;这篇没有把三者视为同一件事。

人和机器人骨长、关节拓扑、活动范围、质量分布都不同。把人体姿态原样搬过去,好比把一个人的衣服尺寸直接当成另一个人的关节约束:局部看起来对,脚却可能进入地板。RL 同时收到“追参考”和“不要摔倒”的要求,只有妥协或失败。

论文五问 · §I–III
问题回答
背景全身 tracking 是遥操作和分层控制的基础,人类运动是可扩展参考来源。
直接依赖PHC:SMPL 形状拟合 + 位置 IK;ProtoMotions:按世界轴缩放 + Mink;BeyondMimic:统一训练与评测 tracker。
具体失败PHC Dance 1/2 穿地;ProtoMotions stop-and-go 跑步腿部自相交;GMR Dance 5 腰部突跳。
押注先修参考,能在不逐动作调奖励的条件下改善可跟踪性。作者不是声称 reward engineering 永远无效。
效果与代价开源方法中更低的平均 tracking error、更高保真偏好;仍需人工匹配、尺度/权重选择,且只做运动学优化。
PHC 穿地、ProtoMotions 腿部相交及 GMR 腰部角度突跳三类失败
论文原图 Figure 3 · p.7 · 300 DPI。第三例提醒:GMR 也会把优化跳变写进参考,权重不是一次调好就对所有动作有效。

2. 先处理坐标和尺度,别用权重掩盖几何错误

上一节的穿地从哪里来?

IK 只会逼近你提供的目标。如果目标本身被错误缩放,求解得再准也没有用。本节先确定目标,再讨论求解器。

GMR 五步:关键体匹配、静止姿态坐标对齐、局部尺度、第一阶段与第二阶段 IK
论文原图 Figure 2 · p.4 · 400 DPI。先定义“应该跟哪里”,再求关节运动。
  1. 匹配关键刚体:为人体与机器人建立对应表。关键体原点不一定是你想象中的掌心或脚底。
  2. 静止姿态对齐:用旋转 offset 对齐局部轴,必要时加局部位置 offset。否则同一个四元数在两个骨架上可能代表不同朝向。
  3. 非均匀局部缩放:根位置统一缩放;各部位相对根的位置使用自己的比例,保留不同身段的适配自由度。
  4. 两阶段 IK:先摆好朝向和关键末端,再调全身位置。
  5. 序列处理:前一帧解作为下一帧初值,最后做整段最低高度校正;这不是接触动力学求解。
pbtarget = α sb(pbhuman − proothuman) + α srootproothumanpaper Eq.2–3,p.5。α = 人体实际高度 / 配置参考高度;位置为 R³,单位 m;s 为无量纲缩放。这里的“局部”是减去根平移,不应擅自理解为额外旋转到 pelvis-yaw 系。

解释性算例,非论文实验:α=1,根 x=1.0 m,手 x=1.5 m;根比例 0.9、手比例 0.75,目标手 x=0.75×0.5+0.9=1.275 m。若把世界坐标直接乘 0.75,则得到 1.125 m,连根的行走位移也被改了。

3. 权重、阻尼与约束,分别在管什么?

目标确定后,才轮到优化

身体通常无法同时满足所有目标。权重选择优先保谁,阻尼限制局部步幅,硬约束限定允许区域。它们不能互相替代,更不能代替正确的标定。

论文第一阶段主要对齐各关键体朝向与手脚位置,第二阶段再纳入全身位置目标并换一组权重。两阶段的直觉是先让链条朝对方向,再用位置微调减少局部极小值。每帧沿用上一帧解,但暖启动不等于显式速度连续性约束。

δq* = argminδq ‖e(q)+J(q)δq‖²W + λ‖δq‖²
subject to q− ≤ q ⊕ δq ≤ q+对论文 Eq.4–6 的局部最小二乘解释,加入阻尼项帮助读代码,不是逐字转写论文公式。e∈Rᵐ 是位置/旋转残差,J∈Rᵐˣⁿ 是 Jacobian,δq∈Rⁿ 是配置的切空间增量;浮动基用流形积分 ⊕,不能直接对四元数做普通加法。位置与旋转残差单位不同,W 同时承担尺度权衡。

无约束的线性小步解为 δq = −(JᵀWJ + λI)⁻¹JᵀWe。真实 GMR 调用 Mink 的速度 IK,并用 integrate_inplace(velocity, dt) 更新。论文提醒 Δt 是求解器参数,不一定等于视频帧间隔。

动手试:想把手前移,为什么全身保姿会“拉回来”?

教学模型仅有一个修正量 Δq。手目标要求 +0.2,保姿希望 0;把局部 Jacobian 归一化为 1。最小化 wₕ(Δq−0.2)² + 1·Δq² + λΔq²,并要求 0 ≤ Δq ≤ cap。闭式解是 min(cap, 0.2wₕ/(wₕ+1+λ))。

修正 Δq = 0.1000 rad;手部剩余误差 = 0.1000;保姿偏移 = 0.1000 rad
可离线阅读的预设结果 · 教学模型,不是 G1 rollout
wₕλcapΔq解释
100.20.1000手和保姿各让一步
2500.20.1923更偏手目标,姿态改变更大
25250.20.0980阻尼压小局部修正
2500.080.0800硬限幅生效,增加权重也不能越界

归一化残差是为了手算;这里的 wₕ 是目标函数系数,不等同于 Mink 的 position_cost 数值。阻尼在完整非线性迭代中影响收敛,不代表必然永久保留同样偏差。

检查理解:脚在地面滑动时,第一步就增大足端权重吗?

先查时钟、尺度、根平移、脚底定义和 frame offset。只有目标几何正确而优化仍让步时,增大权重才在解决对的问题。随后还要查速度峰值、自碰撞和实际 controller replay。

4. 论文公式到官方实现:哪些默认值值得留意?

模型直觉不能替代配置检查

上节告诉我们调参的方向;本节确认固定提交实际用了什么。代码可能已晚于论文,下面的不一致作为版本差异保留,不擅自判断哪一个代表作者当年的实验。

code · bb1bbe40774794fceb2a7c579a3464a28e68c844 · 核查日期 2026-10-22
位置 / 参数实际含义易误读之处
__init__solver=daqp,damping=0.5;FrameTask 的 lm_damping=1。两个 damping 不是同一个参数;旁边的旧注释不优先于可执行默认值。
ik_limitsConfigurationLimit 默认开启;VelocityLimit 可选,默认关闭,开时为 3π。此函数没有默认碰撞约束或动力学平衡保证。
match table 1 → 2脚踝 position/orientation cost 为 50/10;腕部从 0/10 变为 10/5;骨盆从 0/10 变为 100/5。论文“阶段一包含手脚”是一般形式;该 BVH→G1 配置第一阶段腕位置权重实际为 0。
retarget每阶段先求解一次,再最多循环 10 次;按误差改善 >0.001 继续。因此该实现最多可达 11 次调用,不等于论文描述的最多 10 次。
update_targets目标先使用 table1 的 offsets,两个阶段复用目标;table2 offsets 虽被读入,但这里未另用。当前所核配置两表 offsets 相同;若未来调 table2 offset,需检查这条代码路径。
地面校正论文描述整段 FK 最低高度平移;当前类另有可选逐帧脚点贴地与手工 ground offset。完整离线导出要连同调用脚本核对,不能拿一个可选函数替代论文的序列处理。

motion_retarget.py · bvh_lafan1_to_g1.json。论文 p.5 用 exp 描述 SO(3) 差的 so(3) 表达,记号不规范;本页用旋转 Log / rotation vector 解释,不将其照抄成实现。

5. 不把 sim2sim、保真度和真机混成一个分数

把机制接回证据

改善 IK 并不自动证明策略更好。本节分别检查整段完成、存活帧 tracking error 和人的动作保真偏好,最后指出这些证据没有跨过的部署边界。

仿真协议 · §III,pp.3–4;Table I–II,p.6
场景任务 / 划分观测 / 动作 / 时域次数与指标结论与公平性
IsaacSim sim21 条 LAFAN1,G1;每条参考独立训练,不是统一策略 held-out splitBeyondMimic tracker;本文未完整列出观测维数/控制 Hz。每条 5.5–130.5 s,违背 anchor 高度/朝向阈值早停,阈值数值未在本版列全。100 rollouts / policy;整段完成率;位置 mm、关节角 10⁻³ rad固定配方;PHC/PM 还需要 BVH→SMPL(-X) 转换,GMR 直接用 BVH,输入链并非逐环节完全相同。
IsaacSim sim-dr相同参考;打开 domain randomization参考与控制器不变,测参数/观测扰动鲁棒性4096 rollouts / policy不应称为未见任务成功率;训练 seeds 数未报告。
MuJoCo + ROS sim2sim相同参考;不同模拟器及估计/通信路径默认站姿启动;不读特权全局根姿态;参考完整时域100 rollouts / policy可安全模拟部署路径,但不是物理机器人测试。
分维度 ID/OOD 证据
维度对照与结果可比较范围
观测 / 参数扰动GMR Dance 5:sim 96%,sim-dr 92.75%不同试验量、复合扰动,不计算 ID/OOD 保留率;不能隔离哪个噪声导致下降。
模拟器 / 时序迁移Dance 5 sim2sim 51%;Run stop-and-go 为 100%不同模拟器协议,不把变化只归因于 retargeter。
初始参考帧Walk 2 从 frame 0 改为 7:GMR 64%→100%Table III,p.7;Table I 星号结果采用修正起帧,不能忽略该处理。
未见对象 / 复杂交互 / 机器人本体未报告仅 G1、LAFAN1;没有对象交互 benchmark。
真机证据状态
平台任务成功数 / 总数完成时间 / 人工干预 / 安全停止可支持结论
本文未报告物理机器人定量测试未报告;不能计算 Wilson 区间未报告只能使用仿真与用户研究证据,不能把 ROS rollout 记成 G1 真机。
全部 21 个动作的 sim2sim 完成率(%)
Table I · p.6 · 每方法每动作 100 次;* 调整起始参考帧
动作PHCGMRProtoMotionsUnitree
Walk 1100100100100
Walk 2*100100100100
Turn 1*10010099100
Turn 29910010099
Walk old100100100100
Walk army10010099100
Hop100100100100
Walk knees100100100100
Dance 10100100100
Dance 20100100100
Dance 399100100100
Dance 499100100100
Dance 510051100100
Run slow100100100100
Run100100100100
Run stop & go7410026100
Hop around100100100100
Hopscotch100100100100
Jump and rotate9910010099
Kung fu100100100100
Various sports10010010099
20 位参与者对 GMR 与三种方法的动作相似性偏好统计
论文原图 Figure 4 · p.7。20 位参与者,每人 45 个两两比较问题;GMR 对 PHC/PM 的偏好为 74%/63%,对 Unitree 为 25%(无偏好 37%,偏好 Unitree 38%)。这是保真偏好,不是策略成功率。

6. 与 VLA / Embodied AI 的联系

GMR 输出的是参考运动,不是天然兼容所有控制器的 action label。下一步要问:SONIC 的哪个 encoder 接收它?所需未来窗口、joint order、根坐标、单位和控制时钟是什么?再往上,WAM 学的是 token、关节目标还是末端位姿?名称同为 action 不能代替接口契约。