microduck-backflip / README.md
nocrab's picture
publish backflip: README.md
756acdd verified
|
Raw History Blame Contribute Delete
2.84 kB
metadata
library_name: onnx
pipeline_tag: reinforcement-learning
tags:
  - microduck
  - microduck-policy
  - mjlab
  - robotics
license: apache-2.0

backflip

Backflip from a stand (head-spring style) and land on its feet; starts when twist[0] goes to 1. SIM ONLY.

Command — twist slots of the 13-D command block (head / body slots: unused (zeros), unused (zeros)); idle = [0, 0, 0]

slot meaning
twist[0] start switch: 1 for ~0.2-0.5 s starts the flip, then 0 while it flies and lands (install with --command 1,0,0)
twist[1] unused (0)
twist[2] unused (0)

⚠️ Simulation only

Never run on a real robot. The flip uses the head as a spring: the duck sits back, pushes off the floor with its head (~0.1–0.3 s), flies upside down for ~0.15 s and lands on its feet. Landings peak around 2.6 g. A pure standing backflip is out of reach for this robot (best measured jump: 0.40 m/s takeoff, ~0.08 s in the air).

What it does

From a two-foot stand, a short pulse on twist[0] starts a full 360° backward flip; it lands and stands. With twist[0] held at 0 it just stands (it was trained to wait for the switch, so it doesn't flip by itself when installed as a skill).

Try it (duck-sim, the real robot software)

scripts/duck-sim ctl policy --file ~/.cache/duck-sim/robotd-duck-a.toml add backflip nocrab/microduck-backflip --command 1,0,0
scripts/duck-sim ctl robot do backflip

--command 1,0,0 is required: the manifest can't carry the start switch, and policy add feeds zeros by default (then it only stands). Hold (0.3 s) and unwind (2.5 s on zeros) come from the manifest.

Results

test result
training env, switch on at 1.0 s for 0.3 s (64 starts) 100 % flip and land
switch at 0.3 s / 2.5 s 100 % / 100 %
switch window 0.2 s / 0.5 s 100 % / 98 %
switch never on 0 flips, 100 % standing
duck-sim, robot do backflip ×30 29/30 full flips, 30/30 standing, no fall/limp

media/preview.mp4: one flip under real robotd in duck-sim, real time then 4× slow motion.

Contract obs[1,61] f32 → actions[1,14] f32, normalizer baked in, 50 Hz, targets around HOME × 1.0. Kind episodic, entry pose standing. Provenance Mjlab-Backflip-Flat-MicroDuck — pollen-robotics/microduck_rl @ 4757d6ae, run local 2026-10-26_15-47-20_run2, model_2999 (3000 it, 4096 envs, RTX 5080, 1h34m); exported with scripts/export.py. Files policy.onnx · manifest.json (all of the above, machine-readable) · media/preview.mp4 (sim rollout) Format: Microduck policy sharing.