{ "schema_version": 2, "model_api": 1, "name": "backflip", "kind": "episodic", "obs_len": 61, "action_len": 14, "action_scale": 1.0, "entry_pose": "standing", "duration_s": 0.3, "description": "Backflip from a stand (head-spring style) and land on its feet; starts when twist[0] goes to 1. SIM ONLY.", "command": { "encoding": "constant", "idle": [ 0, 0, 0 ], "twist": [ "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)", "unused (0)", "unused (0)" ], "head": "unused (zeros)", "body": "unused (zeros)" }, "robot": { "model": "microduck", "hw_rev": 1, "servos": "xl330", "control_hz": 50 }, "training": { "task_id": "Mjlab-Backflip-Flat-MicroDuck", "repo": "pollen-robotics/microduck_rl", "commit": "4757d6ae", "branch": "flamingo", "dirty": true, "run": "local 2026-10-26_15-47-20_run2, model_2999 (3000 it, 4096 envs, RTX 5080, 1h34m)", "checkpoint": 2999 }, "eval": { "sim_proxy": "mjlab training env with full domain randomization (64 standing starts per row), plus duck-sim (real robotd vs MuJoCo body)", "training_env": "switch at 1.0 s for 0.3 s: 100% full flip and land; at 0.3 s / 2.5 s: 100%; window 0.2 / 0.5 s: 100% / 98%; switch at the first step: 88%; switch never on: 0 flips, 100% standing", "duck_sim": "robot do backflip x30 with --command 1,0,0 --hold 0.3 --unwind 2.5: 29/30 full flips, 30/30 ended standing, no fall/limp verdicts, 1.00x real time", "peak_impact_m_s2": 26, "known_limits": "head-spring: the head pushes off the floor for ~0.1-0.3 s every flip; ~2.6 g landing peaks; never tested on hardware" } }