English · 简体中文
Build a robot duck. Explore how it moves. Make it your own.
A 3D-printable biped robot built around Arduino UNO Q and 15 serial servos.
Assembly guide · Bill of materials · Runtime · Training
A clean somersault · CyberBionic Maker
XGO-Duck is a duck-shaped biped robot adapted by Luwu Dynamics from Pollen Robotics' Microduck. It combines a printable structure, fifteen Feetech 1910 servos, an Arduino UNO Q, and a custom expansion board with an IMU and servo interfaces.
This repository is the hardware starting point: print the parts, prepare the electronics, and assemble the robot. Companion repositories provide the onboard runtime and reinforcement-learning tools, connecting a physical build with motion experiments.
| Build | Run | Experiment |
|---|---|---|
| Print the body, legs, neck, head and soft parts. Assemble with the illustrated guide. | Configure and calibrate the robot through the companion runtime's browser interface. | Study the simulation, train policies and explore your own motions. |
| Hardware files | Onboard runtime | RL tools |
XGO-Duck prototype — printed parts, articulated legs, and a movable head and beak.
![]() A movable head and beak Four neck/head joints and a separate mouth servo. |
![]() Electronics you can inspect Rear-mounted controller stack and accessible wiring. |
The photos show project prototypes. Follow the assembly guide and matching board files for your build revision.
| Subsystem | What it uses | Role |
|---|---|---|
| Controller | Arduino UNO Q | Linux host for policy inference and web UI; STM32 MCU for servo and sensor communication |
| Actuation | 15 Feetech 1910 serial servos | 10 leg joints, 4 neck/head joints, and 1 mouth joint |
| Expansion board | Luwu UNO Q expansion board | Power distribution, servo connections and IMU integration |
| Motion sensing | QMI8658A 6-axis IMU | Acceleration and angular-velocity feedback |
| Structure | STL parts | Body, leg, neck and head components |
| Soft parts | TPU-designated STL files | Foot soles and mouth parts |
The motion policy outputs targets for 14 joints; the mouth servo is controlled separately. Component details and purchasing checks are collected in the BOM notes.
flowchart TD
UI[Browser: setup, calibration and control] <--> HOST[UNO Q Linux: ONNX policy and web UI]
RL[Training computer: simulation and RL] -->|Export ONNX policy| HOST
HOST <-->|Arduino Bridge| MCU[UNO Q STM32: servo and IMU loop]
MCU <-->|Serial bus| SERVOS[15 Feetech 1910 servos]
IMU[QMI8658A IMU] -->|Sensor feedback| MCU
BOARD[Custom expansion board] --- SERVOS
BOARD --- IMU
This is a functional overview; use the board design and assembly documentation for electrical connections.
Open the bill of materials for the robot purchasing list, supplier links and battery requirements, and PCBA/ for the expansion-board files. The robot BOM and PCB manufacturing BOM serve different purposes: a finished expansion board already includes its board-level components.
| Part | Quantity |
|---|---|
| Arduino UNO Q (2 GB / 4 GB) | 1 |
| Robot expansion board — Luwu Dynamics Store | 1 |
| Feetech 1910 servo | 15 |
| AMP 3-pin servo cable | 15 |
| Battery pack, listed as “18650 battery 8.4V” | 1 |
| 8.4 V Li-ion battery charger with 5.5 × 2.1 mm DC barrel plug (DC5521) | 1 |
| M2 × 6 countersunk screw | 200 |
| M2.5 × 6 screw | 6 |
| M3 × 16 screw | 4 |
| 10 × 15 × 3 mm bearing | 2 |
| 16 × 22 × 4 mm bearing | 11 |
Quantities reproduce the purchasing list, including screw quantities. Confirm the pack, charger, connector polarity and power requirements using the component notes before sourcing or powering the build.
Download the models from structure/. The filenames carry useful assembly information:
| Filename pattern | Meaning | Example |
|---|---|---|
2x_ |
Print two copies | 2x_shank.stl |
left_ / right_ |
Separate left and right parts | left_foot.stl, right_foot.stl |
tpu |
Flexible part | 2x_foot_bottom_tpu.stl, mouth_up_tpu.stl |
Use the print inventory to track parts. Test a servo mount and bearing fit before printing the full set; a complete validated print profile is still to be documented.
Prepare each servo's ID and center position using the runtime setup instructions, then follow Assembly_Guide.pdf.
| Assembly reference | Focus |
|---|---|
| Page 1 | Servo ID placement |
| Pages 2–5 | Shaft preparation, initial structure and cable routing |
| Pages 6–15 | Legs, feet and soles |
| Pages 16–23 | Head and neck mechanisms |
| Pages 24–25 | Final assembly |
The build guide adds preparation and inspection checkpoints. Configure one servo at a time, label its ID, and leave cable clearance through each joint's movement.
Install the onboard runtime, verify servo and IMU feedback, and complete calibration with the robot supported. Start with the default pose before motion trials.
The runtime includes walk, get-up and pick policies, plus separate mouth control. Their behavior depends on the assembled hardware, calibration and test conditions. Using the bundled policies does not require training a new model.
| Path | Contents |
|---|---|
| Assembly_Guide.pdf | 25-page illustrated assembly reference |
| BOM.md | Whole-robot purchasing list, supplier links and battery reference image |
| structure/ | Printable STL models |
| PCBA/ArduinoUnoQ.SchDoc | Altium schematic source |
| PCBA/ArduinoUnoQ.PcbDoc | Altium PCB source |
| PCBA/ArduinoUnoQ.pdf | Board layout and dimension drawing |
| PCBA/ArduinoUnoQ.DWG · STEP model | Board outline and mechanical integration model |
| PCBA/BOM.xlsx · Pick-and-place data | Expansion-board assembly materials and placement coordinates |
| docs/ | Build, printing, BOM and troubleshooting notes |
| Repository | Purpose |
|---|---|
| xgoduck_hardware | Mechanical parts, electronics, BOM and assembly |
| xgoduck_runtime_arduino | UNO Q firmware, policy execution, browser setup and control |
| xgoduck_rl | Simulation, reinforcement-learning training and policy export |
Keep the hardware, runtime and policy revisions together in your build record. This makes it easier to reproduce a working configuration and diagnose changes.
XGO-Duck builds on Microduck and microduck_rl by Pollen Robotics. The duck form, 15-servo arrangement and policy joint order originate in that work. Luwu Dynamics' adaptation focuses on Arduino UNO Q, Feetech 1910 servos, the custom expansion board, and the matching software/model integration. See origins and adaptations.
Build reports, tested print settings, clearer assembly photos and reproducible fixes are welcome. Read CONTRIBUTING.md or open an issue.
For reuse terms, consult LICENSING.md and the applicable file-level notices. Contact: hello@xgorobot.com.


