Deploy export#
Train and play write robot-agnostic artifacts under each run’s params/ folder.
Any hardware runtime that consumes the same contract can load them — no wbc-mjlab
install required on the robot computer.
Pipeline#
motion clips ──► data-to-npz ──► train / play
│
▼
params/policy.onnx + config.yaml
│
▼
deploy runtime (robot)
Artifacts#
logs/rsl_rl/<experiment>/<run>/
params/
policy.onnx
config.yaml
env.yaml
agent.yaml
config.yaml (schema_version: wbc_tracking_params_v1) lists joint names,
observation term order, reference command layout, and PD gains — regenerated from the
task config if missing.
Observation layout#
Deploy runtimes must match the exported actor stack — not a generic G1 layout.
Open params/config.yaml from your checkpoint run:
actor_observations.<term>.dim— per-term size (JandBalready resolved)tracking.actor_observation_names— concatenation order (must match ONNX input)tracking.reference_observation_names— which terms count as reference commandtracking.wbc_command_dim— reference motion size for clip playback
Example fragment:
actor_observations:
ref_base_height: {dim: 1, ...}
ref_joint_pos: {dim: 29, ...}
tracking:
actor_observation_names: [ref_base_height, ref_joint_pos, ...]
wbc_command_dim: 39
Dim rules (before export): Observations. Full schema: Export.
Manual export#
uv run wbc-mjlab-export-tracking-params --task <TaskId> --out /path/to/config.yaml
Example (in-tree reference task):
uv run wbc-mjlab-export-tracking-params --task Wbc-G1 --out /path/to/config.yaml
End-to-end checklist#
# 1. Convert motion library (once per dataset)
uv run wbc-mjlab-data-to-npz --robot g1 --dataset samples --batch-size 8
# 2. Train
uv run wbc-mjlab-train --task Wbc-G1 --dataset samples
# 3. Validate in sim (also writes params/policy.onnx + config.yaml before the viewer)
uv run wbc-mjlab-play --task Wbc-G1 --dataset samples --viewer viser
# 4. Optional: regenerate config.yaml only
uv run wbc-mjlab-export-tracking-params --task Wbc-G1 \
--out logs/rsl_rl/wbc_g1/<run>/params/config.yaml
# 5. Hand off to a deploy runtime (example: wbc-g1-deploy)
cp logs/rsl_rl/wbc_g1/<run>/params/policy.onnx /path/to/wbc-g1-deploy/config/policy/
cp logs/rsl_rl/wbc_g1/<run>/params/config.yaml /path/to/wbc-g1-deploy/config/policy/
Play exports ONNX + config.yaml into the checkpoint run’s params/ before
the viewer opens. Train checkpoints also keep params/ when the runner exports.
Reference runtime#
wbc-g1-deploy is a reference
implementation for one platform (Unitree G1): ONNX inference, config.yaml
parsing, and motion clip playback. Use it as a template when building a deploy stack
for your robot — the export format is not G1-specific.
See the wbc-g1-deploy README for build and run instructions. Schema details: Export.
Tips#
Tasks built with
apply_wbc/apply_zestuse deploy-style actor obs (noref_joint_vel) — preferred for sim→real export.SE variants (
apply_se_actor) add anchor error + base velocity — export only if your runtime provides the same terms.Validate tracking in sim first:
wbc-mjlab-play --viewer viser.