E1 · Detectar a queda
5 minRode o bloco do detector e anote quanto tempo o tombo levou dos 10° aos 40°.
Pronto quando: python3 kit/queda.py; echo "saída: $?" → queda detectada: inclinação passou de 40°, amortecimento enviado e saída: 0.
Aula 5 · 15 min
Todo humanoide em teste cai. O que separa um laboratório preparado de um robô quebrado é o que o software faz nos primeiros décimos de segundo e o que as pessoas fazem depois. Nesta aula o G1 simulado cai de verdade, e o seu detector pela IMU manda amortecimento sem tentar segurar o tombo.
Começar a aula
Objetivo: detectar a queda do G1 pela inclinação da IMU e mandar amortecimento, sem tentar levantar sozinho.
Clique em cada etapa.
O que o robô faz sozinho termina no amortecimento. O resto é das pessoas.
Clique em cada uma.
Na prática desta aula, o script segura a pose inicial com os ganhos do exemplo oficial. Solto do elástico, o G1 do simulador cai logo em seguida, sem empurrão nenhum.
Ficar de pé exige controle de equilíbrio: o do fabricante (alto nível) ou a sua política (cursos 1 e 2).
Limiar baixo dispara com o balanço normal e para o teste sem motivo. Limiar alto demais só age com o robô já no chão, ou nunca.
A aba "Erro comum" mostra o limiar de 170°: o robô caiu e o detector nunca disparou, com os motores rígidos o tempo todo.
Parar a sessão, ver as pessoas, registrar com fotos e o MCAP, não religar sem inspeção, achar a causa.
Só então o robô volta ao pórtico. Esse passo entra no seu plano de implantação (aula 8) como condição de parada.
O simulador segura o G1 no elástico com os pés no chão e solta em t = 3 s. O queda.py segura a pose com PD, vigia a inclinação e amortece ao passar de 40°.
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 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 = tF=${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: $?"
waitsimulador: 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
A queda leva cerca de meio segundo dos 10° aos 40°. O detector age no meio do tombo e o robô termina no chão com os motores amortecidos.
segurando a pose inicial com PD · limiar de queda: 170° de inclinação do tronco nenhuma queda detectada: o limiar de 170° nunca foi atingido · motores continuaram rígidos saída: 1
O robô caiu do mesmo jeito, mas o limiar nunca foi atingido: nenhum amortecimento, motores rígidos durante o impacto, código 1.
Cair de propósito, no simulador.
Rode o bloco do detector e anote quanto tempo o tombo levou dos 10° aos 40°.
Pronto quando: python3 kit/queda.py; echo "saída: $?" → queda detectada: inclinação passou de 40°, amortecimento enviado e saída: 0.
Rode o bloco do erro comum e escreva, numa linha, que limiar você usaria no seu robô e por quê.
Pronto quando: python3 kit/queda.py --limite 170; echo "saída: $?" → nenhuma queda detectada e saída: 1.
No seu ~/fth/checklist.yaml, acrescente ao item 8 o limiar escolhido e quem decide religar depois de uma queda.
Pronto quando: python3 operar/kit/conferir_checklist.py checklist.yaml continua em 12 itens, 0 em branco.
A explicação aparece depois da sua resposta.
Pergunta 1 de 4
O script segurou a pose com PD e o G1 caiu mesmo assim. Por quê?competência
Pergunta 2 de 4
Por que o detector usa a IMU e não a altura da pelve?
Pergunta 3 de 4
Detectada a queda, o que o kit manda aos motores?
Pergunta 4 de 4
Com limiar de 170°, o que aconteceu?
Escolha uma alternativa. A explicação aparece depois da sua tentativa.