E1 · Bancada pronta
10 minRode o bloco de preparação. Se você já tinha ~/fth do curso 0, confirme que nada foi reinstalado além do clone deste curso.
Pronto quando: cd ~/fth/mujoco_menagerie && git log -1 --format=%h → 62ab00f.
Aula 1 · 15 min
Andar é o começo. Para pegar uma caixa, acenar ou obedecer a um VLA, o humanoide precisa coordenar pernas, tronco e braços ao mesmo tempo, sem cair. Nesta aula você monta a bancada do curso e conta, num laço de simulação, as três camadas que fazem isso: quem decide, quem coordena o corpo e quem move cada junta.
Começar a aula
Objetivo: montar a bancada e contar as três camadas de um humanoide de corpo inteiro (VLA, S0 e PD do motor) com a frequência de cada uma.
Clique em cada bloco.
Nomes S2/S1/S0 como no Helix 02 da Figure (27/01/2026): o VLA é S2 + S1, o controle de corpo inteiro é o S0. O VLA em si é assunto do curso vla-v72.
Clique em cada etapa.
Controle de humanoide era montado em blocos escritos à mão: planejador de passos, trajetória do pé no ar, perna de apoio e equilíbrio por ZMP ou MPC (modelo preditivo).
Funciona e é interpretável, mas cada habilidade nova pede engenharia nova. A aula 6 do curso 0 da FTH mostrou o centro de massa e o polígono de apoio que estão por trás disso.
O caminho aberto virou: captura ou vídeo humano → retargeting (GMR) → uma política de rastreio treinada com PPO em milhares de simulações (BeyondMimic, GMT, SONIC) → sim2sim → robô.
Uma política só imita qualquer movimento de referência e serve de base para teleoperação e para o VLA. A Figure descreveu o mesmo no Helix 02: um controlador de 10M parâmetros a 1 kHz, treinado com mais de 1.000 h de movimento humano, que substituiu 109.504 linhas de C++.
MPC × RL: a pesquisa da formação não achou comparação quantitativa independente em 2026. MPC segue forte onde se pede garantia; RL é a prática dominante nos repositórios abertos.
Um meio-termo muito usado: RL nas pernas (andar e equilibrar) e IK nos braços (alcançar). É o WBC desacoplado do repositório GR00T-WholeBodyControl, usado sob o GR00T N1.5 e N1.6.
O kit deste curso segue essa divisão: pernas na pose "stand" do modelo, braços por IK.
Se você fez o curso 0, o venv e o Menagerie já existem e só o clone deste curso é novo. Se não fez, o mesmo bloco cria tudo. O Menagerie fica fixado no commit testado.
F=${FTH:-$HOME/fth}; mkdir -p $F && cd $F
[ -d .venv ] || python3.12 -m venv .venv
. .venv/bin/activate && pip install -q mujoco==3.16.0 numpy
[ -d corpo-inteiro ] || git clone -q --depth 1 https://github.com/inematds/formacao-fth-corpo-inteiro-v72 corpo-inteiro
[ -d mujoco_menagerie ] || git clone -q --filter=blob:none --sparse https://github.com/google-deepmind/mujoco_menagerie
cd mujoco_menagerie && git sparse-checkout add unitree_g1
git checkout -q 62ab00f && git log -1 --format='menagerie %h (%ad)' --date=short
python3 -c "import mujoco, numpy; print('mujoco', mujoco.__version__, '· numpy', numpy.__version__)"menagerie 62ab00f (2026-10-15) mujoco 3.16.0 · numpy 2.5.4
Duas linhas e nenhum erro. Versão diferente do MuJoCo pode mudar a última casa dos números das próximas aulas: fixe a versão.
O hierarquia.py roda o G1 de pé por 2 s. A cada 200 ms (tarefa) troca o alvo da mão direita; a cada 20 ms (S0) refaz a IK do braço; a cada 2 ms dá um passo de física com o PD dos motores.
F=${FTH:-$HOME/fth}; cd $F/corpo-inteiro && . $F/.venv/bin/activate
python3 kit/hierarquia.py; echo "saída: $?" if i % k2 == 0: # tarefa (S2+S1 num VLA): decide "o quê" (aqui, um roteiro de alvos)
alvo = alvos[n2 % len(alvos)]
n2 += 1
if i % k1 == 0: # S0: controle de corpo inteiro, decide "como" o corpo chega lásimulado: 2 s · passo de física 2 ms tarefa (VLA: S2+S1) : 10 chamadas (5 Hz) S0 corpo inteiro (IK) : 100 chamadas (50 Hz) PD do motor + física : 1000 passos (500 Hz) mão direita a 0.7 cm do último alvo · pelve a 0.79 m · de pé: sim 3 camadas saída: 0
1000 passos do PD para 100 decisões do S0 e 10 da tarefa. A mão termina a menos de 1 cm do último alvo e o robô continua de pé.
ERRO: S0 (30 Hz) e tarefa (5 Hz) precisam dividir o passo de 500 Hz. saída: 1
O laço de baixo manda no relógio: as camadas de cima rodam a cada N passos. 30 Hz não cabe em 500 Hz um número inteiro de vezes. Use divisores (50, 100, 250 Hz).
S0 corpo inteiro (IK) : 200 chamadas (100 Hz)
O dobro de decisões de corpo no mesmo tempo. O Helix 02 leva isso ao extremo: o S0 aprendido roda a 1 kHz.
Bancada, laço e frequências.
Rode o bloco de preparação. Se você já tinha ~/fth do curso 0, confirme que nada foi reinstalado além do clone deste curso.
Pronto quando: cd ~/fth/mujoco_menagerie && git log -1 --format=%h → 62ab00f.
Rode o hierarquia.py e anote quantas vezes cada camada foi chamada.
Pronto quando: python3 kit/hierarquia.py; echo "saída: $?" → 3 camadas e saída: 0, com 1000 passos no PD do motor.
Rode com o S0 a 100 Hz e compare a distância final da mão ao alvo com a de 50 Hz.
Pronto quando: python3 kit/hierarquia.py --wbc-hz 100 | grep S0 → 200 chamadas (100 Hz).
A explicação aparece depois da sua resposta.
Pergunta 1 de 4
Num humanoide de corpo inteiro, qual camada roda mais rápido?competência
Pergunta 2 de 4
O que é o "WBC desacoplado" do GR00T-WholeBodyControl?
Pergunta 3 de 4
Por que o hierarquia.py recusa o S0 a 30 Hz?
Pergunta 4 de 4
O que a Figure trocou no Helix 02, segundo a pesquisa da formação?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.