WBC-Mjlab: Whole Body Control in MuJoCo Lab
One shared MDP for whole-body motion tracking on mjlab — train once on a motion library, deploy one policy for many skills.
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
--taskswitches (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 inrobots/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.yamlaligned 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
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 |
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| wbc_mjlab-0.0.6.tar.gz | 15.3 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|
Security for wbc-mjlab 0.0.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.