muscle-supermimic

Whole-body motion tracking for musculoskeletal humanoids with one differentiable world model, on one RTX 5090 in 4 hours

Kaibo He Maciej Bakowicz Shihe Zhou Yanan Sui* Dhanush Radhakrishnan*
*Corresponding author

This project is under active development: its results keep improving, and the code is updated along with them.

MS-Human-700 and MyoFullBody tracking three training clips.Turning left, walking forward and walking backward, from MuscleMimic's KIT set; in each pair MS-Human-700 (700 muscles) on the left and MyoFullBody (354 muscles) on the right, each driven by its own policy, both from iteration 10000. Muscles are colored by their activation, from light grey (0) to deep red (1).

Overview

SuperMimic trains a whole-body tracking policy by backpropagating through rollouts of one learned world model of the body. muscle-supermimic runs it on musculoskeletal humanoids: MS-Human-700 (700 muscles) and MyoSuite's MyoFullBody (354 muscles), on mjlab and MuJoCo-Warp, with MuscleMimic's tracking task.

Between the policy and the skeleton sit activation dynamics, wrapping tendons and Hill-type force curves. Every observation, reward and termination is one analytic function, evaluated by the simulator and on imagined states alike, with a torch replica of MuJoCo's muscles in it. On MS-Human-700, one run on one GPU reaches a normalized return of 0.83 on MuscleMimic's 108 held-out clips in 4 hours (iteration 6500), 99 of them tracked to the end, and 0.89–0.91 from 4.9 hours on; MyoFullBody, with the same code, reaches 0.83 after 6 hours (iteration 10000), 101 tracked. Both are still training.

Two muscle-driven bodies

MS-Human-700MyoFullBody
ModelLNSGroupMyoSuite†
Joint DoF37 + free root (33 with locked hands)31 + free root (fingers disabled)
Muscles700 (694)354
Coupled joints42 (38)51
Mass60.2 kg84.3 kg
Σ max isometric force349 × body weight*163 × body weight
Self-contactsoff75 pairs, as in MuscleMimic

† as packaged by MuscleMimic in musclemimic-models 1.0.6. * locked hands, 694 muscles. Coupled joints (knee translations, patella, shoulder girdle) follow independent ones through <equality> polynomials, reproduced exactly by the differentiable kinematics.

One clip, two bodies.A KIT motion on MS-Human-700 (left), retargeted by ms-retarget-myofullbody from MuscleMimic's retargeted motion on MyoFullBody (right). The 27 leg and arm angles carry over exactly, spine and wrist flexion are fitted through the differentiable kinematics, and each clip is lowered by 0.74 cm so that the feet touch the ground.

One MDP, simulated and imagined

The simulator collects transitions with the current policy plus exploration noise; a world model learns the body's next state from them. The policy then improves through 32 imagined steps: every step it reads its observation, sets the excitations, the activations follow MuJoCo's own activation dynamics, and the world model moves the body. Rewards, terminations and observations on imagined states come from the same functions that label the simulator's transitions, including muscle length, velocity and force from a torch replica of MuJoCo's spatial tendons (equal to MuJoCo's to 10⁻⁹ / 10⁻⁸ / 10⁻⁶). The gradient of the return, with a critic's value at the last step, flows back through all of it.

COLLECT Simulator MuJoCo-Warp · 4096 envs Replay buffer labelled by the env's terms World-model fit 8-step rollout loss IMPROVE · 32 IMAGINED STEPS state sₜ body + activations observation oₜ muscle l, v, F: exact policy π excitations eₜ activation dyn. MuJoCo's, exact world model body sₜ₊₁, foot touch t → t + 1; the gradient of the return flows back along this loop same network Reward rₜ and soft survival: the env's own functions of sₜ · bootstrap: critic V(s₃₂) · shaded: computed exactly, not learned

The task is MuscleMimic's: 100 Hz control, an observation of the full body state with muscle length, velocity, force, excitation and activation and four foot-touch values, a goal of the reference's next frames, the MimicReward on 17 tracked sites, and terminations when the body strays more than 1 m or 1 rad from the reference. No randomization yet. Details: MDP, training.

MS-Human-700

One run of MS-Human-700 with locked hands (694 muscles) on MuscleMimic's KIT split, 972 training clips (1.5 h of motion) retargeted to it, 4096 parallel environments, MuscleMimic's solver settings (Euler, 100 / 50 iterations), on one RTX 5090. The run is still training; this is a snapshot at iteration 16800 (10.6 hours), with every checkpoint up to iteration 16000 evaluated.

Training episode length, iterations 16100–16800
264steps (2.6 s)
Training episodes ending in a failure, the same iterations
0.1 %
Normalized return, 108 held-out clips, iteration 16000 (10.1 hours)
0.91104 tracked
The same after 4 hours (iteration 6500)
0.8399 tracked
Mean training episode length
steps of 10 ms, per 50 iterations
Normalized return on the 108 held-out clips
per evaluated checkpoint, every clip once from its first frame

Training clips at iteration 10000

Pick any of 100 training clips, ten of each kind of motion: the checkpoint of iteration 10000 tracks 99 of them to the end, at a normalized return of 0.90. Each muscle is colored by its activation, from light grey (0) to deep red (1).

MyoFullBody

One run on the same 972 training clips, as MuscleMimic retargeted them to MyoFullBody, with MS-Human-700's settings, on one RTX 5090. The run is still training; the curves below are a snapshot at iteration 10900 (6.5 hours), and its checkpoint of iteration 10000 scores 0.83 on the 108 held-out clips, 101 of them tracked to the end.

Mean training episode length
steps of 10 ms, per 50 iterations
Normalized return on the 108 held-out clips
per evaluated checkpoint, every clip once from its first frame

The checkpoint of iteration 10000

After 6.0 hours on one RTX 5090. Evaluation runs every clip once from its first frame without exploration noise. Each muscle is colored by its activation, from light grey (0) to deep red (1).

Training episode length, iteration 10000
291steps (2.9 s)
Training episodes ending in a failure
4 %
Normalized return, 3 training clips
0.830 failed
Normalized return, 108 held-out clips
0.837 failed

Training clips

Turn left · 359/turn_left05
Walk forward · 11/WalkingStraightForwards05
Walk backward · 7/WalkingStraightBackwards04

Held-out clips

On MuscleMimic's 108 test clips, never seen in training, the normalized return is 0.83 and 101 clips are tracked to the end. The 7 failures are three walks with a support, one clockwise and one counter-clockwise circle, one left turn and one walk. Shown: for three kinds of motion, the first test clip in the list that was tracked to the end in every evaluation of this checkpoint (runs on a CPU and a GPU disagree on a few borderline clips), not picked by score.

Run · 348/walking_run06
Turn right · 7/RightTurn03
Counter-clockwise circle · 4/WalkInCounterClockwiseCircle08

Get started

git clone --recursive https://github.com/kaibohex/muscle-supermimic.git
cd muscle-supermimic && uv sync

# MuscleMimic's retargeted KIT clips (gated: accept the terms on the dataset page first)
uvx --from huggingface_hub hf download amathislab/musclemimic-retargeted --repo-type dataset \
    --include "MyoFullBody/gmr/KIT/*" --local-dir data/musclemimic

uv run train Mjlab-SuperMimic-Flat-MyoFullBody \
    --env.commands.motion.motion-file data/musclemimic/kit_kinesis_train.txt

MS-Human-700, evaluation, rendering and memory settings: see the README and docs.

Acknowledgments

The SuperMimic implementation is ported from Chong Zhang's supermimic_vibed. MyoFullBody, derived from MyoSuite, comes from MuscleMimic's musclemimic-models, as do its tracking task and the retargeted KIT motions; MS-Human-700 from MuJoCo Menagerie; the simulation framework is mjlab on MuJoCo-Warp. The motions are from the KIT set of AMASS. The MyoFullBody arm and hand derive from MoBL-ARMS, released for non-commercial use only. The render style of the videos is inspired by MorphMimic. We thank Claude (Anthropic), with which the code was developed through Claude Code.