supermimic_getup / README.md
RayZhao's picture
SuperMimic G1 tracker with fall recovery (bones_flat_v2_getup_lie, 260k iterations)
4e7a558 verified
|
Raw History Blame Contribute Delete
4.23 kB
---
license: other
license_name: mit-code-bones-seed-data
library_name: pytorch
tags:
- robotics
- humanoid
- unitree-g1
- motion-tracking
- world-model
- fall-recovery
---
# 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](https://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 万次迭代) |
## 使用
```bash
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,分三段:
1. 18 万 → 19.2 万:30% 的回合关闭摔倒终止(`--env.immune-probability 0.3`);
2. 19.2 万 → 21.2 万:再加击倒推力(`--env.push-interval-s 2.0 4.0 --env.push-speed 4.0 6.0`);
3. 21.2 万 → 26 万:再加 10% 从躺姿开始的重置(`--env.lie-probability 0.1`)。
- 续训 `training_state_ckpt_0260000.pt` 需要带 `per_bin` 重置采样器的代码版本(训练时用了 `--env.gmax-mode per_bin`);该采样器还不在 `main` 上。
## 局限
- 策略看不到自己的全局位置,长动作(如 LAFAN1 的 2–4 分钟 clip)会逐渐漂离参考。
- 倒立类动作和超出 G1 关节限位的参考(如跪坐到脚跟)仍会失败。
## 许可
代码为 MIT 许可(见 GitHub 仓库)。模型在 [BONES-SEED](https://huggingface.co/datasets/bones-studio/seed) 数据上训练,使用请同时遵守 BONES-SEED 的许可条款。