
microduck 是 25cm / 800g 级别的双足机器人,外壳是鸭子造型。动作策略由强化学习在仿真中训练,导出 ONNX 后在机载端侧推理,核心代码全部开源。
技术选型
- 主控:瑞芯微 RK3566
- 执行器:15 路舵机
- 控制频率:50Hz
- 策略部署格式:ONNX
15 个舵机对应全身多个自由度,双足行走涉及髋、膝、踝等多关节协调,手工调参或基于简化的动力学建模都不太现实。项目选择直接让神经网络从仿真中学习步态,训练完成后再部署到真机,走的是数据驱动控制路线。50Hz 控制频率对单次推理延迟的要求不算苛刻,RK3566 跑 ONNX 推理余量足够。
训练侧与推理侧分离:本仓库只做加载和执行,训练相关的仿真、PPO 训练流程、sim2real 迁移代码在另一个仓库 microduck_rl 中。
核心代码结构
软件系统完全用 Rust 编写,没有套用大型机器人框架,单个 workspace 管理。运行时按职责拆成多个守护进程:
robotd:主控制循环与电机总线updaterd:安全更新与回滚configd:WiFi 配置、设备身份btd:手机蓝牙连接padd:手柄输入mediad:摄像头视频流tofd:深度传感器数据
进程之间用 Unix socket + JSON-RPC 通信。App、控制台、手柄、用户自定义脚本访问的是同一套接口,二次开发不需要针对不同入口做适配。
更新机制带签名,安装后自动执行健康检查,失败则回滚,降低刷成砖的风险。
强化学习控制思路
训练环节放在 microduck_rl 仓库:MuJoCo 仿真环境,PPO 算法,配合域随机化做 sim2real 迁移。训练产物导出为 ONNX,由本仓库加载执行。
开发侧还提供了一组文档:cheatsheet-dev.md 和 install-dev.md 覆盖 blank 板刷机、分支构建(约一分钟)与 SSH 灌入流程。架构说明在 docs/design/architecture.md,设计决策与踩坑记录放在 docs/design/ 和 docs/project/ 目录下,比较适合顺着历史决策理解系统。
开源地址
主仓库:
https://github.com/pollen-robotics/microduck
训练仓库:
microduck_rl
适合与不适合的场景
基于仓库现状与原文信息,适用场景包括:
- 学习强化学习 / sim2real 流程的实际落地:仿真、训练、导出、部署链路完整,不是只停留在算法演示。
- 学习小型机器人的软件架构:Rust 多进程、总线通信、守护进程分工,结构清晰,代码量可控。
- 面向小型双足平台的二次开发:手柄遥控、轮式切换、跌倒恢复、预设动作等功能都已实现,可以直接在此基础上做功能扩展。
不适合的场景:
- 高动态运动或强负载交互类任务。从参数看,50Hz 控制频率和 800g 自重决定了它更适合轻量教学验证,不是高速重载平台。
- 需要复杂视觉感知的产品化应用。虽然带摄像头流与深度传感器,但完整感知栈需要自己集成。
关于具体场景的官方适配说明,原文未提供;以上判断是基于仓库规格与功能特性做出的保守估计。