Browse by type

This is the codebase for the GR00T Whole-Body Control (WBC) projects. It hosts model checkpoints and scripts for training, evaluating, and deploying advanced whole-body controllers for humanoid robots. We currently support:
isaacteleop[cloudxr], with no separate publisher container. See Isaac Teleop Setup.motionbricks/ and the project page.<a href="https://nvlabs.github.io/GEAR-SONIC/"><strong>Website</strong></a> |
<a href="https://huggingface.co/nvidia/GEAR-SONIC"><strong>Model</strong></a> |
<a href="https://arxiv.org/abs/2511.07820"><strong>Paper</strong></a> |
<a href="https://nvlabs.github.io/GR00T-WholeBodyControl/"><strong>Docs</strong></a>

SONIC is a humanoid behavior foundation model that gives robots a core set of motor skills learned from large-scale human motion data. Rather than building separate controllers for predefined motions, SONIC uses motion tracking as a scalable training task, enabling a single unified policy to produce natural, whole-body movement and support a wide range of behaviors — from walking and crawling to teleoperation and multi-modal control. It is designed to generalize beyond the motions it has seen during training and to serve as a foundation for higher-level planning and interaction.
In this repo, we release SONIC's training code, deployment framework, model checkpoints, and teleoperation stack for data collection.
SONIC provides three released Unitree G1 checkpoints. Choose the model based on its reference representation and intended deployment.
| Model | Hugging Face location | SMPL reference input | Intended use and comments |
|---|---|---|---|
| Default SONIC (original release) | Top-level model_encoder.onnx, model_decoder.onnx, and observation_config.yaml; training checkpoint at sonic_release/last.pt |
10 future frames at 20 ms spacing, approximately 200 ms of reference lookahead | Default general-purpose SONIC controller for motion tracking, planning, teleoperation, and compatibility with existing deployments. G1 and teleoperation future-reference observations use step5. |
| Low-latency teleoperation | low_latency/ |
4 future frames at 20 ms spacing, approximately 80 ms of reference lookahead | Intended for more responsive whole-body teleoperation and VLA execution. G1 and teleoperation future-reference observations use step1. Use its encoder, decoder, and observation config together. |
| SONIC v1.1 | sonic_v1_1/ |
10 future frames at 20 ms spacing, approximately 200 ms of reference lookahead | Uses robot-heading-normalized target orientation and was trained with wrist-pose augmentation. Intended for heading-stable whole-body teleoperation and SONIC-backed VLA policies that use this controller. G1 and teleoperation future-reference observations use step5; this is not the low-latency model. |
All three models use the SONIC universal-token controller, produce 64-dimensional latent motion tokens, run the controller at 50 Hz, and support SMPL pose, G1 motion reference, and teleoperation inputs. Deployment uses C++ and TensorRT; the PyTorch checkpoints support Isaac Lab evaluation and continued training.
The lookahead values describe the reference horizon presented to the controller. They are not measurements of total end-to-end teleoperation latency, which also includes sensing, networking, preprocessing, and inference. Model weights are covered by the NVIDIA Open Model License.
| Model | Deployment files | PyTorch and configuration files |
|---|---|---|
| Default SONIC | model_encoder.onnx, model_decoder.onnx, observation_config.yaml |
sonic_release/last.pt, sonic_release/config.yaml |
| Low-latency teleoperation | low_latency/model_encoder.onnx, low_latency/model_decoder.onnx, low_latency/observation_config.yaml |
low_latency/last.pt, low_latency/config.yaml, low_latency/model_config.yaml |
| SONIC v1.1 | sonic_v1_1/model_encoder.onnx, sonic_v1_1/model_decoder.onnx, sonic_v1_1/observation_config.yaml |
sonic_v1_1/last.pt, sonic_v1_1/config.yaml, sonic_v1_1/model_config.yaml |
Download the default model and planner:
python download_from_hf.py
Download the low-latency teleoperation model and planner:
python download_from_hf.py --low-latency
Download SONIC v1.1 and the planner:
python download_from_hf.py --sonic-v1-1
Run the default C++ deployment stack:
cd gear_sonic_deploy
./deploy.sh --input-type zmq_manager real
Run the low-latency C++ deployment stack:
cd gear_sonic_deploy
./deploy.sh \
--cp policy/low_latency/model \
--obs-config policy/low_latency/observation_config.yaml \
--input-type zmq_manager \
real
Run the SONIC v1.1 C++ deployment stack:
cd gear_sonic_deploy
./deploy.sh \
--cp policy/sonic_v1_1/model \
--obs-config policy/sonic_v1_1/observation_config.yaml \
--input-type zmq_manager \
real
Run the default Python VLA launcher, which orchestrates the C++ controller and Python inference client:
python gear_sonic/scripts/launch_inference.py \
--camera-host 192.168.123.164 \
--prompt "pick up the cup"
For the low-latency model, add the matching deployment files:
python gear_sonic/scripts/launch_inference.py \
--deploy-checkpoint policy/low_latency/model \
--deploy-obs-config policy/low_latency/observation_config.yaml \
--camera-host 192.168.123.164 \
--prompt "pick up the cup"
For SONIC v1.1, use policy/sonic_v1_1/model and its matching
policy/sonic_v1_1/observation_config.yaml in the same launcher flags.
See Downloading Model Checkpoints for Python checkpoint evaluation and additional deployment options. Test in simulation before using the checkpoint on a physical robot.
SONIC supports real-time whole-body teleoperation via PICO VR headset, enabling natural human-to-robot motion transfer for data collection and interactive control.

SONIC v1.1: Whole-body teleoperation mode with expressive wrist motion and dynamic movement.

SONIC Low Latency: Whole-body teleoperation mode with a successful ground pickup.
This repo can also drive the headset over Isaac Teleop / CloudXR by launching gear_sonic/scripts/pico_manager_thread_server.py --input-source isaac-teleop. The streamer hosts the CloudXR runtime in-process via isaacteleop[cloudxr] — no separate publisher container required. That path is currently documented and supported only for G1 with a Thor backpack. The Isaac Teleop bring-up steps are documented in docs/source/tutorials/isaac_teleop_publisher_setup.md.
| Walking | Running |
![]() |
![]() |
| Sideways Movement | Kneeling |
![]() |
![]() |
| Getting Up | Jumping |
![]() |
![]() |
| Bimanual Manipulation | Object Hand-off |
![]() |
![]() |
SONIC includes a kinematic planner for real-time locomotion generation — choose a movement style, steer with keyboard/gamepad, and adjust speed and height on the fly.
| In-the-Wild Navigation | |
![]() |
|
| Run | Happy |
![]() |
![]() |
| Stealth | Injured |
< |
$ claude mcp add GR00T-WholeBodyControl \
-- python -m otcore.mcp_server <graph>