Repohttps://github.com/NVlabs/GR00T-WholeBodyControlPagehttps://nvlabs.github.io/GEAR-SONIC/其他从运控基座到VLA梳理博主作为一个初学者后面将试图呈现一条端到端数据流仅作为自己快速了解 Repo架构的记录大部分内容由ChatGPT生成不具备参考价值。按下面6 个阶段来读SONIC的项目。每一阶段都回答四个问题输入是什么tensor 长什么样经过哪个代码模块为什么 NVIDIA 要这么设计它和 SONIC report 中的哪个概念/公式对应截至2026/9/13代码已经比早期版本完整很多gear_sonic已经公开了训练代码、universal-token 模块、配置体系、ONNX exportgear_sonic_deploy则对应 C/TensorRT 部署。尤其值得注意的是当前 training guide 明确把 architecture 描述为G1 / Teleop / SMPL 多 encoder → FSQ shared latent token → 单一 G1 dynamic decoder而不是简单的“一个 encoder 一个 policy”。(GitHub)总体路线┌──────────────────────┐ │ VLA / Motion Source │ │ │ │ VLA / Teleop / SMPL │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ Motion Representation│ │ │ │ reference trajectory │ │ future lookahead │ └──────────┬───────────┘ │ ▼ ╔════════════════════════════════════╗ ║ SONIC CORE ║ ║ ║ ║ G1 Encoder ─┐ ║ ║ Teleop Enc ─┼→ FSQ → Token ║ ║ SMPL Encoder┘ │ ║ ║ ▼ ║ ║ G1 Dynamic ║ ║ Decoder ║ ╚══════════════════╤═════════════════╝ │ ▼ Joint Actions │ ▼ ┌──────────────────────┐ │ TensorRT / C WBC │ │ │ │ observation / policy │ │ safety / PD / ZMQ │ └──────────┬───────────┘ │ ▼ G1 │ └──── feedback ───►而训练是从下面这条支路进入的Bones-SEED / Motion Dataset │ ▼ Retarget / Filter │ ▼ Motion Library │ ▼ Isaac Lab │ ▼ SONIC G1 Simulation │ ▼ PPO Aux Loss │ ▼ SONIC Checkpoint │ ▼ ONNX / TensorRT当前官方训练配置确实是 Hydra 分层组合的base → observations → actor_critic/universal_token → aux_losses → trainer → experiment而train_agent_trl.py是训练入口。(GitHub)Phase 0先建立“地图”——VLA / Motion Generation 到 SONIC目的只花很少篇幅把 SONIC 放到整个机器人系统里。我们会回答VLA 到底输出什么 ↓ 为什么不能直接控制 G1 ↓ 为什么需要 SONIC ↓ SONIC 和 GR00T VLA 的边界在哪里不会深入 VLA 本身。重点只追VLA ↓ motion / target ↓ SONIC ↓ whole-body execution尤其会结合仓库现在提供的launch_inference.py ↓ Python VLA inference ↓ C SONIC controller官方目前已经明确提供VLA → SONIC → G1的 end-to-end workflow。(GitHub)这一阶段最终得到一张非常清晰的“GR00T / VLA 是大脑SONIC 是运动系统”的接口图Phase 1Motion Reference → Observation这是真正读 SONIC 代码的起点。我们会从SMPL / G1 / Teleop ↓ motion reference ↓ observation construction ↓ policy input一路追源码。重点看motion librarymotion cursorreference samplingfuture framesrobot proprioceptionobservation historynormalizationheading / coordinate frame不同 modality 的 observation尤其会把Default SONIC 10 future frames × 20 ms ≈ 200 ms Low latency 4 future frames × 20 ms ≈ 80 ms这种论文/README 里的描述真正落实到代码中的 tensor。当前 model card 已明确给出这两个 reference horizon。(GitHub)这一阶段最重要的问题SONIC 究竟“看到了什么”这个问题非常重要。因为看 SONIC Report 时容易直接跳到“它有一个 universal token。”但实际上token 是 representation真正决定 controller 行为的第一步是 observation 如何构造。Phase 2Universal Token——整个项目最核心的一章这一章代码主线会追gear_sonic/ ↓ actor_critic/ ↓ universal_token/ ↓ UniversalTokenModule当前官方 training-code reference 已经明确给出了结构G1 observation │ ▼ G1 Encoder ───────────┐ │ Teleop observation │ │ │ ▼ │ Teleop Encoder ───────┼──→ FSQ → shared token │ SMPL observation │ │ │ ▼ │ SMPL Encoder ─────────┘ │ ▼ G1 Dynamic Decoder │ ▼ Joint Actions(GitHub)这里拆解和回答一个重点问题64-D universal token 到底是什么我们不会满足于说“它是 latent representation。”而是会继续往下拆raw motion ↓ encoder ↓ continuous representation? ↓ FSQ ↓ discrete / quantized latent ↓ 64-D token然后研究① 为什么需要 FSQ② 64-D 是怎么形成的③ token 是 continuous 还是 quantized④ 不同 modality 为什么能够进入同一个 token space⑤ decoder 为什么只需要一个⑥ “universal”到底是 representation universal还是 control universal这几个问题我认为是整个 SONIC 最值得研究的部分。Phase 3Token → Policy → Action这一阶段开始回答有了 universal token 之后SONIC 到底怎么产生运动我们会拆成motion token robot proprioception history ↓ policy / actor ↓ action然后追Actor/Critic/PPO/Auxiliary Loss这里会把代码和 RL formulation 对起来。特别是当前 repo 已明确SONIC 训练不是纯 PPO而是PPO auxiliary losses。(GitHub)所以这一阶段会专门研究┌── tracking loss │ PPO objective ──────┼── RL reward │ ├── auxiliary loss │ └── token-related objective?从源码确认每一项到底是什么而不是根据 report 猜。Phase 4Simulation → PPO → Generalization这一阶段完整追训练闭环Motion Dataset ↓ Motion Library ↓ Isaac Lab ↓ Reference Motion ↓ SONIC ↓ G1 ↓ Physics ↓ Reward ↓ PPO ↓ Policy Update重点研究三个东西。A. Motion Tracking Reward也就是SONIC 究竟用什么方式定义“跟得好”B. Sim-to-real这里会看domain randomization system identification motor dynamics noise latency terrain/contact以及为什么一个 tracking policy 最后可以跑到真实 G1。C. Motion Generalization这里的研究方向training motions ↓ SONIC ↓ unseen motions提出一个问题它究竟是在“记 motion”还是学到了一个 motion-conditioned controller这会直接连接到 SONIC report 的 foundation-model 叙事。Phase 5Training Checkpoint → ONNX → TensorRT → G1然后从 Python 世界进入 deployment 世界。PyTorch checkpoint ↓ ONNX export ↓ encoder.onnx decoder.onnx ↓ TensorRT ↓ C ↓ ZMQ ↓ G1这里会重点看为什么训练代码和部署代码差这么多以及Python ↓ PyTorch ↓ ONNX ↓ TensorRT ↓ C究竟在哪些地方发生了observation transformationnormalizationmodel splitlatency optimizationaction scalingmotor control官方当前 deployment 把 encoder / decoder 和 observation config 单独作为部署组件并通过 C stack 运行。(GitHub)这一阶段的最终目标是把一条真实机器人控制周期从输入到电机彻底走通。Phase 6最后做一次“研究者视角”的重构这一章从后续研究价值的角度来审视不再按代码讲而是重新问SONIC 真正的核心贡献是什么将其拆成几个 hypothesisNoted as HH1 — Motion Tracking as a Scalable Control Objective大量 human motion ↓ 统一 tracking task ↓ RL ↓ generalist WBCH2 — Universal TokenG1 ──────┐ Teleop ──┼→ shared latent → one decoder SMPL ────┘这是 representation-level 的统一。H3 — Generalist Controllerwalk run crawl kneel jump manipulate ... ↓ SONIC不是一个 behavior 一个 policy。H4 — Control Foundation Model最终形成VLA │ ▼ motion intent │ ▼ SONIC │ ┌──────────┼──────────┐ ▼ ▼ ▼ walk crawl manipulate这里会讨论SONIC 和传统 WBC、motion imitation、RL locomotion policy、diffusion motion policy、VLA controller 的本质区别到底是什么最后还有一条“横向主线”整个阅读过程中始终维护一个Tensor/Data Flow Table。最终我们会得到类似StageTensorShapeSemanticMotionSMPL refT × J × 3human motionReferencefuture motionH × ...lookaheadObservationencoder input...modality-specificEncoderlatent...motion representationFSQtoken64universal representationPolicyactor input...control contextActionjoint command29G1 commandMotorPD target29low-level control**这一张表会是整个系列最重要的产物之一。**因为最终真正要掌握的不是“这个文件调用了那个文件。”而是一个 motion 从进入系统开始到最后变成 G1 的 29 个关节控制量中间到底经过了什么数学变换。节奏第 1 │ ├─ Phase 0VLA / Motion → SONIC └─ Phase 1Motion Reference → Observation ↓ 建立完整输入侧 第 2 │ └─ Phase 2Universal Token ↓ Encoder → FSQ → 64D Token → Decoder ↓ 重点深挖 第 3 │ └─ Phase 3Token → Policy → Action ↓ PPO Auxiliary Loss 第 4 │ └─ Phase 4Isaac Lab → PPO → Sim2Real ↓ 为什么它能 generalize 第 5 │ └─ Phase 5ONNX → TensorRT → C → G1 ↓ 真正的 deployment loop 第 6 │ └─ Phase 6研究者视角 ↓ SONIC 的核心设计 与已有 WBC / imitation / diffusion / VLA 比较 ↓ 提炼潜在研究方向而且每一期都会直接引用当前仓库的具体文件、class/function 和配置路径而不是只讲概念。当前 repo 的训练入口、Hydra 配置树、UniversalTokenModule 和 deployment 路径已经可以直接串起来。(GitHub)三个“研究问题”后面六阶段都围绕这三个问题反复验证① Universal Token 为什么有效② SONIC 学到的到底是 motion representation还是一个真正 generalizable 的 control policy③ 为什么“human motion tracking universal representation RL”能够成为 VLA 和 humanoid hardware 之间的一个通用 control interface如果最后这三个问题能够从代码 tensor loss experiment deployment全部回答清楚对 SONIC 的理解就不再是“读过一个 report”而会接近能够自己设计下一代 whole-body controller的程度。另外仓库当前仍在快速演进——例如 2026-07 已加入 SONIC v1.12026-08 又加入了逐电机 Kp/Kd scaling所以我们阅读时会明确区分论文/原始 SONIC、当前 release、以及 v1.1 后来的工程修改避免把后来的 engineering fix 误认为论文原始设计。(GitHub)
