E1 · Error antes y después
3 minEjecuta la corrección con el log de la clase 3.
Listo cuando: python3 kit/delta.py ~/fth/log.npz; echo "saída: $?" → erro de rastreio sim × real: antes 8.16° → depois 3.82° y saída: 0.
Clase 5 · 15 min
A veces el gap no cabe en dos parámetros. La idea de ASAP (RSS 2025) es aprender la acción que falta: un modelo que, sumado al comando dentro del simulador, hace que repita lo que hizo el robot real. En esta clase ajustas una versión mínima de esa idea con el log del ensayo de banco y mides el error del simulador antes y después.
Empezar la clase
Objetivo: corregir el simulador con datos del robot mediante un modelo de acción delta y medir el error de rastreo sim × real antes y después.
Haz clic en cada bloque. Las cuatro etapas están en el README de LeCAR-Lab/ASAP.
ASAP mostró habilidades ágiles en el G1 con este ciclo. El kit solo hace las etapas 2 y 3, en pequeño.
delta.py, con el log.npz de la clase 3. Haz clic en cada etapa.
Por articulación de la pierna: δ = a·(alvo − q) + b·dq, recalculado cada 20 ms (el paso de la policy) y sumado al objetivo dentro del simulador.
Cuatro articulaciones, dos coeficientes cada una.
mujoco.minimize.least_squares busca los 8 números que hacen que el simulador, repitiendo el comando del log con la corrección, llegue a las posiciones que midió el robot.
Comparar la trayectoria completa, y no un paso a la vez, evita que el retardo oculto confunda el ajuste.
a negativo acerca el objetivo a la posición actual: es el simulador imitando un motor más blando y más lento. Si juntas el kp de 0,6 y el retardo de 20 ms, tiene sentido.
No es el ASAP: allá el modelo delta es una red con el estado completo, entrenada por RL en GPU, y la policy se ajusta después. Aquí son 8 coeficientes y ningún reentrenamiento.
Sirve para ver la idea funcionando en CPU y en minutos.
Usa el mismo log.npz de la clase 3. Tarda de 1 a 2 minutos en CPU (cada evaluación repite los 4 s del ensayo).
F=${FTH:-$HOME/fth}; cd $F/sim2real && . $F/.venv/bin/activate
python3 kit/delta.py $F/log.npz; echo "saída: $?"log: ~/fth/log.npz · correção recalculada a cada 20 ms · δ = a·(alvo − q) + b·dq por junta left_hip_pitch a = -0.66 b = -0.013 left_hip_roll a = -0.48 b = +0.006 left_knee a = -0.66 b = +0.011 left_ankle_pitch a = -0.71 b = +0.031 erro de rastreio sim × real: antes 8.16° → depois 3.82° (RMS das posições) saída: 0
Antes, el simulador se equivoca en las posiciones de la pierna por 8,16° (RMS). Con la corrección, 3,82°. Sale 0 cuando el error baja.
La primera versión de este script ajustaba δ tramo a tramo (20 ms), linealizando el simulador en cada tramo, y el error empeoró en vez de bajar. El retardo de 20 ms hace que un tramo aislado parezca un motor aún más blando, y la corrección exagera. Ajustar contra la trayectoria completa lo resolvió: revisa siempre el error después de la corrección, nunca solo el ajuste.
Hacer que el simulador imite al robot.
Ejecuta la corrección con el log de la clase 3.
Listo cuando: python3 kit/delta.py ~/fth/log.npz; echo "saída: $?" → erro de rastreio sim × real: antes 8.16° → depois 3.82° y saída: 0.
Compara los valores de a de las cuatro articulaciones con el kp identificado en la clase 3 y escribe, en una línea, por qué todos salieron negativos.
Listo cuando: una línea que cite los cuatro a (entre −0,48 y −0,71) y la palabra "blando" o "retardo".
Para cada caso, escribe cuál usarías: (1) la batería nueva dejó al robot 2 kg más pesado; (2) la transmisión de la rodilla tiene un juego que cambia con la temperatura.
Listo cuando: (1) sysid/medir la masa; (2) delta action o actuator network, con el motivo en una frase cada uno.
La explicación aparece después de tu respuesta.
Pregunta 1 de 3
En el ASAP, ¿para qué sirve el modelo de delta action?competencia
Pregunta 2 de 3
El delta.py ajusta 8 coeficientes. ¿Qué lo separa del ASAP de verdad?
Pregunta 3 de 3
Ajustar tramo a tramo empeoró el error; contra la trayectoria completa, mejoró. ¿Por qué?
Elige una alternativa. La explicación aparece después de tu intento.