Antes de mandar qualquer comando, você precisa saber se o robô está vivo, em pé e frio. Nesta aula você escuta o estado do G1 por alguns segundos, mede a taxa em vez de decorá-la e resume inclinação, torque e temperatura, dizendo "sem dado" quando o simulador não manda um 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))
Exemplo do repositório
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)
Robô suspenso e sem comando: tronco quase reto, torque zero (motores soltos) e temperatura sem dado.
Quem imprime max(temperature) sem pensar vê "0" e conclui que o motor está frio. No simulador o campo não é preenchido. Regra do kit: valor ausente é "sem dado", nunca um número.
04 · Prática
Medir, não decorar.
E1 · Monitor de 5 s
5 min
Rode o bloco e anote a taxa e a inclinação máxima.
Pronto quando: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) e saída: 0.
E2 · Achar o "sem dado" no código
5 min
Abra kit/monitor.py e ache a linha que troca o zero por "sem dado". Escreva, numa linha, o que faria no robô real para ter o número.
Pronto quando:grep -c "sem dado (o simulador manda 0)" kit/monitor.py → 1, e a sua linha cita o manual do fabricante como fonte do limiar.
05 · Teste da aula
A explicação aparece depois da sua resposta.
Pergunta 1 de 4
Onde fica a bateria do G1 nas mensagens do SDK?competência
Correto
O LowState_ do unitree_hg não tem bateria; power_v é do Go2. A bateria é BmsState_ (soc, soh, tensões), num tópico próprio.
Não é essa
O LowState_ do unitree_hg não tem bateria; power_v é do Go2. A bateria é BmsState_ (soc, soh, tensões), num tópico próprio.Rever: O que vem numa mensagem de estado
Pergunta 2 de 4
O monitor mediu cerca de 200 Hz no simulador. O que isso diz do robô real?
Correto
No simulador a taxa vem do passo de 5 ms do config.py. A taxa do robô não está no código do SDK; mede-se com o monitor ou com ros2 topic hz.
Não é essa
No simulador a taxa vem do passo de 5 ms do config.py. A taxa do robô não está no código do SDK; mede-se com o monitor ou com ros2 topic hz.Rever: Três cuidados ao ler
Pergunta 3 de 4
Todos os motores mostram temperature = 0 no simulador. Qual a leitura certa?
Correto
Zero aqui é ausência de dado. Tratar ausência como valor é a origem de muito alarme falso (ou de nenhum alarme).
Não é essa
Zero aqui é ausência de dado. Tratar ausência como valor é a origem de muito alarme falso (ou de nenhum alarme).Rever: Escutar 5 segundos
Pergunta 4 de 4
Com o quatérnio da IMU, como sai a inclinação do tronco?
Correto
1 − 2(x² + y²) é o cosseno do ângulo entre o eixo vertical do tronco e a vertical do mundo; o arco-cosseno dá os graus.
Não é essa
1 − 2(x² + y²) é o cosseno do ângulo entre o eixo vertical do tronco e a vertical do mundo; o arco-cosseno dá os graus.Rever: Três cuidados ao ler
Teste concluído
Você acertou {a} de {n}. Acertando todas, a aula é marcada como concluída.
Escolha uma alternativa. A explicação aparece depois da sua tentativa.
06 · Em três frases
Camposrt/lowstate traz IMU e 35 motores; bateria é BmsState_.
Taxa200 Hz no simulador, medido; a do robô real se mede no real.
AusênciaCampo não preenchido é "sem dado", nunca zero.