Setup¶
Platform¶
Linux x86_64 with an NVIDIA GPU + CUDA. The SONIC controller (TensorRT/ONNX) and curobo are built from source against CUDA; macOS/ARM is unsupported.
Install¶
Standard SIMPLE install — follow the README [Option 1] UV setup:
git submodule update --init --recursive uv sync --all-groups --index-strategy unsafe-best-match bash scripts/install_curobo.sh
WBC extras — one script adds what the standard install does not: the XRoboToolkit VR SDK build, the GR00T-WholeBodyControl controller and SONIC checkpoints, and the SONIC C++/TensorRT controller binary (it calls
build_sonic_controller.shas its last step).bash scripts/setup_teleop_wbc.shXRoboToolkit PC Service installed and running on the workstation wired to the headset.
Docker¶
The image built by the repo Dockerfile performs steps 1-2 for you, including
the SONIC C++/TensorRT controller (SIMPLE_BUILD_SONIC_WBC=1, the default) and
the SONIC ONNX checkpoints (SIMPLE_DOWNLOAD_SONIC_CKPT=1). Docker cannot fetch
git submodules or git-LFS blobs itself, so populate them on the host first:
git submodule update --init --depth 1 third_party/GR00T-WholeBodyControl
git -C third_party/GR00T-WholeBodyControl lfs install --local
git -C third_party/GR00T-WholeBodyControl lfs pull --include="gear_sonic_deploy/**"
docker compose build sim # add SIMPLE_FULL_INSTALL=1 for real-robot / GUI teleop
The controller binary lands at its usual path
(third_party/GR00T-WholeBodyControl/gear_sonic_deploy/target/release/g1_deploy_onnx_ref)
and its runtime library paths are in ~/tools/sonic_env.sh, which the
scripts/run_*_wbc.sh launchers source — so inside the container the launch
commands are unchanged. The XRoboToolkit PC Service still runs on the host,
not in the container.
Required hardware¶
PICO 4 / PICO 4 Ultra headset
2x PICO controllers
2x PICO motion trackers — strapped to the left and right ankles, indicator lights facing upward
Headset configuration¶
Pair and calibrate the motion trackers in the PICO system settings, in Full-body mode.
Wear tight-fitting trousers — baggy clothing blocks tracker line-of-sight and causes erratic leg motion.
Open XRoboToolkit on the headset, connect to your PC’s IP address, and confirm the status reads
Working.In XRoboToolkit settings:
Tracking: Head and Controller
Motion Tracker: Full-body
Remote Vision: Zedmini (Listen enabled for visual feedback)
For step-by-step screenshots of the PICO pairing, app install and calibration flow, see Teleop Setup — the headset-side setup is shared between the two whole-body paths.