diff --git a/README.md b/README.md index e9b7f25..fee0d46 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,28 @@ -

- microduck -

+# Duckmind -

Microduck

+Duckmind is an experimental project for learning how natural language becomes robot motion, +built from [Microduck](https://github.com/pollen-robotics/microduck). -Duckmind adds [native Action Chunk execution](docs/design/action-chunks.md) to this Microduck runtime, currently available on fake and MuJoCo bodies. +The goal is to walk through the complete learning loop on one Microduck body: +collect demonstrations, train a policy, execute its predictions in MuJoCo, and evaluate the result. -

- A tiny biped robot that moves using reinforcement learning policies. -

+## The idea -

- Get yours here · - Cheat sheet · - Training the policies · - How it works · - Contributing -

+1. Use Microduck's existing command-driven motion policies to generate demonstrations. +2. Pair each command with multiple equivalent text instructions and the corresponding state/action trajectories. +3. Train a policy to predict **action chunks**—sequences of joint targets—from text and body observations. -

- CI -

+```text +Text + body state/history → learned policy → action chunk → robotd → robot motion +``` ---- +Start with a language-conditioned motion policy, then add visual observations to explore +vision-language-action (VLA) models. The model learns the motion; `robotd` owns timed execution +and feedback. Training and model integration are ongoing work. -**This repo is the duck's brain.** About 25 cm and 800 g of robot, run by a handful of daemons on a -Rockchip RK3566: a 50 Hz control loop driving fifteen servos from neural policies, the radios and -the camera, and the update machinery that gets new software onto a robot without bricking it. +## Origin -Everything you need to run a Microduck is here. **If you want one, -[get yours here](https://pollen-robotics.com/microduck).** - -The policies it runs are trained next door, in -**[microduck_rl](https://github.com/pollen-robotics/microduck_rl)** — MuJoCo and PPO, the sim2real -recipe, and the export to ONNX that this repo loads. - -## It does things - - - - - - - - - - - - - - - - - - -
- - - - -
It walks. Pick up a gamepad and drive.It rolls. Put wheels on, hold D-pad up, and it loads the other brain.
- - - -
It picks things up. Beak to the floor, one button.It gets back up. Knock it over and it stands itself up.
- -It also sits, kicks a ball, rolls forward on command, and quacks in a voice that is its own. - -## Where to find things - -### You have a duck - -| | | -|---|---| -| [Cheat sheet](docs/robot/cheatsheet.md) | Every `robotctl` command: drive, configure, voice, chorale, theremin, wifi, updates, logs. Start here. | -| [Gamepad](docs/robot/cheatsheet.md#gamepad-configd) | The full button mapping, and pairing a pad — [once per pad](docs/robot/pair-a-gamepad.md), plus what to do when it will not bond. | -| [`duckctl`](docs/robot/duckctl.md) | The robot from a laptop over Bluetooth, with no network and no ssh. | -| [Updates](docs/robot/cheatsheet.md#updates-updaterd) | Install, roll back, pin. Every update is verified, health-gated and reversible. | - -### You are building on it - -| | | -|---|---| -| [microduck_rl](https://github.com/pollen-robotics/microduck_rl) | Where the policies come from: MuJoCo, PPO, domain randomisation, and the ONNX export this repo loads. | -| [How it works](docs/design/architecture.md) | The whole system on one page — the daemons, the bus, how an update reaches a robot — then a page per part. | -| [Set up a dev board](docs/robot/install-dev.md) | From a blank board to a robot that takes branch builds. | -| [Dev cheat sheet](docs/robot/cheatsheet-dev.md) | Branch builds, release candidates, driving from a laptop, and the restart traps after an update. | -| [Push your branch](docs/robot/dev-push.md) | Build on your machine, install over ssh, about a minute. | -| [The simulated duck](docs/robot/simulation.md) | No robot on the desk? `scripts/duck-sim` runs the real daemons against a body in MuJoCo — one duck in a window, or four as machines you log into. | -| [CONTRIBUTING.md](CONTRIBUTING.md) | Building, testing, layout, conventions, releasing. | -| [Docs index](docs/README.md) | Everything, including the design pages and the open problems. | - -## Under the hood - -Rust, no framework, one workspace. `robotd` owns the control loop and the motor bus; `updaterd` -installs signed releases and rolls them back when a robot comes up unhealthy; `configd` owns wifi -and identity; `btd` is the Bluetooth path a phone uses; `padd` reads the gamepad; `mediad` streams -the camera over WebRTC; `tofd` serves the depth sensor. They talk over one JSON-RPC contract on -Unix sockets, and every client — the app, the console, the gamepad, your script — sends exactly the -same calls. - -The interesting decisions are written down: [`docs/design/`](docs/design/) is why things are the -way they are, and [`docs/project/`](docs/project/) is what has gone wrong and what would close it. - -## A note on ducks - -No duck was harmed in the making of this robot. Several were consulted. +Microduck provides the robot runtime and hardware/simulation interfaces. +[microduck_rl](https://github.com/pollen-robotics/microduck_rl) provides the upstream motion-policy +training stack. See [CONTRIBUTING.md](CONTRIBUTING.md) for building the runtime and +[the simulation guide](docs/robot/simulation.md) for running a simulated body.