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

  1. 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
    
  2. 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.sh as its last step).

    bash scripts/setup_teleop_wbc.sh
    
  3. XRoboToolkit 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

  1. Pair and calibrate the motion trackers in the PICO system settings, in Full-body mode.

  2. Wear tight-fitting trousers — baggy clothing blocks tracker line-of-sight and causes erratic leg motion.

  3. Open XRoboToolkit on the headset, connect to your PC’s IP address, and confirm the status reads Working.

  4. 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.