FTH 4 · Operar un humanoide real|INEMA.CLUB-PRO

Clase 5 · 15 min

Cuando cae: detectar, amortiguar y levantar

Todo humanoide en pruebas se cae. Lo que separa a un laboratorio preparado de un robot roto es lo que hace el software en los primeros décimos de segundo y lo que hacen las personas después. En esta clase el G1 simulado se cae de verdad, y tu detector por IMU manda amortiguación sin intentar frenar el tumbo.

Empezar la clase
Robot humanoide tendido de lado sobre una alfombra gris en un laboratorio oscuro, con las extremidades relajadas, después de una caída controlada.

En esta clase vas a

  1. 1Por qué mantener una pose con PD no es equilibrio
  2. 2Inclinación con umbral: demasiado pronto × demasiado tarde
  3. 3Amortiguar en vez de bloquear los motores
  4. 4Levantar es un procedimiento humano, después de la inspección

Objetivo: detectar la caída del G1 por la inclinación de la IMU y mandar amortiguación, sin intentar levantarse solo.

01De la inclinación a la inspección

Haz clic en cada etapa.

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

Lo que el robot hace solo termina en la amortiguación. Lo demás es cosa de las personas.

02Tres cosas que enseña la caída

Haz clic en cada una.

1. El PD no equilibra

En la práctica de esta clase, el script sostiene la pose inicial con las ganancias del ejemplo oficial. Suelto de la banda elástica, el G1 del simulador cae enseguida, sin ningún empujón.

Mantenerse de pie exige control de equilibrio: el del fabricante (alto nivel) o tu policy (cursos 1 y 2).

03Soltar, caer, detectar

El simulador sostiene al G1 en la banda elástica con los pies en el suelo y lo suelta en t = 3 s. El queda.py sostiene la pose con PD, vigila la inclinación y amortigua al pasar de 40°.

Terminal · simulador + detector
F=${FTH:-$HOME/fth}; cd $F/operar && . $F/.venv/bin/activate
python3 kit/sim.py --s 12 --soltar-em 3 &
python3 kit/queda.py; echo "saída: $?"
wait
Fragmento · kit/queda.py
    incl = op.inclinacao(s.imu_state.quaternion)
    incl_max = max(incl_max, incl)
    t = t_ciclo - inicio
    if t10 is None and incl > 10:
        t10 = t
    if caiu is None and incl > a.limite:
        caiu = t
Terminal · el error común: umbral demasiado alto
F=${FTH:-$HOME/fth}; cd $F/operar && . $F/.venv/bin/activate
python3 kit/sim.py --s 12 --soltar-em 3 > /dev/null &
python3 kit/queda.py --limite 170; echo "saída: $?"
wait
Ejemplo del repositorio
simulador: G1 29 motores · DDS domínio 1 em lo · 12 s · suspenso: não · elástico solta em t = 3 s
segurando a pose inicial com PD · limiar de queda: 40° de inclinação do tronco
queda detectada: inclinação passou de 40° (≈ 500 ms depois de passar de 10°)
amortecimento enviado: kp=0, kd=2 em todos os motores (sem tentar levantar)
no fim: inclinação acima de 40°: sim · motores amortecidos
saída: 0
simulador: fim em t = 12.0 s · robô no chão

La caída tarda cerca de medio segundo de los 10° a los 40°. El detector actúa en medio del tumbo y el robot termina en el suelo con los motores amortiguados.

04Práctica

Caer a propósito, en el simulador.

E1 · Detectar la caída

5 min

Ejecuta el bloque del detector y anota cuánto tardó el tumbo de los 10° a los 40°.

Listo cuando: python3 kit/queda.py; echo "saída: $?" → queda detectada: inclinação passou de 40°, amortecimento enviado y saída: 0.

E2 · El umbral equivocado

5 min

Ejecuta el bloque del error común y escribe, en una línea, qué umbral usarías en tu robot y por qué.

Listo cuando: python3 kit/queda.py --limite 170; echo "saída: $?" → nenhuma queda detectada y saída: 1.

E3 · El post-caída en el checklist

5 min

En tu ~/fth/checklist.yaml, agrega al ítem 8 el umbral elegido y quién decide volver a encender después de una caída.

Listo cuando: python3 operar/kit/conferir_checklist.py checklist.yaml sigue en 12 itens, 0 em branco.

05Prueba de la clase

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

Pregunta 1 de 4

El script sostuvo la pose con PD y el G1 se cayó igual. ¿Por qué?competencia

06En tres frases

CaeEl PD sosteniendo la pose no equilibra: suelto, el G1 cae.
DetectaInclinación de la IMU por encima del umbral → amortiguación.
DespuésDetener, inspeccionar, registrar; levantarlo es cosa de las personas.

Para ir más allá

Clase anteriorSiguiente clase