Instructions to use pollen-robotics/microduck-roller-sprint-2m-reference with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Microduck
How to use pollen-robotics/microduck-roller-sprint-2m-reference with Microduck:
sudo robotctl policy load walk pollen-robotics/microduck-roller-sprint-2m-reference
- Notebooks
- Google Colab
- Kaggle
publish roller-sprint-2m-reference: perpetual, Mjlab-RollerSprint2m-MicroDuck
Browse files- README.md +46 -0
- checkpoint.pt +3 -0
- manifest.json +61 -0
- policy.onnx +3 -0
README.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
tags:
|
| 3 |
+
- microduck
|
| 4 |
+
- robotics
|
| 5 |
+
- reinforcement-learning
|
| 6 |
+
- onnx
|
| 7 |
+
library_name: onnx
|
| 8 |
+
---
|
| 9 |
+
|
| 10 |
+
# roller-sprint-2m-reference
|
| 11 |
+
|
| 12 |
+
Pollen's reference for the Microduck Arena's 2 m Roller Sprint: the roller_sprint_2m challenge of microduck-challenges trained unchanged with its recipe (4096 envs, 3000 iterations, seed 1).
|
| 13 |
+
|
| 14 |
+
A **perpetual** policy for the [microduck](https://github.com/pollen-robotics/microduck) (61-D observation, 14 actions, 50 Hz, on rollers). Runs until told otherwise — a gait for the `walk` slot.
|
| 15 |
+
|
| 16 |
+
## Run it on a robot
|
| 17 |
+
|
| 18 |
+
```bash
|
| 19 |
+
sudo robotctl policy load walk pollen-robotics/microduck-roller-sprint-2m-reference
|
| 20 |
+
```
|
| 21 |
+
|
| 22 |
+
The observation normalizer is baked into `policy.onnx`; feed raw observations.
|
| 23 |
+
`manifest.json` follows schema 2 of the microduck policy manifest (`docs/policy-manifest.md` in the daemon repo).
|
| 24 |
+
|
| 25 |
+
## Training
|
| 26 |
+
|
| 27 |
+
- **task_id**: `Mjlab-RollerSprint2m-MicroDuck`
|
| 28 |
+
- **repo**: `https://github.com/pollen-robotics/microduck-challenges.git`
|
| 29 |
+
- **branch**: `main`
|
| 30 |
+
- **commit**: `611b6453c`
|
| 31 |
+
- **checkpoint**: `2999`
|
| 32 |
+
- **seed**: `1`
|
| 33 |
+
- **base**: `mjlab-microduck 0.1.0 @ 981a279c6`
|
| 34 |
+
- **started**: `2026-09-26T04:21:50Z`
|
| 35 |
+
|
| 36 |
+
## Reproduce
|
| 37 |
+
|
| 38 |
+
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.
|
| 39 |
+
|
| 40 |
+
```bash
|
| 41 |
+
git clone https://github.com/pollen-robotics/microduck-challenges.git
|
| 42 |
+
cd microduck-challenges
|
| 43 |
+
git checkout 611b6453c
|
| 44 |
+
uv sync
|
| 45 |
+
uv run train Mjlab-RollerSprint2m-MicroDuck --env.scene.num-envs 4096 --agent.max-iterations 3000 --agent.seed 1 --agent.logger tensorboard --agent.run-name reference
|
| 46 |
+
```
|
checkpoint.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1c8a89358f1f65a863253273e59d13251342cbe4eaf7530573f9a1ee90f3866a
|
| 3 |
+
size 4855733
|
manifest.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema_version": 2,
|
| 3 |
+
"model_api": 1,
|
| 4 |
+
"obs_len": 61,
|
| 5 |
+
"action_len": 14,
|
| 6 |
+
"robot": {
|
| 7 |
+
"model": "microduck",
|
| 8 |
+
"hw_rev": 1,
|
| 9 |
+
"servos": "xl330",
|
| 10 |
+
"control_hz": 50,
|
| 11 |
+
"accessories": [
|
| 12 |
+
"rollers"
|
| 13 |
+
]
|
| 14 |
+
},
|
| 15 |
+
"name": "roller-sprint-2m-reference",
|
| 16 |
+
"kind": "perpetual",
|
| 17 |
+
"entry_pose": "standing",
|
| 18 |
+
"description": "Pollen's reference for the Microduck Arena's 2 m Roller Sprint: the roller_sprint_2m challenge of microduck-challenges trained unchanged with its recipe (4096 envs, 3000 iterations, seed 1).",
|
| 19 |
+
"command": {
|
| 20 |
+
"encoding": "constant",
|
| 21 |
+
"idle": [
|
| 22 |
+
0.0,
|
| 23 |
+
0.0,
|
| 24 |
+
0.0
|
| 25 |
+
],
|
| 26 |
+
"twist": "[push: 0 coast, >0 push m/s, <0 brake; lateral 0; heading error rad]; the Arena commands [vx, 0, 0]",
|
| 27 |
+
"head": "unused (zeros)",
|
| 28 |
+
"body": "unused (zeros)"
|
| 29 |
+
},
|
| 30 |
+
"duration_s": null,
|
| 31 |
+
"slot": "walk",
|
| 32 |
+
"training": {
|
| 33 |
+
"repo": "https://github.com/pollen-robotics/microduck-challenges.git",
|
| 34 |
+
"commit": "611b6453c",
|
| 35 |
+
"branch": "main",
|
| 36 |
+
"dirty": false,
|
| 37 |
+
"command": [
|
| 38 |
+
"train",
|
| 39 |
+
"Mjlab-RollerSprint2m-MicroDuck",
|
| 40 |
+
"--env.scene.num-envs",
|
| 41 |
+
"4096",
|
| 42 |
+
"--agent.max-iterations",
|
| 43 |
+
"3000",
|
| 44 |
+
"--agent.seed",
|
| 45 |
+
"1",
|
| 46 |
+
"--agent.logger",
|
| 47 |
+
"tensorboard",
|
| 48 |
+
"--agent.run-name",
|
| 49 |
+
"reference"
|
| 50 |
+
],
|
| 51 |
+
"seed": 1,
|
| 52 |
+
"base": "mjlab-microduck 0.1.0 @ 981a279c6",
|
| 53 |
+
"started": "2026-09-26T04:21:50Z",
|
| 54 |
+
"task_id": "Mjlab-RollerSprint2m-MicroDuck",
|
| 55 |
+
"checkpoint": 2999,
|
| 56 |
+
"source_file": "model_2999.pt"
|
| 57 |
+
},
|
| 58 |
+
"arena": {
|
| 59 |
+
"event": "roller-sprint-2m"
|
| 60 |
+
}
|
| 61 |
+
}
|
policy.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:01edf63a529a8396d46dac62bb427fda1ce67685611e72ddf790bf46f610c82a
|
| 3 |
+
size 793753
|