Before you continue...

Lets see some videos, okay? :)

The Robot's Structure

The mechanical structure is kept very simple. There are two micro-servo motors, which are best attached at an angle of 45-90 degrees to each other. There are battery holders for a total of 4x AA 1.5V batteries and a circuit board on which the microcontroller and the controls are placed.

Everything is currently simply glued and screwed together and then the trunk is ready. Now its time to create your robot's limbs. There's not only one way to do that... Be creative and brave! So far nothing has been tinkered in the workshops that we have not been able to get literally running, sooner or later.

The electronic structure is also straight forward. There is a microcontroller board (Arduino Nano), four potentiometers, two LEDs, the servo-motors, battery holders, on-off switch, pause button, and a couple of resistors and capacitors. If you are already familiar with soldering, you can solder everything to the base-board in half an hour.


The Bakiwi robot is not controlled classically, to be precise: it is not controlled at all. You can modify the gait generation parameters with only four knobs. Let me further explain how that works:
When not in pause mode, both motors continuously oscillate back and forth. Two knobs change the amplitudes of the motors' oscillation, one changes the common frequency and the last one changes the phase-shift between them. That's all, easy, isn't it?

You will find the code with the oscillator in the repository link below. After flashing the program onto the microcontroller using the Arduino IDE, you can switch-on the robot and it waits in pause mode. But you can already see the two LEDs blinking in correspondence to the expected motor motion. The pattern you see changes when you change the gait parameters using the knobs.

Algorithm Details

We choose this control strategy since all Bakiwi robots are uniquely built and hence predefining a robot gait will not work in this case. If you want to go a little deeper into the algorithm here is a brief overview.
Basically, the oscillation is created by two coupled neurons. They together create a sine/cosine waveform pair. Each motor is then fed by a signal created from the weighted sum of both oscillations. This way you can continuously change the frequency, phase, and amplitude of the oscillation without interrupting and furthermore the oscillation starts very gently from zero. See math details in the files below. Please don't hesitate to ask questions in the comments.

Origin of Idea and Contributors

I first saw such a robot in the PhD thesis of my former mentor Manfred Hild (PDF, pages 166ff, German). He called his robot TED. There is also this nice paper of him that describes the math of the oscillating 2-neuron network.

At the Makerfaire in Berlin/Germany 2016, I was sitting at the booth of the xhain hack+makespace and wanted to build my own TED. Unfortunately, I didn't have Manfred's circuits available so I used an Arduino Nano board which my friend Thomas donated to me. The robot basically worked back then, but it walked not that well and was hard to adjust since it had no potentiometers and the parameters were not correctly set.

The project hibernated almost 3 years and in mid of 2019, I occasionally talked with another former mentor of mine, Heinrich Mellmann from Humboldt-University Berlin and he told me that he's working on a similar tiny robot to teach his current students about Embodiment. Heinrich provided the idea of the external potentiometers and other details which motivated me to create the first version of the robot's base PCB.

What's next?

Currently, we are working on the next version of that robot. Since my friend Andreas lamented that the kit is currently too hard to solder for smaller children, we made a new PCB which is far more easy to solder and we got rid of the Nano board but replaced the processor with an ATTiny84. We also integrated Bakiwi's first sensor: a capacitive touch sensor, that allows the robot to detect when it is grabbed. This makes it very easy to handle the robot. Another thing that goes back to Andreas is Lego integration. Using Fusion360, he created a Lego-to-Servo Horn that perfectly fits onto our servo motors and makes it easy to connect Lego technic parts. Here you can see the robot with its new PCB, Sensors, and Lego-horns in action.

Here is the first version of the new base PCB:

Here is the lego-to-servo horn:

And here the touch sensors. Its GUitAr STriNgs !!!111eleven. \o/  ...on the fully assembled new board.