An app for people who own — or are waiting for — a Microduck. It reads the trained networks that drive the robot, lets you write motions for it, and measures what those motions actually do in physics.
Load a trained .onnx, see what is inside it, and check
whether it is one of Pollen's. Blend two into a third and find out whether
the result still does anything.
Write a motion keyframe by keyframe, or describe it in words and let a language model draft it. Every angle it writes is checked against the robot's own joint travel before you see it.
A phone has no physics engine. Point the app at a machine that does and it will run a policy or a motion properly, and tell you how often it worked — not whether it looked good once.
A life-size duck on your floor in AR, seven synthesised duck calls, soccer, and a room-capture that writes real scene geometry.
This is the piece that turns a preview into a measurement. It is a small Node program that runs MuJoCo on a computer you already own — a Mac, a PC, a Raspberry Pi — and the app talks to it over your own network.
# Windows: right-click start.ps1 → Run with PowerShell
# macOS / Linux:
./start.sh
The first start installs MuJoCo and onnxruntime and takes a couple of minutes. Every start after that is seconds. It prints the address to type into the app.
The bundle carries scene.mjb, the physics world every
measurement is made against, and its digest. A number measured against a
different world is not comparable to one measured here, which is why the world
ships with the code rather than just its filename.
Every format the app writes is its own, and it reads back everything it writes. That was not always true and fixing it is why these are documented.
| Extension | What it holds |
|---|---|
.duckmove |
A motion: keyframe times and fifteen joint angles each. Poses and times interpolated — no physics ran. |
.duckplan |
A fetch plan: the measured object and what was asked for. The steps are derived when it is read, so a plan cannot go stale and disagree with the app that opens it. |
.duckintent |
A recording of a policy running in physics, with the world it was recorded in named inside it. |
.onnx |
A trained policy. 61 inputs, 14 outputs, and the app will tell you exactly why it refuses one that is not. |
Two claims are easy to make about a robot app and neither is made here. A preview on a phone is what you asked for, not what the robot would do: the four authored stair motions in the app get up their flight 0 times in 16 when a physics engine is asked. And a success rate is not an answer on its own — the bench's criterion is "ends standing", which a duck standing perfectly still passes every time.