站内导读
中文 Microduck 是 Pollen Robotics 开源的约 25 厘米、800 克双足机器人本体软件,运行在 RK3566 上。它以 50 Hz 控制循环驱动十五个舵机,加载由 microduck_rl 用 MuJoCo 与 PPO 训练并导出为 ONNX 的策略,实现行走、翻滚、捡拾与跌倒后起身。Rust 编写的多个守护进程通过 Unix socket 上的 JSON-RPC 协作,更新经签名校验、健康检查并支持回滚。适合机器人开发者与强化学习研究者。
日本語 Microduck は Pollen Robotics が公開した約25cm・800gの二足歩行ロボットの本体ソフトウェアで、Rockchip RK3566 上で動作する。50Hz の制御ループで15個のサーボを駆動し、microduck_rl が MuJoCo と PPO で学習し ONNX に書き出した方策を読み込んで歩行や転倒からの起き上がりを実現する。Rust 製の複数デーモンが Unix ソケット上の JSON-RPC で連携し、更新は署名検証とヘルスチェックを経てロールバックできる。ロボット開発者と強化学習の研究者向け。
한국어 Microduck은 Pollen Robotics가 공개한 약 25cm, 800g 이족보행 로봇의 본체 소프트웨어로 Rockchip RK3566에서 동작한다. 50Hz 제어 루프로 서보 15개를 구동하며, microduck_rl이 MuJoCo와 PPO로 학습해 ONNX로 내보낸 정책을 읽어 보행과 넘어졌다 일어나기를 수행한다. Rust로 작성된 여러 데몬이 Unix 소켓 위 JSON-RPC로 통신하고, 업데이트는 서명 검증과 상태 확인을 거쳐 롤백할 수 있다. 로봇 개발자와 강화학습 연구자에게 적합하다.
English Microduck is the onboard software for Pollen Robotics' roughly 25 cm, 800 g biped robot, running on a Rockchip RK3566. A 50 Hz loop drives fifteen servos from neural policies trained in microduck_rl with MuJoCo and PPO, exported to ONNX, covering walking, rolling, picking up and standing after a fall. Rust daemons share one JSON-RPC contract over Unix sockets, and updates are signed, health-gated and reversible. Aimed at robot developers and RL researchers.
README · 详细文档
来源 · 查看原文
<p align="center"> <img src="https://github.com/user-attachments/assets/c2f7c245-8217-46a1-8d1e-e0ba967cd969" alt="microduck" width="820"> </p>
<h1 align="center">Microduck</h1>
<p align="center"> <em>A tiny biped robot that moves using reinforcement learning policies.</em> </p>
<p align="center"> <a href="https://pollen-robotics.com/microduck"><b>Get yours here</b></a> · <a href="docs/robot/cheatsheet.md">Cheat sheet</a> · <a href="https://github.com/pollen-robotics/microduck_rl">Training the policies</a> · <a href="docs/design/architecture.md">How it works</a> · <a href="CONTRIBUTING.md">Contributing</a> </p>
<p align="center"> <a href="https://github.com/pollen-robotics/microduck/actions/workflows/ci.yml"><img src="https://github.com/pollen-robotics/microduck/actions/workflows/ci.yml/badge.svg" alt="CI"></a> </p>
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.
Everything you need to run a Microduck is here. If you want one, get yours here.
The policies it runs are trained next door, in microduck_rl — MuJoCo and PPO, the sim2real recipe, and the export to ONNX that this repo loads.
It does things
<table> <tr> <td width="50%"> <video src="https://github.com/user-attachments/assets/356a6011-8e0d-4b28-bda9-da78646583a3" controls width="100%"></video> </td> <td width="50%"> <video src="https://github.com/user-attachments/assets/abfbf250-1b1c-42cb-8430-00267e2b148a" controls width="100%"></video>
</td> </tr> <tr> <td><b>It walks.</b> Pick up a gamepad and drive.</td> <td><b>It rolls.</b> Put wheels on, ask for roller mode, and it loads the other brain.</td> </tr> <tr> <td width="50%"> <video src="https://github.com/user-attachments/assets/7e70c1da-e120-428f-ae0b-f4de62f25984" controls width="100%"></video> </td> <td width="50%"> <video src="https://github.com/user-attachments/assets/3eef63a5-6f84-47cf-90de-e717e6d7f8f0" controls width="100%"></video> </td> </tr> <tr> <td><b>It picks things up.</b> Beak to the floor, one button.</td> <td><b>It gets back up.</b> Knock it over and it stands itself up.</td> </tr> </table>
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 | Every robotctl command: drive, configure, voice, chorale, theremin, wifi, updates, logs. Start here. | | Gamepad | The full button mapping, and pairing a pad — once per pad, plus what to do when it will not bond. | | duckctl | The robot from a laptop over Bluetooth, with no network and no ssh. | | Updates | Install, roll back, pin. Every update is verified, health-gated and reversible. |
You are building on it
| | | |---|---| | microduck_rl | Where the policies come from: MuJoCo, PPO, domain randomisation, and the ONNX export this repo loads. | | How it works | 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 | From a blank board to a robot that takes branch builds. | | Dev cheat sheet | Branch builds, release candidates, driving from a laptop, and the restart traps after an update. | | Push your branch | Build on your machine, install over ssh, about a minute. | | The simulated duck | 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 | Building, testing, layout, conventions, releasing. | | Docs index | 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/ is why things are the way they are, and 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.