2026 年 8 月 27 日开订,399 美元,25 厘米高,800 克。官方页面上一句 open source 写在最显眼的位置。
我把三个仓库从根目录翻到子目录,一个一个数完,得到的结论跟宣传语不太一样:开源的是软件,是策略,是外形网格,是其中一块电路板。整机怎么造出来这件事,官方没给。
这篇不吹也不踩,就把边界摆清楚:开了什么、没开什么、那批 STL 到底能反推出多少、国内那个复刻仓库是怎么把网格变成装配体的、你自己上手第一步该干什么、最后会卡在哪。

先看官方到底开了什么
microduck 主仓是鸭子的大脑,一万一千多颗星,根目录 41 个条目,全是 Rust 工作区和文档:robotd 管 50Hz 控制环和舵机总线,updaterd 管签名更新和回滚,configd 管 wifi 和身份,btd 走蓝牙,padd 读手柄,mediad 用 WebRTC 推摄像头,tofd 供深度数据。七个 daemon,一个 JSON-RPC 契约,客户端不管是谁都发同一套调用。
这个仓库里没有 hardware 目录,没有物料清单,没有三维模型,没有装配说明。它就是软件。
microduck_rl 是训练仓库,2650 颗星。代码 Apache-2.0,但授权文件里专门切了一刀:src/mjlab_microduck/robot/microduck/assets/ 和 xl330_test_bench/assets/ 下的 .stl 网格走 CC BY-NC-SA 4.0。这一刀很关键,后面会讲。
真正意外的是第三块。Pollen 同组织下还有一个 elec_RPI_Robot_HAT,Apache-2.0,里面是完整 KiCad 工程:audio、dynamixel、main、power、pwr_supply_charge、sensors 六个原理图分页,加上 .kicad_pcb,production 目录里连 BOM.csv、POS.csv、STEP、Gerber、装配 PDF 都有。这块板不是随手给的,是能直接送厂打样的程度。

所以准确的表述应该是:软件全开,电路开了一块,整机不开。不是「硬件全封闭」,也不是「全开源」。
没开的那部分,缺的正好是能造出来的东西
缺 BOM 意味着你拿到一堆积木,但不知道螺丝是 M2 还是 M2.5、多长、几颗、轴承什么规格、线束多长。缺可编辑 CAD 意味着你只有三角网格,没有特征树,改一个孔位得从头重建。缺 PCB 原理图意味着除了那块 HAT,剩下几块板要自己画。缺装配文档意味着先装哪、螺丝从哪个方向进、线从哪穿,全靠试。
但 MJCF 留了后门。官方仿真模型是从 Onshape 用 onshape-to-robot 导出的,每个零件在 xml 里都带 pos 和 quat。把这两个值套到同名 STL 上,零件就回到了整机坐标系里,可以直接量毫米。
复刻仓库的逆向文档里有一组实测:banana_pcb_locker 在 X 轴 −32.3 到 −28.5、Y 轴 −27.0 到 +27.0、Z 轴 +31.5 到 +38.1,尺寸 4 × 54 × 7 毫米;右壳后缘在 −27.8。一比就知道,这个锁扣整个落在壳体外面,是贴在壳背、电池顶上的一根横压条,不在内腔。在内腔里翻不到它是正常的。
这种精度能读到 0.1 毫米这一位。位置可以复原,配合意图复原不了。
43 个 STL,不是 47 个
这里要纠正一个流传挺广的数字。我把 assets 目录翻到底数了两遍:86 个文件,43 个 .part 加 43 个 .stl,Onshape 导出时零件和网格成对出现。另有一个 xl330_test_bench 目录,11 个 STL,那是舵机测试台,不是鸭子身上的件。所以整鸭本体是 43 个网格,加上测试台一共 54 个。网上说的 47 个,我按目录逐个点过,对不上,可能是不同时间点的版本或者把测试台算了一半。
这 43 个网格能推出四件事:body 的嵌套关系就是运动学树,hinge 的 axis 和 range 就是关节轴和行程,pos 一路累加就是连杆长度,每个 STL 的包围盒就是零件包络尺寸。
推不出来的同样有四件:公差、螺纹规格、热熔铜螺母的位置、TPU 软件的硬度。这四样恰好是「装不上」的高发区。
顺便说清关节。整机 15 颗 XL330,ID 是左腿 20 到 24、颈头嘴 30 到 34、右腿 10 到 14。但策略只吃 14 个关节,接口写死 obs 一维 61 个数进、actions 14 个数出。第 15 颗是嘴,归 daemon 自己管,不在走路策略里。这个细节决定了你换舵机时,被影响的到底是 14 个还是 15 个。
国内这个仓库,把网格做成了能装的装配体
fanhao375/microduck-replica 现在 1364 颗星,配套一个独立的 CAD 仓库 microduck-replica-cad。CAD 仓库开头一句话就把方法交代了:依据 microduck_rl 公开发布的 STL 网格,重建成可编辑的 SolidWorks 参数模型。
成品是两套。XL330 原版 v1.1,57 个 SolidWorks 文件;飞特 HD-1910 版 v2.2,77 个 SolidWorks 加 13 个 STEP,压缩包 418 MB。配 21 页装配说明书、23 张组件图和爆炸图。

零件层面也是实的:33 项打印件、23 项外购件,2026 年 10 月 23 日版清单带采购链接。成本写得也直白,除 15 颗舵机、HAT 板和 IMU 板之外,其余硬件约 828 元。

进度我要说准,因为网上很多二手描述是旧的。这个仓库 2026 年 10 月 24 日已经实机跑通站立、行走、前滚翻后起身,视频和复刻镜像都放出来了。不是「站起来了但还走不了」。
另外他们把舵机换了。原厂 XL330-M288 换成飞特 HD-1910-C001,价格低一截,堵转力矩标称 0.98 N·m。代价是动力学模型要重新辨识,飞特官方出了 HD-1910 的 BAM 模型,这条路才走得通。
你想自己动手,第一步不是打开 CAD
工具链先说清楚。FreeCAD 和 Blender 都能开 STL,免费;SolidWorks 和 Fusion 要授权。但打开 STL 只是看见形状,看不出关系。
真正的第一步是在 MuJoCo 里把 scene.xml 跑起来,用键盘推着仿真鸭走两步,看哪个 body 在动、哪个 hinge 在转。这一步零成本,能省掉后面几十小时的瞎摸。看完再进 CAD,你会知道自己在摆什么。
第二步才是坐标系对齐。STL 是零件在自己局部坐标系里的形状,MJCF 里的 pos 和 quat 才告诉你它挂在谁身上、偏多少、转多少度。按 body 树一层层往下摆,别跳着摆。
第三步打印。别一次铺全量,先打躯干主体加一条腿,验证舵盘、轴承、螺丝的配合,确认了再上全量。33 项打印件的耗材不是小数目。
第四步买舵机。先买单颗,用官方那个 xl330_test_bench 模型验证通信和回差。这个测试台的 MJCF 就是为这件事准备的,很多人跳过这步,最后在总线上排查三天。
硬件不开源,这几个件只能自己解决
第一块是 HAT。它开源,但开源不等于买得到。Rhoban 的 microban 项目在物料清单里写得很清楚:这块板不是现货,是开源板,你得自己送厂制造。原理图有了,打样、贴片、调试还是你的活。
第二块是 IMU 转 Dynamixel 的板子,官方完全没给。MJCF 里连它的几何都没有,逆向时只能从固件和配置里反推。要做的东西不多但都关键:一颗 LSM6DSV16X、一颗小 MCU 跑 Dynamixel Protocol V2 从机、一个半双工 TTL 收发器,电从总线取。复刻仓库自己画了 v1.0A,把工程文件放出来了。

第三是结构件公差。网格没有配合标注,M2 和 M2.5 螺丝的过孔、22 × 16 × 4 的轴承位、TPU 软下巴的软硬,全要打样试。这是最容易反复的地方。
第四是线束。官方只透露了一句:穿过三自由度脖子的只有两束线,舵机总线和电池正极。多长、什么端子、怎么固定,没写。
还有个细节挺有意思。电池网格的文件名叫 np_f970.stl,但实测尺寸 39 × 21 × 71 毫米,那是 NP-F550 的尺寸,真 F970 厚度接近 60 毫米。文件名是上游建模时的占位,照名字买会买错。
老实说难度:这不是简单项目
时间上,按三个月准备比较现实,前提是你有 3D 打印、有点嵌入式、能看懂 xml。三个卡点提前说:
第一个卡点是舵机替换后的动力学。策略是在 XL330 的 BAM 模型上训出来的,换了舵机,力矩曲线、回差、电压响应全变。不重新辨识就上机,大概率第一秒就趴。
第二个卡点是电流。单颗堵转 1.8A,15 颗同时就是 27A,而 HAT 上四个舵机接口旁边标的是 3A max。正常走路不会全部同时堵转,但这个余量得自己算,不能拍脑袋。
第三个卡点是电压余量。电池满电 8.4V,正好等于 HD-1910 的电压上限,零余量。掉到 6.6V 时力矩大约剩 0.7 N·m,策略得按这个范围重训。
还有许可这条线别忽略。STL 网格是 CC BY-NC-SA 4.0,非商业、相同方式共享。复刻镜像的作者也写明了仅供个人非商业复刻,不得随收费产品分发。想拿这套东西做产品,得先解决授权,不是改个模型名就行。
反过来讲,可复现性比我预期好。主控不是定制载板,是市售的 Radxa Zero 3W,Pi Zero 形态,65 × 30 毫米,淘宝能买;系统是 Armbian,内核 6.1.115;舵机串口是 /dev/ttyS2,1 Mbps;NPU 是 0.8 TOPS,默认关闭,要开 overlay 再重启。这些都是软件仓库里写死的参数,抄就完事。
最后
官方开的是「能让它跑起来」的那一半:运行时、训练环境、策略、外形网格、一块电路板。关的是「能把它造出来」的那一半:物料清单、公差、装配顺序、剩下几块板。
前半截给你玩,后半截要你自己补。国内这批人干的就是补后半截的活,而且已经补到能走能翻的程度了。这才是这件事真正有意思的地方。











