FTH 2 · Del simulador al suelo|INEMA.CLUB-PRO

Clase 4 · 16 min

El actuador de verdad: retardo, límite de torque y actuator network

Entre que la política decide y el motor gira hay red, bucle del controlador y PD del motor. En esta clase mides el retardo (latencia) del "robot real" con un escalón en la rodilla, cuentas las caídas que causan 20 y 40 ms bajo empujón y compensas el kp identificado en la clase 3.

Empezar la clase
Actuador rotativo de robot en un banco de pruebas con un disco de inercia y un sensor de torque, con un osciloscopio desenfocado al fondo.

En esta clase vas a

  1. 1Las capas del tiempo: política a 50 Hz, red, PD a 500 Hz–1 kHz
  2. 2Retardo nativo de MuJoCo 3.5+: el atributo delay del actuador
  3. 3Caídas bajo empujón con 0, 20 y 40 ms de retardo
  4. 4Compensar el kp identificado y ver al "real" caminar

Objetivo: medir el retardo del actuador en el banco, contar las caídas que causa bajo un empujón y compensar el kp en el comando.

01El camino del comando hasta el torque

Haz clic en cada bloque.

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

El retardo y la saturación son invisibles en la marcha tranquila y aparecen en el empujón.

02Tres formas de modelar el actuador

De lo más simple a lo que se usa cuando lo simple no alcanza.

1. PD ideal

Lo que MuJoCo e Isaac Lab hacen sin que lo pidas: el torque sale al instante, exactamente igual al PD. Es el "sim" de la clase 1.

03Medir el retardo y contar caídas

--medir da un escalón de 0,3 rad en la rodilla con el robot colgado. --ms corre la marcha con 6 empujones (120, 150 y 180 N durante 0,2 s, hacia adelante y de lado) por retardo.

Terminal · medir el retardo en el banco
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/atraso.py --medir
Terminal · caídas por retardo
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/atraso.py --ms 0 20 40
Ejemplo del repositorio
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

El "real" tarda 22 ms más que el sim en mover la rodilla: los 20 ms de retardo ocultos más un poco del kp más blando, que también retrasa la respuesta.

04Compensar el kp en el comando

La clase 3 identificó kp ≈ 0,57 del enviado. Si envías 1/0,57 ≈ 1,75 veces el kp, el motor del "real" entrega algo cercano a lo que la policy 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: $?"
Ejemplo del repositorio
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

El "real simulado" ahora camina 4,5 m y no se cae (salida 0). El sim, con el kp más duro, sigue caminando. El retardo, la masa y la fricción siguen ahí: la policy aguanta, porque se corrigió la mayor diferencia.

05Práctica

Tiempo y torque del actuador.

E1 · Retardo medido

3 min

Da el escalón en la rodilla en los dos mundos.

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

E2 · Caídas por retardo

5 min

Corre la marcha con empujones en 0, 20 y 40 ms.

Listo cuando: python3 kit/atraso.py --ms 0 20 40 → 0 ms 2/6, 20 ms 3/6, 40 ms 6/6.

E3 · Compensar y caminar

5 min

Usa el kp que identificaste en la clase 3 (1 dividido por él) y corre los dos mundos de nuevo.

Listo cuando: python3 kit/dois_mundos.py --kp-comando 1.75; echo "saída: $?" → real simulado … queda: não y saída: 0.

06Prueba de la clase

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

Pregunta 1 de 3

Sin empujón, la policy camina con los 20 ms de retardo del "real" (clase 1). Con empujón, 40 ms la tumban en 6 de 6. ¿Qué enseña esto?competencia

07En tres frases

MedidaUn escalón en la rodilla con el robot colgado mide el retardo: 22 ms.
EfectoBajo empujón, las caídas suben de 2/6 (0 ms) a 6/6 (40 ms).
CorrecciónEnviar el kp dividido por el identificado hace que el "real simulado" camine sin caerse.

Para ir más allá

Clase anteriorSiguiente clase