Projected gravity: how the robot knows it fell
Last updated
Projected gravity is the gravity vector expressed in the robot’s own frame. It is the only IMU quantity on robotctl monitor’s state stream.
- Upright is about
[0, 0, -1] - Face-down, face-up and lying on one side give distinctly different directions
The fallen state is decided from it.
Why policies depend on it too
The StandUp task has to rise from face-down, face-up and sitting, and those need completely different motions. The policy tells them apart from projected gravity — so the quantity serves both diagnosis and control.
A failure that never errors
One failure mode is worth remembering on its own:
When sensor fusion stops, the board keeps answering the bus. Nothing errors, and the gravity vector holds a plausible attitude indefinitely.
The numbers look fine. The fall verdict looks fine. Neither reflects reality any more.
Exactly one place says so — the condition row at the bottom of robotctl monitor:
orientation frozen — 25 stale reads
The stale-read counters and the ratios they mean anything against are in robotctl health. This is where to look when the robot behaves strangely and every indicator reads normal.