Falling¶
To prevent damage to the robots, a fall is detected and a protective fall motion becomes executed. The detection is handled by the module FallDownStateProvider
and the motion by the module FallEngine
.
Fall Detection¶
The module uses an Unscented Kalman Filter to model the center of mass in the support polygon. If the modeled center of mass moves out of the support polygon and its movement is in an angle away from it (e.g. not moving parallel to it), a fall is detected.
Fall Motion¶
Once a fall is detected and the robot was previously in a motion that needs a fall prevention, like walking, standing and kicking, a fall motion is executed. This fall motion is done by the FallPhase
. The motion is different for the front, back and side fall each. Afterwards, the gyro values needs to remain below a certain threshold to allow leaving the fall motion and start a get-up routine. This is due to the fact that the robot might still lie on other robots or obstacles and would fall with full stiffness on the ground, if a motion would start being executed.
Note
This fail safe exists as we broke a camera once. The robot started the get-up routine too early and hit the head too hard on the ground.
Videos of the protective fall motions are shown below.