GR00T-WholeBodyControl README

The project's README from github.com/NVlabs/GR00T-WholeBodyControl. As one markdown file: README.md.

GEAR SONIC Header

License IsaacLab Documentation Demo


GR00T-WholeBodyControl

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:

News

Table of Contents

GEAR-SONIC

Website | Model | Paper | Docs

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.

Model Card

SONIC provides three released Unitree G1 checkpoints. Choose the model based on its reference representation and intended deployment.

Available Models

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.

Released Files

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

The root config.json is the canonical release manifest for these variants and shared artifacts. The official downloader fetches and validates it before downloading model files.

Usage

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 \
    --motor-kp-scale 4,10=1.5 \
    --motor-kd-scale 4,10=1.5 \
    real

This is the tested SONIC v1.1 deployment tuning. Hardware indices 4 and 10 are the left and right ankle-pitch motors; increasing their control gains improves whole-body stability and, in practice, wrist tracking. The flags are opt-in and do not alter other checkpoints.

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 the matching model/config and gain tuning:

python gear_sonic/scripts/launch_inference.py \
    --deploy-checkpoint policy/sonic_v1_1/model \
    --deploy-obs-config policy/sonic_v1_1/observation_config.yaml \
    --deploy-motor-kp-scale 4,10=1.5 \
    --deploy-motor-kd-scale 4,10=1.5 \
    --camera-host 192.168.123.164 \
    --prompt "pick up the cup"

See Downloading Model Checkpoints for Python checkpoint evaluation and additional deployment options. Test in simulation before using the checkpoint on a physical robot.

VR Whole-Body Teleoperation

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 demo

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

SONIC Low Latency whole-body teleoperation and ground pickup

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

Kinematic Planner

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
Kneeling Hand Crawling
Elbow Crawling Boxing

SONIC Training

SONIC can be trained from scratch on the Bones-SEED motion capture dataset (142K+ motions, ~288 hours, Unitree G1 retargeted), or finetuned from the released checkpoint on Hugging Face.

Quick start

# Install training dependencies (Isaac Lab must be installed separately — see docs)
pip install -e "gear_sonic/[training]"

# Download checkpoint + SMPL data from Hugging Face
pip install huggingface_hub
python download_from_hf.py --training

# Download Bones-SEED G1 CSVs from huggingface.co/datasets/bones-studio/seed, then convert and filter
python gear_sonic/data_process/convert_soma_csv_to_motion_lib.py \
    --input /path/to/bones_seed/g1/csv/ \
    --output data/motion_lib_bones_seed/robot --fps 30 --fps_source 120 --individual --num_workers 16
python gear_sonic/data_process/filter_and_copy_bones_data.py \
    --source data/motion_lib_bones_seed/robot --dest data/motion_lib_bones_seed/robot_filtered

# Finetune from released checkpoint (64+ GPUs recommended)
accelerate launch --num_processes=8 gear_sonic/train_agent_trl.py \
    +exp=manager/universal_token/all_modes/sonic_release \
    +checkpoint=sonic_release/last.pt \
    num_envs=4096 headless=True \
    ++manager_env.commands.motion.motion_lib_cfg.motion_file=data/motion_lib_bones_seed/robot_filtered \
    ++manager_env.commands.motion.motion_lib_cfg.smpl_motion_file=data/smpl_filtered

Adaptive sampling is enabled by default and attributes failures to the motion cursor tracked before environment reset.

For the full guide including multi-node training, evaluation, ONNX export, and SOMA encoder setup: 📖 Installation (Training) | Training Guide

TODOs

What's Included

This release includes:

Setup

Git LFS required. This repo contains large binary assets (meshes, ONNX models). Without Git LFS, you will get small pointer files instead of actual data, causing silent failures. Install Git LFS first if you don't have it: sudo apt install git-lfs && git lfs install

MotionBricks pretrained checkpoints are skipped by default to avoid an extra ~2.2 GiB download during normal monorepo setup. MotionBricks GIFs and meshes still download normally. Fetch the checkpoints explicitly if you plan to run the MotionBricks demo.

git clone https://github.com/NVlabs/GR00T-WholeBodyControl.git
cd GR00T-WholeBodyControl
git lfs pull

# Optional: fetch MotionBricks pretrained checkpoints.
git lfs pull --include="motionbricks/out/**" --exclude=""

# Verify your environment
python check_environment.py

Which environment do I need?

I want to... Environment How to install
Train / finetune SONIC Isaac Lab's Python env Install Isaac Lab, then pip install -e "gear_sonic/[training]"
Run MuJoCo simulation .venv_sim (auto-created) bash install_scripts/install_mujoco_sim.sh
VR teleoperation .venv_teleop (auto-created) bash install_scripts/install_pico.sh
Collect data .venv_data_collection (auto-created) bash install_scripts/install_data_collection.sh
**Deploy on real ro

GR00T-WholeBodyControl (NVlabs/GR00T-WholeBodyControl)

Searching Database…

这是什么?NVIDIA GR00T Whole-Body Control(全身控制)——这个代码库托管了预训练模型权重,以及用于先进人形机器人控制器的训练、评估和部署代码:包括 GR00T N1.5/N1.6 中使用的 Decoupled WBC、GEAR-SONIC 系列,以及 MotionBricks。
拿到这个仓库后,里面到底有什么?它是一个研究平台,而不是面向普通用户的应用:包含一套带数据管线的 Python PPO 训练栈、用于真机硬件的 C++ 推理栈、ONNX 模型权重、遥操作栈,以及 MotionBricks 生成式动作预览。
怎么安装配置?先安装 Git LFS 并克隆仓库,然后根据自己的目标使用对应的安装脚本:bash 脚本会创建 MuJoCo 仿真、VR 遥操作和数据采集环境,而训练环境则通过 pip 安装到 Isaac Lab 中。
它只用 Python,还是还需要 C++?两者都需要,这是刻意设计的:训练和评估是在 Isaac Lab 上用 Python 完成,配的是 PyTorch 模型权重;而在真机机器人上部署时运行的是带 TensorRT 的 C++ 推理栈,由一个 Python 启动器通过 ZMQ 来调度。
安装之前有什么要注意的坑?Git LFS 是必需的——没有它,你拿到的只会是指向网格模型和 ONNX 模型的小指针文件,而不是真正的模型,而且程序会静默出错。MotionBricks 的模型权重(约 2.2 GiB)默认会被跳过,文档也建议先在仿真里测试,再去碰实体机器人。
它能跑在 Windows 或 Mac 上吗,还是只支持 Linux?这套工具以 Linux 为主——安装用的是 apt,训练走的是 Isaac Lab——而部署则直接跑在机器人本体上。跨平台的例外是实时网页演示,它可以在浏览器里运行 SONIC。
许可证是标准的开源协议吗?不完全算:模型权重采用 NVIDIA Open Model License,而 GitHub 上仓库的许可证标记为 NOASSERTION,所以商用之前请先查看具体条款。
这些控制器是跑在哪台机器人上的?是 Unitree G1 人形机器人。官方发布了三个 SONIC 模型权重:默认的通用版本、一个低延迟遥操作版本(约 80 毫秒参考前瞻),以及面向航向稳定遥操作的 SONIC v1.1——控制器全部以 50 Hz 运行。
我没有机器人,能先体验一下吗?可以。这里有一个用于测试控制器的 MuJoCo 仿真环境,NVIDIA 还提供了实时网页演示,你可以在浏览器里交互式地试用 SONIC,包括 Kimodo 文本生成动作功能。
BONES-SEED 是什么?一个开源的动作捕捉数据集:包含 14.2 万条以上的人类动作(约 288 小时),并附带 Unitree G1 的 MuJoCo 轨迹,用于从零开始训练 SONIC。
我能用自己的动作来控制机器人吗?可以——通过 PICO VR 头显进行全身遥操作,能把你的动作实时传给机器人:走路、跳跃、双手操作、传递物品都可以。它同时也兼作 VLA 工作流的数据采集管线。
Creator
NVlabs
Size
403.3 MB
Stars
3.8K
Updated
CommitOct 13
Age
11mo
Commits · 90 Days