Run External Policies
The modular design of sim2real lets the same runtime execute different tracking
policies as long as they expose a compatible deploy YAML and ONNX model. We have
already converted several external policies into this format, so they can often
be interchanged by keeping the normal deploy command and only replacing
--policy-config with the policy YAML.
Converted Checkpoints
Download the shared
sim2real artifacts
folder first, then use any checkpoint path below as the --policy-config
value.
| Policy | Checkpoint YAML | Notes |
|---|---|---|
| MimicLite-ROA | checkpoints/mimic-lite/roa/policy.yaml | Latest 16x16384 PPO-ROA student release. |
| MimicLite-PPO | checkpoints/mimic-lite/ppo/policy.yaml | Latest 16x16384 Huge PPO release. |
| HEFT PMG | checkpoints/heft/pmg/policy.yaml | Normal G1 motion stream. |
| HEFT Compliance | checkpoints/heft/compliance/policy.yaml | Normal G1 motion stream; compliance flag is forced off in the observation. |
| HoloMotion v1.4.0 | checkpoints/holomotion/v1_4_0/policy.yaml | Requires the official 1.64 GB ONNX artifact. |
| SONIC release G1 | checkpoints/sonic/release/g1/policy.yaml | Normal G1 motion stream. |
| SONIC release SMPL | checkpoints/sonic/release/smpl/policy.yaml | Uses motion_backend: smpl_zmq and the SMPL publisher. |
| SONIC low-latency G1 | checkpoints/sonic/low_latency/g1/policy.yaml | Normal G1 motion stream with the low-latency checkpoint. |
| SONIC low-latency SMPL | checkpoints/sonic/low_latency/smpl/policy.yaml | Four-frame SMPL input horizon. |
| SONIC v1.1 G1 | checkpoints/sonic/v1_1/g1/policy.yaml | G1 motion stream with heading-normalized reference orientation. |
| GRIT v0.0.1 | checkpoints/grit/v0_0_1/policy.yaml | Nine-frame reference context and ten-frame proprioceptive history. |
| ScaleBFM XL | checkpoints/scalebfm/humanoid_transformer_xl/policy.yaml | Normal G1 motion stream. |
| ScaleBFM M | checkpoints/scalebfm/humanoid_transformer_m/policy.yaml | Normal G1 motion stream. |
| BFM-Zero | checkpoints/bfm-zero/exp_lafan40-100style_update_z10/policy.yaml | Requires the checkpoint-specific MJCF override for ZMQ publishers. |
| TeleopIT | checkpoints/teleopit/policy.yaml | Normal G1 motion stream. |
| Humanoid-GPT | checkpoints/humanoid-gpt/policy.yaml | Normal G1 motion stream. |
| TWIST2 | checkpoints/twist2/policy.yaml | Normal G1 motion stream. |
uv run sim2real/rl_policy/tracking.py \
--robot-io inline \
--motion-backend zmq \
--controller pico \
--policy-config checkpoints/heft/pmg/policy.yaml
This applies to ordinary G1 tracking policies that consume the normal G1 motion stream, such as HEFT, TeleopIT, Humanoid-GPT, ScaleBFM, HoloMotion, and standard any4hdmi / SONIC G1 motion policies.
Policy-Specific Runtime Requirements
Some adapted policies need a different motion source or extra runtime asset.
HoloMotion v1.4.0
Download the official ONNX without modifying it:
mkdir -p checkpoints/holomotion/v1_4_0
wget -O checkpoints/holomotion/v1_4_0/policy.onnx \
https://huggingface.co/HorizonRobotics/HoloMotion_models/resolve/main/HoloMotion_motion_tracking_model_v1.4.0/exported/model_14000.onnx
The expected SHA-256 is
859174937272747e762075db482e2b8d05d40dacb3a09884fc9d7d42086bbffe.
BFM-Zero
BFM-Zero needs its checkpoint-specific MJCF for the MuJoCo FK used by its motion observations. For direct NPZ playback this is stored in the policy YAML. For ZMQ publishers, pass the same MJCF override to the publisher.
BFM-Zero is compute-heavy. Prefer --inference_backend onnx-gpu for policy
inference when CUDA ONNX Runtime is available. Use onnx-cpu only as a
compatibility fallback on hosts without a working GPU provider.
uv run sim2real/rl_policy/tracking.py \
--policy_config checkpoints/bfm-zero/exp_lafan40-100style_update_z10/policy.yaml \
--inference_backend onnx-gpu
uv run sim2real/teleop/npz_pub.py \
--motion_path ../any4hdmi/output/g1/lafan/motions/walk1_subject1.npz \
--mjcf-path checkpoints/bfm-zero/exp_lafan40-100style_update_z10/mjcf/g1_for_reward_inference.xml
uv run --project venv/pico sim2real/teleop/pico_retarget_pub.py \
--mjcf-path checkpoints/bfm-zero/exp_lafan40-100style_update_z10/mjcf/g1_for_reward_inference.xml
SONIC SMPL Mode
SONIC SMPL mode is not the normal G1 motion_backend=zmq stream. Use the SONIC
SMPL policy config, keep its motion_backend: smpl_zmq setting, or pass
--motion-backend smpl_zmq, and run the SMPL/XRobot publisher path.
Minimal sim2sim Pico test:
uv run --project venv/pico sim2real/teleop/pico_retarget_pub.py --publish-smpl
uv run sim2real/sim_env/base_sim.py --robot g1
uv run sim2real/rl_policy/tracking.py \
--robot g1 \
--policy-config checkpoints/sonic/release/smpl/policy.yaml \
--inference-backend onnx-cpu \
--robot-io zmq \
--controller pico
See SONIC SMPL Input for the data contract.
Hardware Notes
Current notes from the G1 test setup:
- BFM-Zero works with the MJCF override.
- TeleopIT can walk well, but joint chatter has been observed and double-knee kneeling is not reliable yet; treat this as a deploy-infra / policy compatibility item before using that behavior on hardware.
- HEFT has shown light chatter but strong overall tracking behavior.