E1 · Kit commands
5 minRun the four kit commands.
Done when: python3 kit/comando_wbc.py; echo "saída: $?" → executado: sim and saída: 0.
Lesson 7 · 15 min
A VLA sees the scene, understands the request, and proposes an action a few times per second. Turning that into safe movement of 29 joints, without falling, is the job of whole-body control. In this lesson you send high-level commands to the simulated G1 and see what it carries out and what it refuses before moving.
Start the lesson
Goal: send high-level commands to a simulated whole-body controller and see which ones it executes and which it refuses.
Click each block.
The VLA proposes; whole-body control checks and executes. Safety cannot depend only on the model above.
Click each case. Facts with sources; VLA details in vla-v72.
Three layers: slow S2, S1 emitting joint targets at 200 Hz, and a learned S0 at 1 kHz, which replaced 109,504 lines of C++ (01/27/2026).
S0 was trained with more than 1,000 h of retargeted human motion and sim-to-real RL: lessons 2 to 4 of this course at industrial scale.
On 05/07/2026 the GR00T-WholeBodyControl repository published the end-to-end VLA flow on the G1: collect data through teleoperation, fine-tune GR00T N1.7, and deploy with SONIC as whole-body control.
SONIC v1.1 (07/23/2026) was trained with wrist pose augmentation precisely for teleop and for VLAs that use this control.
Before SONIC, GR00T N1.5 and N1.6 ran on the decoupled WBC: RL on the legs, IK on the arms. This is the split the kit imitates.
Advantage: simple and predictable. Limit: the torso and legs don't help the arm reach farther.
The commands file plays the role of a VLA's output. comando_wbc.py checks each one, executes it in 1 s (ramp + closed-loop correction at 50 Hz), and says whether the hand arrived.
F=${FTH:-$HOME/fth}; cd $F/corpo-inteiro && . $F/.venv/bin/activate
python3 kit/comando_wbc.py; echo "saída: $?"{
"descricao": "Saída de alto nível, como a de um VLA a poucos Hz: o QUÊ fazer. Alvos da mão em metros, relativos à pelve (x para a frente, y para a esquerda, z para cima).",
"comandos": [
{"acao": "alcancar", "mao": "direita", "alvo_m": [0.30, -0.20, 0.15]},
{"acao": "girar_tronco", "graus": 20},
{"acao": "alcancar", "mao": "esquerda", "alvo_m": [0.30, 0.25, 0.20]},
{"acao": "voltar"}
]
}comando 1 · alcancar direita (0.3, -0.2, 0.15) → executado: sim (mão a 1.1 cm do alvo) comando 2 · girar_tronco 20° → executado: sim comando 3 · alcancar esquerda (0.3, 0.25, 0.2) → executado: sim (mão a 1.0 cm do alvo) comando 4 · voltar → executado: sim robô de pé: sim · pelve a 0.79 m executado: sim saída: 0
Four commands, four executions, hand about 1 cm from each target, and the robot standing at the end.
comando 1 · alcancar direita (0.9, -0.2, 0.15) → recusado: alvo a 0.92 m do ombro; o braço alcança 0.38 m comando 2 · girar_tronco 200° → recusado: fora do limite da cintura (-150° a 150°) comando 3 · pular → recusado: ação desconhecida (conheço alcancar, girar_tronco, voltar) robô de pé: sim · pelve a 0.79 m executado: não · 3 comando(s) recusado(s) saída: 1
Target 92 cm from the shoulder (the arm reaches 38 cm to the wrist), waist at 200° (the limit is 150°), and an action that doesn't exist: all three are refused before any movement, and the robot stays still and standing.
Run, refuse, write your own.
Run the four kit commands.
Done when: python3 kit/comando_wbc.py; echo "saída: $?" → executado: sim and saída: 0.
Run the bad commands file and read the reason for each refusal.
Done when: python3 kit/comando_wbc.py --comandos kit/comandos-ruins.json | tail -1 → executado: não · 3 comando(s) recusado(s).
Write ~/fth/movimentos/meus-comandos.json with five commands (both hands, a torso turn, and return) and run it. If any is refused, the reason gives the distance to the shoulder: the arm reaches 0.38 m to the wrist.
Done when: python3 kit/comando_wbc.py --comandos ~/fth/movimentos/meus-comandos.json | tail -1 → executado: sim.
The explanation appears after your answer.
Question 1 of 3
The VLA says to reach a point 92 cm from the shoulder. What should the lower layer do?skill
Question 2 of 3
In decoupled WBC, who takes care of the legs?
Question 3 of 3
What does the May 7, 2026 GR00T-WholeBodyControl flow put together?
Choose an option. The explanation appears after you try.