Open-source project
fanhao375/microduck-replica avatar
fanhao375/microduck-replica

Microduck Replica: Rebuilding Pollen Robotics' Robot Duck from the MJCF Model

Microduck 复刻 · 从官方 MJCF 与 Rust 源码反推出的装配图、CAD 装配体与完整电控方案 | Mechanical + electronics reconstruction of Pollen Robotics' Microduck

929 stars165 forksPythonNOASSERTION

At a glance

What is it?
A third-party reconstruction of Pollen Robotics' Microduck that turns the published MJCF simulation model into assembly drawings, an importable CAD assembly and a full electronics plan. The mechanical files are meshes, not editable parts, and the reversed imu_to_dxl board has never been fabricated.
Who is it for?
Adopt it if you want to build a Microduck and need the assembly relationships, the BOM quantities or a starting point for the unreleased imu_to_dxl board, and you accept that the mechanical output is mesh geometry. Do not adopt it if you need editable parametric parts from this repository alone, or if you expect a validated board: the imu_to_dxl design has not been fabricated or tested.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 21, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What the reconstruction adds to an open simulation model

Pollen Robotics publishes the Microduck software under Apache-2.0 and ships a complete MJCF simulation model with 47 STL meshes inside the microduck_rl repository. Those meshes are stored in each part's own coordinate system. Import them into a CAD tool as they are and every part lands on the origin, stacked. The MJCF file carries the information that fixes this: which part is parented to which, the relative offset to 0.1 mm, the rotation axis, the joint travel, mass and inertia tensors.

The repository's stated purpose is to extract that kinematic tree and turn it into assembly relationships a person can use. The audience is narrow but real: someone who wants to build a 25 cm, 737 g bipedal duck with 15 Dynamixel XL330 servos and does not want to reverse the parent-child structure by hand from an XML file. The README is explicit that the hardware is only partly open. The RPI Robot HAT is fully open in pollen-robotics/elec_RPI_Robot_HAT with a KiCad 9 project, Gerbers, BOM, pick-and-place data and STEP, so that board does not need redrawing. The imu_to_dxl board is not open, and this repository claims its reconstruction is the only public one. Mechanical parts have no editable CAD, no BOM and no assembly documentation upstream.

The README also carries a correction dated 2026-09-03: an earlier version of the document said the hardware was closed and no PCB schematic existed. That was wrong, and the note says the mistake came from searching only the main microduck repository and not the organisation's elec_-prefixed hardware repositories. Leaving that correction in the document is more useful than quietly deleting it.

From MJCF joint tree to a world-transformed STL assembly

The pipeline is a coordinate transform problem. Upstream gives 38 mesh types instantiated 75 times. The repository applies the world transforms from the MJCF model and writes the result into cad/, so the files open already assembled. The deliverable is 00_Microduck_整机装配体.stl as a single file at 796792 triangles, plus files 01 through 15 grouped by rigid body, with the file name equal to the part name. 零件对照表.json records which upstream source meshes make up each rigid body, which is the file to read when a part looks wrong. Units are millimetres, and the README lists FreeCAD, Fusion 360, SolidWorks, Blender and slicers as tools that can open them.

The BOM quantities are derived the same way, from the reference counts in the upstream MJCF rather than from an estimate: 15 servos, 14 bearings, roughly 325 fasteners, two boards to fabricate. The assembly tree in the README gives masses per link, and the interesting number is the head at 189 g against a 199 g torso. A head that is nearly as heavy as the body puts the centre of mass high, and the README connects that to why the walking policy is hard to train. That is a design observation, not a performance claim.

The joint table lists 14 controlled degrees of freedom: five per leg and four in the head and neck. Fifteen servos are installed, and the fifteenth drives the beak or jaw through a passive linkage, outside the action space. Travel ranges matter if you plan to substitute servos: hip_yaw runs -25 to +30 degrees, hip_roll plus or minus 22, while hip_pitch, knee, ankle and head_pitch are plus or minus 90, neck_pitch -90 to +60, head_yaw plus or minus 170 and head_roll plus or minus 25.

Choosing between the XL330 and HD-1910 actuator paths

The repository covers two servo options and states that mechanics, electronics and software differ at all three layers. The original path uses 15 Dynamixel XL330-M288-T units, rated at 6 V but run at 6.6 to 8.2 V, which the README describes as 37 percent overvoltage. The Feetech HD-1910-C001 path costs roughly half, claims 2.5 times the torque, and stays inside its 4 to 8.4 V rating, though a fully charged pack sits at the 8.4 V ceiling.

The mechanical consequence is concrete. The HD-1910 horn is convex where the XL330 horn is concave, so eight mating parts had to be redesigned and reprinted. The editable SolidWorks drawings for that variant carry a -FT suffix and live in a separate repository, fanhao375/microduck-replica-cad, whose release archives hold 16 assemblies and 40 parts plus a 21-page assembly manual. That drawing set is credited to 机械行者Robo. The mesh files in this repository cannot be edited, which is why the parametric source sits elsewhere.

The electrical consequence is smaller than the mechanical one: the servo connector on the HD-1910 side is 2.0 mm against the official 2.5 mm, and J4 and J5 on the imu_to_dxl board are already 2.0 mm. The software consequence is larger. The bus protocol differs, so the protocol module has to be swapped and the policy retrained for the HD-1910, with a pre-training data checklist in docs/HD-1910训练前数据清单.md. As of the repository's own status table, the original path is at paper analysis plus a first batch of printed parts, while the HD-1910 path has a fully assembled machine recorded on 2026-09-13 and is bringing up the bus on a bench.

Installing nothing: getting the CAD and print files open

This is not a package you install. It is a set of geometry, documents and board files, so the first real use is opening the assembly and confirming that the transforms were applied. Clone the repository and list the CAD directory.

bash
git clone https://github.com/fanhao375/microduck-replica.git
cd microduck-replica
ls cad/

You should see 00_Microduck_整机装配体.stl, the numbered rigid-body files 01 through 15, and 零件对照表.json. If you open 00_Microduck_整机装配体.stl in FreeCAD, Fusion 360, SolidWorks, Blender or a slicer, the duck should appear assembled rather than collapsed onto the origin. That single check tells you whether you have the transformed output and not the raw upstream meshes.

For printing, the print/ directory splits into 打印件/ with 30 types across 41 structural parts and 标准件-无需打印/ with 9 purchased-part models used for fit checking. The README points to a Bambu MakerWorld profile for one-click slicing if you would rather not inspect the meshes. If you want the editable source instead, the parametric repository keeps its archives on the Releases page rather than in the file list, which is the detail most people miss on the first visit.

The imu_to_dxl board is a design, not a validated part

The board the README singles out as the only unreleased piece of the electronics has been taken from schematic to PCB at 45 by 22 mm on two layers, with R2 corner radii, two diagonal M2 holes and a full ground plane on the bottom layer. The README reports 23 nets fully connected, zero DRC violations, and a decoupling capacitor within 2.3 mm of every chip power pin. The bill of materials is an STM32G031F8P6, an LSM6DSV16X and a half-duplex buffer, sitting on the servo bus as device 16.

None of that is validation. The same paragraph states the board has not been fabricated and has no physical verification. A clean DRC run says the layout matches the netlist rules; it says nothing about signal integrity on a 1 Mbps half-duplex bus. The repository asks for review on exactly the points where that gap bites: the enable logic of the half-duplex buffer, where 2OE is tied permanently high so the transmitter sees its own echo, against tying it to DE so the receiver floats during transmit; the copper width on the J1 and J2 pass-through; and the decision to run without a crystal, since the TSSOP-20 package does not bring out OSC_OUT and the question is whether HSI16 leaves enough margin at 1 Mbps. Those are open questions in the project's own words, and anyone ordering the board should treat them as unresolved rather than settled.

The same caution applies to the mechanical side. The repository repeats that simulation STLs are not printable engineering parts, and the build log exists to test that claim and record the result either way. If you need a board you can trust on the first order, this is the wrong source. If you can review a schematic and want a starting point for a board nobody else has published, the schematic PDF, PCB PDF, STEP file, wiring table and JLC project are all in hardware/imu_to_dxl/.

Where this approach loses to a parametric CAD pipeline

The honest alternative is not another reconstruction. It is the editable drawing set in fanhao375/microduck-replica-cad, which holds SolidWorks source for 16 assemblies and 40 parts plus a 21-page assembly manual with per-component steps, images and notes. The difference in approach is fundamental: this repository derives geometry from a simulation model and outputs meshes, while the drawing repository starts from parts modelled as features and outputs something you can dimension, thicken or re-draw.

That distinction decides most real tasks. Changing a wall thickness, adjusting a horn interface for a different servo, or producing a drawing for a machinist all require features, and an STL gives you triangles. Measuring a linkage, checking a fit, or slicing for a printer works fine with meshes. The two repositories are complementary rather than competing, and the README says so directly, but a reader who only finds this one and expects to edit parts will be disappointed by the file format rather than by the content.

The electronics side has a similar split. The RPI Robot HAT is fully open upstream with KiCad 9 sources, so rebuilding it here would be wasted effort; the README points at the original instead. The imu_to_dxl reconstruction exists only because no upstream source does. That is the correct division of labour, and it also means the value of this repository is concentrated in two places: the transform pipeline that makes the MJCF usable as an assembly, and the one board that has no public equivalent.

Licence position and what upgrades actually cost

The repository's licence field resolves to NOASSERTION, which means GitHub could not match the file to a known licence template. The README states that the Microduck software is Apache-2.0 and that the RPI Robot HAT is Apache-2.0, and the repository carries a LICENSE file and a NOTICE.md. None of that tells you what terms apply to the reconstruction itself, and this is the first thing to resolve before redistributing the CAD files, the assembly drawings or the board design. The upstream meshes and MJCF come from a project whose own licensing you should check separately, because the transforms here do not change the origin of that geometry.

Upgrade cost is mostly a documentation question. There is one release, v1.0 from 2026-09-01, described as assembly drawings and CAD. The last push to the default branch was on 2026-09-15, one day before this article's reference point, so the repository is being edited, but the release channel does not track that activity. The documents most likely to change are BOM.md, the build log, the debug log and the pitfall log, all of which record physical assembly progress rather than software versions. Anyone pinning to v1.0 for reproducibility should know that the interesting corrections, including the battery note and the hardware-openness correction, live in the README and the logs rather than in tagged releases. If you build the HD-1910 variant, the -FT drawings in the companion repository are versioned separately as v1.1 for the original and v2.0 for the Feetech path, so the two repositories do not move together.

Editorial conclusion

Adopt it if you want to build a Microduck and need the assembly relationships, the BOM quantities or a starting point for the unreleased imu_to_dxl board, and you accept that the mechanical output is mesh geometry. Do not adopt it if you need editable parametric parts from this repository alone, or if you expect a validated board: the imu_to_dxl design has not been fabricated or tested. Before ordering anything, open cad/零件对照表.json to confirm which upstream mesh maps to which rigid body, check the battery correction in BOM.md (NP-F550, not F970), and decide whether you are building the XL330 or the HD-1910 variant, because the servo choice changes eight printed parts, the connector pitch and the firmware protocol.

Frequently asked questions

What is fanhao375/microduck-replica?

It is a third-party reconstruction of Pollen Robotics' Microduck that derives assembly drawings, exploded views and an importable CAD assembly from the official MJCF simulation model and its 47 STL meshes. It also includes a reconstructed imu_to_dxl board, which the README says is the only publicly available rebuild of that board.

Can I edit the CAD parts in this repository?

No. The cad/ and print/ directories contain mesh files in STL format, which the README describes as printable, viewable and measurable but not editable. Editable SolidWorks source for 16 assemblies and 40 parts is in the companion repository fanhao375/microduck-replica-cad, with archives on its Releases page.

Has the imu_to_dxl board been tested?

No. The README states the board has not been fabricated and has no physical verification, although the layout reports 23 connected nets and zero DRC violations. The repository explicitly asks for review of the half-duplex buffer enable logic, the J1 and J2 copper width, and the decision to run without a crystal.

Which servos does the replica use?

Two paths are covered. The original uses 15 Dynamixel XL330-M288-T servos, and the alternative uses 15 Feetech HD-1910-C001 servos, which the README describes as costing half as much with 2.5 times the torque. The HD-1910 path requires eight redesigned printed parts and a retrained policy because the bus protocol differs.

Official sources

  1. fanhao375/microduck-replica on GitHub
  2. Issues
  3. README
  4. Releases
Community notes

Community notes