walk-rough

v2: walk-rough v1 fine-tuned with +-1 deg of gear play in every servo, on stairs, slopes and block grids ordered from easy to hard (Mjlab-Velocity-Rough-Backlash-MicroDuck), simulation only: v1's 8,000 iterations plus 3,000, 4096 envs, 147 min on one RTX 5090. With the gear play on, on the hardest terrain row it stayed on its feet for 20 s in 8 of 9 takes; v1 in the same sim did 4 of 9 (small sample). Not yet tested on a real Microduck.

A perpetual policy for the microduck (61-D observation, 14 actions, 50 Hz). Runs until told otherwise — a gait for the walk slot.

Run it on a robot

sudo robotctl policy load walk witcheer/microduck-walk-rough

The observation normalizer is baked into policy.onnx; feed raw observations. manifest.json follows schema 2 of the microduck policy manifest (docs/policy-manifest.md in the daemon repo).

Training

  • repo: pollen-robotics/microduck_rl
  • branch: develop
  • commit: 53b8971b6
  • exported from a checkout with uncommitted changes

Results in simulation (v2)

  • Task: Mjlab-Velocity-Rough-Backlash-MicroDuck (the maker's rough-terrain walk with +-1 deg of gear play, i.e. backlash, in every servo), terrain rows ordered from easy to hard (a local curriculum patch; v1 trained on a random 5x5 terrain grid). Warm-started from v1 (iteration 8,000), trained to iteration 11,000: 3,000 iterations, 4096 envs, 147 min on one RTX 5090 (about 2.9 s/it).
  • Proof takes (20 s each, one simulated duck forced onto a chosen terrain row and type, no random pushes, sampled every 0.1 s). A take counts as held when the trunk never tilts past 60 deg and the sim never resets the duck for falling inside the window.
    • With gear play on, hardest row (9 of 9), 3 takes per terrain type: v2 held 8 of 9, v1 held 4 of 9. Stairs 2/3 vs 1/3, block grid 3/3 vs 1/3, slope 3/3 vs 2/3. Fall events 2 vs 6. One v2 slope take reached the tile edge at 3.7 m and was reset upright; it is counted as held.
    • Row 6, one take per type: 3/3 for both.
    • Without gear play (plain Mjlab-Velocity-Rough-MicroDuck), hardest row, one take per type: v1 3/3, v2 2/3 (one stairs fall at 2.5 s). v1 is fine in the sim it was trained in; the gap shows up with gear play.
  • Training curve: mean reward flat around 104 from iteration 8,500 to 10,900, with the terrain level mean at 5.9 of 9 in the last window. Not comparable with v1's reward (different terrain mix).
  • Honest limits: small samples (9 takes per policy on the hardest row). v2 changes two things at once (gear play and the ordered terrain rows), so this card does not credit the gear play alone. Not tested: pushes on rough ground, payloads, a real Microduck.
  • Simulation only. Not yet tested on a real Microduck.

Part of a skill ladder trained in simulation: siblings under witcheer/microduck-*, run logs and curves in the dataset witcheer/microduck-skill-tree (folder level-04b-walk-rough-gear-play).

v1

Walking gait trained on rough terrain without gear play (Mjlab-Velocity-Rough-MicroDuck): 8,000 iterations, 4096 envs, 324 min on one RTX 5090. Upright for a 12 s flat-ground take when published; the rough-ground takes above (v1 columns, 2026-10-11) are its first. Still installable:

sudo robotctl policy load walk witcheer/microduck-walk-rough@v1
Downloads last month
28
Video Preview
loading

Collection including witcheer/microduck-walk-rough