Dynamic Fall Recovery
Automatic fall recovery policy capable of restoring MicroDuck to standing posture from face-down, face-up, or sitting positions.
About this behavior
Triggered automatically when the onboard IMU's projected gravity vector exceeds tilt thresholds (or commanded via gamepad recovery button). The policy executes robust arm-less biped pushups, righting the duck without human intervention before handing off control back to the standing/walking state machine.
Runtime contract
61-dimension input · 14 joint targets · 50 Hz
Show details
Runtime contract
61-dimension input · 14 joint targets · 50 Hz
Positions, velocities, previous actions, gravity, and gyro.
Forward, lateral, and yaw velocity intent.
Neck and head orientation targets.
Six-axis torso offset command.
hip yaw · hip roll · hip pitch · knee · ankle
neck pitch · head pitch · yaw · roll
hip yaw · hip roll · hip pitch · knee · ankle
Verification
- Status
- Hardware verified
- Evidence
- Verified on physical MicroDuck hardware with fall detection triggers enabled. Robot self-rights after tip-over.
- Target hardware
- MicroDuck v1 (Rockchip RK3566, 14 Dynamixel XL330-M077, 2S LiPo)
- Simulation
- mjlab (MuJoCo Warp) at 50 Hz
- Note
- Requires full body contact physics. Uses robot_allcollisions.xml in simulation.
Compatibility
- Robot model
- microduck-standard
- MJCF model
- robot_allcollisions.xml
- Terrain
- flatrough
- Required accessories
- None — standard duck setup
Run it on your duck
Use the canonical model and this policy slot to try the behavior locally.
Deployment stepsShow instructions
curl -L "https://huggingface.co/spaces/pollen-robotics/microduck-simulator/resolve/main/app/public/policies/BEST_alpha_stand.onnx" -o "/opt/robot/policies/BEST_alpha_stand.onnx"[policy]
stand = "/opt/robot/policies/BEST_alpha_stand.onnx"sudo systemctl restart robotd
robotctl healthuv run scripts/infer_policy.py --standing BEST_alpha_stand.onnx --new-cmd-obs