tug-pool21-2000

Little Blue is small, determined and absolutely convinced he's a champion. He trained against every duck on the board and learned one big trick: lean back, stay low and pull like he means it. His only fear is a duck that lies down and refuses to play. Give him a cheer!

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

Run it on a robot

sudo robotctl policy load <slot> AndoShy/microduck-tug-pool21-2000

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-TugOfWar-MicroDuck
  • repo: git@github.com:pollen-robotics/microduck-challenges
  • branch: andoshy-tug
  • commit: 4ecabf29e
  • checkpoint: 2000
  • seed: 1
  • base: mjlab-microduck 0.1.0 @ 1efd853be
  • started: 2026-11-06T01:06:28Z

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 git@github.com:pollen-robotics/microduck-challenges
cd microduck-challenges
git checkout 4ecabf29e
uv sync
uv run train Mjlab-TugOfWar-MicroDuck --env.scene.num-envs 2048 --agent.max-iterations 300 --agent.seed 1 --agent.save-interval 10 --agent.logger tensorboard --agent.run-name pool21 --agent.algorithm.desired-kl 0.005 --agent.algorithm.entropy-coef 0.002 --agent.resume True --agent.load-run 2026-11-06_01-22-55_pool20 --agent.load-checkpoint model_1720.pt --env.actions.opponent.pool logs/pool/ref_t20-500.onnx,logs/pool/ref_t20-500.onnx,logs/pool/ref_t20-500.onnx,logs/pool/greecree_super-v6_h2h.onnx,logs/pool/greecree_super-v6_h2h.onnx,logs/pool/greecree_super-v6_h2h.onnx,logs/pool/greecree_super-v6_h2h.onnx,logs/pool/greecree_super-v6_h2h.onnx,logs/pool/greecree_super-v6_h2h.onnx,logs/pool/juicenv_puller6.onnx,logs/pool/juicenv_puller6.onnx,logs/pool/juicenv_puller5.onnx,logs/pool/juicenv_puller4.onnx,logs/pool/juicenv_puller3.onnx,logs/pool/juicenv_puller3.onnx,logs/pool/juicenv_puller2.onnx,logs/pool/juicenv_puller1.onnx,logs/pool/juicenv_puller1.onnx,logs/pool/rumezhak_leader2_h2h.onnx,logs/pool/rumezhak_leader2_h2h.onnx,logs/pool/almuli.onnx,logs/pool/almuli_cup.onnx,logs/pool/leader_nico.onnx,logs/pool/craigm26_tug1.onnx,logs/pool/pool13-1560.onnx,logs/pool/pool13-1560.onnx,logs/pool/pool10-1410.onnx,logs/pool/pool12-1600.onnx,logs/pool/pool8-1350.onnx,logs/pool/pool6-1300.onnx,logs/pool/rumezhak_league-v3_h2h.onnx,logs/pool/rumezhak_league-v3_h2h.onnx,logs/pool/rumezhak_league-v3_h2h.onnx,logs/pool/rumezhak_league-v3_h2h.onnx,logs/pool/rumezhak_league-v3_h2h.onnx,logs/pool/rumezhak_league-v3_h2h.onnx,logs/pool/greecree_super-v9_h2h.onnx,logs/pool/greecree_super-v9_h2h.onnx,logs/pool/greecree_super-v9_h2h.onnx,logs/pool/greecree_super-v9_h2h.onnx,logs/pool/littlebeanhp_tab-v1_h2h.onnx,logs/pool/littlebeanhp_tab-v1_h2h.onnx,logs/pool/littlebeanhp_tab-v1_h2h.onnx,logs/pool/littlebeanhp_tab-v1_h2h.onnx,logs/pool/juicenv_anchor1.onnx,logs/pool/juicenv_anchor1.onnx,logs/pool/juicenv_anchor1.onnx,logs/pool/juicenv_anchor1.onnx,logs/pool/rsanchez_competitive-v2.onnx,logs/pool/rsanchez_competitive-v2.onnx,logs/pool/rsanchez_competitive-v2.onnx,logs/pool/rsanchez_competitive-v2.onnx,logs/pool/greecree_super-v9_h2h.onnx,logs/pool/greecree_super-v9_h2h.onnx,logs/pool/greecree_super-v9_h2h.onnx,logs/pool/greecree_super-v9_h2h.onnx,logs/pool/juicenv_anchor1.onnx,logs/pool/juicenv_anchor1.onnx,logs/pool/juicenv_anchor1.onnx,logs/pool/juicenv_anchor1.onnx,logs/pool/almuli_cup.onnx,logs/pool/almuli_cup.onnx,logs/pool/almuli_cup.onnx,logs/pool/pool20-1640.onnx
Downloads last month
-
Video Preview
loading