--- tags: - reinforcement-learning - locomotion - bipedal - microduck - pollen-robotics --- # Microduck RL — 2.0 m/s running push Fork of [pollen-robotics/microduck_rl](https://github.com/pollen-robotics/microduck_rl) training Pollin Robotics **Microduck** (25 cm open-source biped, XL330 servos) to run at a **measured mean 2.0 m/s** forward speed via PPO (rsl_rl + MuJoCo Warp / BAM). ## Honest status (2026-09-12, TRAINING STOPPED) - Recipe: exact DuckEMW running config, **only deviation = speed cap raised to 2.5** (`MICRODUCK_RUNNING_SPEED_CAP=2.5`, `MICRODUCK_RUNNING_TARGET_MAX_SPEED=2.5`). No flight reward, no Su-style rewards, no achievement gate — reverted to the proven base. - **Max measured mean forward speed (world-displacement eval): 1.621 m/s @ cmd 2.0** (p10 1.387, p90 1.828, max 1.923, ~2 resets) at checkpoint `model_76500.pt` (iter 76506). This is the best result of the run. - Earlier best was 1.651 m/s @ cmd 2.0 (model_58000, cap 2.0). The cap-2.5 run reached 1.621 mean at the final checkpoint; fluctuated 1.52–1.65 across the climb — did not pass 1.7. - Goal (mean 2.0 @ cmd 2.0) **NOT reached**. Training halted at user request. ## How speed is measured (no lies) `scripts/eval_sprint_speed.py` measures true world-frame displacement (`root_link_pos_w` delta / time) across 64 envs, reporting mean / p10 / p90 / max / resets per command. Reward/curriculum metrics are NEVER reported as speed. ## Full honest eval — model_76500.pt | cmd (m/s) | mean | p10 | p90 | max | resets | |-----------|-------|-------|-------|-------|--------| | 0.4 | 0.078 | 0.000 | 0.174 | 0.377 | 12 | | 0.8 | 1.211 | 0.636 | 1.565 | 1.615 | 15 | | 1.2 | 1.512 | 1.187 | 1.775 | 1.858 | 4 | | 1.6 | 1.575 | 1.323 | 1.820 | 1.899 | 6 | | 2.0 | 1.621 | 1.387 | 1.828 | 1.923 | 2 | ## Run it ```bash export MICRODUCK_RUNNING_SPEED_CAP=2.5 export MICRODUCK_RUNNING_TARGET_MAX_SPEED=2.5 .venv/bin/train Mjlab-Running-Flat-MicroDuck \ --env.scene.num-envs 4096 --agent.max-iterations 80000 ``` ## Files - `src/mjlab_microduck/tasks/microduck_running_env_cfg.py` — running task cfg + knobs - `src/mjlab_microduck/tasks/mdp.py` — rewards + speed curriculum - `scripts/eval_sprint_speed.py` — lie-proof world-displacement eval - `checkpoints/model_76500.pt` — final checkpoint (best: 1.621 m/s @ cmd 2.0) - `checkpoints/model_59000.pt` — earlier cap-2.0 checkpoint (1.65 m/s @ cmd 2.0)