Profile
Back to NewsBack
GitHub Trending 3 min
Reader Mode
wbc-mjlab/wbc-mjlab: One policy. Any motion. Train universal whole-body tracking in mjlab—swap clips, not checkpoints.

wbc-mjlab/wbc-mjlab: One policy. Any motion. Train universal whole-body tracking in mjlab—swap clips, not checkpoints.

12 hours ago

WBC-Mjlab: Whole Body Control in MuJoCo Lab

Open In Colab</a> Demo MJ-WASM</a> Docs</a> Project page</a> License</a> PyPI</a> PyPI downloads</a>

One shared MDP for whole-body motion tracking on mjlab — train once on a motion library, deploy one policy for many skills.

!WBC G1 sim collage

Recent works (ZEST, BeyondMimic, SONIC, OmniXtreme) is all WBC / large-scale tracking, with overlapping ideas (keybody rewards, adaptive sampling, multi-clip training) but different design choices — each still tends to ship as its own codebase. In wbc-mjlab, paper-specific knobs are --task switches on a shared stack:

  • Multi-motion by design — train on multi-clip datasets (LAFAN, SEED, custom NPZ libraries); one controller generalizes across the library. At runtime, provide reference - via playing clip, teleop, or higher level policy.
  • Shared MDP — rewards, terminations, motion command, RSI, and playback live in env/ once; robots and papers plug in via task configs.
  • Tasks, not forks — ZEST, BeyondMimic-style RSI, deploy obs, etc. are --task switches (Wbc-G1, Wbc-G1-Zest, Wbc-G1-BinaryFailure, …) with the same CLI and log layout for fair comparison.
  • Motion data pipeline — versioned libraries under data/, GMR PKL ingest, batch GPU CSV→NPZ, optional motion-bundle cache.
  • Building blocks — paper presets in presets/ and G1 task builders in robots/g1/tasks.py; add a paper setup or tune your own WBC without forking the core MDP.
  • Plug-in robots — add a humanoid from its MJCF / URDF without code, or ship an extension package via register_wbc_extension (H2 example).
  • WBC Studio — the whole pipeline in a browser: robots, clip QA and conversion, presets, training jobs, playback on many envs.
  • One policy, many skills — one policy for walk, jog, run, crawl, fight, get-up, lie-down, flips, and more.
  • Sim → real — train/play export policy.onnx + config.yaml aligned with the deploy runtime.
Details: Documentation · CONTRIBUTING.md

Quick start

Requires mjlab (≥ 1.5) and an NVIDIA GPU for training (installation).

git clone https://github.com/wbc-mjlab/wbc-mjlab.git && cd wbc-mjlab
uv run wbc-mjlab-list-envs

Demo — live web demo, or locally with the bundled checkpoint: uv run wbc-mjlab-demo (convert the samples first).

In the browser: WBC Studio

uv run wbc-mjlab-studio      # open the printed link (also from other machines on the network)

Five steps — Robot → Data → Preset → Train → Play: pick or add a robot from its MJCF / URDF, import, check and convert clips, tune observations / rewards / sampling / terrain / PPO as presets with reusable modules, launch and follow training jobs, play policies on many envs with reference ghosts. Options, files and the HTTP API: Studio guide.

From the command line

# convert source clips (CSV / PKL) to NPZ — 10 bundled samples, see data/g1/samples/README.md
uv run wbc-mjlab-data-to-npz --robot g1 --dataset samples --batch-size 8

train a task (Wbc-G1, Wbc-G1-Zest, Wbc-G1-Terrain-Scan, …)

uv run wbc-mjlab-train --task Wbc-G1 --dataset samples

play / evaluate the last run (exports policy.onnx + config.yaml)

uv run wbc-mjlab-play --task Wbc-G1 --dataset samples --viewer viser

More: quickstart · tasks · motion data · training & resume · deploy · all commands.

Related repos

| Repo | Role | |------|------| | wbc-mjlab/wbc-mjlab | Training library (this repo) — shared MDP, presets, extension API | | wbc-mjlab/wbc-mjlab-extension-h2 | Reference robot extension (Unitree H2) — plug-in WBC without forking core | | wbc-mjlab/wbc-g1-deploy | Optional G1 runtime (ONNX + motion clips) | | mujocolab/mjlab | Simulation and RL stack |

Chat with me