返回目录
开源项目其他开源工具类新手

GitHub - fanhao375/microduck-replica: Microduck 复刻 · 从官方 MJCF 与 Rust 源码反推出的装配图、CAD 装配体与完整电控方案 | Mechanical + electronics reconstruction of P

Microduck 复刻 简体中文 · English 对 Pollen Robotics Microduck 的第三方复刻研究。 从官方公开的 MJCF 仿真模型反推出 装配图、爆炸图和可直接导入 CAD 的装配体 。 Microduck 是一只 25cm 高、737g 的双足机器鸭,15 个 Dynamixel XL330 舵机(14 个受策略控制),用强化学习走路。 它的 软件开源(Apache-2.0) 。硬件是 部分开源 : - ✅ RPI Robot HAT 板完整开源 —— 见

0 次阅读2026/09/22 发布
GitHub - fanhao375/microduck-replica: Microduck 复刻 · 从官方 MJCF 与 Rust 源码反推出的装配图、CAD 装配体与完整电控方案 | Mechanical + electronics reconstruction of P 来源图片

社区作者 · zZz

它解决什么问题

Microduck 复刻

简体中文 · English

对 Pollen Robotics Microduck 的第三方复刻研究。 从官方公开的 MJCF 仿真模型反推出 装配图、爆炸图和可直接导入 CAD 的装配体 。

Microduck 是一只 25cm 高、737g 的双足机器鸭,15 个 Dynamixel XL330 舵机(14 个受策略控制),用强化学习走路。 它的 软件开源(Apache-2.0) 。硬件是 部分开源 :

KiCad 9 工程、Gerber、BOM、贴片坐标、STEP 一应俱全。这块板 不需要自己画 。

  • ✅ RPI Robot HAT 板完整开源 —— 见 pollen-robotics/elec_RPI_Robot_HAT (Apache-2.0):
  • ❌ imu_to_dxl 板未开源 —— 全网无公开工程,本仓库的逆向是目前唯一公开重建。
  • ❌ 机械件无可编辑 CAD 、无 BOM、无装配文档。

📌 勘误(2026-09-03) :本文档此前写作「硬件不开源、没有 PCB 原理图」, 这是错的 。 当时只检索了 pollen-robotics/microduck 主仓,未翻查该组织下以 elec_ 开头的硬件仓库。

但官方在 microduck_rl 里发布了完整的 MJCF 仿真模型 + 47 个 STL 网格 。 MJCF 里包含了完整的运动学树:每个零件挂在谁身上、相对位置精确到 0.1mm、 绕哪根轴转、行程多少、质量和惯量张量。

这些信息足以还原出装配关系。 本仓库就是把它还原出来的结果。

两条路线,选一条走

本仓库同时覆盖两种舵机。 机械、电路、软件三层都有差别 ,动手前先定:

原版 · Dynamixel XL330 飞特 · HD-1910

舵机 XL330-M288-T ×15 HD-1910-C001 ×15 —— 便宜一半、力矩 2.5 倍

电压 额定 6 V,实跑 6.6–8.2 V, 超压 37% 额定 4–8.4 V,在额定内;但满电 8.4 V 顶格

打印件 print/ 上游 STL 直接打 8 个配合件要改 (HD-1910 舵盘凸、XL330 凹)—— 拓竹一键打印 / 3mf

可编辑图纸 图纸仓 v1.1 图纸仓 v2.0 ,文件带 -FT 后缀

电路 官方 HAT + imu_to_dxl 同左;舵机连接器 2.0 mm(官方 2.5), imu_to_dxl 板上 J4/J5 是 2.0

软件 官方运行时直接跑 总线协议不同,要换协议模块 —— 适配架构分析 ;策略要按 HD-1910 重训 —— 训练前数据清单

状态 纸上分析 + 首批打印件 整机装出实物 (2026-09-13), 15 颗上总线、能站起来坐下 (2026-09-18),零位和站姿还在调

选型论证在 执行器选型 。本仓库主线走飞特;原版资料同样齐全,两条都能复刻。

交流群

有人在做同样的事,凑了个微信群一起讨论复刻进度、踩过的坑、元件采购。

一群到七群都已满 200 人 (微信满 200 后无法扫码进),下面是 八群 的码。

鸭子复刻群 8 · 二维码有效期到 2026-09-27 (微信群码 7 天自动失效)

过期了请开个 issue 说一声,我会换上新的

最近更新

IMU 姿态接入调试台 : tools/servo-web/ 可选接入 J-Link,在同一个 3D 鸭子上显示舵机关节角与 IMU 躯干姿态。配套固件在 hardware/imu_to_dxl/firmware/ , 0.2.0 已改成飞特协议 (ID 200、地址 56、15 字节),电脑上验收全过,等整机上真总线实测;没有 J-Link 也能用 ST-Link / DAPLink( --imu-swd )或直接走舵机总线( --imu-bus )看姿态。

🔌 电气 · 15 颗舵机整机上电,站起来了(2026-09-18)

装好的鸭子第一次接总线:URT-2 走 USB、7.4 V 进 V1, 15 颗 HD-1910 全部在线,0 超时 0 校验错 ,一次同步读 15 颗 4.8 ms。 用仓库里新写的 网页调试台 拖滑块、存姿态、跑序列,3D 模型跟着真机动,重心投影实时显示在不在脚底范围。 上面这段是它从缩着 自己站起来 再坐下。 飞特路线的软件第一步走通了 ,硬件方案没问题。

imu_to_dxl 板首板已到:3.3 V 正常,J4/J5 接口封装要改,固件还没写 —— 设计说明与评审记录 。

网页调试台 · 调试记录 (零位、方向、站姿的坑) · 踩坑记录 (URT-2 先插 USB 再上电) · 飞特适配架构

🔨 机械 · 飞特 HD-1910 版装出来了

15 颗飞特 HD-1910 全部配好 ID、装进机身。 这不是官方的 XL330 —— 便宜一半、力矩大 2.5 倍、 电压额定匹配,是 执行器选型 里论证的那条路,现在有实物了。

HD-1910 的舵盘是凸的,XL330 是凹的 ,跟舵盘配合的 8 个件同事全改了、重新打印。 可编辑的 SolidWorks 图纸也出了飞特版( -FT 后缀),改了什么、为什么, 在图纸仓里写清楚了。

构建日志 · 飞特版 SolidWorks 图纸 · 拓竹一键打印 · BOM 清单 · 带采购链接 · 调试记录 · 打印件清单

💻 软件 · 网页调试台,串口直连 15 颗舵机

浏览器拖滑块让舵机动,3D 鸭子跟着转,重心投影实时算在不在脚底范围。 存姿态、跑序列、一键校准零位、导出全部寄存器、时序测试,装机和台架验收都用它。

后端不依赖飞特 SDK, feetech.py 按 2026 版协议手册直接收发包,一百多行。 配套一个 协议级舵机模拟器 ,不接硬件就能把校准、改 ID、写寄存器跑一遍自检。

接官方运行时的 FeetechIo ( RobotIo 接缝,rustypot 协议 v1)已经写完、跟上了官方 0.14.1,等零位校准做完上板 —— 代码在 fork 的 feetech 分支 。

网页调试台 · 飞特适配架构 · FeetechIo 代码 · 飞特官方资料 (协议、内存表)

🧠 算法 · 待更新

走路策略还没开始。官方是 microduck_rl 在 MuJoCo 里训好导出 ONNX, 运行时按 50 Hz 推理。飞特版要先把 零位和关节方向 标定准,策略才有意义 —— 现在卡在这一步。

HD-1910 跟 XL330 的力矩、减速比、阻尼都不一样,官方预训练的策略大概率要重训。 重训要的参数(力矩常数、速度限、PID、摩擦)整理在 训练前数据清单 里, 能测的已经测了,不能测的标了待办。

HD-1910 训练前数据清单 · 执行器选型

🔨 实物进度

本仓库反复强调「仿真 STL 不是可打印工程件」。 构建日志就是在验证这句话。 结论会如实记录,无论正反。

→ 构建日志 (机械) · 调试记录 (电气与软件) · 踩坑记录

🦆 鸭友贡献

这个仓库不是一个人写的。合并进来的代码、实测验证过的结论,都记在这儿。

谁 贡献了什么

@yoyojacky Rust 版飞特舵机测试工具 ( PR #27 ,已合并)。自己实现的最小 STS/SCS 协议(帧打包、校验和、ping、读写寄存器、状态解析),命令行可以扫描总线(带进度条)、读状态、转到指定位置、单颗测试和批量测试,输出位置偏差、峰值电流、峰值负载、电压温度并判定 PASS/FAIL。台架验收一条命令出汇总表 → tools/sts3215Servo_testtool/

@Abo1ish IMU 小板固件 + 调试台姿态显示 ( PR #32 ,已合并)。给官方没开源的那块 imu_to_dxl 写了 STM32G031 固件底子,在实板上验证过,带主机端测试和一份写清楚边界的 VALIDATION.md → hardware/imu_to_dxl/firmware/ ;再用 J-Link 把 IMU 姿态实时读出来并进了网页调试台,3D 鸭子的躯干跟着真板子转( --imu-jlink ,没板子也能用 --imu-demo 先看效果)→ tools/servo-web/

微信群的鸭友 Radxa Zero 3W V1.12J 的启动方案 。这批板子(WiFi 换成 AIC8800DS2)光换瑞莎引导还是起不来,他实测出设备树也得换成瑞莎 B1 的: B1 引导 + B1 DTB + Armbian 6.1.115 内核 + Trixie 系统 ,跑通了 → 写进了 踩坑记录 和 镜像使用说明

鸭友的项目

有些鸭友是自己单独开仓库做的,不在这个仓库里,但跟鸭子直接相关、做得好的,放这儿推一下:

项目 作者 做什么的

microduck-color-studio ( 在线试用 ) @LathamZ 鸭子的 3D 配色工作室,打印前先在网页里把颜色定好。 70 个零件逐件上色,选材质(PLA / 哑光 / PETG / 金属 / 碳纤 / TPU)和灯光看效果;填上自己手里有哪些耗材,它按库存推荐配色(只用已有 / 补一色 / 丙烯点缀)。还能导入自己的 3MF(比如飞特版),导出 带颜色的多盘 3MF 和按件拆好的 STL,拓竹 P1S / A1 mini / H2D 有预设。中英文界面,手机上也能看

做了跟鸭子有关的项目(工具、教程、改装、策略……),开 issue 贴个链接,我们加进来。

想加进来:直接开 issue 或提 PR。 硬件、固件、算法、文档、实测数据都算 —— 实测数据尤其欢迎 ,这个仓库的规矩是结论如实记录,无论正反。

装配爆炸图

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°

📋 物料清单(BOM)

要买什么、买几个 —— BOM.md

整机 15 个舵机、14 个轴承、约 325 件紧固件、2 块要打样的电路板,数量取自上游 MJCF 的 引用计数(38 种网格 / 75 个实例),不是估的。含每块板的器件清单与立创编号。

⚠️ 里面有两条会让人买错的更正: 电池是 NP-F550 不是 F970 、 XL330 被超压运行 。

3D 打印件

整机全部 STL 单件,按「要打印 / 买现成的」分好类,中英双语命名 —— print/

目录 数量

🖨️ 拓竹 MakerWorld · microduck 不想看图直接打 —— 一键切片,Bambu 打印机直接开

print/打印件/ 30 种 / 41 件 结构件

print/标准件-无需打印/ 9 个 外购件模型(对位用)

上游的 XL330 台架测试夹具在另一个目录,本来就不属于机器人。打印建议与数量表见 print/README.md ,采购见 机械采购清单 。

CAD 装配体

cad/ 下是 已应用世界变换 的 STL —— 直接导入 CAD 就是装好的样子, 不用自己摆位置(上游那 47 个 STL 都是零件自身坐标系的,直接导入会全部堆在原点)。

  • 00_Microduck_整机装配体.stl —— 整机单文件,796792 三角面
  • 01 ~ 15 —— 按刚体分组的 15 个部件,文件名即部件名
  • 零件对照表.json —— 每个部件由哪些上游源网格组成

单位 毫米 。可直接用 FreeCAD / Fusion 360 / SolidWorks / Blender / 各类切片软件打开。

📐 要可编辑的参数模型?在另一个仓库

本仓库的 cad/ 与 print/ 都是 网格(STL) —— 能打印、能看、能测量,但 改不动 。

fanhao375/microduck-replica-cad 是配套的三维图纸仓库,放的是 可编辑的 SolidWorks 源文件 (📦 压缩包在那个仓库的 Releases 页,不在文件列表里 ): 16 个装配体 + 40 个零件,外加一份 21 页的装配安装说明书 (含每个组件的步骤、配图与注意事项)。

那套图纸由 机械行者Robo 建模并编写说明书 —— 想改尺寸、改壁厚、重新出工程图的,从那边拿源文件。

从运行时反推出的电控方案

五个模块的物理布局 —— 灰色虚线框是物理区域,实线框是模块,红色虚线框表示装在壳体 外面 。

橙色 是舵机总线(自上而下), 红色 是电池供电(自下而上)。

最容易搞错的一条: 主控、HAT、摄像头三者都在头里 ,摄像头距主控板中心约 13 mm 且中间没有关节 ——

所以 MIPI 排线不穿过脖子,真正过颈的是舵机总线和供电线。

完整图集与讲解 → · 下载 PDF 图集(7 张,A3)

一条 1 Mbps 的 TTL 串行总线搞定一切。

Radxa Zero 3W (RK3566) · Armbian ├── UART2 1 Mbps TTL 单线半双工 ── 15× XL330 + imu_to_dxl (ID 200) ├── I2C3 400 kHz (pin 3/5) ────── AIC3104@0x18 · ToF@0x29 · BMI088(未用) ├── I2S3 12.

288 MHz ───────────── 音频 ├── MIPI CSI ────────────────────── IMX219(I2C@0x10,转 90°) ├── 蓝牙 ────────────────────────── 手柄 / 手机 App ├── Wi-Fi ───────────────────────── WebRTC └── USB-C ───────────────────────── 供电 + maskrom

主控 Radxa Zero 3W —— 市售模块, 不是定制载板

SoC RK3566,四核 Cortex-A55,Mali-G52,0.8 TOPS NPU。官方公布 1 GB / 32 GB eMMC;复刻建议 2G/16G,见 电控采购清单

舵机总线 单线半双工 TTL —— 不是 RS-232, 也不是 RS-485。Dynamixel Protocol V2 @ 1 Mbps,走 /dev/ttyS2

自制板 1 imu_to_dxl v2 —— 一颗会说 Dynamixel 的 LSM6DSV16X:总线 ID 200、寄存器 124,12 字节块在 同一次 sync_read 里和舵机一起读回

自制板 2 RPI Robot HAT —— TLV320AIC3104 @ 0x18、一颗休眠的 BMI088、接 ToF 的 Stemma 座。 官方已开源 ( elec_RPI_Robot_HAT )

电池 索尼 NP-F550,2S 锂电。 没有电量计,也没有 ADC —— 电池电压是 读舵机上报的自身供电电压 得来的

传感器 LSM6DSV16X IMU · VL53L5CX/L8CX 8×8 ToF · IMX219(树莓派 Camera v2)

imu_to_dxl 是整套设计里最漂亮的一手: IMU 不走 I²C ,而是把自己伪装成一个 Dynamixel 从机, 于是姿态数据和关节状态在同一次总线事务里回来 —— 不需要第二条总线,主机也不用跑姿态融合 (LSM6DSV16X 的片上 SFLP 块直接输出游戏旋转四元数,还自己估计陀螺零偏)。

完整细节: 硬件方案逆向 · 硬件规格速查

可行性:能造出来吗

整机可复刻,卡点在成本不在技术。 现状:

项目 状态

零件几何 ✅ 47 个 STL

装配关系 ✅ 精确到 0.1mm,已出图

关节轴线 / 行程 ✅ 14 个全有

质量 / 惯量 ✅ 15 个刚体全有

舵机型号 ✅ Dynamixel XL330 ×15 → docs/执行器选型.md

轴承 ✅ Ø22×16×4 与 Ø15×10×3

HAT 板 ✅ 官方 KiCad + Gerber + BOM 已开源 ,直接打样 → elec_RPI_Robot_HAT

imu_to_dxl 板 ⚠️ 未开源,需自绘;协议与寄存器布局已完整还原 → docs/硬件方案逆向.md

主控 ✅ Radxa Zero 3W,市售模块 (此前误判为定制载板)

紧固件清单 ✅ 已从 STL 孔位反推 → docs/紧固件反推.md

电池 / 传感器 ✅ NP-F550 2S、IMX219、VL53L8CX、LSM6DSV16X

走线方案 ❌ 无

控制软件 ✅ 主控用同款 Radxa Zero 3W 即可直接跑(Apache-2.0);换主控才需移植

官方策略 ONNX ✅ 硬件保持同款即可直接用(9 个);改动本体或电控才需重训

⚠️ 仿真 STL ≠ 可打印工程件。 仿真只关心外形与惯量,不保证配合公差、 螺纹孔、热熔螺母座和走线空间。直接打印大概率装不起来,需要自行补充工程细节。

💰 自己造大概率比买贵,但差多少全看渠道。 15 个 XL330 在 ROBOTIS 国际站约 $359 、 美国站 $412 、欧洲含税 €603–629 —— 也就是从「略低于整机售价」到「远超」都有可能。 加上主控、电池、两块板打样和打印耗材必然更贵。完整核价见 BOM.md 。

现实路径

放弃 100% 复刻( imu_to_dxl 板与可编辑机械 CAD 未开源),改成 机械照抄 + 电控自建 :

方案

机械 用本仓库的 STL 与装配图,几何完全照抄

舵机 XL330 × 15,市售件照买

主控 Radxa Zero 3W ,市售模块,与官方同款

IMU 板 自己画 imu_to_dxl :LSM6DSV16X + MCU + 半双工收发器,协议已还原

HAT 板 官方 Gerber 直接打样 (4 层板)。不要录音可整块省略,但 半双工方向电路要另配转接板 ,见 电控采购清单

软件 主控同款则官方 Rust 运行时可直接跑(Apache-2.0)

策略 官方 9 个 ONNX 可用;改硬件后用 microduck_rl 重训

结论已从「机械可抄、电控是硬墙」修正为「整机可复刻」 —— 主控是市售模块,自制板的功能和协议已从源码完整还原。 详见 docs/硬件方案逆向.md 。

三个必踩的坑

必须 systemctl mask 掉。Pollen 是用 fuser -v /dev/ttyS2 查出来的。

  • Armbian 默认在 UART2 上跑登录控制台。 serial-getty@ttyS2 占着串口,

(普通 5V 充电仍然可用)。

  • i2c3 和 FUSB302 抢引脚。 用排针 pin 3/5 的硬件 I²C,代价是 失去 USB-C PD 协商
  • NPU 出厂是关的。 Armbian 默认禁用,要跑 RKNN 模型得刷 overlay 并重启。

生态导航

Microduck 的东西散在 GitHub 多个组织和 HuggingFace 三种资源里, 官方硬件仓库尤其容易漏 。 docs/生态导航.md 把官方仓库、模拟器、策略模型、数据集、社区项目 逐个标注了「是什么、能拿来干嘛」。

深入文档

文档 内容

紧固件反推 ( English ) 从 47 个 STL 扫描孔特征,反推出 M2 螺丝系统与采购量

执行器选型 ( English ) XL330 参数、BAM M6 配置、5 组标定 PD、回差建模; 为什么不能换闭环步进、换 STS3215 会怎样 (737g vs 2107g 实测对照)、 同级别舵机横向对比 (含宇树 S288 深度评估)

踩坑记录 上手前扫一遍 —— 买东西 / 打板 / 飞线 / 软件 / 工具,每条三句:现象、原因、怎么办

调试记录 拿到货一步一步做 —— 舵机配 ID 改哪些参数(含 ID 对照表)、怎么供电,后面按日期记过程

HD-1910 训练前数据清单 给算法重训用的 —— 几何、质量惯量、关节标定、舵机规格、IMU 安装,仓库有的全填了并标出处,台架实测项列了怎么测

不打 HAT HAT 打样太贵? ¥70 的降压模块 + 半双工转接板飞线替代,一步一步接,哪步会烧东西

硬件入门 一块板一块板讲清楚 —— 五个模块各自干嘛、一个 tick 里信号怎么流、走飞特路线哪些会变,末尾附「复刻前必做的五件核对」

硬件规格速查 一页纸规格表 —— 系统框图、芯片型号、总线参数、复刻清单、必踩的坑

硬件方案逆向 完整推导过程与证据出处( English )

电控采购清单 淘宝实链 —— 主控 / 摄像头 / ToF / 电源 / 两块 PCB / 线材与调试板,含选型推算与避坑(2026-09-04 快照)

机械采购清单 淘宝实链 —— 轴承 / M2 紧固件 / 热熔螺母与压头 / 螺纹胶 / 耗材

社区动态 X / GitHub 情报,含外部验证、噪音与风险提示

结论速览: 整机是 M2 螺丝系统 (Ø2.2 过孔 ×77 + Ø4.4 沉头孔 ×28 + Ø1.6 攻丝底孔 ×20), 结构件过孔约 146 个;轴承 Ø22×16×4 与 Ø15×10×3。

重现

1. 拉上游仓库(源码与仿真资产不重复托管,打印件除外 —— 见 NOTICE.md)

命令
bash scripts/fetch_upstream.sh

2. 重新生成装配图

命令
python scripts/render_assembly.py upstream/microduck_rl assembly-drawings

3. 重新导出 CAD 装配体

命令
python scripts/export_assembly_stl.py upstream/microduck_rl cad

4. 重新扫描孔特征

命令
python scripts/analyze_holes.py upstream/microduck_rl/src/mjlab_microduck/robot/microduck/assets

依赖: mujoco numpy pillow scipy 。渲染需要可用的 OpenGL 上下文。

许可证

  • scripts/ —— Apache-2.0

依 ShareAlike 条款衍生作品须沿用同协议, 不得商用 )

  • assembly-drawings/ cad/ —— CC BY-SA-NC 4.0 (上游 3D 模型为 CC BY-SA-NC,

详见 NOTICE.md 。本项目与 Pollen Robotics 无隶属关系,未获其背书。

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

16 个装配体 + 40 个零件,外加一份 21 页的装配安装说明书 (含每个组件的步骤、配图与注意事项)。 那套图纸由 机械行者Robo 建模并编写说明书 —— 想改尺寸、改壁厚、重新出工程图的,从那边拿源文件。 从运行时反推出的电控方案 五个模块的物理布局 —— 灰色虚线框是物理区域,实线框是模块,红色虚线框表示装在壳体 外面 。 橙色 是舵机总线(自上而下), 红色 是电池供电(自下而上)。

最容易搞错的一条: 主控、HAT、摄像头三者都在头里 ,摄像头距主控板中心约 13 mm 且中间没有关节 —— 所以 MIPI 排线不穿过脖子,真正过颈的是舵机总线和供电线。 完整图集与讲解 → · 下载 PDF 图集(7 张,A3) 一条 1 Mbps 的 TTL 串行总线搞定一切。

Radxa Zero 3W (RK3566) · Armbian ├── UART2 1 Mbps TTL 单线半双工 ── 15× XL330 + imu_to_dxl (ID 200) ├── I2C3 400 kHz (pin 3/5) ────── AIC3104@0x18 · ToF@0x29 · BMI088(未用) ├── I2S3 12.

288 MHz ───────────── 音频 ├── MIPI CSI ────────────────────── IMX219(I2C@0x10,转 90°) ├── 蓝牙 ────────────────────────── 手柄 / 手机 App ├── Wi-Fi ───────────────────────── WebRTC └── USB-C ───────────────────────── 供电 + maskrom 主控 Radxa Zero 3W —— 市售模块, 不是定制载板 SoC RK3566,四核 Cortex-A55,Mali-G52,0.

8 TOPS NPU。官方公布 1 GB / 32 GB eMMC;复刻建议 2G/16G,见 电控采购清单 舵机总线 单线半双工 TTL —— 不是 RS-232, 也不是 RS-485。

Dynamixel Protocol V2 @ 1 Mbps,走 /dev/ttyS2 自制板 1 imu_to_dxl v2 —— 一颗会说 Dynamixel 的 LSM6DSV16X:总线 ID 200、寄存器 124,12 字节块在 同一次 sync_read 里和舵机一起读回 自制板 2 RPI Robot HAT —— TLV320AIC3104 @ 0x18、一颗休眠的 BMI088、接 ToF 的 Stemma 座。

官方已开源 ( elec_RPI_Robot_HAT ) 电池 索尼 NP-F550,2S 锂电。

没有电量计,也没有 ADC —— 电池电压是 读舵机上报的自身供电电压 得来的 传感器 LSM6DSV16X IMU · VL53L5CX/L8CX 8×8 ToF · IMX219(树莓派 Camera v2) imu_to_dxl 是整套设计里最漂亮的一手: IMU 不走 I²C ,而是把自己伪装成一个 Dynamixel 从机, 于是姿态数据和关节状态在同一次总线事务里回来 —— 不需要第二条总线,主机也不用跑姿态融合 (LSM6DSV16X 的片上 SFLP 块直接输出游戏旋转四元数,还自己估计陀螺零偏)。

完整细节: 硬件方案逆向 · 硬件规格速查 可行性:能造出来吗 整机可复刻,卡点在成本不在技术。 现状: 项目 状态 零件几何 ✅ 47 个 STL 装配关系 ✅ 精确到 0.1mm,已出图 关节轴线 / 行程 ✅ 14 个全有 质量 / 惯量 ✅ 15 个刚体全有 舵机型号 ✅ Dynamixel XL330 ×15 → docs/执行器选型.

md 轴承 ✅ Ø22×16×4 与 Ø15×10×3 HAT 板 ✅ 官方 KiCad + Gerber + BOM 已开源 ,直接打样 → elec_RPI_Robot_HAT imu_to_dxl 板 ⚠️ 未开源,需自绘;协议与寄存器布局已完整还原 → docs/硬件方案逆向.md 主控 ✅ Radxa Zero 3W,市售模块 (此前误判为定制载板) 紧固件清单 ✅ 已从 STL 孔位反推 → docs/紧固件反推.

md 电池 / 传感器 ✅ NP-F550 2S、IMX219、VL53L8CX、LSM6DSV16X 走线方案 ❌ 无 控制软件 ✅ 主控用同款 Radxa Zero 3W 即可直接跑(Apache-2.0);换主控才需移植 官方策略 ONNX ✅ 硬件保持同款即可直接用(9 个);改动本体或电控才需重训 ⚠️ 仿真 STL ≠ 可打印工程件。 仿真只关心外形与惯量,不保证配合公差、 螺纹孔、热熔螺母座和走线空间。直接打印大概率装不起来,需要自行补充工程细节。 💰 自己造大概率比买贵,但差多少全看渠道。

15 个 XL330 在 ROBOTIS 国际站约 $359 、 美国站 $412 、欧洲含税 €603–629 —— 也就是从「略低于整机售价」到「远超」都有可能。 加上主控、电池、两块板打样和打印耗材必然更贵。完整核价见 BOM.md 。

现实路径 放弃 100% 复刻( imu_to_dxl 板与可编辑机械 CAD 未开源),改成 机械照抄 + 电控自建 : 方案 机械 用本仓库的 STL 与装配图,几何完全照抄 舵机 XL330 × 15,市售件照买 主控 Radxa Zero 3W ,市售模块,与官方同款 IMU 板 自己画 imu_to_dxl :LSM6DSV16X + MCU + 半双工收发器,协议已还原 HAT 板 官方 Gerber 直接打样 (4 层板)。

不要录音可整块省略,但 半双工方向电路要另配转接板 ,见 电控采购清单 软件 主控同款则官方 Rust 运行时可直接跑(Apache-2.0) 策略 官方 9 个 ONNX 可用;改硬件后用 microduck_rl 重训

来源教程配图

鸭子复刻 微信群
配图 1 · 鸭子复刻 微信群查看原图
第一次上电:从缩着站起来(点开看 30 秒视频)
配图 2 · 第一次上电:从缩着站起来(点开看 30 秒视频)查看原图
飞特 HD-1910 版装机实物
配图 3 · 飞特 HD-1910 版装机实物查看原图
网页调试台:滑块、3D 鸭子、重心投影
配图 4 · 网页调试台:滑块、3D 鸭子、重心投影查看原图
爆炸图
配图 5 · 爆炸图查看原图
Microduck 电控总览:板子都装在哪
配图 6 · Microduck 电控总览:板子都装在哪查看原图

适用场景

学习研究
开源项目实践