部署指南 · 命令逐字照录
SONIC 安装与部署:先装 TensorRT,再构建
在 Unitree G1 上部署 SONIC 全身控制器是一次 C++ + TensorRT 构建,只有一条不可妥协的规则:先装精确版本的 TensorRT,再做别的。下面所有内容逐字摘自官方 Installation (Deployment) 与 C++ Deployment Program Flow 文档。
前置要求
- Ubuntu 20.04/22.04/24.04 或其他基于 Debian 的 Linux 发行版
- CUDA Toolkit(用于 GPU 加速)
- TensorRT(用于推理优化)——先装这个!
- JetPack 6(用于板载部署)
- Python 3.8+
- 支持 LFS 的 Git
从 NVIDIA Developer 下载 TensorRT。这是部署侧的安装;训练有自己的一条路径——见 Training Data 与 Training 文档中的 Isaac Lab 设置。
TensorRT 版本(逐字)
| 平台 | TensorRT 版本 |
|---|---|
| x86_64(桌面) | 10.13(必需) |
| Jetson / G1 板载 Orin | 10.7(必需;需要 JetPack 6——刷机指南) |
pv 监控进度:sudo apt-get install -y pv
pv TensorRT-*.tar.gz | tar -xz -f - 把解压后的 TensorRT 移到 ~/TensorRT(或类似位置),并加入你的 ~/.bashrc:
export TensorRT_ROOT=$HOME/TensorRT 安装前必读
这条警示照抄自官方文档。错误的 TensorRT 构建不会大声失败——它会静默劣化规划器输出,而在真机上这是安全问题,不是性能问题。
克隆仓库
git clone https://github.com/NVlabs/GR00T-WholeBodyControl.git
cd GR00T-WholeBodyControl
git lfs pull # make sure all large files are fetched 仓库包含大型二进制资源(网格、ONNX 模型);git lfs pull 拉取真实字节而不是指针文件。完整的 LFS 指南(包括 MotionBricks checkpoint 的注意事项)在安装指南页。
Native 开发(推荐)
优点:直接系统安装、构建更快、生产可用。前置要求:基本开发工具(cmake、git 等),以及如果你打算做基于 ROS2 的输入输出,还需要 ROS2(可选)。
1 · 安装系统依赖
cd gear_sonic_deploy
chmod +x scripts/install_deps.sh
./scripts/install_deps.sh 2 · 设置环境
source scripts/setup_env.sh 设置脚本会自动配置 TensorRT 环境并设置所有必要路径。为了方便,可以把它加进你的 shell 配置:
echo "source $(pwd)/scripts/setup_env.sh" >> ~/.bashrc 3 · 构建项目
just build 其他 just 命令:just clean(清理构建产物)与 just --list(列出所有可用命令)。
Docker(ROS2 开发环境)
统一 Docker 环境,带 ROS2 Humble,支持 x86_64 与 Jetson 平台。
前置要求:已安装 Docker 且用户已加入 docker 组;宿主机上设置 TensorRT_ROOT 环境变量;Jetson:JetPack 6.1+(CUDA 12.6)。
# 1. Add user to docker group (one-time setup)
sudo usermod -aG docker $USER
newgrp docker
# 2. Set TensorRT path (add to ~/.bashrc for persistence)
export TensorRT_ROOT=/path/to/TensorRT
# 3. Launch container
cd gear_sonic_deploy
./docker/run-ros2-dev.sh 选项:
./docker/run-ros2-dev.sh # Standard build (fast)
./docker/run-ros2-dev.sh --rebuild # Force rebuild
./docker/run-ros2-dev.sh --with-opengl # Include OpenGL for visualization (RViz, Gazebo) 架构支持:x86_64 —— CUDA 12.4.1(需要 NVIDIA 驱动 550+);Jetson —— CUDA 12.6 宿主上的 CUDA 12.4.1 容器(向前兼容)。容器内:
source scripts/setup_env.sh # set up dependency
just build # Build
just --list # Show all commands 排错:如果报 "permission denied",确认你在 docker 组里;TensorRT 必须在启动容器前在宿主机上设置好;Jetson 先在宿主机运行 source scripts/setup_env.sh(设置 jetson_clocks)。
运行部署栈
C++ 部署二进制是 gear_sonic_deploy,通过 deploy.sh 启动。输入接口:keyboard | gamepad | gamepad_manager | zmq | zmq_manager | ros2 | manager;通过 --output-type zmq|ros2|all 发布输出。
cd gear_sonic_deploy
./deploy.sh --input-type zmq_manager real 仿真(MuJoCo)时改用 sim 参数——部署二进制连接仿真循环而不是真实硬件:
./deploy.sh --input-type zmq_manager sim
# Wait until you see "Init done" 默认部署使用默认 SONIC checkpoint。低延迟或 SONIC v1.1 checkpoint 时,把 deploy.sh 指向对应的模型前缀与观测配置(按模型卡对比页):
./deploy.sh \
--cp policy/low_latency/model \
--obs-config policy/low_latency/observation_config.yaml \
--input-type zmq_manager \
real 规划器 ONNX 文件
启用规划器模式时,运动学规划器与策略并行运行。它是一个 ONNX 模型,通过 --planner-file 传入(ROS2、gamepad_manager 与 zmq_manager 规划器模式的必需项)。官方示例路径:
--planner-file planner/target_vel/V2/planner_sonic.onnx 在部署流程中,规划器生成目标动画(启用时),动作读取器为非规划器模式提供参考动作,策略推理在 TensorRT 上执行 encoder → decoder,结果通过 ZMQ 或 ROS2 发布。用 just run freq_test policy/example/model_step_000000.onnx 检查 ONNX 模型的输入输出信息——报告的频率不是 TensorRT 推理速度。VR 遥操作与 ZMQ 管理器模式见遥操作指南。