Microduck tricks: run β†’ forward roll, roller-skate cone slalom, single-blade lift

Three new skills for the Microduck biped (Hugging Face Γ— Pollen Robotics), trained with PPO on mjlab (MuJoCo Warp) on Hugging Face Jobs, evaluated with deployment-protocol batteries in the simulator. All policies use the repo's shared 61-D observation contract at 50 Hz, so they hot-swap in the existing runtime next to the official policies.

skill policy held-out result (simulator)
Run β†’ forward roll β†’ stand (Γ©lan roulade) policies/roulade_elan_v2_ckpt3750.onnx walk hand-off success 200/200 (official policy: 86 %); impulse start 98.4 %; robust to Β±10 % mass, foot friction 0.5–1.5, mid-roll pushes
Roller-skate cone slalom policies/roller_slalom_v2_ckpt2000.onnx 8-cone course at 0.7 m spacing: 8/8 gates, 0 cone hits, 0/50 falls at 0.5 m/s (official policy: 21 % gates, 75 % falls)
Single-blade lift while skating (partial) policies/roller_glide_short_v15_ckpt1750.onnx on a command flag: lifts a foot, rides one blade 0.4–0.6 s (true single support by contact load), puts it down, keeps skating; 0 falls in 24 seeded takes. A sustained one-blade glide is not reachable on this robot (measured ceiling β‰ˆ 1 s)

run β†’ forward roll cone slalom

Single-blade lift clip: media/glide_v15_1750_lift.mp4.

Code, training recipes, evaluation scripts

Branch overnight-elan-slalom of the fork: https://github.com/easyrider11/microduck_rl/tree/overnight-elan-slalom (upstream: https://github.com/pollen-robotics/microduck_rl). Results index and write-ups live in docs/results/ there and are copied into docs/ here.

  • Train: uv run train Mjlab-RouladeElan-Flat-MicroDuck --env.scene.num-envs 4096 --hf-jobs (same for Mjlab-RollerSlalomV2-Flat-MicroDuck and Mjlab-RollerGlideV15-Flat-MicroDuck).
  • Evaluate: scripts/eval_roulade_entry.py, scripts/eval_roller_slalom.py, scripts/eval_single_blade.py; sweep every checkpoint of a run with scripts/sweep_hf_checkpoints.py.
  • Run a policy in the CPU simulator: uv run scripts/infer_policy.py --walking policies/<file>.onnx --new-cmd-obs.

The lesson worth exporting

Training reward is not a selection criterion: in every run the held-out deployment battery (hand-off from the walking policy, physical cones, standing / rolling starts) moved independently of the training curves, and checkpoints were picked only by that battery. For the single-blade glide the decisive step was a zero-cost physics probe before any further training: a model-based controller with the full state and a sampling MPC with the perfect model both top out at β‰ˆ 1 s of true single support, so the target was redefined to what the hardware can do.

Simulator results only; nothing here has been run on the physical robot yet. License follows the upstream repository.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading