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.
Fall Motion T1¶
For the T1 we opted for a safer approach, replacing the FallEngine
with the RestrictiveFallEngine
.
Instead of executing a fall prevention motion, the robot will start a damping mode but trying to interpolate into a standing motion.
This ensures the joints and motors do not break on impact, but also allow the robot to reach a standing pose without much risk of hurting a human operator.
Note
This is just a proof of concept. We did no intense tests and plan to further improve the handling when falling.
Videos of the protective fall motions are shown below.