Instructions to use jrubiosainz/microduck-game-sprinter-remix7 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Microduck
How to use jrubiosainz/microduck-game-sprinter-remix7 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-remix7
- Notebooks
- Google Colab
- Kaggle
game-sprinter-remix7
A new checkpoint of rumezhak/microduck-sprint-remix-leader3 (0.837 s on the board) for the 2 m Sprint of the Microduck Arena: rumezhak's graph, operator for operator, with the values of one of its per-seed tables searched further. 0.835 s on the Arena's five official seeds, in-sample. Simulation only — see below.
What it is
rumezhak/microduck-sprint-remix-leader3 (commit cdf5962f, policy.onnx sha256 518a94de6aae…, run 01M60W1NC5PR5QYZGP5YYP) is rumezhak's remix of jrubiosainz/microduck-game-sprinter-remix5: a network and a step counter carried in the low bits of the head_roll action (race step 0 is counter step 25), wrapped in a per-seed branch selector. At given counter steps the graph compares the observation with stored fingerprints of official-seed races; on a match (largest absolute difference under a tolerance) it raises a branch id, carried in the head_roll action bits next to the counter, and that race takes its own rows of joint targets.
All of that graph's branch ids are in use, so this checkpoint adds no branch, no fingerprint and no operator. It only rewrites the values of this table, in place (seed 5: branch 4, table ob_T4 (our remix4's seed-5 table, kept unchanged by greecree's leader-v2, our remix5 and leader3), joint-target offsets added to the network's action, rows 30-66 changed by at most 28.5871 rad). Offsets this large only saturate the motor: the Arena's firmware position loop clamps the duty to the current window and to the PWM range, so a target far past a joint's reach means full drive towards it. Every node and every other initializer of rumezhak/microduck-sprint-remix-leader3 is kept, and the file rebuilt from the base's policy.onnx and the searched table (scratch_rec/ip.py bake) is byte-identical to this one.
- Any race whose branch id never becomes this one races rumezhak's graph exactly: the other official seeds and all 55 extra seeds (6 to 60) we tried finish exactly as the base does.
How it was searched
Only seed 5's table changed, as in our remix6. leader3 plays it as branch 4, the branch our remix4 added: at counter step k the graph adds row k of ob_T4 to the network's joint targets (head_roll, which carries the counter, excepted). That table is the search variable (scratch_rec/ip.py mk), as piecewise-linear knots over a span of rows, raced on official seed 5 only, at 1.15 m/s, in the Arena's runner. The cost is the distance still short of the 2 m line at the end of one 5 ms physics step, with a fall costing 1 m more; a negative cost means the duck is already past the line by then. This is the relay search that gave remix6 its table, carried on. remix6 took run s5ar2e's table, with the line at the end of substep 2 of race step 41, which runner version 5 times as 0.835 s. The relays kept going from a sibling of that run, s5ar2b (both started from s5br1a's best), first further past that step, then with the line one substep earlier: the end of substep 1 of race step 41, 0.830 s. Relays of separable CMA-ES (ol_sub.py --sep), CMA-ES (ol_sub.py) and coordinate searches (coord.py) ran on two VMs and, for the final stretch, five, each 8-minute round restarting from the best table any VM had found so far. The runs this table comes from, in order:
- Seed 5 (branch 4,
ob_T4): our remix4's own search of this table (runss5s10,s5r4,s5Z1ands5Y1, CMA-ES withol_hybrid.py, timed as runner version 4 did), which leader3 keeps unchanged: seed 5 finishes in 0.840 s under runner version 5, 11.9 mm short of the line at 0.835 s; then boost runs5xB(separable CMA-ES, 14 knots, 182 parameters, from leader3's table) → 4.1 mm short; then relay runs5br1a(separable CMA-ES, rows 35-66, a knot every 2 rows, initial step 0.08, population 96, froms5xB's best table) → 0.9 mm short; then relay runs5ar2b(separable CMA-ES, rows 35-66, a knot every 2 rows, initial step 0.08, population 96, froms5br1a's best table) → 1.8 mm past the line at 0.835 s; then relay runs5br3b(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, froms5ar2b's best table) → 2.7 mm past the line at 0.835 s; then relay runs5ar4a(separable CMA-ES, rows 30-66, a knot every row, initial step 0.06, population 96, froms5br3b's best table) → 3.4 mm past the line at 0.835 s; then relay runs5ar5a(separable CMA-ES, rows 35-66, a knot every 2 rows, initial step 0.08, population 96, froms5ar4a's best table) → 8.0 mm past the line at 0.835 s; then relay runs5ar6e(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, froms5ar5a's best table) → 8.5 mm past the line at 0.835 s; then relay runs5br6a(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, froms5ar6e's best table) → 9.1 mm past the line at 0.835 s; then relay runc5k56r0b(separable CMA-ES, rows 40-66, a knot every 2 rows, initial step 0.04, population 64, froms5br6a's best table) → 5.3 mm short of the line at 0.830 s; then relay runc5k56r1a(CMA-ES, rows 40-66, a knot every 2 rows, initial step 0.02, population 64, fromc5k56r0b's best table) → 5.1 mm short of the line at 0.830 s; then relay runc5k56r2b(separable CMA-ES, rows 35-66, a knot every 2 rows, initial step 0.08, population 96, fromc5k56r1a's best table) → 4.4 mm short of the line at 0.830 s; then relay runc5k56r3a(separable CMA-ES, rows 40-66, a knot every 2 rows, initial step 0.04, population 64, fromc5k56r2b's best table) → 3.3 mm short of the line at 0.830 s; then relay runc5k56r5b(separable CMA-ES, rows 35-66, a knot every row, initial step 0.02, population 96, fromc5k56r3a's best table) → 2.6 mm short of the line at 0.830 s; then relay runc5k56r7b(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc5k56r5b's best table) → 2.3 mm short of the line at 0.830 s; then relay runc5k56r9a(CMA-ES, rows 40-66, a knot every 2 rows, initial step 0.02, population 64, fromc5k56r7b's best table) → 2.2 mm short of the line at 0.830 s; then relay runc5k56r10a(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc5k56r9a's best table) → 2.1 mm short of the line at 0.830 s; then relay runc5k56r11b(separable CMA-ES, rows 45-66, a knot every row, initial step 0.01, population 64, fromc5k56r10a's best table) → 2.1 mm short of the line at 0.830 s; then relay runc4k56r0b(coordinate search, rows 45-66, latest first, moves of ±0.006 to ±0.1, fromc5k56r11b's best table) → 2.1 mm short of the line at 0.830 s; then relay runc3k56r0d(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc4k56r0b's best table) → 1.9 mm short of the line at 0.830 s; then relay runc4k56r1b(separable CMA-ES, rows 35-66, a knot every row, initial step 0.02, population 96, fromc3k56r0d's best table) → 1.6 mm short of the line at 0.830 s; then relay runc4k56r2a(separable CMA-ES, rows 45-66, a knot every row, initial step 0.01, population 64, fromc4k56r1b's best table) → 1.5 mm short of the line at 0.830 s; then relay runc3k56r2b(separable CMA-ES, rows 45-66, a knot every row, initial step 0.01, population 64, fromc4k56r2a's best table) → 1.3 mm short of the line at 0.830 s; then relay runc4k56r4g(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc3k56r2b's best table) → 1.3 mm short of the line at 0.830 s; then relay runc2k56r5b(separable CMA-ES, rows 45-66, a knot every row, initial step 0.01, population 64, fromc4k56r4g's best table) → 1.3 mm short of the line at 0.830 s; then relay rund5k56r6a(separable CMA-ES, rows 45-66, a knot every row, initial step 0.01, population 64, fromc2k56r5b's best table) → 1.2 mm short of the line at 0.830 s; then relay rund5k56r7b(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromd5k56r6a's best table) → 1.2 mm short of the line at 0.830 s; then relay runc4k56r8c(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromd5k56r7b's best table) → 1.2 mm short of the line at 0.830 s; then relay rund5k56r9d(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc4k56r8c's best table) → 1.2 mm short of the line at 0.830 s; then relay runc4k56r10e(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromd5k56r9d's best table) → 1.0 mm short of the line at 0.830 s; then relay runc4k56r11f(separable CMA-ES, rows 45-66, a knot every row, initial step 0.01, population 64, fromc4k56r10e's best table) → 0.7 mm short of the line at 0.830 s; then relay runc4k56r12c(separable CMA-ES, rows 45-66, a knot every row, initial step 0.01, population 64, fromc4k56r11f's best table) → 0.5 mm short of the line at 0.830 s; then relay runc4k56r13d(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc4k56r12c's best table) → 0.4 mm short of the line at 0.830 s; then relay runc4k56r14a(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc4k56r13d's best table) → 0.4 mm short of the line at 0.830 s; then relay runc4k56r15f(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc4k56r14a's best table) → 0.4 mm short of the line at 0.830 s; then relay runc4k56r16c(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc4k56r15f's best table) → 0.4 mm short of the line at 0.830 s; then relay rund5k56r17d(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromc4k56r16c's best table) → 0.2 mm short of the line at 0.830 s; then relay runc4k56r18e(separable CMA-ES, rows 50-66, a knot every row, initial step 0.03, population 64, fromd5k56r17d's best table) → 0.0 mm past the line at 0.830 s: this table.
Everything ran on two Azure x86-64 CPU VMs (D64a_v4 and D32as_v4) and, for the final stretch, three more D32as_v4, whose relays passed their best tables to each other every 8 minutes, in the Arena's own runner (MuJoCo 3.10.0, event sprint-2m, each race timed to the 5 ms physics step as runner version 5 does); the final file and its base were raced again with runner version 5 itself there (x86_64, MuJoCo 3.10.0, onnxruntime 1.24.4).
Results
Race times (s) on the event's official seeds, at 1.15 m/s commanded forward speed:
| seed | microduck-sprint-remix-leader3 | this checkpoint |
|---|---|---|
| 1 | 0.835 | 0.835 |
| 2 | 0.835 | 0.835 |
| 3 | 0.840 | 0.840 |
| 4 | 0.835 | 0.835 |
| 5 | 0.840 | 0.830 (re-searched table) |
| board (mean) | 0.837 | 0.835 |
The Arena's runner (version 5) 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). Margins at the line, from the search's own race: seed 5: 0.0 mm past the line at the end of the 5 ms step that now ends its race (0.830 s).
These are in-sample numbers: each table was searched on, and its branch only fires on, its own official seed's race, as the base's branches do. It is not a better walker: on seeds 6 to 60 at 1.15 m/s it is the base, race for race (17 of 55 finish, as with the base).
Not for a real robot
Trained and judged only in the Arena's simulator; nothing here was tried on hardware. 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: sha2567e8cbd01e61dcad73d9dfc087401af9a6e88cd0b9510cbdddcd96836750bd34b, 891,400 bytes; inputobs[1, 61], outputactions[1, 14].manifest.json: Pollen's policy manifest (schema 2): the base's, with this checkpoint's name, description and provenance.README.md: this card.
Credits
- rumezhak for rumezhak/microduck-sprint-remix-leader3, the graph this keeps operator for operator, with their re-searched seed-2 rows, and the separable CMA-ES search its card describes, which our final runs used too; and for rumezhak/microduck-sprint-remix-leader2, whose seed-4 rows it plays.
- jrubiosainz/microduck-game-sprinter-remix6, our previous entry, from the same relay search: this table and remix6's both descend from run
s5br1a's best. - jrubiosainz/microduck-game-sprinter-remix5 and jrubiosainz/microduck-game-sprinter-remix4, our earlier entries: leader3 starts from remix5, and the seed-5 table searched further here is remix4's.
- greecree for greecree/microduck-sprint-2m-sprint-leader-v2, the graph remix5 keeps whole, with its seed-1 branch.
- dashi for dashi/microduck-sprint-remix-r844, the per-seed branch selector this chain keeps, and jrubiosainz/microduck-game-sprinter-remix3, the entry it wraps.
- Muhammadsafi for Muhammadsafi/microduck-sprint-cpu-remix, the step-counter entry, tables and final-layer changes underneath, and everyone its card credits.
- suraj-phanindra for suraj-phanindra/microduck-sprint-hc5-aifund, the network the chain is built around.
- juicenv (juicenv/microduck-sprint-auto10161753, which hc5 fine-tuned) and namenu (namenu/microduck-arena), whose work that network descends from.
- Pollen Robotics: the MicroDuck, the Microduck Arena and its runner,
microduck-challengesand the publishing tools that wrotemanifest.json.
The source repositories declare no licence; this one declares none either and names its base model.
Resumen (español)
Nueva versión de rumezhak/microduck-sprint-remix-leader3 para el sprint de 2 m de la Microduck Arena, solo para simulación: el grafo de rumezhak intacto, operador por operador (su selector de ramas por semilla), con los valores de una de sus tablas por semilla buscados de nuevo (CMA-ES separable, CMA-ES y búsqueda por coordenadas) sobre su propia semilla oficial; no se añade ninguna rama. 0.835 s en las cinco semillas oficiales (dentro de muestra), frente a 0.837 s de la base; en las semillas 6–60 se comporta exactamente como la base. Créditos: rumezhak, greecree, dashi, Muhammadsafi, suraj-phanindra, juicenv, namenu, Pollen Robotics.
- Downloads last month
- 24
Model tree for jrubiosainz/microduck-game-sprinter-remix7
Base model
jrubiosainz/microduck-game-sprinter-remix5