E1 · Atraso medido
3 minDê o degrau no joelho nos dois mundos.
Pronto quando: python3 kit/atraso.py --medir → atraso medido (real − sim): 22 ms.
Aula 4 · 16 min
Entre a política decidir e o motor girar há rede, laço do controlador e PD do motor. Nesta aula você mede o atraso do "robô real" com um degrau no joelho, conta as quedas que 20 e 40 ms causam sob empurrão e compensa o kp identificado na aula 3.
Começar a aula
Objetivo: medir o atraso do atuador na bancada, contar as quedas que ele causa sob empurrão e compensar o kp no comando.
Clique em cada bloco.
Atraso e saturação são invisíveis na marcha calma e aparecem no empurrão.
Do mais simples ao que se usa quando o simples não basta.
O que o MuJoCo e o Isaac Lab fazem sem você pedir: o torque sai na hora, exatamente igual ao PD. É o "sim" da aula 1.
Acrescenta o atraso medido e o limite de torque declarado. O MuJoCo 3.5+ faz o atraso sozinho (delay e nsample no atuador); o kit enche o histórico com o primeiro comando para não começar de alvo zero.
Com sysid (aula 3) e randomização em volta do valor medido, é o que muitos projetos fazem.
Uma rede neural pequena aprende, com dados do motor real, a relação entre comando, histórico de posição e torque entregue, e entra no simulador no lugar do PD ideal.
Vale quando o atuador tem efeitos que um parâmetro não captura. Exige banco de testes do motor; este curso só a cita.
O stack GR00T-WholeBodyControl, da NVIDIA, acrescentou em 31/08/2026 escalonamento de kp e kd por motor contra tropeço na política SONIC: sim-to-real também é ajuste fino de PD na hora de implantar.
O E3 desta aula faz a versão mínima: multiplica o kp mandado pelo inverso do identificado.
--medir dá um degrau de 0,3 rad no joelho com o robô pendurado. --ms roda a marcha com 6 empurrões (120, 150 e 180 N por 0,2 s, para a frente e para o lado) por atraso.
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/atraso.py --medirF=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/atraso.py --ms 0 20 40degrau de 0,3 rad no joelho esquerdo, robô pendurado: tempo até o encoder mexer 0,005 rad sim: 8 ms real: 30 ms atraso medido (real − sim): 22 ms
O "real" demora 22 ms a mais que o sim para mexer o joelho: os 20 ms de atraso escondidos mais um pouco do kp mais mole, que também atrasa a resposta.
atraso quedas em 6 empurrões (120/150/180 N, frente e lado, 0,2 s, t = 3 s) 0 ms 2/6 . . . . x x 20 ms 3/6 x x x . . . 40 ms 6/6 x x x x x x (x = caiu, . = ficou de pé; ordem: 120, 150, 180 N para a frente e depois para o lado)
Com 40 ms, cai nos seis. Com 0 ms, ainda cai em dois empurrões laterais; com 20 ms, nos três frontais.
Não conclua "20 ms é melhor de lado do que 0 ms". São seis ensaios com uma semente: o padrão de quedas oscila; o que se lê é a contagem subindo com o atraso (2, 3, 6). Para afirmar mais, aumente os empurrões e as direções.
A aula 3 identificou kp ≈ 0,57 do mandado. Mandando 1/0,57 ≈ 1,75 vezes o kp, o motor do "real" entrega perto do que a política espera.
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/dois_mundos.py --kp-comando 1.75; echo "saída: $?"política: unitree_rl_lab G1 29 GDL velocity v0 (ONNX, 480 entradas) · comando 0.50 m/s · 10 s sim queda: não · andou 5.1 m em 10 s (vel. 0.51 m/s; pedida 0.50) real simulado queda: não · andou 4.5 m em 10 s (vel. 0.45 m/s; pedida 0.50) saída: 0
O "real simulado" agora anda 4,5 m e não cai (saída 0). O sim, com o kp mais duro, continua andando. O atraso, a massa e o atrito continuam lá: a política aguenta, porque a maior diferença foi corrigida.
Tempo e torque do atuador.
Dê o degrau no joelho nos dois mundos.
Pronto quando: python3 kit/atraso.py --medir → atraso medido (real − sim): 22 ms.
Rode a marcha com empurrões em 0, 20 e 40 ms.
Pronto quando: python3 kit/atraso.py --ms 0 20 40 → 0 ms 2/6, 20 ms 3/6, 40 ms 6/6.
Use o kp que você identificou na aula 3 (1 dividido por ele) e rode os dois mundos de novo.
Pronto quando: python3 kit/dois_mundos.py --kp-comando 1.75; echo "saída: $?" → real simulado … queda: não e saída: 0.
A explicação aparece depois da sua resposta.
Pergunta 1 de 3
Sem empurrão, a política anda com os 20 ms de atraso do "real" (aula 1). Com empurrão, 40 ms derruba em 6 de 6. O que isso ensina?competência
Pergunta 2 de 3
O MuJoCo 3.5+ modela atraso no próprio atuador. O que o kit faz a mais ao iniciar?
Pergunta 3 de 3
Quando vale treinar uma actuator network em vez de PD com atraso?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.