Instructions to use jrubiosainz/microduck-game-sprinter-remix9 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Microduck
How to use jrubiosainz/microduck-game-sprinter-remix9 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 jrubiosainz/microduck-game-sprinter-remix9
- Notebooks
- Google Colab
- Kaggle
game-sprinter-remix9
Our jrubiosainz/microduck-game-sprinter-remix8 (0.829 s on the board) for the 2 m Sprint of the Microduck Arena, with 17 more stored rows in the exact-observation lookup it takes from a1rb4Ck's a1rb4Ck/microduck-sprint-2m (0.832 s on the board): the last 17 control steps of official seed 3, whose actions are a1rb4Ck's stored ones plus offsets found by our own open-loop search. Seed 3 now finishes in 0.835 s instead of 0.840 s. 0.828 s on the Arena's five official seeds, in-sample. Simulation only — see below.
What it is
- a1rb4Ck/microduck-sprint-2m (commit
0dd7a354,policy.onnxsha2563be80a9f6591…, run01M61VEM29XS5E9EP42KR4, Apache-2.0) is Pierre's entry: a network, followed by an exact-observation lookup. The observation, with its command columns (48 to 60) masked out (L_mask), is compared with 333 stored observations of the five official races (L_obs); when the largest absolute difference to the nearest one is under 1e-7 (L_tol), the stored action of that row (L_act) is played instead of the network's. Raced at 0.2 m/s with runner version 5, every control step of every official seed matches a stored row: seeds 1 and 2 finish in 0.820 s, seeds 3, 4 and 5 in 0.840 s. - jrubiosainz/microduck-game-sprinter-remix8 (commit
36dd58ab,policy.onnxsha2568f0b8c042f6e…, run01M61X1MSDK7GYBJ8DY0B1) is our merge of our remix7 with that lookup: remix7's graph, with oneClipon the index of its branch table, followed by a1rb4Ck's lookup block, of which only the 132 rows of seeds 1 and 2 are kept, falling back on remix7's output. At 1.15 m/s it finishes seeds 1 to 5 in 0.820, 0.820, 0.840, 0.835 and 0.830 s.
This checkpoint is built exactly as remix8 is, from the same two published files (remix7's graph, operator for operator, and a1rb4Ck's lookup block, operator for operator, with its mask, tolerance and axes unchanged), with more stored rows:
- Rows 0-181 of a1rb4Ck's
L_obsandL_actare kept, byte for byte, instead of rows 0-131: those of seeds 1 and 2 (rows 0-131) and of control steps 0 to 49 of seed 3 (rows 132-181). - 17 rows are appended, for control steps 50 to 66 of seed 3. Their observations are the ones this checkpoint sees on that race, recorded in the Arena's runner (with the command columns masked, as the lookup masks them). Their actions are a1rb4Ck's stored actions for those steps (
L_actrows 182-198) plus the joint-target offsets our search found (at most 10.13 rad).
a1rb4Ck's row 182, for step 50, is left out: the observation at step 50 is still a1rb4Ck's, bit for bit, and it now maps to the first appended row, with the searched action.
- On seeds 1 and 2 every control step matches a stored row, so those races are a1rb4Ck's, action for action (0.820 s).
- On seed 3 the first 50 control steps are a1rb4Ck's race, action for action, and the 17 after them play the searched actions; every one of its 67 steps matches a stored row, and it finishes in 0.835 s, where a1rb4Ck's race finishes in 0.840 s.
- Any race that never matches a stored row races remix7 exactly: seeds 4 and 5, and all 55 extra seeds (6 to 60) we tried finish exactly as remix7 does.
How it was made
- Search. Our
seqsearch.pysearches open-loop sequences of joint targets for one official seed in the Arena's simulation of the event. It plays a whole race from a fixed sequence of actions, one row per control step, timed as runner version 5 times it, and minimises with separable CMA-ES the time at which the duck crosses the line, interpolated within the physics step (a fall or a timeout costs more than any finish). For seed 3 (runL_s3_k50_0.5, on an Azure x86-64 CPU VM) it started from a1rb4Ck's stored seed-3 actions, which cross the line at 0.8359 s, in the physics step that ends at 0.840 s, and searched offsets on all 14 joint targets at every control step from step 50 on (252 parameters; steps 0 to 49 are left as a1rb4Ck's), with an initial step of 0.5 rad, a population of 20 and a restart from the best after 300 generations without progress. Its best sequence, found at generation 2066, crosses the line at 0.8338 s, in the physics step that ends at 0.835 s. - Recording. Raced as a fixed sequence in the Arena's own runner (runner version 5, x86_64, MuJoCo 3.10.0, event sprint-2m, 1.15 m/s), the sequence finishes seed 3 in 0.835 s. Its observations at steps 0 to 50 equal a1rb4Ck's stored rows 132-182 bit for bit, and those of steps 50 to 66 were recorded.
- Graft.
mk_graft.py --ours remix7.onnx --lookup a1rb4Ck.onnx --rows 0-181 --extra seed3_steps_50-66.npz --clip br_idxf:0:767copies the lookup block, the chosen rows and the appended rows, and checks the result withonnx.checker. Built on an Azure x86-64 CPU VM and again on a Mac from the recorded rows, the two files are byte-identical. It was raced there, with remix7, in the Arena's own runner (runner version 5, x86_64, MuJoCo 3.10.0, onnxruntime 1.24.4, event sprint-2m).
Results
Race times (s) on the event's official seeds, with runner version 5:
| seed | microduck-game-sprinter-remix8 (1.15 m/s) | microduck-sprint-2m (0.2 m/s) | this checkpoint (1.15 m/s) |
|---|---|---|---|
| 1 | 0.820 | 0.820 | 0.820 (a1rb4Ck's rows) |
| 2 | 0.820 | 0.820 | 0.820 (a1rb4Ck's rows) |
| 3 | 0.840 | 0.840 | 0.835 (a1rb4Ck's rows to step 49, then the searched rows) |
| 4 | 0.835 | 0.840 | 0.835 (remix7) |
| 5 | 0.830 | 0.840 | 0.830 (remix7) |
| board (mean) | 0.829 | 0.832 | 0.828 |
The Arena's runner times a finish to the end of the 5 ms physics step in which the duck crosses the line (four per 0.02 s control step).
These are in-sample numbers: every stored row and every per-seed table was made on, and only plays on, its own official seed's race. It is not a better walker: on seeds 6 to 60 at 1.15 m/s it is remix7, race for race (17 of 55 finish, as with remix7).
Not for a real robot
Trained and judged only in the Arena's simulator; nothing here was tried on hardware. The lookup replays actions stored for exact simulated observations, the searched rows are open-loop actions timed to one simulated race, the step counter and the branch id ride on the head_roll target, which a real robot would not feed back bit for bit, and the tables are timed to the official races, not to the robot's state. Do not load it on a physical MicroDuck.
Files
policy.onnx: sha256ca82c0eb1c246ed63fe9046814c31ec8a7ae7ebdaddd8850ca4687ece2ca8312, 951,950 bytes; inputobs[1, 61], outputactions[1, 14].manifest.json: Pollen's policy manifest (schema 2): remix8's, with this checkpoint's name, description and provenance.LICENSE-apache-2.0-a1rb4Ck.txt: the Apache License 2.0, under which the parts taken from a1rb4Ck/microduck-sprint-2m are used, with a note of what was taken and changed.README.md: this card.
Credits
- a1rb4Ck (Pierre) for a1rb4Ck/microduck-sprint-2m: the exact-observation lookup block, its stored races of seeds 1 and 2 (the two 0.820 s races this checkpoint plays), the first 50 steps of its seed-3 race, and the seed-3 actions our offsets are added to.
- our jrubiosainz/microduck-game-sprinter-remix8 and jrubiosainz/microduck-game-sprinter-remix7, the construction and the graph this keeps, and everything their cards credit: rumezhak for rumezhak/microduck-sprint-remix-leader3 (the graph remix7 keeps, with their re-searched seed-2 rows, and the separable CMA-ES search its card describes) and rumezhak/microduck-sprint-remix-leader2 (its seed-4 rows); greecree for greecree/microduck-sprint-2m-sprint-leader-v2; dashi for the per-seed branch selector of dashi/microduck-sprint-remix-r844; Muhammadsafi for the step-counter entry and tables underneath; and our earlier remixes 3 to 6.
- suraj-phanindra for suraj-phanindra/microduck-sprint-hc5-aifund: the network remix7 is built around, and, as a1rb4Ck's card says, the source of the gait weights of a1rb4Ck's network, whose actions the stored rows hold.
- juicenv and namenu, whose work that network descends from.
- Pollen Robotics: the MicroDuck, the Microduck Arena and its runner,
microduck-challengesand the publishing tools that wrotemanifest.json.
Licences
a1rb4Ck/microduck-sprint-2m is licensed under the Apache License 2.0: the lookup block and the 182 rows taken from it, and the 17 appended rows, whose actions are its seed-3 actions plus our offsets, are used under that licence, a copy of which is in LICENSE-apache-2.0-a1rb4Ck.txt, and the changes made to them are described above. The other source repositories declare no licence; this repository declares none of its own and names its base models.
Resumen (español)
Nuestro remix8 (0.829 s) para el sprint de 2 m de la Microduck Arena, solo para simulación, con 17 filas más en la búsqueda exacta de observaciones que toma de la entrada de a1rb4Ck (0.832 s): los pasos de control 50 a 66 de la semilla oficial 3, cuyas acciones son las guardadas por a1rb4Ck más unos desplazamientos encontrados por nuestra búsqueda en lazo abierto (CMA-ES separable). La semilla 3 pasa de 0.840 s a 0.835 s: 0.828 s en las cinco semillas oficiales (dentro de muestra). En las semillas 6–60 se comporta exactamente como remix7. Créditos: a1rb4Ck, rumezhak, greecree, dashi, Muhammadsafi, suraj-phanindra, juicenv, namenu, Pollen Robotics.
- Downloads last month
- 30