Skip to main content

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.

PolicyCheckpoint YAMLNotes
MimicLite-ROAcheckpoints/mimic-lite/roa/policy.yamlLatest 16x16384 PPO-ROA student release.
MimicLite-PPOcheckpoints/mimic-lite/ppo/policy.yamlLatest 16x16384 Huge PPO release.
HEFT PMGcheckpoints/heft/pmg/policy.yamlNormal G1 motion stream.
HEFT Compliancecheckpoints/heft/compliance/policy.yamlNormal G1 motion stream; compliance flag is forced off in the observation.
HoloMotion v1.4.0checkpoints/holomotion/v1_4_0/policy.yamlRequires the official 1.64 GB ONNX artifact.
SONIC release G1checkpoints/sonic/release/g1/policy.yamlNormal G1 motion stream.
SONIC release SMPLcheckpoints/sonic/release/smpl/policy.yamlUses motion_backend: smpl_zmq and the SMPL publisher.
SONIC low-latency G1checkpoints/sonic/low_latency/g1/policy.yamlNormal G1 motion stream with the low-latency checkpoint.
SONIC low-latency SMPLcheckpoints/sonic/low_latency/smpl/policy.yamlFour-frame SMPL input horizon.
SONIC v1.1 G1checkpoints/sonic/v1_1/g1/policy.yamlG1 motion stream with heading-normalized reference orientation.
GRIT v0.0.1checkpoints/grit/v0_0_1/policy.yamlNine-frame reference context and ten-frame proprioceptive history.
ScaleBFM XLcheckpoints/scalebfm/humanoid_transformer_xl/policy.yamlNormal G1 motion stream.
ScaleBFM Mcheckpoints/scalebfm/humanoid_transformer_m/policy.yamlNormal G1 motion stream.
BFM-Zerocheckpoints/bfm-zero/exp_lafan40-100style_update_z10/policy.yamlRequires the checkpoint-specific MJCF override for ZMQ publishers.
TeleopITcheckpoints/teleopit/policy.yamlNormal G1 motion stream.
Humanoid-GPTcheckpoints/humanoid-gpt/policy.yamlNormal G1 motion stream.
TWIST2checkpoints/twist2/policy.yamlNormal 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.