E1 · Detect the fall
5 minRun the detector block and note how long the tumble took from 10° to 40°.
Done when: python3 kit/queda.py; echo "saída: $?" → queda detectada: inclinação passou de 40°, amortecimento enviado and saída: 0.
Lesson 5 · 15 min
Every humanoid under test falls. What separates a prepared lab from a broken robot is what the software does in the first tenths of a second and what the people do afterward. In this lesson the simulated G1 really falls, and your IMU detector sends damping without trying to catch the tumble.
Start the lesson
Goal: detect the G1's fall from the IMU tilt and send damping, without trying to get up on its own.
Click each step.
What the robot does on its own ends at damping. The rest is up to people.
Click each one.
In practice, in this lesson, the script holds the starting pose with the gains from the official example. Released from the elastic band, the simulator's G1 falls right after, with no push at all.
Standing up takes balance control: the manufacturer's (high level) or your own policy (courses 1 and 2).
A low threshold fires on normal sway and stops the test for no reason. A threshold that is too high only acts once the robot is already on the floor, or never.
The "Common mistake" tab shows the 170° threshold: the robot fell and the detector never fired, with the motors stiff the whole time.
Stop the session, check on the people, log it with photos and the MCAP, do not power back on without an inspection, find the cause.
Only then does the robot go back to the gantry. This step goes into your deployment plan (lesson 8) as a stop condition.
The simulator holds the G1 on the elastic band with its feet on the ground and releases it at t = 3 s. The queda.py script holds the pose with PD, watches the tilt, and damps once it passes 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
The fall takes about half a second to go from 10° to 40°. The detector acts in the middle of the tumble, and the robot ends up on the floor with the motors damped.
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
The robot fell all the same, but the threshold was never reached: no damping, motors stiff during the impact, code 1.
Fall on purpose, in the simulator.
Run the detector block and note how long the tumble took from 10° to 40°.
Done when: python3 kit/queda.py; echo "saída: $?" → queda detectada: inclinação passou de 40°, amortecimento enviado and saída: 0.
Run the common-mistake block and write, in one line, what threshold you would use on your robot and why.
Done when: python3 kit/queda.py --limite 170; echo "saída: $?" → nenhuma queda detectada and saída: 1.
In your ~/fth/checklist.yaml, add the chosen threshold and who decides to power back on after a fall to item 8.
Done when: python3 operar/kit/conferir_checklist.py checklist.yaml still shows 12 itens, 0 em branco.
The explanation appears after your answer.
Question 1 of 4
The script held the pose with PD and the G1 fell anyway. Why?skill
Question 2 of 4
Why does the detector use the IMU and not the pelvis height?
Question 3 of 4
Once a fall is detected, what does the kit send to the motors?
Question 4 of 4
With a 170° threshold, what happened?
Choose an option. The explanation appears after your attempt.