realmimic: SuperMimic on one RTX 4090
A whole-body motion tracker for the Unitree G1, trained on one RTX 4090 (24 GB) in 10.5 hours.
realmimic reproduces SuperMimic (Liao et al., 2026): a humanoid motion tracker trained through a learned, differentiable world model. This repository holds the released model: the policy, the world model it was trained through, the critic and the input normalisers, plus the exports the browser demo runs.
- Code: github.com/kevinhenryzz/realmimic · DOI 10.5281/zenodo.23682224
- Project page and browser demo: kevinhenryzz.github.io/realmimic
Independent and unofficial; not affiliated with the SuperMimic authors, UC Berkeley, NVIDIA, Bones Studio or Unitree.
Model
- Policy: a motion-tracking controller for the stock Unitree G1 (29 joints, mjlab's default G1 model). Every 20 ms it reads the robot's recent joint and body state and the next 10 frames of a reference motion, and outputs joint position targets.
- World model: the learned dynamics model the policy was trained through (one 20 ms step of the robot's state given an action).
- Training: from scratch on BONES-SEED (the paper's filtered set, 129,491 clips), 86,000 iterations, one RTX 4090,
10.5 hours, with the recipe
uv run sm-train releasein the code repository.
Results
The paper's benchmark (its Appendix F): every clip of the BONES-SEED dataset that passes the paper's filter, 129,491 clips, each played once from its first frame. A clip fails if the robot falls: pelvis height off by more than 0.25 m or its tilt by more than 0.8 from the reference. Our policy and SONIC's released policy run in the same evaluator (MuJoCo Warp, mjlab), each with its own motor gains. The paper's figures come from its own evaluator and are quoted as reported. The tracking score is the average normalized tracking reward per step (1 = perfect).
| policy | training | tracking score | failed (of 129,491) |
|---|---|---|---|
| realmimic, released model (this repository) | one RTX 4090, 10.5 h, 86k iterations | 0.9545 | 10 |
| SONIC release, in our evaluator | (NVIDIA) | 0.875 | 218 |
| SuperMimic, as reported (the paper's evaluator scores SONIC at 179) | one H100 80 GB, 3 h | (paper) | 25 |
None of these failures happens on a clip's last frame. Re-running one checkpoint with a different number of parallel simulations moves the failure count by about ±10 (at ~200 failures), so differences under 20 are within measurement noise. Results by motion type, a second training seed and the full method notes are in the code repository.
Motion it never saw (LAFAN1). Whole clips (40, each 1 to 4.5 minutes): 13 and 14 failed over the two seeds, tracking score 0.664 and 0.667 (SONIC release: 13, 0.600). The same clips cut into 882 ten-second segments: 35 and 51 failed (4.0 and 5.8 %), tracking score 0.828 and 0.821 (SONIC release: 52 = 5.9 %, 0.735).
Files
| file | purpose |
|---|---|
realmimic_g1_86k.pt |
the released checkpoint: policy, world model, critic, input normalisers and the training configuration (no optimiser or sampler state) |
web/policy.onnx, web/meta.json |
the policy for the browser demo (float16 weights, float32 compute; observations built inside the graph) |
web/world_model.onnx, web/world_model.json |
the world model for the browser demo (float16 weights, float32 compute) |
Set up the code first (Linux, NVIDIA GPU, uv); see the repository's quick start for the data:
git clone https://github.com/kevinhenryzz/realmimic && cd realmimic
uv sync --group dev
uv run hf download kevinhenryz/realmimic --local-dir weights
Evaluate (the paper's benchmark, and held-out LAFAN1):
uv run python scripts/eval_benchmark.py --ckpt weights/realmimic_g1_86k.pt --npz-dir data/npz/bones_seed \
--clip-list data/bench/full.txt --num-envs 4096 --chunk-size 8192 --out runs/benchmark/release_full.json
uv run python tools/group_table.py "realmimic=runs/benchmark/release_full.json"
uv run python scripts/eval_benchmark.py --ckpt weights/realmimic_g1_86k.pt --npz-dir data/npz/lafan1 \
--num-envs 512 --out runs/benchmark/release_lafan1.json
Fine-tune from the released weights (any flag after the preset overrides it):
uv run sm-train release --run-name my_finetune --init-from weights/realmimic_g1_86k.pt
SONIC runtime, in simulation. Export the checkpoint for NVIDIA's SONIC deploy runtime and run that runtime against
MuJoCo; the exporter adds the motor-gain flags that match the gains the policy was trained on. Robot deployment weights
come with v1.1. Prerequisites: deploy/sonic/README.md.
deploy/sonic/build.sh ~/realmimic-sonic # NVIDIA's runtime at a pinned commit, with safety patches
deploy/sonic/setup_sim.sh ~/realmimic-sonic # one-time simulation setup
uv run python tools/export_sonic_bundle.py weights/realmimic_g1_86k.pt exports/realmimic_g1
uv run python deploy/sonic/sim2sim.py run --robot g1 --bundle exports/realmimic_g1 \
--session planner --out runs/sim2sim/realmimic_g1
Browser demo. web/ holds the two ONNX graphs that the static demo page runs live in the browser with ONNX Runtime
Web, next to MuJoCo compiled to WebAssembly at the training physics settings: the policy, and the world model it was
trained through. meta.json and world_model.json document each graph's inputs and outputs. Try it at
kevinhenryzz.github.io/realmimic.
Intended use
Research in simulation: motion tracking, world-model training, and as a starting point for fine-tuning. Version 1.0 ships no robot-deployment weights. Coming in v1.1: deploy weights and results on a real Unitree G1.
Limitations
- The robot model is the stock Unitree G1 (mjlab's default model and gains). Hands or payloads change the dynamics; fine-tune for your robot before any deployment.
- Over long clips the policy drifts in world position (its goal has no root-position term).
- Not for unattended use. A robot running this software must be on a gantry first, with the stop path local to the robot.
- Under the BONES-SEED licence, the Dataset and any Results may not be used "in any hazardous environments requiring fail-safe performance, including but not limited to the operation of weapons systems, critical infrastructure or medical equipment."
Training data
Training data includes Motion Data by Bones Studio (https://bones.studio/). Use of the underlying dataset is subject to the BONES Motion Capture Dataset License Agreement.
The weights were trained on BONES-SEED, with no other motion data. This repository contains no BONES-SEED motion data or metadata. LAFAN1 is used for evaluation and is not redistributed.
Licence
The weights and exports are released under CC BY-NC 4.0 (non-commercial use, with attribution), in line with the non-commercial research scope of the BONES-SEED licence they were trained under. They remain subject to that licence's terms, including its restriction on use in hazardous environments quoted above. The code is Apache-2.0; see the code repository for its notices and the licences of the projects it builds on.
Citation
@software{henry2026realmimic,
author = {Henry, Kevin},
title = {realmimic: a single-GPU reproduction of SuperMimic with deployment in NVIDIA's SONIC runtime},
year = {2026},
doi = {10.5281/zenodo.23682224},
url = {https://github.com/kevinhenryzz/realmimic}
}
@article{liao2026supermimic,
author = {Liao, Qiayuan and Shao, Yiyang and Long, Junfeng and Zakka, Kevin and Horowitz, Roberto and Abbeel, Pieter and Sreenath, Koushil},
title = {SuperMimic: Scaling Humanoid Whole-Body Control with One Differentiable World Model},
journal = {arXiv preprint arXiv:2610.28480},
year = {2026}
}