Leer el robot: articulaciones, IMU, batería y temperatura
Antes de mandar cualquier comando, necesitas saber si el robot está vivo, de pie y frío. En esta lección escuchas el estado del G1 durante unos segundos, mides la tasa en vez de memorizarla y resumes inclinación, torque y temperatura, diciendo "sem dado" cuando el simulador no manda un campo.
for i in range(op.N):
tau[i] = max(tau[i], abs(s.motor_state[i].tau_est))
temp = max(temp, max(s.motor_state[i].temperature))
Ejemplo del repositorio
simulador: G1 29 motores · DDS domínio 1 em lo · 10 s · suspenso: sim
amostras em 5 s: ≈ 1000 · taxa ≈ 200 Hz
taxa dentro de 150–250 Hz: sim
inclinação máx. do tronco: 6°
maior torque estimado: 0 N·m (sem comando: motores soltos)
temperatura máx. dos motores: sem dado (o simulador manda 0)
saída: 0
simulador: fim em t = 10.0 s · robô suspenso (pés fora do chão)
Robot suspendido y sin comando: tronco casi recto, torque cero (motores sueltos) y temperatura sin dato.
Quien imprime max(temperature) sin pensar ve "0" y concluye que el motor está frío. En el simulador el campo no se rellena. Regla del kit: un valor ausente es "sem dado", nunca un número.
04 · Práctica
Medir, no memorizar.
E1 · Monitor de 5 s
5 min
Ejecuta el bloque y anota la tasa y la inclinación máxima.
Listo cuando:python3 kit/monitor.py --s 5; echo "saída: $?" → taxa dentro de 150–250 Hz: sim, temperatura máx. dos motores: sem dado (o simulador manda 0) y saída: 0.
E2 · Encontrar el "sem dado" en el código
5 min
Abre kit/monitor.py y encuentra la línea que cambia el cero por "sem dado". Escribe, en una línea, qué harías en el robot real para obtener el número.
Listo cuando:grep -c "sem dado (o simulador manda 0)" kit/monitor.py → 1, y tu línea cita el manual del fabricante como fuente del umbral.
05 · Prueba de la clase
La explicación aparece después de tu respuesta.
Pregunta 1 de 4
¿Dónde está la batería del G1 en los mensajes del SDK?competencia
Correcto
El LowState_ de unitree_hg no tiene batería; power_v es del Go2. La batería es BmsState_ (soc, soh, tensiones), en un tópico propio.
No es esa
El LowState_ de unitree_hg no tiene batería; power_v es del Go2. La batería es BmsState_ (soc, soh, tensiones), en un tópico propio.Repasar: Qué viene en un mensaje de estado
Pregunta 2 de 4
El monitor midió cerca de 200 Hz en el simulador. ¿Qué dice eso del robot real?
Correcto
En el simulador la tasa viene del paso de 5 ms de config.py. La tasa del robot no está en el código del SDK; se mide con el monitor o con ros2 topic hz.
No es esa
En el simulador la tasa viene del paso de 5 ms de config.py. La tasa del robot no está en el código del SDK; se mide con el monitor o con ros2 topic hz.Repasar: Tres cuidados al leer
Pregunta 3 de 4
Todos los motores muestran temperature = 0 en el simulador. ¿Cuál es la lectura correcta?
Correcto
Cero aquí es ausencia de dato. Tratar la ausencia como un valor es el origen de muchas falsas alarmas (o de ninguna alarma).
No es esa
Cero aquí es ausencia de dato. Tratar la ausencia como un valor es el origen de muchas falsas alarmas (o de ninguna alarma).Repasar: Escuchar 5 segundos
Pregunta 4 de 4
Con el cuaternión de la IMU, ¿cómo sale la inclinación del tronco?
Correcto
1 − 2(x² + y²) es el coseno del ángulo entre el eje vertical del torso y la vertical del mundo; el arcocoseno da los grados.
No es esa
1 − 2(x² + y²) es el coseno del ángulo entre el eje vertical del torso y la vertical del mundo; el arcocoseno da los grados.Repasar: Tres cuidados al leer
Prueba completada
Acertaste {a} de {n}. Si aciertas todas, la clase se marca como completada.
Elige una alternativa. La explicación aparece después de tu intento.
06 · En tres frases
Camposrt/lowstate trae IMU y 35 motores; la batería es BmsState_.
Tasa200 Hz en el simulador, medido; la del robot real se mide en el real.
AusenciaUn campo sin rellenar es "sem dado", nunca cero.