Repository navigation
WBC-MJLab — unified WBC motion tracking on mjlab (one policy, many motions) #1064
Pinned
simeon-ned
started this conversation in
Show and tell
Replies: 2 comments 2 replies
|
This is awesome, so great to hear @simeon-ned! Thanks for sharing :) |
0 replies
|
We’ve added a small MuJoCo WASM web demo:) Feel free to try it directly in the browser! BTW, @kevinzakka, would you mind if I open a PR adding a reference to our project under the project list in the mjlab docs? |
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi @kevinzakka and mjlab folks,
Thank you for mjlab — it's become a big part of my day-to-day robotics work. The sim stack, task registration, and overall workflow make experimenting with humanoid control much easier and more pleasant than juggling yet another bespoke codebase.
I've been using it to pull together recent whole-body tracking ideas into one place, and wanted to share that effort: wbc-mjlab — an extension I've been building on top of mjlab.
A lot of recent humanoid WBC work (ZEST, BeyondMimic, SONIC, …) still ships as separate stacks. I wanted one training surface: a shared motion-tracking MDP where paper-specific choices are
--taskswitches (RSI, observations, rewards, DR) — and on deploy, one policy for all motions, swapping clips at runtime instead of retraining per skill.If this direction is interesting to you — comparing methods fairly, scaling to clip libraries, or pushing toward deploy — I'd genuinely love to hear from the community. Feedback, experiments, criticism, issues, and PRs are all very welcome.
What's in there already
Even though this is early, I've already pulled in a lot from recent WBC papers and wired it onto one shared MDP:
policy.onnx+config.yamlfrom train/playmanifest.yamlOn that single deployed policy, the robot can already walk, jog, run, crawl, fight, get up from the floor, lie down, and do flips — clip swap at runtime, no checkpoint change.
Easy to configure your own WBC variant
The idea is tasks, not forks. Each paper's knobs live in a small env builder — see the G1 configs:
src/wbc_mjlab/robots/g1/configs
zest.py— Zest paper reprobinary_failure.py— BeyondMimic-style RSIwbc.py— default / deploy-oriented stackAdd a method → add a config module → register one
WbcTaskConfigentry. Same CLI, same logs layout, comparable runs. Happy to help anyone who wants to plug in their robot or reproduce a specific paper setup.Quick try (no big dataset download)
13 bundled sample CSVs (LAFAN1 + BONES-SEED excerpts):
Same
uvworkflow as mjlab. Requires mjlab ≥ 1.4 + GPU for training.Deploy demo — one policy, many clips
Same unified policy — sim loopback + real robot (clip swap at runtime):
wbc_g1_walk.mp4
wbc_g1_fight.mp4
wbc_g1_jog.mp4
Coming soon: side flips, backflips, and more high-dynamic clips on the same policy.
What's next (near term)
Status
Still early — APIs and tasks will move. Paper repros are starting points, not bit-for-bit guarantees.
If you're working on motion tracking in mjlab — whether you want to compare RSI schemes, bring a new robot, or sanity-check my design choices — please reach out. Issues, discussions, and PRs are exactly what I need right now.
All reactions