Skip to main content

WBC-Mjlab: Whole Body Control in MuJoCo Lab

Open In Colab Demo MJ-WASM Docs Project page License PyPI PyPI downloads

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 — external packages register via register_wbc_extension (same MDP, same CLIs); see wbc-mjlab-extension-h2 for a reference layout.
  • 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.

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

uv run syncs from uv.lock on first use. For CUDA/CPU PyTorch and dev deps: make sync / make sync-cpu. See the installation guide.

Convert trajectory samples (13 source CSVs manifest & credits) to npz - calculating FK for body targets, velocities etc:

uv run wbc-mjlab-data-to-npz --robot g1 --dataset samples --batch-size 8

Demo — live web demo (trained policy in the browser); local play with bundled checkpoint (convert samples first):

uv run wbc-mjlab-demo

Train on converted npz library (check mjlab train args for resuming, number of envs etc):

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

Evaluation of last exported log on library (check args for viewer, choosing chekpoint, motion etc):

uv run wbc-mjlab-play --task Wbc-G1 --dataset samples
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

Metadata

Release files for wbc-mjlab 0.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wbc-mjlab 0.0.6
File Size Uploaded
wbc_mjlab-0.0.6.tar.gz 15.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for wbc-mjlab 0.0.6
File Interpreter ABI Platform
wbc_mjlab-0.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 30.6 MB

Release files / wbc_mjlab-0.0.6.tar.gz

Download URL wbc_mjlab-0.0.6.tar.gz
Size 15.3 MB
Tags Source
SHA-256 checksum
How to use checksums
c6034ce2cddf51d55a15414053d1e1bf7d416e7d4da01bb9e14b725c9278ea46
BLAKE2b-256 checksum
How to use checksums
a0c4b281a60c7646003919bf7250d89502fb86015f1ae30775f8ea622253421c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / wbc_mjlab-0.0.6-py3-none-any.whl

Download URL wbc_mjlab-0.0.6-py3-none-any.whl
Size 15.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
21ba49f4c06c62c227655a69b18ae4b62aab2d71e0cc9aafd4325e34bebd1ae0
BLAKE2b-256 checksum
How to use checksums
908aead75edf03934f26b52938950671eef8abca15aa47675f1d53dd78fd24df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page