Pico Teleoperation
This tutorial uses the teleop publisher for live Pico / XR retargeting, the realtime viewer to inspect the retargeted G1 motion, and the root project tracking policy for execution.
1. Start the Pico retarget publisher
uv --project venv/teleop run sim2real/teleop/pico_retarget_pub.py \
--bind tcp://*:28701 \
--publish_hz 50 \
--actual_human_height 1.80
2. Inspect the retarget in realtime
uv --project venv/teleop run sim2real/teleop/realtime_viewer.py \
--connect tcp://127.0.0.1:28701 \
--viewer_hz 50
Keep the viewer open until the retargeted G1 motion looks correct.
3. Choose the execution backend
Sim2Sim
Start the MuJoCo execution process:
uv run sim2real/sim_env/base_sim.py --robot g1
In another terminal, start the tracking policy against the live motion stream:
uv run sim2real/rl_policy/tracking.py \
--robot g1 \
--policy_config checkpoints/lafan-aa/policy-ec592bb4_lafan_100style_student-5000.yaml \
--motion_backend zmq \
--motion_zmq_connect tcp://127.0.0.1:28701
Sim2Real
Replace the MuJoCo execution process with the real bridge:
uv run scripts/real_bridge.py
Run the same tracking policy command:
uv run sim2real/rl_policy/tracking.py \
--robot g1 \
--policy_config checkpoints/lafan-aa/policy-ec592bb4_lafan_100style_student-5000.yaml \
--motion_backend zmq \
--motion_zmq_connect tcp://127.0.0.1:28701
Notes
pico_retarget_pub.pypublishes the live motion stream consumed by both the realtime viewer and the tracking policy.sim2real/sim_env/base_sim.pyis the sim2sim execution backend.scripts/real_bridge.pyis the sim2real execution backend.- If you want the policy control mode to come from the Pico controller topic instead of the keyboard, add
--controller picoto the tracking command. - If the publisher and policy run on different machines, replace
tcp://127.0.0.1:28701with the publisher machine's IP.