E1 · El nivel máximo
5 minEjecuta los cinco niveles y anota el más alto que la policy supera.
Listo cuando: python3 kit/terreno.py --degraus 0.02 0.03 0.04 0.06 0.10; echo "saída: $?" → degraus vencidos: 2/5 y saída: 0.
Clase 8 · 16 min
Nadie entrena la marcha en escaleras el primer día: el terreno y la velocidad pedida crecen conforme la política acierta. En esta clase mides hasta qué nivel llega la política lista, lees cómo mjlab y unitree_rl_lab suben de nivel, y escribes tu plan de entrenamiento en un archivo que un script revisa.
Comenzar la clase
Objetivo: medir el nivel máximo de la política lista, leer las reglas de currículo y escribir un plan de entrenamiento con 5 campos que conferir_plano.py apruebe.
Haz clic en cada nivel. Cada robot sube o baja de nivel solo, según lo que caminó.
Reglas leídas del código: mjlab mdp/curriculums.py (commit 8bb2bc9) y unitree_rl_lab velocity_env_cfg.py (commit 4960b84).
El terreno.py arma, con el MjSpec, una plataforma de altura h a 1,5 m del robot y lo manda a caminar 8 s a 0,5 m/s. Pasó = no cayó y la pelvis llegó arriba (x > 2,5 m).
F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
python3 kit/terreno.py --degraus 0.02 0.03 0.04 0.06 0.10; echo "saída: $?"política: unitree_rl_lab velocity v0 (ONNX) · comando vx = 0.5 m/s · 8 s · degrau a 1.5 m degrau 2 cm: passou (pelve em x = 3.4 m) degrau 3 cm: passou (pelve em x = 4.1 m) degrau 4 cm: caiu (pelve em x = 2.0 m) degrau 6 cm: caiu (pelve em x = 2.0 m) degrau 10 cm: caiu (pelve em x = 2.2 m) degraus vencidos: 2/5 saída: 0
Los de 2 y 3 cm pasan; desde 4 cm en adelante, el robot cae en x ≈ 2 m, antes de subir a la plataforma. Los niveles que reprueban son los próximos niveles de un currículo: es para ellos que se vuelve a entrenar.
Dos currículos corren juntos en el entrenamiento real. Haz clic en cada uno.
En mjlab, al final de cada episodio, el robot que caminó más del 80 % de la distancia pedida sube un nivel de terreno; el que caminó menos del 50 % baja. Cada robot tiene su nivel: en el mismo entrenamiento, unos están en el plano y otros en los guijarros.
En unitree_rl_lab, la velocidad pedida empieza en ±0,1 m/s. Cuando el seguimiento de velocidad pasa del 80 % del máximo, el rango se abre 0,1 m/s hacia cada lado, hasta el límite de −0,5 a 1,0 m/s.
El empujón no entra en el currículo en esos dos repositorios: ±0,5 m/s en x e y, cada 5 s en unitree_rl_lab; en mjlab, cada 1 a 3 s, con ±0,4 m/s también en z y giros en roll, pitch y yaw.
Antes de gastar GPU: qué robot, qué rango de comando, qué términos y pesos, qué niveles de terreno y qué prueba aprueba. Es el archivo que escribes ahora.
Copia la plantilla a ~/fth/treino, cambia cada [corchete] por tu valor y compruébalo. El ejemplo del kit muestra un plan que pasa.
# Plano de treino de locomoção Robô: [qual humanoide e qual arquivo, ex.: Unitree G1 29 GDL, unitree_g1/scene.xml do Menagerie 62ab00f] Comando: [faixa de velocidade, ex.: vx de -0.5 a 1.0 m/s, vy de -0.3 a 0.3 m/s, giro de -0.2 a 0.2 rad/s] Recompensa: [termos e pesos, ex.: track_linear_velocity 2.0, upright 1.0, action_rate_l2 -0.1] Currículo: [níveis em ordem, separados por →, ex.: plano → degrau de 5 cm → rampa → pedriscos] Avaliação: [critério de aprovação com número, ex.: 18/20 episódios de pé com empurrão de 1.0 m/s]
F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
[ -f $F/treino/plano-treino.md ] || cp kit/plano-treino-modelo.md $F/treino/plano-treino.md
python3 kit/conferir_plano.py $F/treino/plano-treino.md; echo "saída: $?"F=${FTH:-$HOME/fth}; cd $F/locomocao && . $F/.venv/bin/activate
python3 kit/conferir_plano.py kit/exemplos/plano-treino.md; echo "saída: $?"FALTA Robô: não preenchido FALTA Comando: não preenchido FALTA Recompensa: não preenchido FALTA Currículo: não preenchido FALTA Avaliação: não preenchido campos ok: 0/5 incompleto saída: 1
Con la plantilla aún llena de [corchetes], faltan los cinco campos y el script sale con 1. Reglas: comando con número y m/s, recompensa con 2 o más términos del kit, currículo con 3 o más niveles separados por →, evaluación con un criterio numérico (X/N o %).
campos ok: 5/5 ok saída: 0
El ejemplo del kit (kit/exemplos/plano-treino.md) usa los rangos de comando de unitree_rl_lab y el criterio de 18/20 de la clase 7.
Cuatro entregas. Haz clic en cada una para ver el "listo cuando".
La policy lista caminando en MuJoCo y el PD de articulación medido, con las ganancias de la policy entendidas.
Las cuatro piezas del entorno y la recompensa medida término a término, con el peso que cambia el juego.
Un entrenamiento PPO en CPU con checkpoint y las curvas leídas, con la recompensa hackeada (reward hacking) reconocida.
La policy evaluada con empujón y nivel, y tu plan de entrenamiento revisado.
Cuatro entregas en secuencia. El curso 2 lleva la policy de este curso del simulador al suelo.
El orden importa: el plan de la clase 8 usa la recompensa de la clase 4 y la prueba de la clase 7.
Elige la fecha de inicio y cuánto tiempo tienes por semana. El plan lista las prácticas de cada clase.
Medir el límite y planear el próximo entrenamiento.
Ejecuta los cinco niveles y anota el más alto que la policy supera.
Listo cuando: python3 kit/terreno.py --degraus 0.02 0.03 0.04 0.06 0.10; echo "saída: $?" → degraus vencidos: 2/5 y saída: 0.
Copia el modelo y revísalo antes de completarlo, para ver cómo el script lo reprueba.
Listo cuando: la salida muestra campos ok: 0/5, incompleto y saída: 1.
Completa el ~/fth/treino/plano-treino.md con tus elecciones: un currículo que empiece en el plano y pase por los niveles que reprobaron en E1, y una evaluación con número.
Listo cuando: python3 kit/conferir_plano.py $F/treino/plano-treino.md; echo "saída: $?" → campos ok: 5/5, ok y saída: 0.
La explicación aparece después de tu respuesta.
Pregunta 1 de 3
En el currículo de terreno de mjlab, ¿cuándo sube de nivel un robot?competencia
Pregunta 2 de 3
La política lista supera 3 cm y cae en 4 cm. En un plan de entrenamiento, ¿qué hacer con eso?
Pregunta 3 de 3
¿Por qué unitree_rl_lab empieza pidiendo solo ±0,1 m/s?
Elige una alternativa. La explicación aparece después de tu intento.