FTH 3 · Cuerpo completo|INEMA.CLUB-PRO

Clase 1 · 15 min

Del caminar al hacer: whole-body control

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
Robot humanoide industrial de visor oscuro extendiendo la mano hacia una caja sobre la mesa, sujeto por un cable flojo a un pórtico.

En esta clase vas a

  1. 1Las tres capas: el VLA (S2 + S1) decide qué, el S0 coordina el cuerpo, el PD mueve el motor
  2. 2Por qué cada capa corre a una frecuencia distinta
  3. 3El paradigma de 2025–26: una policy que hace motion tracking de movimiento humano
  4. 4El banco de trabajo en ~/fth reutilizado del curso 0

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.

01Quién decide, quién coordina, quién mueve

Haz clic en cada bloque.

Haz clic en cada bloque del diagrama para ver qué hace.

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.

02Qué cambió de 2024 a 2026

Toca cada etapa.

1. Antes

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.

03Armar el banco de trabajo (reutiliza el del curso 0)

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.

Terminal · preparar ~/fth
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__)"
Ejemplo del repositorio
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.

04Contar las capas en un lazo de 2 segundos

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.

Terminal · las tres capas
F=${FTH:-$HOME/fth}; cd $F/corpo-inteiro && . $F/.venv/bin/activate
python3 kit/hierarquia.py; echo "saída: $?"
Fragmento · kit/hierarquia.py
        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í
Ejemplo del repositorio
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.

05Práctica

Banco de trabajo, lazo y frecuencias.

E1 · Banco de trabajo listo

10 min

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.

E2 · Las tres capas

5 min

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.

E3 · S0 más rápido

5 min

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).

06Prueba de la clase

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

07En tres frases

Tres capasEl VLA (S2 + S1) dice qué, el S0 coordina el cuerpo, el PD mueve el motor.
FrecuenciasDe lenta a rápida; las de arriba corren cada N pasos de la de abajo.
2026El S0 se volvió una policy que rastrea movimiento humano: es el resto del curso.

Para ir más allá

Siguiente clase