Microduck 是一只 25cm 高、737g 的双足机器鸭,15 个 Dynamixel XL330 舵机(14 个受策略控制),用强化学习走路。
它的软件开源(Apache-2.0),硬件不开源 —— 没有 BOM、没有可编辑 CAD、没有 PCB 原理图、
没有任何装配文档。讨论社区请见:OOU
但官方在 microduck_rl 里发布了完整的 MJCF 仿真模型 + 47 个 STL 网格。
MJCF 里包含了完整的运动学树:每个零件挂在谁身上、相对位置精确到 0.1mm、
绕哪根轴转、行程多少、质量和惯量张量。
这些信息足以还原出装配关系。 本仓库就是把它还原出来的结果。
装配爆炸图
assembly-drawings/ 下共 7 张:
| 文件 | 内容 |
|---|---|
01_正面 02_侧面 03_背面 04_四分之三 | 装配完成态,原色 |
05_爆炸图_侧面 | 15 个部件沿运动链炸开,标注名称与质量 |
06_爆炸图_四分之三 | 立体视角,可看清左右腿镜像关系 |
07_分色对照_装配态 | 与爆炸图同配色的装配完成态,对照用 |
装配结构
躯干主体 199g
├─ 左髋 yaw→roll 23g → 左髋 roll 6g → 左大腿 48g → 左小腿 22g → 左踝+脚 30g
├─ 颈根 37g → 颈俯仰件 6g → 头 yaw/roll 机构 49g → 头部总成+喙 189g
└─ 右髋 yaw→roll 23g → 右髋 roll 6g → 右大腿 48g → 右小腿 22g → 右踝+脚 30g
整机 737.2g 外形 144 × 141 × 264 mm
躯干和头几乎一样重(199g vs 189g)——头部占整机四分之一,重心很高,
这解释了为什么它的行走策略难训。
关节参数
每条腿 5 个自由度,头颈 4 个 —— 14 个受控。
整机实际装 15 个 Dynamixel XL330:第 15 个驱动喙/下颚,走被动连杆,不进动作空间。
| 关节 | 行程 |
|---|---|
hip_yaw | -25° ~ +30° |
hip_roll | ±22° |
hip_pitch / knee / ankle / head_pitch | ±90° |
neck_pitch | -90° ~ +60° |
head_yaw | ±170° |
head_roll | ±25° |
CAD 装配体
cad/ 下是已应用世界变换的 STL —— 直接导入 CAD 就是装好的样子,
不用自己摆位置(上游那 47 个 STL 都是零件自身坐标系的,直接导入会全部堆在原点)。
00_Microduck_整机装配体.stl—— 整机单文件,796792 三角面01~15—— 按刚体分组的 15 个部件,文件名即部件名零件对照表.json—— 每个部件由哪些上游源网格组成
单位 毫米。可直接用 FreeCAD / Fusion 360 / SolidWorks / Blender / 各类切片软件打开。
可行性:能造出来吗
能造出机械,造不出整机。 现状:
| 项目 | 状态 |
|---|---|
| 零件几何 | ✅ 47 个 STL |
| 装配关系 | ✅ 精确到 0.1mm,已出图 |
| 关节轴线 / 行程 | ✅ 14 个全有 |
| 质量 / 惯量 | ✅ 15 个刚体全有 |
| 舵机型号 | ✅ Dynamixel XL330 ×15 → docs/执行器选型.md |
| 轴承 | ✅ 22×16×4 |
| 电池 | ✅ 索尼 NP-F970 |
| 自制 PCB | ⚠️ 无原理图,但功能已从源码完整还原 → docs/硬件方案逆向.md |
| 主控 | ✅ Radxa Zero 3W,市售模块(此前误判为定制载板) |
| 紧固件清单 | ✅ 已从 STL 孔位反推 → docs/紧固件反推.md |
| 电池 / 传感器 | ✅ NP-F550/F970 2S、IMX219、VL53L8CX、LSM6DSV16X |
| 走线方案 | ❌ 无 |
| 控制软件 | ⚠️ Rust 运行时绑定 RK3566,需自行移植 |
| 官方策略 ONNX | ⚠️ 只对原本体有效,换电控后需重训 |
⚠️ 仿真 STL ≠ 可打印工程件。 仿真只关心外形与惯量,不保证配合公差、
螺纹孔、热熔螺母座和走线空间。直接打印大概率装不起来,需要自行补充工程细节。