Microduck
O robô pato que anda de $399 da Pollen Robotics: software de código aberto, hardware fechado
Licença
- software (pollen-robotics/microduck) and training code (microduck_rl): Apache 2.0
- 3D model files (microduck_rl STL meshes, also used by community replicas; credit Pollen Robotics): CC BY-NC-SA 4.0
Licenciamento dividido. O software do Microduck e seu código de treinamento são Apache-2.0. Desde 9 de outubro de 2026, a Pollen Robotics licencia os arquivos do modelo 3D do robô (as malhas STL do microduck_rl) sob a CC BY-NC-SA 4.0: uso não comercial, com crédito à Pollen Robotics, e alterações compartilhadas mantêm a mesma licença. Isso também vale para réplicas impressas a partir dessas malhas. A Pollen não publica CAD, placas de circuito nem lista de materiais do próprio robô. Verificado em 5 de novembro de 2026.
Visão geral
O Microduck é um robô pato que anda, com 25 cm e 800 g, feito pela Pollen Robotics, parte da Hugging Face, vendido montado por US$ 399 antes de impostos e frete e em pré-venda na loja da Pollen. Seu software é de código aberto e seu hardware não: este repositório é a pilha embarcada do robô, um workspace Rust, Apache-2.0, que roda uma malha de controle de 50 Hz acionando quinze servos a partir de políticas de redes neurais exportadas para ONNX. O repositório contém tudo o que um robô precisa para funcionar: robotd para a malha de controle e o barramento de motores, updaterd para releases assinados com rollback condicionado à saúde do sistema, configd para Wi-Fi e identidade, btd para o caminho Bluetooth que um celular usa, padd para o gamepad, mediad para streaming de câmera via WebRTC e tofd para o sensor de profundidade, todos falando um único contrato JSON-RPC sobre sockets Unix, de modo que o aplicativo, o console, o gamepad e um script do usuário enviam as mesmas chamadas. As políticas de locomoção e recuperação são treinadas separadamente no microduck_rl com MuJoCo e PPO. O robô em si é vendido pela Pollen Robotics, uma empresa da Hugging Face.
A pilha é deliberadamente simples: Rust, sem framework, um único workspace Cargo e um conjunto de pequenos daemons, cada um responsável por uma coisa só. O robotd é dono do laço de controle e do barramento de motores; o updaterd instala versões assinadas e as reverte quando um robô sobe sem saúde; o configd cuida do wi-fi e da identidade; o btd é o caminho Bluetooth que um celular usa; o padd lê o controle; o mediad transmite a câmera por WebRTC; o tofd serve o sensor de profundidade. Tudo roda em um Rockchip RK3566, e cada cliente conversa com o mesmo contrato JSON-RPC em sockets Unix, em vez de um canal privado. Comportamentos chegam como políticas, não como código: andar, levantar-se após uma queda, rolar sobre rodas e pegar um objeto do chão com o bico são redes distintas, treinadas no microduck_rl sob MuJoCo com PPO e randomização de domínio, exportadas para ONNX e carregadas pelo robotd. As notas de projeto em docs/design são incomumente francas, e docs/project registra o que deu errado e o que resolveria.
Por que importa
Robôs com pernas de baixo custo costumam ser vendidos com firmware fechado, então a parte interessante — como uma política de fato chega a quinze servos a 50 Hz num SoC barato, e como se entrega uma atualização sem inutilizar o robô — permanece escondida. O Microduck publica toda essa camada sob Apache-2.0, incluindo a maquinaria de atualização, o contrato de IPC e o pipeline de simulação para o real ao lado, no microduck_rl. Para quem constrói um bípede pequeno movido por aprendizado por reforço, é uma referência completa e funcional, e não uma demonstração; a 399 dólares, o hardware para exercitá-la cabe no orçamento de uma sala de aula.
Problema que resolve
Robôs com pernas baratos saem de fábrica com firmware fechado, de modo que a camada entre uma política treinada e os servos — controle em tempo real, IPC, mídia e atualizações remotas seguras — é justamente a que ninguém fora do fabricante pode ler. O Microduck abre exatamente essa camada para um robô que as pessoas podem comprar.
Pontos principais
- Pilha embarcada completa para um bípede de 25 cm e 800 g: laço de controle a 50 Hz acionando quinze servos a partir de políticas ONNX num Rockchip RK3566
- Workspace em Rust feito de daemons de propósito único — robotd, updaterd, configd, btd, padd, mediad, tofd — sobre um único contrato JSON-RPC em sockets Unix
- Atualizações assinadas e condicionadas à saúde, que se revertem sozinhas quando um robô sobe com problema
- Comportamentos são políticas treinadas, não scripts: andar, levantar-se sozinho, rolar sobre rodas e pegar objetos com o bico
- As políticas vêm do microduck_rl — MuJoCo, PPO e randomização de domínio, exportadas para ONNX
- Apache-2.0, com decisões de projeto e problemas em aberto registrados em docs/design e docs/project
Para quem é
- Engenheiros que constroem robôs com pernas guiados por aprendizado por reforço em Linux embarcado
- Pesquisadores de simulação para o real em busca de um alvo físico barato para políticas treinadas no MuJoCo
- Educadores que ensinam arquitetura de software robótico com hardware acessível aos alunos
- Donos de Microduck que queiram escrever seus próprios comportamentos sobre a API JSON-RPC
Limitações
- O software é aberto, mas o hardware não: a Pollen não publica CAD nem lista de materiais, e as malhas STL no microduck_rl estão sob uma licença não comercial, então o robô foi feito para ser comprado, não construído
- A pilha é voltada a uma placa e a um robô, Rockchip RK3566 e o barramento de servos do Microduck, em vez de ser um framework geral
- O repositório é apenas o cérebro do robô; o pipeline de treinamento e a receita sim2real ficam separados no microduck_rl
- Projeto jovem: o repositório foi criado em julho de 2026, e os daemons, o contrato de IPC e o caminho de atualização ainda estão mudando
- Os plugins GStreamer para o codificador de hardware da Rockchip vêm de um repositório aarch64 pré-compilado separado, em vez de serem compilados na própria árvore
- Desde a versão 0.18.3 do daemon, o robô envia dados de uso anônimos para o PostHog EU, ativado por padrão: início do daemon, resultados de atualização, um heartbeat diário e quais políticas públicas estão carregadas, sob um ID aleatório do robô. Isso pode ser desativado; a página de telemetria do projeto original explica como.