SuperMimic G1 tracker with fall recovery (get-up)
A Unitree G1 whole-body motion-tracking policy from an independent reproduction of
SuperMimic (arXiv:2610.28480), fine-tuned so that it gets up after falling
(prone, supine or on its side) and resists knock-down pushes.
Code: github.com/Mr-Zqr/SuperMimic-Reproduced (main).
基于 SuperMimic 复现的 Unitree G1 全身动作跟踪策略,在此基础上做了"摔倒后起身"微调(设计见仓库 docs/REPRODUCTION_PLAN.md 的 D22)。
结果
起身测试:256 个环境,静止站立的 T-pose 参考,全部关闭摔倒终止;"起身"定义为骨盆高度误差 < 0.1 m 且倾角误差 < 0.2,持续 0.5 s,限时 10 s。跟踪评测用固定的 2000 条 BONES 平地子集,每条从第一帧完整播放,无噪声、无域随机化。
| 检查点 | 俯卧 / 仰卧 / 侧卧 起身成功率 | 4–6 m/s 推倒率 | 2000 条子集跟踪回报 |
|---|---|---|---|
| 跟踪基线 bones_flat_v2,18 万次迭代 | 10% / 0% / — | 91%(18.8 万次迭代时测) | 0.921(2 条失败) |
| 本模型,26 万次迭代 | **100% / 100% / 100%**(中位 1.3 / 1.3 / 1.5 s) | 0% | 0.912(6 条失败) |
代价:跟踪回报略降(逐 clip 中位 −0.006),主要来自全局根部位置 / 朝向漂移;新增的失败主要是倒立类动作。
文件
| 文件 | 内容 |
|---|---|
policy.pt |
策略权重 + 配置(35.6 MB),可直接用仓库 main 的评测 / 回放脚本加载 |
training_state_ckpt_0260000.pt |
完整训练状态(世界模型、critic、优化器、采样器,221 MB),用于续训 |
videos/ |
回放视频:起身(22.8 万次迭代,俯卧 / 仰卧各两段)、侧手翻和 180° / 360° 空翻(26 万次迭代) |
使用
git clone https://github.com/Mr-Zqr/SuperMimic-Reproduced.git
cd SuperMimic-Reproduced
uv sync
hf download RayZhao/supermimic_getup policy.pt --local-dir checkpoints
# 交互回放(需要 NVIDIA GPU;有显示器时用原生 MuJoCo 查看器,否则用浏览器版 viser)
uv run python scripts/play.py --ckpt checkpoints/policy.pt --npz-dir data/npz/lafan1 --clips fallAndGetUp1_subject1
# 评测(每条 clip 从第一帧完整播放)
uv run python scripts/eval_benchmark.py --ckpt checkpoints/policy.pt --npz-dir data/npz/lafan1
动作数据不随模型发布,按仓库 README 的"数据"一节准备(LAFAN1 或 BONES-SEED 的 G1 重定向)。
注意:play.py 和评测保留了训练时的摔倒终止(骨盆高度 / 倾角偏差超过阈值即重置)。想观察倒地后起身,需要关闭终止,见仓库 README 的"摔倒起身"一节。
训练
- 观测:论文 Table A.1 的 93 维本体感知(10 帧历史),加未来 10 帧 G1 参考目标;不含全局位置等状态估计。
- 基线:bones_flat_v2,在清洗后的 BONES-SEED 平地子集(102,004 条,198 h)上按论文 Table A.5 训练 18 万次迭代,单卡 RTX 4090。
- 起身微调:从 18 万次迭代续训到 26 万次,学习率恒定 2e-5,分三段:
- 18 万 → 19.2 万:30% 的回合关闭摔倒终止(
--env.immune-probability 0.3); - 19.2 万 → 21.2 万:再加击倒推力(
--env.push-interval-s 2.0 4.0 --env.push-speed 4.0 6.0); - 21.2 万 → 26 万:再加 10% 从躺姿开始的重置(
--env.lie-probability 0.1)。
- 18 万 → 19.2 万:30% 的回合关闭摔倒终止(
- 续训
training_state_ckpt_0260000.pt需要带per_bin重置采样器的代码版本(训练时用了--env.gmax-mode per_bin);该采样器还不在main上。
局限
- 策略看不到自己的全局位置,长动作(如 LAFAN1 的 2–4 分钟 clip)会逐渐漂离参考。
- 倒立类动作和超出 G1 关节限位的参考(如跪坐到脚跟)仍会失败。
许可
代码为 MIT 许可(见 GitHub 仓库)。模型在 BONES-SEED 数据上训练,使用请同时遵守 BONES-SEED 的许可条款。