FTH 2 · Do simulador ao chão|INEMA.CLUB-PRO

Aula 4 · 16 min

O atuador de verdade: atraso, limite de torque e actuator network

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
Atuador rotativo de robô numa bancada de testes com um disco de inércia e um sensor de torque, com um osciloscópio desfocado ao fundo.

Nesta aula você vai

  1. 1As camadas do tempo: política a 50 Hz, rede, PD a 500 Hz–1 kHz
  2. 2Atraso nativo do MuJoCo 3.5+: o atributo delay do atuador
  3. 3Quedas sob empurrão com 0, 20 e 40 ms de atraso
  4. 4Compensar o kp identificado e ver o "real" andar

Objetivo: medir o atraso do atuador na bancada, contar as quedas que ele causa sob empurrão e compensar o kp no comando.

01O caminho do comando até o torque

Clique em cada bloco.

Clique em cada bloco do diagrama para ver o que ele faz.

Atraso e saturação são invisíveis na marcha calma e aparecem no empurrão.

02Três jeitos de modelar o atuador

Do mais simples ao que se usa quando o simples não basta.

1. PD ideal

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.

03Medir o atraso e contar quedas

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

Terminal · medir o atraso na bancada
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/atraso.py --medir
Terminal · quedas por atraso
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/atraso.py --ms 0 20 40
Exemplo do repositório
degrau 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.

04Compensar o kp no comando

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.

Terminal · kp compensado
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/dois_mundos.py --kp-comando 1.75; echo "saída: $?"
Exemplo do repositório
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.

05Prática

Tempo e torque do atuador.

E1 · Atraso medido

3 min

Dê o degrau no joelho nos dois mundos.

Pronto quando: python3 kit/atraso.py --medir → atraso medido (real − sim): 22 ms.

E2 · Quedas por atraso

5 min

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.

E3 · Compensar e andar

5 min

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.

06Teste da aula

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

07Em três frases

MedidaUm degrau no joelho com o robô pendurado mede o atraso: 22 ms.
EfeitoSob empurrão, as quedas sobem de 2/6 (0 ms) para 6/6 (40 ms).
CorreçãoMandar o kp dividido pelo identificado faz o "real simulado" andar sem cair.

Para ir além

Aula anteriorPróxima aula