Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

[!WARNING] When testing and tuning servos, avoid stalling them as much as possible.

Join our Discord

XGO-Duck

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 duck-shaped biped robot performing a somersault in a looping animation

A clean somersault · CyberBionic Maker

Meet XGO-Duck

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.

BuildRunExperiment
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 filesOnboard runtimeRL tools

A closer look

XGO-Duck standing on a workbench, with a white printed body, yellow beak and feet, and exposed leg joints

XGO-Duck prototype — printed parts, articulated legs, and a movable head and beak.

Front view of XGO-Duck with its beak open
A movable head and beak
Four neck/head joints and a separate mouth servo.
Rear prototype view showing the blue expansion board and servo wiring
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.

Hardware at a glance

SubsystemWhat it usesRole
ControllerArduino UNO QLinux host for policy inference and web UI; STM32 MCU for servo and sensor communication
Actuation15 Feetech 1910 serial servos10 leg joints, 4 neck/head joints, and 1 mouth joint
Expansion boardLuwu UNO Q expansion boardPower distribution, servo connections and IMU integration
Motion sensingQMI8658A 6-axis IMUAcceleration and angular-velocity feedback
StructureSTL partsBody, leg, neck and head components
Soft partsTPU-designated STL filesFoot 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.

How the system connects

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.

Start your build

Hardware correction — 2026-10-02: The old ArduinoUnoQ PCB reverses GND and SIGNAL on U3, U4 and U5. Owners of previously manufactured boards should disconnect power and follow the old-board wiring instructions. Pin 2 power is unchanged. Schematic and PCB sources are updated.

1. Prepare parts and electronics

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.

PartQuantity
Arduino UNO Q (2 GB / 4 GB)1
Robot expansion board — Luwu Dynamics Store1
Feetech 1910 servo15
AMP 3-pin servo cable15
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, flat-end self-tapping screw204 (200+4 for roller)
M2.3 × 8 flat-top round-head, flat-end self-tapping screw6
M3 × 16 round-head machine screw4
10 × 15 × 3 mm bearing10 (2+8 for roller)
16 × 22 × 4 mm bearing11

Quantities include the optional roller skates: 4 additional M2 × 6 screws and 8 additional 10 × 15 × 3 mm bearings. Confirm the pack, charger, connector polarity and power requirements using the component notes before sourcing or powering the build.

The expansion-board store page also offers a separate battery-and-charger option. Select Only Robot Driver Board for Arduino UNO Q for the board above; the bundle has not been verified against the battery and charger specifications in this list. See the purchasing notes.

For easier purchasing, Luwu Dynamics offers an official XGO-Duck electronics kit containing all components in the BOM except the Arduino UNO Q.

Identify the three fasteners before ordering. Items 7 and 8 are self-tapping screws with flat ends. Items 8 and 9 share the same rounded side profile; item 8 has a flat top, while item 9 has the gently domed top shown in the photo below and a machine thread. The following shape guide is illustrative. See the product photo and size references in the BOM.

Shape guide for the M2 by 6 countersunk flat-end self-tapping screw, M2.3 by 8 flat-top round-head flat-end self-tapping screw, and M3 by 16 domed round-head machine screw Reference photo of the intended shallow, gently domed round screw head for item 9 only

Item 9 has the domed top shown here. Item 8 has the same rounded sides but a flat top. The photo is a head-style reference, not a size or thread specification.

2. Print the structure

Download the models from structure/. The filenames carry useful assembly information:

Filename patternMeaningExample
2x_Print two copies2x_shank.stl
4x_Print four copies4x_tire.STL, 4x_tire_axis.STL
left_ / right_Separate left and right partsleft_foot.stl, right_foot.stl
tpuFlexible part2x_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.

For the optional roller skates, print 2x_tire_support.STL × 2, 4x_tire.STL × 4 and 4x_tire_axis.STL × 4.

Print orientation reference: slicing preview on the left, recommended placement in the center, and incorrect placement marked with a red cross on the right

Print orientation matters: place the part as shown before slicing — lay it flat with the open channel facing up and the two end tabs resting firmly on the build plate. Use 4 walls and 13% Gyroid infill. Do not stand it upright, lay it on its side, or flip it over, and do not rely on the slicer's auto-arrange. Otherwise the holes may deform and the ends may break. After slicing, check the preview against the reference image before printing.

3. Configure servos and assemble

Prepare each servo's ID and center position using the runtime setup instructions, then follow Assembly_Guide.pdf.

Assembly referenceFocus
Page 1Servo ID placement
Pages 2–5Shaft preparation, initial structure and cable routing
Pages 6–15Legs, feet and soles
Pages 16–23Head and neck mechanisms
Pages 24–25Final 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.

4. Calibrate and bring it to life

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.

Hardware files

PathContents
Assembly_Guide.pdf25-page illustrated assembly reference
BOM.mdWhole-robot purchasing list, supplier links and battery reference image
structure/Printable STL models
PCBA/ArduinoUnoQ.SchDocAltium schematic source
PCBA/ArduinoUnoQ.PcbDocAltium PCB source
PCBA/ArduinoUnoQ.pdfBoard layout and dimension drawing
PCBA/ArduinoUnoQ.DWG · STEP modelBoard outline and mechanical integration model
PCBA/BOM.xlsx · Pick-and-place dataExpansion-board assembly materials and placement coordinates
docs/Build, printing, BOM and troubleshooting notes

From hardware to your own behavior

RepositoryPurpose
xgoduck_hardwareMechanical parts, electronics, BOM and assembly
xgoduck_runtime_arduinoUNO Q firmware, policy execution, browser setup and control
xgoduck_rlSimulation, 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.

Origins and contributions

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.

关于 About

Build your own robot duck. XGO-Duck is a 3D-printable biped powered by Arduino UNO Q and 15 servos, adapted from Pollen Robotics' Microduck. Includes mechanical models, PCB designs, a BOM, and an assembly guide. Build it, explore its motion, and make it your own.
3d-printingarduinobipedal-robotsdiylegged-robotsmicroduckrobotics

语言 Languages

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
19
Total Commits
峰值: 7次/周
Less
More

核心贡献者 Contributors