FTH 1 · Enseñar a caminar|INEMA.CLUB-PRO

Clase 1 · 16 min

Por qué la locomoción pasó a ser RL

El Unitree G1 de este curso camina porque una red neuronal envía 29 objetivos de articulación cada 20 ms. En esta clase armas el banco de trabajo, ejecutas la política de marcha lista del Unitree G1 en MuJoCo, ves al mismo robot caer sin ella y entiendes por qué el control clásico dio paso al RL en simulación masiva.

Comenzar la clase
Robot humanoide industrial gris grafito, con visor negro, dando un paso largo en un pasillo oscuro de laboratorio.

En esta clase vas a

  1. 1Control clásico (modelo + optimización) × policy aprendida en simulación
  2. 2La policy de marcha abierta del G1 (unitree_rl_lab) caminando en MuJoCo
  3. 3Con policy: 6,6 m en 10 s. Sin policy: caída en 1,4 s
  4. 4El banco de pruebas ~/fth con versiones fijas

Objetivo: ejecutar la policy de marcha lista del G1 en MuJoCo, medir lo que hace y compararla con el robot sin policy.

01Dos formas de hacer caminar a un humanoide

Haz clic en cada bloque. Los tres primeros son el camino clásico; los tres últimos, lo que practica el curso.

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

MPC sigue vivo como concepto y donde se exige garantía. La práctica de este curso es la columna de la derecha: simulación, policy y PD.

02Lo que se ejecuta en esta clase

Haz clic en cada etapa.

1. El robot

El Unitree G1 de 29 grados de libertad del MuJoCo Menagerie, fijado en el commit 62ab00f (el mismo del curso 0). Actuador de posición con el kp y el kd de la policy.

03Montar el banco ~/fth

Si hiciste el curso 0, el venv y el Menagerie ya están ahí: el bloque solo agrega lo que falta (onnxruntime, torch para CPU, la policy). Versiones fijas, probadas el 19/10/2026.

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 pyyaml onnxruntime==1.31.0
pip install -q torch==2.14.1 --index-url https://download.pytorch.org/whl/cpu
[ -d locomocao ] || git clone -q --depth 1 https://github.com/inematds/formacao-fth-locomocao-v72 locomocao
[ -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)
[ -d unitree_rl_lab ] || git clone -q --filter=blob:none --sparse https://github.com/unitreerobotics/unitree_rl_lab
cd unitree_rl_lab && git sparse-checkout set deploy/robots/g1_29dof/config/policy/velocity
git checkout -q 4960b84 && git log -1 --format='unitree_rl_lab %h (%ad)' --date=short
python3 -c "import mujoco, onnxruntime, torch; print('mujoco', mujoco.__version__, '· onnxruntime', onnxruntime.__version__, '· torch', torch.__version__)"
Ejemplo del repositorio
unitree_rl_lab 4960b84 (2025-11-19)
mujoco 3.16.0 · onnxruntime 1.31.0 · torch 2.14.1+cpu

Dos líneas y ningún error. Fija los commits: un policy.onnx de otro commit puede tener otro orden de entradas. El torch viene de la página de wheels de CPU de PyTorch (el curso no necesita GPU).

04El G1 caminando, y el G1 sin policy

10 s pidiendo 0,7 m/s hacia adelante. Devuelve 0 si no se cayó, 1 si se cayó.

Terminal · caminar con la policy
F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
python3 kit/andar_demo.py --vx 0.7 --s 10; echo "saída: $?"
Terminal · solo el PD, sin policy
F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
python3 kit/andar_demo.py --vx 0.7 --s 10 --sem-politica
Terminal · pedir 1,0 m/s
F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
python3 kit/andar_demo.py --vx 1.0 --s 10 | tail -3
Ejemplo del repositorio
política: unitree_rl_lab velocity v0 (ONNX) · 480 → 29 · 50 Hz
comando: vx = 0.7 m/s por 10 s · simulação a 500 Hz, política a 50 Hz
andou: 6.6 m para a frente · desvio lateral: 0.5 m · velocidade média: 0.66 m/s
altura final da pelve: 0.77 m
caiu: não
saída: 0

6,6 m en 10 s (0,66 m/s para 0,70 pedidos) y la pelvis termina a 0,77 m. La desviación lateral de 0,5 m es normal: nadie corrige la dirección, solo la velocidad.

05Práctica

Ver la policy funcionar antes de abrir las piezas.

E1 · Banco listo

10 min

Ejecuta el bloque de preparación. Si el curso 0 ya montó ~/fth, solo agrega lo que falta.

Listo cuando: el bloque termina en unitree_rl_lab 4960b84 (2025-11-19) y mujoco 3.16.0 · onnxruntime 1.31.0 · torch 2.14.1+cpu.

E2 · El G1 camina

3 min

Ejecuta la policy con 0,7 m/s por 10 s y anota cuántos metros avanzó la pelvis.

Listo cuando: python3 kit/andar_demo.py --vx 0.7 --s 10; echo "saída: $?" → caiu: não y saída: 0.

E3 · El contraste

5 min

Ejecuta con --sem-politica y escribe, en una frase, qué mantiene al robot de pie cuando camina.

Listo cuando: la salida muestra caiu: sim, em t = 1.4 s; tu frase dice que es el lazo cerrado de la policy (el PD solo no corrige el equilibrio).

06Prueba de la clase

La explicación aparece después de tu respuesta.

Pregunta 1 de 3

¿Qué entrega la policy de marcha del G1 cada 20 ms?competencia

07En tres frases

CambioLa marcha de humanoides pasó de modelo + optimización a una policy entrenada en simulación masiva.
CapasLa policy envía 29 objetivos a 50 Hz; el PD de cada articulación genera el torque.
MedidaCon policy, 6,6 m en 10 s; sin ella, caída en 1,4 s.

Para ir más allá

Próxima clase