In Progress Robotics Hardware OpenDuck

OpenDuck Mini: Building a Bipedal Duck from Scratch

A bipedal walking robot based on the open-source Open Duck Mini. I printed and assembled the skeleton, and with no electronics background learned to solder and designed my own battery power system, through the first power-up and a booting Pi Zero. Next: the servos, pose calibration, walking with the official RL policy, and an upgrade to a Raspberry Pi 5.

A finished Open Duck Mini: a white boxy head with two glowing round eyes, standing on a blue cutting mat

A finished Open Duck Mini — the target for mine (image from the web).

This is a small bipedal walking robot I’m building, based on the open-source Open Duck Mini. Printing, skeleton assembly, soldering, battery power design, and the Linux setup — I did all of it myself. The biggest challenge was the electronics: I had no electronics background, and this project took me from soldering my first board to designing the whole robot’s power system. The skeleton, circuit, and main controller are done; next is connecting the servos and getting it to walk.

The build and its problems in about a minute and a half. The photos and clips are my own (the walking clips at the start and end are official Open Duck Mini videos, apirrone/Open_Duck_Mini, Apache-2.0); the narration is an AI voice (Gemini TTS).

Printing and building the skeleton#

I bought a 3D printer at the end of May and printed the white base and head shell myself. Assembly started in early July, with the Raspberry Pi set up along the way. I calibrated all 14 servos one by one and gave each a hand-written number label so the wiring wouldn’t get mixed up later.

Left and right legs on the desk, each servo with a hand-written number label The two legs standing separately on the desk, servo cables hanging loose

Every servo got a hand-written number; the two legs were built separately first.

Along the way a part snapped, so I replaced it and kept going; I also caught a right foot mounted backwards and rebuilt the whole leg. From then on I checked each section against the model before moving on. By mid-July the full skeleton was standing.

Front view of the legs attached to the torso, servo cables not yet tidied The complete black skeleton standing upright on the desk

Legs attached to the torso; by mid-July the whole skeleton stood up.

The biggest challenge: electronics and the battery#

In mid-July I picked up a soldering iron for the first time and soldered the control board.

The most exhausting part of the whole project was the battery and the wiring. My battery wasn’t the model in the official BOM, so I couldn’t follow the official wiring as-is and had to design my own battery box and power system; without a circuits background, just working out how one battery could feed both the control board and the Raspberry Pi took real effort. I drew a wiring plan and thought it through before touching anything, and by mid-August the 2S battery power system was done: one branch goes straight to the control board, another goes through a 7A UBEC down to 5V for the Raspberry Pi, plus a separate USB-C charging cable.

The robot on the desk with its head shell open, next to a blue 2S battery, DC cables, and a multimeter A hand-drawn power diagram: the battery goes through a Y splitter to the control board, another branch goes through a 7A UBEC down to 5V for the Raspberry Pi, plus a USB-C charging cable

On the left, the wiring bench — the multimeter was my best friend through all of this; on the right, my hand-drawn power diagram.

I set myself a fixed routine for wiring: check polarity with the multimeter first, tin every wire before connecting it, and power up only one board at a time. Following it, the very first power-up worked.

The build desk: the skeleton next to a step-down module, the white head shell, and cables Inside the white head shell: two speakers, a green circuit board, and two small blue servos

The step-down module and the removed head shell; on the right, the electronics and antenna servos inside the head.

Booting the main controller#

My plan was to finish the stock version first rather than change too much at once. In mid-August the Raspberry Pi Zero 2 W was set up: the expansion board boots on its own battery, and Wi-Fi and remote access both work. By the end of August the runtime environment was installed and the whole “wiring” part of the guide was complete. Since September I’ve also been studying electronics fundamentals systematically, so future circuit work doesn’t rely on trial and error alone.

Later the main controller will move up to a Raspberry Pi 5 (16GB), and the power system will need adjusting to add a 5V branch for it.

The skeleton on a white 3D-printed stand, next to the control board and cables

The skeleton on its test stand, ready for the servo cables.

Where it’s headed#

The road ahead:

  1. Connect all the servo cables, tune each one, then calibrate the full-body pose.
  2. Load the official RL walking policy and get it walking.
  3. Upgrade to a Raspberry Pi 5 (16GB), adjust the power system, and add a camera for higher-level tasks and vision.
  4. Train my own policies in MuJoCo Playground and add the expression features: LED eyes, a speaker, and a microphone.

The official project and its community have already taken this little duck a long way. Here’s what I want to catch up to, step by step.

From simulation to the real robot#

The official team trains in simulation, then runs the same policy on the real robot: on the left is the simulation, on the right a real duck walking with the same policy. That’s the next milestone for mine.

Simulation and hardware walking in sync (source: apirrone/Open_Duck_Mini, Apache-2.0).

Stable walking and push recovery#

With a well-trained policy, the duck doesn’t just walk steadily and move its head as it goes — push it from the side and it adjusts its steps and stays upright.

Left: moving its head while walking; right: recovering from a push (source: apirrone/Open_Duck_Mini, Apache-2.0).

Training my own policies#

The walking policy comes from imitation plus reinforcement learning: first generate reference motions of a “duck-like” walk, then let the policy imitate them in MuJoCo Playground while learning not to fall. I want to follow the same path to train my own gaits — turning, stepping in place, maybe walks with more personality.

Reference motions for imitation learning (source: apirrone/Open_Duck_reference_motion_generator).

RL training in MuJoCo Playground (source: apirrone/Open_Duck_Mini, Apache-2.0).

Ducks built by the community#

People all over the world have already built their own Open Duck Minis, each with its own shell colors and design touches. Mine will be one of them.

A collage of Open Duck Minis built by community members, with different shell colors and designs

Open Duck Mini community builds (source: apirrone/Open_Duck_Mini).

Reference projects#

apirrone
/
Open_Duck_Mini
Making a mini version of the BDX droid. https://discord.gg/UtJZsgfQGe
4.1K
535
Apache-2.0

An open-source bipedal robot by Antoine Pirrone, modeled on Disney’s BDX droids and sponsored by Hugging Face/Pollen Robotics. Version 2 stands about 42 cm tall and costs under $400 in parts. Fourteen STS3215 servos drive the legs and head, with a Raspberry Pi Zero 2 W as the main controller plus an IMU and foot sensors. It learns to walk in MuJoCo Playground with reinforcement learning (plus an imitation reward), then the policy moves to the real robot. The repo is Apache-2.0.

apirrone
/
Open_Duck_Mini_Runtime
Runtime code for Open Duck Mini
184
114
no-license

The code that runs on the robot: it reads the sensors and runs the trained walking policy on the Raspberry Pi Zero 2 W.

apirrone
/
Open_Duck_Playground
Open Duck Project's Mujoco playground RL environments
190
92
no-license

The MuJoCo Playground environment for training walking policies — where I’ll start when I train my own.

Open Duck Mini v2 docs on tnkr.ai
tnkr.ai/explore/docs/open-duck-mini/open-duck-mini-v2

The official BOM, parts, and assembly material.

Zihao's Open Duck Mini build guide (Chinese)
zihao-ai.feishu.cn/wiki/JvFxwcLNFiGMewkO3bBcV4Xbndf

A step-by-step Chinese build guide and the main route I followed; for anything it didn’t cover, I worked it out against the official model.

roy4222
/
Roy-OpenDuck-Mini
Making a mini version of the BDX droid. https://discord.gg/UtJZsgfQGe
0
0
Apache-2.0

My own build and wiring notes.