Instructions to use suvadityamuk/microduck-duck-worlds-policies with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Microduck
How to use suvadityamuk/microduck-duck-worlds-policies with Microduck:
# Replace SLOT with the slot specified in the model card (walk, stand, sitstand, ground_pick, kick_left, kick_right, roulade). sudo robotctl policy load SLOT suvadityamuk/microduck-duck-worlds-policies
- Notebooks
- Google Colab
- Kaggle
Microduck walkers fine-tuned inside Kimi-K3 worlds
Six walking policies for Pollen Robotics' Microduck biped, each fine-tuned with PPO inside
one world that Kimi-K3 wrote as a Blender script. They start from Pollen's
deployed walk, velstand.onnx in pollen-robotics/microduck-policies,
and keep its exact input and output contract, so they are drop-in replacements for it. Simulation only: none of them
has been run on a physical robot.
Code, worlds and full results: the GitHub repository (Duck Worlds). The built worlds are in the dataset
suvadityamuk/microduck-duck-worlds.
Files
One ONNX file per world, named after the world's folder. Each is the checkpoint chosen by the run's selection step (it must turn correctly both ways in a turning probe, then the best task success on separate seeds wins).
| File | World | Selected checkpoint | Stock walker | World-trained |
|---|---|---|---|---|
a_chocolate_factory_with_molten_chocolat.onnx |
Chocolate factory | iteration 100 | 0.14 | 0.23 |
a_hospital_corridor_with_wet_floor_zones.onnx |
Hospital corridor | iteration 100 | 0.19 | 0.26 |
a_low_gravity_orbital_hab_module_with_ma.onnx |
Low-gravity orbital hab (1.62 m/s²) | iteration 100 | 0.49 | 0.54 |
a_circus_ring_with_a_sawdust_floor_a_tig.onnx |
Circus ring | iteration 300 | 0.55 | 0.59 |
an_abandoned_mine_with_rubble_rail_track.onnx |
Abandoned mine | iteration 100 | 0.98 | 1.00 |
a_frozen_lake_ice_fishing_village_where.onnx |
Frozen-lake fishing village | iteration 600 | 0.00 | 0.01 |
Rates are mean task success over 20 held-out episodes per task in that world, with a planner giving both walkers the same commands and randomised light, materials, camera, friction and servo voltage. The mine and frozen-lake gains are within noise. A policy is only meant for its own world: some tasks got worse, for example dock the cargo in the hab (0.95 to 0.45) and grand parade in the circus (0.50 to 0.05).
Inputs and outputs
Same as Pollen's velstand.onnx, with the observation normaliser baked in:
- Input: a 61-D float vector at 50 Hz: gyro (3), projected gravity (3), joint positions minus the default pose (14), joint velocities (14), last action (14), command (13; the first three are forward, lateral and yaw velocity).
- Output: 14 joint position offsets from the default pose, sent to the servos as position targets.
Training
PPO (rsl_rl) in mjlab with Pollen's microduck_rl recipe (commit b02fdea), with the world's colliders, gravity and
surface friction replacing the flat floor. 4096 robots in parallel, 24 steps per iteration, 1500 iterations on one A100:
half the robots replay planned routes through the room as open-loop commands, half walk the open floor around it with
the recipe's random commands. Warm start from velstand.onnx with the observation normaliser frozen, a 40-iteration
critic warm-up with the actor frozen, then learning rate 2e-4. Yaw-rate tracking reward weight 3.0, kernel std 0.32.
Licence
Apache-2.0, like the base policies.
Model tree for suvadityamuk/microduck-duck-worlds-policies
Base model
pollen-robotics/microduck-policies