E1 · O degrau máximo
5 minRode os cinco degraus e anote o maior que a política vence.
Pronto quando: python3 kit/terreno.py --degraus 0.02 0.03 0.04 0.06 0.10; echo "saída: $?" → degraus vencidos: 2/5 e saída: 0.
Aula 8 · 16 min
Ninguém treina marcha em escada no primeiro dia: o terreno e a velocidade pedida crescem conforme a política acerta. Nesta aula você mede até que degrau a política pronta vai, lê como o mjlab e o unitree_rl_lab sobem de nível, e escreve o seu plano de treino num arquivo que um script confere.
Começar a aula
Objetivo: medir o degrau máximo da política pronta, ler as regras de currículo e escrever um plano de treino com 5 campos que o conferir_plano.py aprova.
Clique em cada nível. Cada robô sobe ou desce de nível sozinho, pelo que andou.
Regras lidas do código: mjlab mdp/curriculums.py (commit 8bb2bc9) e unitree_rl_lab velocity_env_cfg.py (commit 4960b84).
O terreno.py monta, com o MjSpec, uma plataforma de altura h a 1,5 m do robô e manda andar 8 s a 0,5 m/s. Passou = não caiu e a pelve chegou em cima (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
2 e 3 cm passam; de 4 cm em diante, o robô cai em x ≈ 2 m, antes de subir na plataforma. Os degraus que reprovam são os próximos níveis de um currículo: é para eles que se treina de novo.
Dois currículos rodam juntos no treino de verdade. Clique em cada um.
No mjlab, no fim de cada episódio, o robô que andou mais de 80 % da distância pedida sobe um nível de terreno; o que andou menos de 50 % desce. Cada robô tem o seu nível: no mesmo treino, uns estão no plano e outros nos pedriscos.
No unitree_rl_lab, a velocidade pedida começa em ±0,1 m/s. Quando o rastreio de velocidade passa de 80 % do máximo, a faixa abre 0,1 m/s para cada lado, até o limite de −0,5 a 1,0 m/s.
O empurrão não entra no currículo nesses dois repositórios: ±0,5 m/s em x e y, a cada 5 s no unitree_rl_lab; no mjlab, a cada 1 a 3 s, com ±0,4 m/s também em z e giros em roll, pitch e yaw.
Antes de gastar GPU: qual robô, que faixa de comando, quais termos e pesos, que níveis de terreno e qual teste aprova. É o arquivo que você escreve agora.
Copie o modelo para ~/fth/treino, troque cada [colchete] pelo seu valor e confira. O exemplo do kit mostra um plano que passa.
# 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
Com o modelo ainda cheio de [colchetes], os cinco campos faltam e o script sai com 1. Regras: comando com número e m/s, recompensa com 2 ou mais termos do kit, currículo com 3 ou mais níveis separados por →, avaliação com um critério numérico (X/N ou %).
campos ok: 5/5 ok saída: 0
O exemplo do kit (kit/exemplos/plano-treino.md) usa as faixas de comando do unitree_rl_lab e o critério de 18/20 da aula 7.
Quatro entregas. Clique em cada uma para ver o "pronto quando".
A política pronta andando no MuJoCo e o PD de junta medido, com os ganhos da política entendidos.
As quatro peças do ambiente e a recompensa medida termo a termo, com o peso que vira o jogo.
Um treino PPO em CPU com checkpoint e as curvas lidas, com a recompensa hackeada reconhecida.
A política avaliada com empurrão e degrau e o seu plano de treino conferido.
Quatro entregas em sequência. O curso 2 leva a política deste curso do simulador ao chão.
A ordem importa: o plano da aula 8 usa a recompensa da aula 4 e o teste da aula 7.
Escolha a data de início e quanto tempo você tem por semana. O plano lista as práticas de cada aula.
Medir o limite e planejar o próximo treino.
Rode os cinco degraus e anote o maior que a política vence.
Pronto quando: python3 kit/terreno.py --degraus 0.02 0.03 0.04 0.06 0.10; echo "saída: $?" → degraus vencidos: 2/5 e saída: 0.
Copie o modelo e confira antes de preencher, para ver o script reprovar.
Pronto quando: a saída mostra campos ok: 0/5, incompleto e saída: 1.
Preencha o ~/fth/treino/plano-treino.md com as suas escolhas: um currículo que comece no plano e passe pelos degraus que reprovaram no E1, e uma avaliação com número.
Pronto quando: python3 kit/conferir_plano.py $F/treino/plano-treino.md; echo "saída: $?" → campos ok: 5/5, ok e saída: 0.
A explicação aparece depois da sua resposta.
Pergunta 1 de 3
No currículo de terreno do mjlab, quando um robô sobe de nível?competência
Pergunta 2 de 3
A política pronta vence 3 cm e cai em 4 cm. Num plano de treino, o que fazer com isso?
Pergunta 3 de 3
Por que o unitree_rl_lab começa pedindo só ±0,1 m/s?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.