donaldmicroduck-v2

New strategy, slightly better result. Hear me quack!

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

Run it on a robot

sudo robotctl policy load <slot> mrharm/microduck-donaldmicroduck-v2

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

  • task_id: Mjlab-RollerSprint2m-MicroDuck
  • repo: https://github.com/pollen-robotics/microduck-challenges
  • branch: main
  • commit: 3cc03f144
  • checkpoint: 2250
  • seed: 6969
  • base: mjlab-microduck 0.1.0 @ 8d0dbc94c
  • started: 2026-10-14T12:55:17Z

Reproduce

Same code, same uv.lock, same command, same seed. Training it again yields a comparable policy, not the same weights: GPU reinforcement learning is not bit-reproducible across machines.

git clone https://github.com/pollen-robotics/microduck-challenges
cd microduck-challenges
git checkout 3cc03f144
uv sync
uv run train Mjlab-RollerSprint2m-MicroDuck --env.scene.num-envs 2048 --agent.max-iterations 100000 --agent.seed 6969 --agent.logger tensorboard --agent.run-name run-1014-1454
Downloads last month
9
Video Preview
loading