Linux-first embedded runtime for humanoid whole-body-control policy inference.
Reports · Getting Started · Architecture · Status · Python SDK · Founding Document
RoboWBC loads multiple WBC policies through one caller-facing contract:
observations and commands in, joint position targets out. The Python SDK is the
primary user surface through Registry, Observation, Policy, command
classes, and MujocoSession. Embedded Rust is available for teams that own the
host loop directly, while the CLI remains the reproducible validation,
benchmarking, and reporting surface for the same runtime.
RoboWBC is Linux-only. Runtime backends fail fast on unsupported platforms instead of carrying partial or unverified fallbacks.
make toolchain
make build
make smoke
make cimake help lists the repo-level commands for build, validation, benchmarks,
site generation, and local serving. configs/decoupled_smoke.toml uses a
checked-in dynamic identity ONNX fixture, so make smoke is the no-download
local path.
On Linux with a display and OpenGL available:
git clone https://github.com/MiaoDX/robowbc
cd robowbc
make demo-keyboardmake demo-keyboard is the protected clone-and-see-it-work path. It downloads
the public GEAR-Sonic ONNX files and MuJoCo runtime on first run, starts the
local MuJoCo viewer, and runs keyboard teleop. Keep the terminal focused:
] engages after init-pose settle. Then press 9 promptly in either the
terminal or MuJoCo viewer if the support band is holding the robot high so it
drops to foot contact. WASD changes linear velocity, QE changes yaw,
Space zeroes velocity, O sends a zero-velocity emergency-stop tick, and
Esc quits. Preserve the demo guardrails in docs/agents/keyboard-demo.md
when changing this path.
Python uses Registry, Observation, command classes, and Policy.predict:
policy = Registry.build("decoupled_wbc", "configs/decoupled_smoke.toml")
targets = policy.predict(obs)Rust uses the same registry and WbcPolicy contract:
let policy = WbcRegistry::build("my_policy", &policy_cfg)?;TOML config or Python SDK
-> robowbc-config + robowbc-registry
-> WbcPolicy implementation
-> Observation -> predict -> JointPositionTargets
-> hardware, MuJoCo, synthetic transport, JSON report, Rerun trace, static site
Core contracts are Observation, WbcCommand, JointPositionTargets,
WbcPolicy, PolicyCapabilities, and RobotConfig. Unsupported commands fail
explicitly instead of falling back silently. Read ARCHITECTURE.md and
docs/architecture.md for the crate map and extension points.
| Policy | State | Config | Notes |
|---|---|---|---|
gear_sonic |
Live | configs/sonic_g1.toml | Published planner velocity path; CPU by default, CUDA/TensorRT opt-in |
decoupled_wbc |
Live | configs/decoupled_g1.toml | Public G1 balance/walk checkpoints; smoke config needs no download |
wbc_agile |
Live | configs/wbc_agile_g1.toml | Published G1 recurrent checkpoint; T1 path expects user export |
bfm_zero |
Live | configs/bfm_zero_g1.toml | Public ONNX plus tracking context bundle |
hover |
Blocked | configs/hover_h1.toml | Wrapper exists; no public pretrained checkpoint |
wholebody_vla |
Experimental | configs/wholebody_vla_x2.toml | Contract wrapper only; no runnable public upstream release |
py_model |
User supplied | user TOML | Loads Python modules or PyTorch checkpoints through robowbc-pyo3 |
The showcase job on main publishes generated HTML policy cards, proof-pack
links, benchmark pages, JSON, .rrd, and raw artifacts:
- Site home: https://miaodx.com/robowbc/
- NVIDIA benchmark comparison: https://miaodx.com/robowbc/benchmarks/nvidia/
- Policy pages:
gear_sonic,decoupled_wbc,wbc_agile, andbfm_zero
Local report commands:
make site
make showcase-verify
make site-serve SITE_OPEN=1make showcase-verify downloads public checkpoints and requires a working
headless MuJoCo EGL environment. Use MUJOCO_DOWNLOAD_DIR and
SITE_OUTPUT_DIR to override local cache and output paths.
pip install "maturin>=1.9.4,<2.0"
maturin develop
python -c "from robowbc import Registry; print(Registry.list_policies())"The standalone Python package lives in crates/robowbc-py; robowbc-pyo3
provides the runtime backend for user-supplied Python or PyTorch policies.
Examples live under crates/robowbc-py/examples/ and examples/python/.
- Getting Started
- Configuration Reference
- Adding a New Policy
- Adding a New Robot
- Architecture
- Current status
- Full docs index
- Founding document
- Q2 2026 roadmap
- roboharness, companion visual testing and browser-report project
- LeRobot, upstream robotics stack that can consume a WBC backend
robowbc is MIT-licensed; see LICENSE. Third-party dependencies and runtime-fetched policy weights retain their original licenses.
See LICENSES/, docs/third-party-notices.md, and CONTRIBUTING.md for dependency and notice rules.
