# 开源机器鸭 DIY：3D 打印文件与中文装配指南

资料核查日期：2026-09-09。适用范围：Open Duck Mini v2 个人制作与相关项目资料对照。本次完成公开资料核查、原始文件下载及完整性校验，没有进行实物打印、通电、装配或步行测试。

## 1. 先选定要做的机器人

**要从采购、打印一路做到校准和行走，优先选择 Open Duck Mini v2。要研究 Pollen MicroDuck 的结构复刻，可看 Microduck Replica，但它目前仍是研究项目。** 两者的结构件、电机、编号、电压和策略不能混用。

| 项目 | 当前可用的资料 | 适用方向 |
|---|---|---|
| [Open Duck Mini v2](https://github.com/apirrone/Open_Duck_Mini/tree/b23317a485b3cec7d8417f352478778b3475173c) | 原作者标准打印清单、36 个 STL、CAD 入口、BOM、图解装配、接线图、舵机配置及配套 Runtime；有原作者实机演示 | 本次推荐的完整 DIY 阅读路线；原装配文档仍有 TODO |
| [Microduck Replica](https://github.com/fanhao375/microduck-replica/tree/a1f4979c425bd9228622be89f2bfa4d1de7fbde3) | 从 MicroDuck 仿真资源还原的打印件分类、装配图、爆炸图、装配态网格、BOM 分析与试装日志 | MicroDuck 复刻研究；尚未核实一套完整、可重复的实机制作流程 |
| [DuckEMW](https://github.com/emwstudio/DuckEMW/tree/9c8cfd6393670758cf1516fa0c21eb1daef6ee23) | 冲刺、舞蹈、篮球平衡的训练与评估笔记，依赖 MicroDuck 上游模型 | 做技术实验和训练教程；本仓自身没有 STL、STEP 或整机装配教程 |
| [Pollen MicroDuck 官方](https://pollen-robotics.com/microduck/press-kit/) | 软件、控制及训练资料；官方 Press Kit 明确将整机的 open-source 声明限定为软件 | 官方动态、软件二次开发；不能宣传成已经提供完整开源整机制造包 |

MicroDuck 另有公开的独立板卡仓库，例如 [RPI Robot HAT](https://github.com/pollen-robotics/elec_RPI_Robot_HAT)。这说明存在部分硬件资料，但一块板的设计不能证明整机制造资料齐全。本轮没有对该板进行电气复核。

## 2. 可直接使用的打印资料包

网页与资料包更新日期：2026-09-09。在线指南：[Open Duck Mini v2 打印与组装](https://microduckrobot.org/zh/diy/open-duck-mini/)。资料包为该日期的固定版本。

- **36 种标准 v2 STL，按原作者数量表共打印 51 件。** PLA 49 件，TPU 2 件。
- 两张原仓库接线图、完整中文导读、逐件打印清单、原始打印说明、LICENSE、来源说明及校验清单。
- 文件固定到 `b23317a485b3cec7d8417f352478778b3475173c`；不是随着分支更新而变化的临时合集。
- 所有 STL 保持原文件名与原字节内容，未缩放或修补；逐个核对文件大小、Git blob 校验值和二进制 STL 长度结构。
- 本包只包括标准 `print/` 根目录。其他改版头部、外壳和仿真网格不混入这套数量表。

这些校验能证明下载内容与该版本一致，不能代替切片检查、尺寸试装或实机验证。

### 原始入口

| 用途 | 下载或阅读入口 |
|---|---|
| 标准 STL 目录 | [原作者 print 文件夹](https://github.com/apirrone/Open_Duck_Mini/tree/b23317a485b3cec7d8417f352478778b3475173c/print) |
| 打印材料和数量 | [print_guide.md](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/print_guide.md) |
| 可编辑设计的原作者入口 | [Onshape CAD](https://cad.onshape.com/documents/64074dfcfa379b37d8a47762/w/3650ab4221e215a4f65eb7fe/e/0505c262d882183a25049d05)；本次访问跳到登录页，没有导出或验证 STEP |
| 原始物料清单 | [Google Sheets BOM](https://docs.google.com/spreadsheets/d/1gq4iWWHEJVgAA_eemkTEsshXqrYlFxXAPwO515KpCJc/edit) |
| 图解装配 | [assembly_guide.md](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md) |
| 可交互装配教程 | [原作者链接的 Tnkr 教程](https://tnkr.ai/explore/docs/open-duck-mini/open-duck-mini-v2#home)，页面有 43 步导航和交互模型 |
| 中文课程 | [同济子豪兄等作者的 OpenDuckMini 课程](https://zihao-ai.feishu.cn/wiki/HM3WwVsyEiOs4wkfR4McvRaUn5d) |
| 中文资料与打印包入口 | [OpenDuckMini V2 开源资料](https://zihao-ai.feishu.cn/wiki/ORNcwljRViHIlOk0iKgchqfKnLh)，含原仓库、淘宝 BOM 和作者整理的 ZIP 附件；本次确认附件入口可见，未核验该附件内部版本 |

标准设计的可编辑 CAD 是上面的 Onshape 入口。仓库 `print/mods/` 中另有 STEP/3MF，但它们对应特定改版，不能当作标准 v2 的通用 CAD 替代品。

## 3. 逐件打印清单

原作者规定：标准 PLA **15% 填充**；仅 `foot_bottom_tpu.stl` 使用 TPU **40% 填充**。原文没有给出全套统一的层高、壁数、温度、支撑和摆放方向，因此本指南不把猜测参数写成官方要求。

建议先试打一个脚部组合和一个承力连接件，检查孔、螺母座和舵机安装面后再批量打印。记录打印机、喷嘴、耗材和切片配置；不要通过整体缩放去修正单个孔的配合问题。

| STL 文件 | 中文识别名 | 数量 | 材料 / 填充 |
|---|---|---:|---|
| [foot_top.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/foot_top.stl) | 脚部上件 | 2 | PLA / 15% |
| [foot_side.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/foot_side.stl) | 脚部侧件 | 2 | PLA / 15% |
| [foot_bottom_pla.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/foot_bottom_pla.stl) | 硬质脚底 | 2 | PLA / 15% |
| [foot_bottom_tpu.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/foot_bottom_tpu.stl) | 柔性脚底 | 2 | TPU / 40% |
| [knee_to_ankle_left_sheet.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/knee_to_ankle_left_sheet.stl) | 膝踝连接左侧板 | 4 | PLA / 15% |
| [knee_to_ankle_right_sheet.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/knee_to_ankle_right_sheet.stl) | 膝踝连接右侧板 | 4 | PLA / 15% |
| [leg_spacer.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/leg_spacer.stl) | 腿部间隔件 | 4 | PLA / 15% |
| [left_roll_to_pitch.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/left_roll_to_pitch.stl) | 左侧横滚/俯仰连接件 | 1 | PLA / 15% |
| [right_roll_to_pitch.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/right_roll_to_pitch.stl) | 右侧横滚/俯仰连接件 | 1 | PLA / 15% |
| [roll_motor_bottom.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/roll_motor_bottom.stl) | 横滚舵机下支座 | 2 | PLA / 15% |
| [roll_motor_top.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/roll_motor_top.stl) | 横滚舵机上支座 | 2 | PLA / 15% |
| [trunk_bottom.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/trunk_bottom.stl) | 主躯干下结构 | 1 | PLA / 15% |
| [trunk_top.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/trunk_top.stl) | 主躯干上结构 | 1 | PLA / 15% |
| [neck_left_sheet.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/neck_left_sheet.stl) | 颈部左侧板 | 1 | PLA / 15% |
| [neck_right_sheet.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/neck_right_sheet.stl) | 颈部右侧板 | 1 | PLA / 15% |
| [head_pitch_to_yaw.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/head_pitch_to_yaw.stl) | 头俯仰/偏航连接件 | 1 | PLA / 15% |
| [head_yaw_to_roll.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/head_yaw_to_roll.stl) | 头偏航/横滚连接件 | 1 | PLA / 15% |
| [head_roll_mount.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/head_roll_mount.stl) | 头横滚支座 | 1 | PLA / 15% |
| [head.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/head.stl) | 头壳 | 1 | PLA / 15% |
| [head_bot_sheet.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/head_bot_sheet.stl) | 头部底板 | 1 | PLA / 15% |
| [left_antenna_holder.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/left_antenna_holder.stl) | 左触角支架 | 1 | PLA / 15% |
| [right_antenna_holder.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/right_antenna_holder.stl) | 右触角支架 | 1 | PLA / 15% |
| [left_cache.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/left_cache.stl) | 左盖件 | 1 | PLA / 15% |
| [right_cache.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/right_cache.stl) | 右盖件 | 1 | PLA / 15% |
| [body_front.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/body_front.stl) | 躯干前壳 | 1 | PLA / 15% |
| [body_middle_bottom.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/body_middle_bottom.stl) | 躯干中段下壳 | 1 | PLA / 15% |
| [body_middle_top.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/body_middle_top.stl) | 躯干中段上壳 | 1 | PLA / 15% |
| [body_back.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/body_back.stl) | 躯干后壳 | 1 | PLA / 15% |
| [battery_pack_lid.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/battery_pack_lid.stl) | 电池盖 | 1 | PLA / 15% |
| [bulb.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/bulb.stl) | 灯部件 | 1 | PLA / 15% |
| [flash_light_module.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/flash_light_module.stl) | 投影灯模组壳 | 1 | PLA / 15% |
| [flash_reflector_interface.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/flash_reflector_interface.stl) | 反光件连接座 | 1 | PLA / 15% |
| [left_eye.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/left_eye.stl) | 左眼件 | 1 | PLA / 15% |
| [right_eye.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/right_eye.stl) | 右眼件 | 1 | PLA / 15% |
| [speaker_interface.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/speaker_interface.stl) | 扬声器接口件 | 1 | PLA / 15% |
| [speaker_stand.stl](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/print/speaker_stand.stl) | 扬声器支架 | 1 | PLA / 15% |

核对重点：两种 `knee_to_ankle_*_sheet` 各 4 件，`leg_spacer` 4 件。它们用于左右腿及上下段，不能因为只有一个文件就只打印一件。`left/right_roll_to_pitch` 要分别下载，不能凭名字自行镜像另一个零件。

## 4. 采购与工具

以下数量从原作者 BOM 的本次只读导出取得，不是实时商家报价，也不等于完整紧固件采购单。原作者的历史预算目标不含当前地区的运费、税费、工具及返工。

| 类别 | 物料 | 原 BOM 数量 | 核对事项 |
|---|---|---:|---|
| 关节 | Feetech STS3215，7.4 V 版本 | 14 | 原 BOM 特别标明 7.4 V / 19 kg·cm；不要仅按 STS3215 名称选其他版本 |
| 主控 | Raspberry Pi Zero 2 W | 1 | 配套 Runtime 的标准参考平台 |
| 存储 | microSD 卡 | 1 | 安装 Raspberry Pi OS Lite 64-bit |
| 电机接口 | Waveshare Bus Servo Adapter (A) | 1 | [原 BOM 指向的型号](https://www.waveshare.com/bus-servo-adapter-a.htm)；核对实际接口及电源 |
| 姿态 | BNO055 IMU | 1 | 核对模块引脚、供电及实际安装方向 |
| 足底接触 | SS-10 开关 | 4 | 按原图布置，检查落地触发状态 |
| 机械 | 轴承 | 3 | 按 BOM 商品及 CAD 核对具体尺寸，不能套用 MicroDuck Replica 的轴承清单 |
| 电源 | 18650 电芯 | 2 | 与电池座、2S 保护及充电方案匹配 |
| 电源 | 18650 电池座 | 1 | 按原结构及串联接线图 |
| 电源 | 2S BMS | 1 | 本次原始 BOM 为 1；Tnkr 表显示 2，存在不同步，须结合实际电源图确认 |
| 电源 | 5 V 稳压模块 | 1 | 原图使用独立 UBEC 为主控提供 5 V |
| 电源 | 电源开关 / USB-C 充电模块 | 各 1 | 充电模块须匹配 2S 电池方案，不等同于任意手机充电小板 |
| 电源 | 2.1 mm 电源插座 | 2 | 核对极性和配套插头 |
| 结构耗材 | M3 热熔螺母、M3 螺丝 | 待按装配核算 | BOM 的 inserts 数量“1”是采购项，不能理解成整机只用 1 颗；原文未给螺丝精确总数 |
| 线材 | USB 数据/供电线、导线、线套 | 按原表 | 连接器尺寸和规格仍需逐项核对；原表还有 `XT15? XT30?` 未定项 |
| 可选表情 | 9 g 舵机 | 2 | 触角用，不计入上述 14 个关节舵机 |
| 可选表情 | 摄像头、麦克风、功放、扬声器、LED 等 | 见原表 | 原教程有未完成章节；先完成基础运动，再逐项启用 |

工具包括焊接工具、适配的螺丝刀/内六角、热熔螺母压头、卡尺和万用表。原作者要求金属螺纹连接到舵机的部位少量使用 Loctite 243；不要照搬到塑料螺丝或塑料连接处。

## 5. 装配顺序：每一阶段都能对应到原图

下面是按原作者装配文档整理的中文步骤；朝向、穿线孔和螺丝位置应同时对照链接里的原始照片。没有在原文中出现的扭矩或紧固件数量，不在这里编造。

### 5.1 先准备 Runtime 和单舵机配置环境

在用于调试的电脑或 Pi 上完成 [Runtime README 的系统及虚拟环境准备](https://github.com/apirrone/Open_Duck_Mini_Runtime/blob/376de65435c93486347cd601a31aa96951799896/README.md)。以下命令在已激活的虚拟环境中执行；这里只提供经源码核对的路径，没有代你执行硬件操作。

```bash
git clone --branch v2 https://github.com/apirrone/Open_Duck_Mini_Runtime.git
cd Open_Duck_Mini_Runtime
git checkout 376de65435c93486347cd601a31aa96951799896
python -m pip install -e .
```

树莓派路线采用 Raspberry Pi OS Lite 64-bit，按原文配置 I2C、USB 串口及手柄。虽然 README 宣传预制镜像，本次 Releases API 只返回 `V2-Classic` 且没有附件，所以没有提供未经核实的镜像下载地址。

### 5.2 逐个设置舵机 ID，再装舵盘

每次只连接一个待配置舵机；以下例子把它配置成左髋偏航 ID 20。`/dev/ttyACM0` 是脚本默认端口，要以实际识别的端口为准。

```bash
python scripts/configure_motor.py --port /dev/ttyACM0 --id 20
```

该脚本会修改舵机参数和 ID，并发送归零指令。给输出轴留出运动空间，归零后按 [舵机原图](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/configure_motors.md) 对齐舵盘，再贴关节名称和编号。不要装成整机后才给所有默认 ID 相同的舵机一起改号。

| 位置 | 关节名 | ID |
|---|---|---:|
| 右髋偏航 | `right_hip_yaw` | 10 |
| 右髋横滚 | `right_hip_roll` | 11 |
| 右髋俯仰 | `right_hip_pitch` | 12 |
| 右膝 | `right_knee` | 13 |
| 右踝 | `right_ankle` | 14 |
| 左髋偏航 | `left_hip_yaw` | 20 |
| 左髋横滚 | `left_hip_roll` | 21 |
| 左髋俯仰 | `left_hip_pitch` | 22 |
| 左膝 | `left_knee` | 23 |
| 左踝 | `left_ankle` | 24 |
| 颈俯仰 | `neck_pitch` | 30 |
| 头俯仰 | `head_pitch` | 31 |
| 头偏航 | `head_yaw` | 32 |
| 头横滚 | `head_roll` | 33 |

### 5.3 装主躯干

对应零件：`trunk_bottom`、`trunk_top`、`roll_motor_bottom`。

1. 按图在 `trunk_bottom` 安装轴承和 M3 热熔螺母，底部用于后续外壳的 4 个螺母也提前放好。
2. 用原文指定的 2 颗 M3×10 合上 `trunk_bottom` 与 `trunk_top`。
3. 按原图安装中间舵机，使用配套塑料螺丝；放入对应 `roll_motor_bottom`。

检查：轴承就位，结构没有被螺母顶裂，转动部位与外壳没有明显干涉。[原图：Assemble the trunk](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#assemble-the-trunk)

### 5.4 装两只脚

对应零件：`foot_bottom_tpu`、`foot_bottom_pla`、`foot_top`、`foot_side`，每个文件均打印 2 件。

1. 每只脚先把 TPU 底与 PLA 底组合；按图装 M3 螺母，以 2 颗 M3×6 固定。
2. 在 `foot_top` 对应位置装热熔螺母，再装踝舵机、侧件和足底组合。
3. 特别核对舵机驱动侧朝向，原文要求位于 `foot_top` 一侧。
4. 安装脚底接触开关，确认脚落地时能触发，抬起时能释放。

检查：两脚结构相同，舵机 ID 分别为右踝 14、左踝 24；脚抬起后，足底 TPU 不应仍一直压住开关。[原图：Assemble the feet](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#assemble-the-feet)

### 5.5 装小腿与大腿

对应零件：两种 `knee_to_ankle_*_sheet`、`leg_spacer`，以及已编号的关节舵机。

1. 按原图在间隔件两侧安装热熔螺母。
2. **先接脚部舵机线并穿过侧板，再合上腿部结构。** 提前检查接头能否穿过孔位。
3. 按相同结构原则装上段；髋俯仰舵机朝向必须对照大腿原图，它影响零位。
4. 保留关节活动需要的线长，不让导线卡在侧板或拉紧在转轴上。

检查：能读懂每段对应的 ID，线束不夹线，上下段不凭名称混装。[小腿原图](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#assemble-the-shins)、[大腿原图](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#assemble-the-thighs)

### 5.6 装左右髋并连接两条腿

先选正确侧的 `left_roll_to_pitch` / `right_roll_to_pitch`。按图把 `roll_motor_top` 从底部固定到髋偏航舵机，再装髋横滚组合，最后插入主躯干并连接腿部。原文明确不要过早把偏航舵机锁到躯干，以免挡住后续装配位置。

检查：左右零件、ID 和朝向一一对应；关节活动时线束不会绕紧。[原图：Assemble the hips](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#assemble-the-hips)

### 5.7 装颈部和头部传动

先装 `neck_left_sheet` / `neck_right_sheet` 及颈俯仰关节，再按原图依次安装 `head_pitch_to_yaw`、`head_yaw_to_roll`、`head_roll_mount`。在头部封闭前预装之后难以插入的底板和中段外壳。

原文有 `head_bot_plate` 的写法，打印清单却叫 `head_bot_sheet.stl`。应对照原图/CAD确认，不能仅按文本别名猜零件。头部自由度及零位错位会影响后续校准。[颈部原图](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#assemble-the-neck)、[头部机构原图](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#assemble-the-head-mechanism)

### 5.8 装主控、驱动板、IMU，再接线

按原图固定 Pi、驱动板、IMU 和线束。原装配文档对 IMU 照片有特别说明：图示方向是倒装，作者更推荐自然方向；具体安装方式应与配置及实际姿态读数一致。

资料包 `docs/` 内有以下两张原图，均保持原文件内容：

- [总体电源与模块连接图](https://raw.githubusercontent.com/apirrone/Open_Duck_Mini/b23317a485b3cec7d8417f352478778b3475173c/docs/open_duck_mini_v2_wiring_diagram.png)
- [详细接线图](https://raw.githubusercontent.com/apirrone/Open_Duck_Mini/b23317a485b3cec7d8417f352478778b3475173c/docs/wiring.png)

总体图将 2S 电池经 BMS/开关分给电机电源与独立 UBEC；UBEC 的 5 V 输出给 Pi。**不要把电池电压直接接入 Pi 的 5 V 引脚，也不要照搬 MicroDuck XL330 的接线。** 模块焊接前按实际板上标识检查极性、引脚及充电规格。

下表来自原装配文档，数字为 Raspberry Pi **物理排针号**，与 GPIO 编号分开列出：

| 接线 | Pi 物理针脚 | 功能 |
|---|---:|---|
| BNO055 VIN | 1 | 3.3 V |
| BNO055 GND | 9 | GND |
| BNO055 SDA | 3 | GPIO 2 / SDA |
| BNO055 SCL | 5 | GPIO 3 / SCL |
| 左脚触地输入 | 15 | GPIO 22 |
| 右脚触地输入 | 13 | GPIO 27 |
| 脚底开关公共地 | 9 | GND |

完整的眼灯、触角、MAX98357A 等针脚见 [Electronics 原表](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#electronics)。不要凭转接板线色推断接口顺序。

### 5.9 校准后再装最后的外壳

在可靠支撑下进行低幅度关节检查，先确认 ID、方向、线束和 IMU 正确，再封闭难拆的外壳。`body_middle_bottom`、`body_middle_top`、`body_front` 和电池座的顺序按原文 Body 章节；头部则先装螺母、轴承和内部部件，再连接颈部。

校准阶段的具体命令见下一节。原文还缺驱动板固定照片，以及摄像头、触角、眼灯、投影灯、扬声器的完整表情组件装配说明；这些部分不能假定已经由基础行走教程覆盖。[Head / Body 原图](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/docs/assembly_guide.md#head)

## 6. 从组装到首次行走

这部分必须使用 **Open Duck Mini v2** 对应的 Runtime、配置和策略。首次检查时支撑好机器人，避免倒地或夹手，并保证电源开关可触及。

1. **建立配置文件。** 首次安装可从 `example_config.json` 复制为 `~/duck_config.json`；已有配置应先保留备份。按实际安装设置 `imu_upside_down`，先把未装的 `expression_features` 保持为 `false`。将 `start_paused` 改为 `true`；示例默认是 `false`。
2. **核对 IMU。** 按 [Runtime README](https://github.com/apirrone/Open_Duck_Mini_Runtime/blob/376de65435c93486347cd601a31aa96951799896/README.md) 检查静止读数和姿态坐标系；可使用 `scripts/imu_server.py` 与 `scripts/imu_client.py` 查看方向。
3. **检查关节。** 在 Runtime 根目录运行下方检查命令。这个脚本会改写电机控制参数，并可逐个发送运动目标，不能当成纯只读扫描；通讯缺失或朝向异常时先修复。

```bash
python scripts/check_motors.py
```

4. **逐关节标定偏移。** 进入 `scripts/` 后执行作者的交互标定脚本，把本机测得的值写入 `duck_config.json`。不要直接复制另一台机器的 offsets。

```bash
cd scripts
python find_soft_offsets.py
```

中文对照：[姿态校准章节](https://zihao-ai.feishu.cn/wiki/TgGrwT7zzi3KjnkSvrXcwqPKnVb)、[调节舵机偏移量](https://zihao-ai.feishu.cn/wiki/L5efwNJqMivGqJkMdYqcaux6nIe)。

5. **验证脚底开关和手柄。** 逐脚抬起、触地观察输入状态，确认蓝牙手柄可控制，再加载策略。
6. **下载匹配策略。** 使用原作者标准 v2 的 [BEST_WALK_ONNX_2.onnx](https://github.com/apirrone/Open_Duck_Mini/blob/b23317a485b3cec7d8417f352478778b3475173c/BEST_WALK_ONNX_2.onnx)。路径参数换成你实际保存的位置，在 `scripts/` 目录执行：

```bash
python v2_rl_walk_mujoco.py --onnx_model_path /实际目录/BEST_WALK_ONNX_2.onnx
```

**`start_paused=true` 和手柄 A 的暂停均不等于断电。** 当前源码在进入循环前仍会初始化并开启电机；A 只是暂停/恢复策略循环。初次试验不要直接启用冲刺或实验性的 Y 头部控制。当前 Runtime 文档也明确提示 Y 头部控制可能损伤机构。

本次核对的是这些命令所在的源码路径和行为；没有安装到实物机器人或验证实际行走效果。

## 7. 如果坚持做 Pollen MicroDuck 复刻

可使用 [fanhao375/microduck-replica 的锁定版本](https://github.com/fanhao375/microduck-replica/tree/a1f4979c425bd9228622be89f2bfa4d1de7fbde3)，按以下顺序看资料：

| 资料 | 直达入口 | 使用边界 |
|---|---|---|
| 打印件分类与数量 | [print/](https://github.com/fanhao375/microduck-replica/tree/a1f4979c425bd9228622be89f2bfa4d1de7fbde3/print) | 步行部分的作者清单为 30 种 / 41 件；轮滑替换件单独处理 |
| 正式的数量说明 | [print/README.md](https://github.com/fanhao375/microduck-replica/blob/a1f4979c425bd9228622be89f2bfa4d1de7fbde3/print/README.md) | 模型来自仿真网格，打印配合及走线还需要试验 |
| 7 张装配/爆炸图 | [assembly-drawings/](https://github.com/fanhao375/microduck-replica/tree/a1f4979c425bd9228622be89f2bfa4d1de7fbde3/assembly-drawings) | 帮助理解部件关系，不等于有尺寸公差的加工图 |
| 整机与分组装配体 | [cad/](https://github.com/fanhao375/microduck-replica/tree/a1f4979c425bd9228622be89f2bfa4d1de7fbde3/cad) | 是应用装配变换后的 STL，不是原始可编辑参数化 CAD |
| 物料与电控分析 | [BOM.md](https://github.com/fanhao375/microduck-replica/blob/a1f4979c425bd9228622be89f2bfa4d1de7fbde3/BOM.md) | 含逆向推导，应与器件规格及实际测量复核 |
| 实物进展 | [BUILD-LOG.en.md](https://github.com/fanhao375/microduck-replica/blob/a1f4979c425bd9228622be89f2bfa4d1de7fbde3/BUILD-LOG.en.md) | 当前记录到 9 月 1–2 日打印与腿部局部试装；不是整机通电、校准、行走通过 |
| 自绘 IMU 转接板 | [imu_to_dxl](https://github.com/fanhao375/microduck-replica/tree/a1f4979c425bd9228622be89f2bfa4d1de7fbde3/hardware/imu_to_dxl) | 仓库仍明确写着未打样、未实物验证；不能按成熟板卡采购单对待 |
| 许可范围 | [LICENSE](https://github.com/fanhao375/microduck-replica/blob/a1f4979c425bd9228622be89f2bfa4d1de7fbde3/LICENSE) | 工具代码与模型/文档采用不同许可；后者标为 CC BY-NC-SA 4.0 |

这条路线适合做“结构分析 → 单组件试装 → 自建电控验证”的研究日志。目前不宜命名为“照着买齐即可成功的官方 MicroDuck 完整组装教程”。本次为这些资料提供原作者入口，没有把受不同许可约束的模型混进 Open Duck Mini 下载包。

## 8. 核查版本与已知缺口

| 来源 | 本次读取的分支 / commit | 对应最新提交时间（UTC） |
|---|---|---|
| Open Duck Mini | `v2` / `b23317a485b3cec7d8417f352478778b3475173c` | 2026-01-31 10:28:29 |
| Open Duck Mini Runtime | `v2` / `376de65435c93486347cd601a31aa96951799896` | 2026-09-07 22:28:17 |
| DuckEMW | `main` / `9c8cfd6393670758cf1516fa0c21eb1daef6ee23` | 2026-09-08 08:07:51 |
| Microduck Replica | `master` / `a1f4979c425bd9228622be89f2bfa4d1de7fbde3` | 2026-09-08 12:45:15 |
| Microduck RL | `develop` / `2b581c641406a48346e696212930ea881c222c52` | 2026-09-08 14:54:49 |

已完成：上述仓库默认分支及递归文件树检查、指定文档与脚本阅读、标准 STL 下载及校验、BOM 只读导出、中文课程与资料页访问、Tnkr 组件表和装配导航检查、原始接线图检查。

仍有缺口：精确螺丝总数、部分连接器最终型号、Onshape 登录后的 CAD 导出、完整表情组件教程、可下载预制系统镜像、实物尺寸/打印配合/运动验证。Tnkr 的 43 步是页面展示的导航总数，不代表本次完成了 43 步实物复现。
