Instructions to use RemiFabre/microduck-static-grasp with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Microduck
How to use RemiFabre/microduck-static-grasp with Microduck:
# Replace SLOT with the slot specified in the model card (walk, stand, sitstand, ground_pick, kick_left, kick_right, roulade). sudo robotctl policy load SLOT RemiFabre/microduck-static-grasp
- Notebooks
- Google Colab
- Kaggle
static-grasp
A ground pick for the A button that gets low. The duck crouches until its open beak is about 1 cm above the floor, keeps its centre of mass over its feet, bites, and stands up holding a small object. It replaces the stock alpha_ground_pick network in the same slot.
Real-robot demo (50 s): https://www.youtube.com/watch?v=MpWuZ9_dxuk
Simulation, half speed: the stock pick on the left, this one on the right, same Lego.
Try it on a duck (a dev board; run this on the duck):
sudo robotctl update apply --ref static-grasp-default daemon && sudo robotctl policy load ground_pick RemiFabre/microduck-static-grasp
Then stand the duck up (Start twice), put a small object about 9 cm in front of its feet, centred, and press A. To go back:
sudo robotctl policy reset ground_pick && sudo robotctl update apply --ref main daemon
The first command installs the daemon build of microduck#481. This network was trained with a scripted beak, which opens to 22° over phase 0.02–0.10 of its 4 s cycle and closes on the object over 0.34–0.40. The stock daemon keeps the beak shut during a pick.
In simulation (exact training model, the robot's pick sequence)
- Lego 2×2, 2 cm block, die and chess pawn: 3/3 each. AA battery 1/3, flat coin 0/3.
- The centre of mass stays at least 0.84 cm inside the feet. Frozen mid-hold on its own servo targets, it stays up with the beak 2–5 mm off the floor.
- The beak hovers 1–1.7 cm while waiting and taps the floor for 0.02–0.1 s as it closes.
- Placement: about 9 cm in front of the feet. It still grasps from about 1 mm closer to 8 mm farther, and about ±15 mm sideways.
Limits
- Tried on one duck so far (the demo), with no counted results.
- Each degree of leg-joint error moves the beak about 2.5 mm, so a real duck may touch the floor more than the simulation does.
- Joint targets reach up to 0.25 rad past a joint range.
- Objects taller than 2.6 cm are untested in simulation.
Contract obs[1,61] f32 → actions[1,14] f32, normalizer baked in, 50 Hz. Kind episodic, phase command [cos 2πφ, sin 2πφ, 0] with a 4.0 s period, handing back at 0.7: the ground_pick slot.
Provenance Mjlab-StaticGrasp-Hover-FromPick-MicroDuck: pollen-robotics/microduck_rl @ 666dab6 on branch static-grasp, run pollen-robotics/mjlab_microduck/neoy2a9d, checkpoint 1249. It was warm-started from the stock pick, and exported with scripts/export.py.
Files policy.onnx · manifest.json (machine-readable) · media/preview.mp4 (simulation)