Instructions to use Nbz-Bread/microduck-walk with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Microduck
How to use Nbz-Bread/microduck-walk with Microduck:
sudo robotctl policy load walk Nbz-Bread/microduck-walk
- Notebooks
- Google Colab
- Kaggle
walk
Velocity-commanded walking gait for the microduck (twist + head/body pose command), trained 50k iterations with PPO in mjlab.
A perpetual policy for the microduck (61-D observation, 14 actions, 50 Hz). Runs until told otherwise โ a gait for the walk slot.
Run it on a robot
sudo robotctl policy load walk Nbz-Bread/microduck-walk
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-Velocity-Flat-MicroDuck - repo:
pollen-robotics/microduck_rl - branch:
develop - commit:
b02fdea49 - checkpoint:
49999
Demo
10 s rollout of the final checkpoint in simulation, random velocity commands (replay.mp4).
Performance
Numbers are from the training log: 4096 parallel envs, domain randomization on, 50,000 iterations. They are simulation numbers, not hardware benchmarks. Each column is the average over a 500-iteration window.
| Metric | iter 1.0-1.5k | iter 10.0-10.5k | iter 25.0-25.5k | final 50.0k |
|---|---|---|---|---|
| Mean reward | 117.4 | 123.2 | 127.9 | 135.9 |
| Mean episode length (steps, cap 1000) | 955 | 971 | 977 | 989 |
Linear velocity error error_vel_xy |
0.452 | 0.418 | 0.423 | 0.417 |
Yaw rate error error_vel_yaw |
1.377 | 0.996 | 0.912 | 0.806 |
| Foot slip velocity | 0.028 | 0.020 | 0.020 | 0.019 |
Falls per step (fell_over) |
0.40 | 0.25 | 0.20 | 0.10 |
Timeouts per step (time_out) |
3.92 | 4.01 | 4.03 | 4.10 |
Fall share = fell_over / (fell_over + time_out), summed over each window; an episode that does not fall runs to the 1000-step limit. It dropped from 74% in the first 500 iterations to 9.8% by iteration 2.5k, 4.4% by 20k and 2.3% over the last 500 iterations.
Notes on the metrics:
error_vel_xyanderror_vel_yaware mjlab's velocity-command tracking errors (body-frame m/s and rad/s, accumulated per step and divided by the longest command duration), so read them as approximate mean errors. Linear tracking error was flat after the first ~1.5k iterations; yaw error kept improving.fell_overandtime_outare counts of episode endings per env step across the 4096 envs, which is why they are not fractions on their own.- Not measured here: a per-command breakdown (which velocities or turns cause the remaining falls) and real-robot performance.
- Downloads last month
- 7
