Skip to main content

Unified whole-body motion tracking on mjlab — one MDP, paper methods as tasks

Project description

WBC-Mjlab: Whole Body Control in MuJoCo Lab

Open In Colab Demo MJ-WASM 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 (data/README.md).
  • 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: docs/TASKS.md · 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 docs/INSTALLATION.md.

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 16

Demolive 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

Docs

Doc Contents
docs/TASKS.md Paper references, philosophy, G1 task map
docs/USAGE.md CLI, train/play, motion conversion, layout
docs/INSTALLATION.md uv, pip, PyPI, local mjlab
docs/ROADMAP.md Planned work (SONIC, infra, …)
data/README.md Motion library layout & downloads
CONTRIBUTING.md PRs, adding tasks

Full Sphinx docs and a project page are planned; the README stays a short landing page until then.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wbc_mjlab-0.0.3.tar.gz (15.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wbc_mjlab-0.0.3-py3-none-any.whl (15.3 MB view details)

Uploaded Python 3

File details

Details for the file wbc_mjlab-0.0.3.tar.gz.

File metadata

  • Download URL: wbc_mjlab-0.0.3.tar.gz
  • Upload date:
  • Size: 15.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

File hashes

Hashes for wbc_mjlab-0.0.3.tar.gz
Algorithm Hash digest
SHA256 9d46d14f8f7427b8aa95257602a18840c67e2ac15a7d5e9664e726aa1a09b43c
MD5 18bd5ae7da161327b9b0c3c21f68a801
BLAKE2b-256 ad53051ba34ca2e289738307a20c46a5c50bf4e37c7e156ba87088060054ff98

See more details on using hashes here.

File details

Details for the file wbc_mjlab-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: wbc_mjlab-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 15.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

File hashes

Hashes for wbc_mjlab-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d51aad782de75e029f204a4b47532e4ddd1685a815546ed86f252a62a37a1a08
MD5 eb58d50c5cc1f4ad84433d39222cf390
BLAKE2b-256 26aafb9dd2dd32346f5a9f97f66619be5965341f560b10d050b62f7f1ce1b5dd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page