一句话定位

HumanUP 用两阶段课程式 RL(Stage I 无约束”发现”运动轨迹 → Stage II 在强 sim2real 正则下”跟踪”该轨迹并跨姿态/地形泛化)训练出真实 Unitree G1 人形机器人的起身/翻身(fall-recovery / getting-up)策略,是作者自述的首个在真实人形机器人上成功演示的学习式起身策略。UIUC + Simon Fraser University,RSS 2025

背景与定位

问题范式是人形机器人的接触丰富型全身控制(contact-rich whole-body control)的一个特化子问题——摔倒后的自动起身/翻身恢复。DARPA Robotics Challenge 的 46 次试验中有 26 次摔倒,其中 25 次需要人工介入恢复,凸显该问题的工程重要性。

论文指出起身任务与常规人形/四足**行走(locomotion)**学习有三点本质不同,使既有工作(如周期步态跟踪类的 hugwbc、敏捷全身技能跟踪类的 asap,同属 humanoid-wbc 全身控制范式)难以直接套用:

  • 非周期行为:起身没有左右交替的周期性接触模式,需要自己”发现”接触序列,phase coupling 等常规 locomotion 技巧失效;
  • 接触丰富:脚以外的身体部位(手、背、腰)都可能已经接触地面并被主动用来发力,无法像 locomotion 那样简化/冻结上肢碰撞几何或用大仿真步长;
  • 奖励稀疏:躯干需要先下压再抬起,很长一段时间内许多身体部位的”进展”是负的,不像速度跟踪那样有稠密即时反馈。

既有起身方案分三类,各有局限:运动规划式配置图跳转(依赖预定义姿态图,难泛化到不可预测的中间状态);商用手工设计轨迹(如 G1 出厂自带的起身控制器、Booster Robotics 的恢复控制器,只能覆盖有限起始状态);角色动画领域的 RL 模仿算法(DeepMimic / AMP / PHC 等,用简化动力学与更高自由度的 SMPL 角色,学出的高速动作无法直接迁移到真实机器人)。HumanUP 用两阶段 RL 课程同时解决”任务能否学会”和”动作能否部署”两个子问题。

模型架构

这是一个纯本体感受 MLP 策略(RL policy,非 VLA/无视觉/无语言条件),机器人平台为 Unitree G1(29 个可驱动 DoF:上身 14、下身 12、腰 3;起身任务不涉及操作,禁用 3 个手腕 DoF,实际使用 23 DoF)。腿部电机扭矩上限 83N,明显高于臂部电机的 25N。IMU 提供 roll/pitch,关节状态来自电机编码器;采用位置控制,PD 控制器工作在 50 Hz

观测o_t = [z_t, s_t, s_{t-10:t-1}] ∈ R^868

  • s_t ∈ R^74:本体感受(roll/pitch、角速度、DoF 速度、DoF 位置);不使用线速度和 yaw(真实世界难以可靠估计);
  • s_{t-10:t-1}:10 步历史状态;
  • z_t ∈ R^54:环境外在信息的编码潜变量,用 regularized online adaptation(RMA 类方法)学习。

动作a_t ∈ R^23(对应 23 个使用中的 DoF)。

训练两个策略模型(Stage I 的发现策略 f 与 Stage II 的可部署策略 π),网络结构均为 MLP,用 PPO 优化 γ-折扣期望回报。两者共享同一套观测/动作接口,区别只在训练阶段的奖励与约束(见下)。

数据

HumanUP 不依赖离线动作/演示数据集训练策略——它是纯仿真 RL,“数据”体现为姿态课程数据集域随机化范围

  • 为 Stage II 构造姿态数据集 P20K 仰卧(supine)姿态 + 20K 俯卧(prone)姿态,做法是从标准躺姿随机化初始 DoF、把机器人从 0.5m 高处释放、仿真 10 秒消解自碰撞;每组各取 10K 用于训练、其余用于评测
  • Stage I 只用单一标准躺姿(外加混入站立姿态加速学习),不做姿态随机化,以简化”发现”阶段。
  • 地形:Stage I 只用平地;Stage II 引入平地 + 粗糙地形 + 斜坡的地形随机化,并叠加摩擦系数、base CoM 偏移、控制延迟等动力学随机化(沿用已有 sim2real 惯例)。
  • 真实世界评测覆盖 6 种地形:混凝土、砖面、石板砖、泥泞草地、草坡(~10°)、雪地——跨越粗糙度、凹凸度、地面顺应性、坡度四个维度,但这是评测集而非训练数据。
  • 无 sim-to-real 之外的跨具身/协同训练;单一 G1 具身。

训练方法

两阶段课程(核心方法论贡献):

Stage I(发现策略 f):弱正则、无部署约束,只用任务奖励 + 对称性奖励,专注”能不能学会”。

  • 起身任务奖励 r_up = r_height + r_Δheight + r_uprightness + r_stand_on_feet + r_Δfeet_contact_forces + r_symmetry(对称项为软对称——只鼓励不强制左右对称动作,相较过去工作用的硬对称,代价是牺牲部分样本效率换取更大自由度和更好的翻身效果);
  • 翻身任务奖励仅 r_roll = r_gravity(鼓励投影重力趋近目标朝向);
  • Stage I 关键奖励权重(附录 Table II,节选):base height exp 权重 5、head height exp 权重 5、Δbase height 权重 1、standing-on-feet 权重 2.5、feet height 权重 2.5、body upright 权重 0.25、foot orientation 权重 -0.5、soft body/waist symmetry penalty 各 -1.0;正则项很弱:DoF acceleration -1e-7、DoF velocity -1e-4、torque -6e-7、torque/DoF limits 违规惩罚仅 -0.1/-5;termination 惩罚 -500。
  • Stage I 判别发现出的轨迹未受平滑/速度/扭矩约束——实测发现的起身动作快而不安全(<1 秒完成,附录 Fig.7 显示持续”跳动”)。

Stage II(可部署策略 π):跟踪 Stage I 发现轨迹的8 倍减速版本(起身减速到 8 秒,翻身减速到 4 秒,均通过插值实现),同时施加强 sim2real 正则。

  • 跟踪奖励 r_tracking = r_tracking_DoF + r_tracking_bodyr_tracking_body 对起身任务具体为 r_head_height,对翻身任务为 r_head_gravity;附录中 tracking DoF position 权重 8、feet distance 权重 2、foot orientation 权重 -0.5;
  • 强控制正则(附录 Table III,节选):torque limits 违规惩罚从 Stage I 的 -0.1 强化到 -5(50 倍)、torque 正则项从 Stage I 的 -6e-7 强化到 -0.003(约 500 倍);DoF position limits 违规惩罚两阶段同为 -5、energy 同为 -1e-4,未变化;termination 反而从 Stage I 的 -500 放松到 Stage II 的 -50;另有 DoF acceleration -1e-7、DoF velocity -1e-3、action rate -0.1、ankle/upper torque 各 -6e-7、angular/base velocity 各 -0.1;
  • Stage I→II 三条并行课程:弱→强控制正则(平滑度奖励、DoF 速度惩罚等);快→慢动作速度(<1s → 8s,为 Stage II 提供稳定跟踪目标);固定→随机动力学/域参数(地形随机化 + 噪声注入)。
  • 同时叠加简化→完整碰撞网格(Stage I 用简化 URDF 加速发现,Stage II 换回 Unitree 官方完整 URDF 以改善 sim2real)与标准姿态→随机姿态(canonical → 20K 采样姿态集)两条课程。

Infra(训练 / 推理工程)

  • 仿真器:IsaacGym;仿真频率 1000 Hz(精细建模密集接触),底层 PD 控制器 50 Hz(与真机一致)。
  • 训练规模:Stage I 发现策略训练约 5B 仿真步;Stage II 可部署策略训练 20K 仿真步(原文数值如此,两阶段步数差距极大,疑似 Stage II 收敛更快或统计口径不同,未进一步说明)。4,096 个并行环境,跑在单张 NVIDIA RTX 4090 或 L40S GPU上(单卡训练,无多机/多卡并行)。
  • 精度:未披露(论文未提及 FP16/FP32/BF16)。
  • 推理/部署:策略直接部署到真机 G1,50 Hz 位置控制闭环;HumanUP 起身耗时约 6 秒,G1 出厂手工控制器耗时约 11 秒(HumanUP 快 2 倍以上)。控制延迟未披露具体数值。

评测 benchmark

仿真评测(Table I,held-out 10K 仰卧 + 10K 俯卧姿态,全部用完整 URDF 测试,任务分三类:❶仰卧起身 ❷俯卧翻身至仰卧 ❸俯卧起身=❷+❶串联):

  • HumanUP 完整方法:❶起身成功率 95.34%(对比 Tao et al. 基线 92.62%、去掉 Stage II 后 24.82%、去掉完整 URDF 93.95%、去掉姿态随机化 65.39%、硬对称版本 84.56%);❷翻身成功率 94.40%;❸俯卧起身成功率 92.10%(Tao et al.† 基线 98.99%,其中 † 号方法直接单策略解决整个俯卧起身任务、无独立翻身策略)。
  • 平滑度/安全性:Tao et al. 基线与 HumanUP 在 ❶❸ 两个起身任务上成功率相近,但 action jitter 分别为 5.39(❶)/ 11.73(❸),对比 HumanUP 的 0.56(❶)/ 0.39(❸);论文原文指出两者跨 ❶❸ 平均 action jitter 相差近 18 倍(本文核算:(5.39+11.73)/2 ÷ (0.56+0.39)/2 ≈ 18.0,与原文吻合),且 Tao et al. 的动作因过快过跳(附录 Fig.7:持续跳动、脚步不稳)而无法安全部署真机。
  • 关键消融结论
    • Tao et al. [65] 与 HumanUP w/o Stage II 虽成功率相近,但 action jitter / DoF pos jitter / energy 全面数量级劣化,无法安全部署到真机(本文用真机验证 Sim2Real 列,两者均标记为失败);
    • 单阶段学习(HumanUP w/o Two-Stage Learning)在同时施加全部 sim2real 正则时直接学不会任务(未列入表格,因”无法解决任务”),证明两阶段课程本身是必要的,不能靠单阶段”一步到位”;
    • 去掉完整 URDF 的版本在仿真里成功率不降反而略好,但真机 5 次全部失败(因训练时用简化碰撞网格,接触预期与真实接触不匹配);
    • 软对称优于硬对称,尤其在翻身任务上差距更大(94.40% vs 75.53%),因为翻身这类非对称动作与硬对称假设冲突。
  • 训练曲线(Fig. 4):约 5B 归一化仿真步内,终止高度与身体直立度持续上升。

真实世界评测(G1 机器人,6 种地形:混凝土/砖面/石板砖/泥泞草地/草坡~10°/雪地):

  • 起身成功率 78.3%翻身成功率 98.3%(VI-A 正文明确给出);
  • Fig. 3 图注另给出一个对比数字 “78.3% vs 41.7%“(用于对比 G1 出厂控制器与 HumanUP w/o 姿态随机化两个基线,图注未明确 41.7% 具体对应哪一个基线,本文按原文引用,不做臆断归属);
  • G1 出厂控制器仅在平坦、摩擦良好的混凝土地面工作正常;在砖面/石板砖上手臂易卡在凸起间、在斜坡上因草地阻力和斜坡失稳难以完成蹲起、在顺应性地面上失稳、在雪地上打滑;HumanUP 两个版本(含/不含姿态随机化)均优于 G1 出厂控制器,姿态随机化版本进一步优于无随机化版本;
  • 电机温度:G1 出厂控制器执行时手臂电机显著升温(因 Phase 1 用手撑地滑动躯干),HumanUP 更多利用扭矩上限更高(83N vs 25N)的腿部电机;
  • 效率:HumanUP 约 6 秒完成起身,是 G1 出厂控制器约 11 秒的 2 倍以上效率;
  • 失败模式:草坡上 HumanUP 能部分抬起身体但因脚部姿态不稳而摔倒(G1 出厂控制器则完全无法蹲下);雪地上两者均可能因湿滑变形地面而失败。

创新点与影响

  • 贡献:(1) 提出把”任务能否学会”(hard-to-easy 任务课程)与”动作能否部署”(easy-to-hard sim2real 课程)拆成 Stage I/II 两阶段的通用配方,并证明单阶段同时施加全部约束会直接学不会该任务;(2) 针对起身/翻身这类非周期、接触丰富、奖励稀疏的任务给出一套具体奖励设计(软对称、Δheight/Δcontact-force 连续进展信号);(3) 首次在真实人形机器人(Unitree G1)上演示学习式起身/翻身策略,成功率、平滑度、能耗均超过厂商出厂手工控制器,且扩展到出厂控制器不支持的俯卧起身场景。
  • 改变了什么:把”起身”这一此前只能靠人工分阶段轨迹(G1 出厂三段式:复位→手撑滑动蹲起→腰部发力站起)解决的问题,变成可学习、可跨地形/跨姿态泛化的策略,效率提升 2 倍以上,并减少对高扭矩上限较低的手臂电机的依赖(更少过热风险)。
  • 作者自述局限:1) 依赖 IsaacGym 等高性能物理引擎模拟接触丰富任务,当前机器人仿真器的接触动力学精度/效率仍落后于动画和游戏行业(作者点名 Genesis、MuJoCo Playground 作为潜在改进方向);2) RL 过程本身是欠约束问题,学出的动作不保证与人类起身动作一致(例如发现的动作倾向于抬手保持平衡,形态不自然)。

原始链接

一手源存档(sources/)