E1 · Banco de trabajo listo
10 minEjecuta el bloque de preparación. Si ya tenías ~/fth del curso 0, confirma que no se reinstaló nada además del clone de este curso.
Listo cuando: cd ~/fth/mujoco_menagerie && git log -1 --format=%h → 62ab00f.
Clase 1 · 15 min
Caminar es el comienzo. Para tomar una caja, saludar u obedecer a un VLA, el humanoide necesita coordinar piernas, torso y brazos al mismo tiempo, sin caerse. En esta clase montas el banco de trabajo del curso y cuentas, en un bucle de simulación, las tres capas que hacen eso: quién decide, quién coordina el cuerpo y quién mueve cada articulación.
Comenzar la clase
Objetivo: montar la mesa de trabajo y contar las tres capas de un humanoide de cuerpo completo (VLA, S0 y PD del motor) con la frecuencia de cada una.
Haz clic en cada bloque.
Nombres S2/S1/S0 como en el Helix 02 de Figure (27/01/2026): el VLA es S2 + S1, el whole-body control es el S0. El VLA en sí es tema del curso vla-v72.
Toca cada etapa.
El control de humanoides se armaba en bloques escritos a mano: planificador de pasos, trayectoria del pie en el aire, pierna de apoyo y equilibrio por ZMP o MPC (modelo predictivo).
Funciona y es interpretable, pero cada habilidad nueva pide ingeniería nueva. La clase 6 del curso 0 de la FTH mostró el centro de masa y el polígono de apoyo que están detrás de esto.
El camino abierto cambió: captura o video humano → retargeting (GMR) → una policy de motion tracking entrenada con PPO en miles de simulaciones (BeyondMimic, GMT, SONIC) → sim2sim → robot.
Una sola policy imita cualquier movimiento de referencia y sirve de base para la teleoperación y para el VLA. Figure describió lo mismo en el Helix 02: un controlador de 10M de parámetros a 1 kHz, entrenado con más de 1.000 h de movimiento humano, que reemplazó 109.504 líneas de C++.
MPC × RL: la investigación de la formación no encontró una comparación cuantitativa independiente en 2026. MPC sigue fuerte donde se exige garantía; RL es la práctica dominante en los repositorios abiertos.
Un punto medio muy usado: RL en las piernas (caminar y equilibrar) e IK en los brazos (alcanzar). Es el WBC desacoplado del repositorio GR00T-WholeBodyControl, usado bajo GR00T N1.5 y N1.6.
El kit de este curso sigue esa división: piernas en la pose "stand" del modelo, brazos por IK.
Si hiciste el curso 0, el venv y el Menagerie ya existen y solo el clone de este curso es nuevo. Si no lo hiciste, el mismo bloque crea todo. El Menagerie queda fijado en el commit probado.
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
Dos líneas y ningún error. Una versión diferente de MuJoCo puede cambiar el último decimal de los números de las próximas clases: fija la versión.
El hierarquia.py corre el G1 de pie durante 2 s. Cada 200 ms (tarea) cambia el objetivo de la mano derecha; cada 20 ms (S0) rehace la IK del brazo; cada 2 ms da un paso de física con el PD de los motores.
F=${FTH:-$HOME/fth}; cd $F/corpo-inteiro && . $F/.venv/bin/activate
python3 kit/hierarquia.py; echo "saída: $?" if i % k2 == 0: # tarea (S2+S1 en un VLA): decide "qué" (aquí, un guion de objetivos)
alvo = alvos[n2 % len(alvos)]
n2 += 1
if i % k1 == 0: # S0: whole-body control, decide "cómo" llega el cuerpo hasta allí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 pasos del PD por 100 decisiones del S0 y 10 de la tarea. La mano termina a menos de 1 cm del último objetivo y el robot sigue de pie.
ERRO: S0 (30 Hz) e tarefa (5 Hz) precisam dividir o passo de 500 Hz. saída: 1
El lazo de abajo manda en el reloj: las capas de arriba corren cada N pasos. 30 Hz no cabe en 500 Hz un número entero de veces. Usa divisores (50, 100, 250 Hz).
S0 corpo inteiro (IK) : 200 chamadas (100 Hz)
El doble de decisiones de cuerpo en el mismo tiempo. El Helix 02 lleva esto al extremo: el S0 aprendido corre a 1 kHz.
Banco de trabajo, lazo y frecuencias.
Ejecuta el bloque de preparación. Si ya tenías ~/fth del curso 0, confirma que no se reinstaló nada además del clone de este curso.
Listo cuando: cd ~/fth/mujoco_menagerie && git log -1 --format=%h → 62ab00f.
Ejecuta hierarquia.py y anota cuántas veces se llamó cada capa.
Listo cuando: python3 kit/hierarquia.py; echo "saída: $?" → 3 camadas y saída: 0, con 1000 passos en el PD del motor.
Corre con el S0 a 100 Hz y compara la distancia final de la mano al objetivo con la de 50 Hz.
Listo cuando: python3 kit/hierarquia.py --wbc-hz 100 | grep S0 → 200 chamadas (100 Hz).
La explicación aparece después de tu respuesta.
Pregunta 1 de 4
En un humanoide de cuerpo completo, ¿qué capa corre más rápido?competencia
Pregunta 2 de 4
¿Qué es el "WBC desacoplado" de GR00T-WholeBodyControl?
Pregunta 3 de 4
¿Por qué hierarquia.py rechaza el S0 a 30 Hz?
Pregunta 4 de 4
¿Qué cambió Figure en Helix 02, según la investigación de la formación?
Elige una alternativa. La explicación aparece después de tu intento.