rough-walk-g
Velocity-commanded walking trained from scratch on a rough-terrain ladder (3300 iterations): the sturdiest of the family on small stairs and slopes, at +17% motor power over alpha_walking.
Command — twist slots of the 13-D command block (head / body slots: 4 head-joint deltas from HOME, rad — tracked, unused (zeros)); idle = [0, 0, 0]
| slot | meaning |
|---|---|
| twist[0] | vx: forward velocity command, m/s, trained range -0.4 .. 0.4 |
| twist[1] | vy: lateral velocity command, m/s, trained range -0.3 .. 0.3 |
| twist[2] | wz: yaw rate command, rad/s, trained range -1.0 .. 1.0 (achieved ~0.29 at 1.0 — weak turner) |
What it does — velocity-commanded walking (twist = [vx, vy, wz], head commands tracked) trained from scratch on a rough-terrain ladder. The sturdiest of the family on discrete obstacles: in the synchronized comparison it was the only policy to survive both the 2 cm stairs and the 9° slope. 12/110 falls on the rough-ground battery (alpha_walking: 32/110).
Limits (sim only, never run on hardware) — +17 % motor power vs alpha_walking (1.21 W vs 1.03 W on flat: warmer servos, watch temperature under sustained use); weak turn response (0.29 rad/s achieved for 1.0 commanded); stalls on rubble ≥ ~1.5 cm; being a from-scratch gait, its sim-to-real transfer is less proven than a fine-tune of the shipped policy.
Try it in simulation (laptop, no robot)
git clone -b hostile-terrain https://github.com/pollen-robotics/microduck_rl.git && cd microduck_rl && uv sync # once
hf download RemiFabre/microduck-rough-walk-g policy.onnx --local-dir policies/rough-walk-g
uv run scripts/infer_policy.py --walking policies/rough-walk-g/policy.onnx # Linux; macOS: see the mjpython note in the E card
Try it on the robot — walking policy: point the walk role at it, nothing else changes.
scp policy.onnx radxa@<robot>:/home/radxa/policies/rough-walk-g/
# on the robot, /etc/robot/robotd.toml: [policy] walk = "/home/radxa/policies/rough-walk-g/policy.onnx"
sudo systemctl restart robotd
Test order suggestion: flat first and watch servo temperature (this one runs hotter than alpha), then obstacles. Keep alpha_walking's path noted for a one-line rollback.
Contract obs[1,61] f32 → actions[1,14] f32, normalizer baked in, 50 Hz, targets around HOME × 1.0. Kind perpetual, entry pose standing.
Provenance Mjlab-Hostile-FinetuneFeetProgress-MicroDuck (continuation of Mjlab-Hostile-ScratchFeetProgress-MicroDuck) — pollen-robotics/microduck_rl @ 6cd45fc on branch hostile-terrain (https://github.com/pollen-robotics/microduck_rl/commit/6cd45fc), run pollen-robotics/hostile-g-continue-c-20260830-0630 (from scratch: 2500 it as hostile-c-scratch-feet-progress-20260830-0209, +800 it continued; wandb lyr06dji -> 4x3786f3); 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.