Walbi, the walking biped

Walbi biped robot

Wouldn’t it be great if we could make a biped robot with some servos? The Inner Geek thought so and this is the result…

Walbi, design, assembly and programming

That’s Walbi, the WALink BIped, a robot we created for a Machine Learning project that never got off the ground (neither did Walbi, but that’s because it has both feet solidly planted on the ground).

Walbi standing
Walbi standing

Walbi uses an Arduino Nano for “brain”, LX-16A servos for “muscles” and plastic 3D printed parts for “bones”. The LewanSoul LX-16A servos are dream servos for small(ish) robotic projects, as they are light, can move over 19 kg.cm and are connected with a single cable, running from servo-to-servo, making cabling the robot child’s play.

LewanSoul LX-16A servos and supports
LewanSoul LX-16A servos and four support types

Walbi is a 2:1 scale humanoid and its legs are 55 cm tall (21.7 in) from heel to waist and weigh 1,1 Kg (2.4 lbs). The white parts of its body were 3d-printed, but could as easily have been made out of lightweight sturdy wood.

Walbi feet
Walbi feet

Programming Walbi is very simple. You can download below the two programs needed to do motion capture and playback, and with then you can make Walbi walk, crawl, climb, jump or dance! You only have to move its legs to a desired pose, record that pose, shape Walbi it into another pose, record it and so forth, and then, when you have recorded the complete sequence, you can seat back and watch it perform skilfully the moves you taught it.

Walbi hip detail
Walbi hip detail
Walbi in walking pose
Walbi learning to walk

Maybe you can teach yours to riverdance 😀

Building the Walbi

Walbi was 3D printed in PLA plastic, using a FlashForge Creator Pro printer. You can download the STL files from Thingiverse, or use an alternate method to build the feet, leg “bones” and waist, using wood or metal. The servo supports attach to these parts, to the servos and to one another.

STL design on 123D

As shown on the diagram below, you will need metal supports of the four different types available to attach the servos to the parts printed and to each-other.

Walbi servo support use
Walbi servo support usage


In order to control the LX-16A servos you need a LewanSoul Debug Board.

LewanSoul Debug Board

It will receive commands from a serial port on the Arduino Nano. As we used the Arduino’s hardware serial to communicate with the computer, we had used the SoftwareSerial library to create a second serial port on the Nano, in order to connect to the Debug Board.

Wiring is minimized with serial servos. There is a cable from each servo to the next (serial cable provided with the servos) and the servos at the waist plug directly into the Debug Board. Your computer connects to the USB port of the Arduino and the Arduino is connected to the Debug Board using three jumper wires (TX, RX and GND) connected to the Arduino  pins that you configure for SoftwareSerial – we used pins 10 and 1 in the code1.

The servos use a baud rate of 115200 (if you know how to change it please tell us, as this is too high). This baud rate is high for SoftwareSerial, so we had to implement error checking and retrial functionalities. In some cases persistence was required to get a correct reading.


The servos can provide 19.5kg.cm at 7.4v. We used 6v and the stall current was below three amps.


You can get the Arduino code from the Github repository.

Two programs are used for motion capture and replay, a technique similar to the one used in movies. You start by shaping the robot into a pose. As the servos default to motor off, you can rotate the servos by hand. Once you have the robot in the desired pose, you use the Walbi_record program to read and display all servo angles. You then feed those angle readings into the poseAngles variable in Walbi_play, and use the program to play back the sequence of poses recorded, at a speed set using the timeToMove variable (in mili-seconds).

We hope you enjoyed the project. Feel free to share your love by leaving a comment, subscribing the blog or any other type of feedback action.
We appreciate it!

Inner Geek nuggets

Here are some tips and tricks learned while creating Walbi:

  • The supports for the LX-16A only attach to the servo in ONE position, so it is very easy to connect them incorrectly, specially to the 3d-printed parts. We had to reassemble Walbi a couple of times to correct assemly mistakes that were quite hard to spot.
  • The servos came with ID 1 by default. Assign each servo a different ID before mounting them on the robot, or it will be impossible to communicate with multiple connected serial servos with the same ID.
  • Using cable ties really improves appearence
  • The servos come with the screws required to connect the horns to the servos and the horns to the supports. The supports come with the screws required to attach them to the servos. You will need to purchase separately screws for support to support connections and support to plastic parts connection. We used DIN912 M2-6 and M2-10 screws and nuts.
  • You can improve traction by sticking silicone pads to the soles of the robot’s feet.
  • It is preferable to use metal servo horns, as the plastic ones that come with the servos will tear if (when) the legs smash into each other during tests. If the horns tear, the robot will gain slack and movement playback will lose accuracy (which otherwise is surprisingly good).
Tear in plastic servo horn
Tear in plastic servo horn


  1. im dipping my toes into robotics for the first time, and the first thing i wanted to make, even though its a big jump, is a walking pair of pants, and i was wondering how i could make thing basically autonomous, and walk around by itself, do i want to use that lidar project you have? really, and info would be helpful, since im brand new to this whole thing. Thank you!


    1. Hi Grant.
      That’s a great leap. Maybe better to start smaller. Robotics seems simple, but there’s a lot I didn’t cover on the post, like calculating the torque required to move Walbi, considering the weight of the servos and the geometry of the limbs.


  2. Noman Aslam says:

    finally complete……


    1. Hi Noman. Great news!
      Can you please share a photo?


  3. Q Thurtle says:

    Hi Pedro. I’m loving this project. I have the LX16-A servos and would like to extend the serial connectors which link all the servos together. Do you know what sort of connector is used on the two ends of the connectors (the white plugs on the ends of the three wire interconnecting leads)?

    Many thanks for your effort on this project – its great!


    1. Hi Q Thurtle. Thanks for your kind comment. The servos use 3 pin JST connectors, like these https://www.aliexpress.com/item/32751262161.html?spm=a2g0s.9042311.0.0.27424c4dUXwMDk


    2. Andy Pugh says:

      The connectors are actually Molex “SPOX” 5264 series. (you can read the 5264 on the OEM cables)


  4. Hi everyone. Since the article was published and highlited on Hackster.io and HackSpace Magazine, a couple of teams built their own versions of this fun robot. Walby II was created in Poland by Arman and Maks (who commented above), and Walbi III in France, by Victor and Nicolas, who have are creating a project I’m sure you are going to love when it becomes public. Until then, you can check-out Nicolas’ cool Starwars Droideka project at https://www.hackster.io/nicogou/droideka-2752f1


  5. Ronald Gorman says:


    Thank you for sharing this challenging project. I have run into problems trying to use code to create a means of communicating between my nano and debug boards. I have reset the I’d numbers on the 10 lx16a servos. At present I am experiencing some challenges I need help with. 5hank you in advance for reading my comment.

    Liked by 1 person

    1. Hi Ronald,
      I don’t know if you wanted a reply from Arman or from the creators of this project… Regarding your problem, keep in mind that the baud rate on the serial port used to communicate with the LX-16a servos (not the one between the Arduino and the computer) needs to be 115200. Maybe you can write a program that just commands one servo to a position (angle 500, for example) and if you can’t get it to work, you can post the code, circuit description and result here and we’ll have a look at it. Good luck with your project!


      1. Bull Frog says:

        Mr. Silva, What zip app could I use to open the 3d files to have them made.  I have tried WinZip and another recommended for PDF files.  Thank you.

        Sent from Yahoo Mail on Android


  6. This blog was… how do you say it? Relevant!! Finally I’ve found something which helped me.
    Thank you!


  7. Arman says:

    Hello, I’m Arman, thanks for your design, I just was wondering, how does the battery connect to the servos and Arduino board and what type of battery did you use. In addition, I would like to understand how the Arduino board is connected to LX-16A Servos. We are trying to create something similar to your design and we are finding ourselves in some trouble with these things. We would appreciate any kind of help we could receive from you. Thank you very much


    1. Hi Arman. Walbi was powered by a power supply connected to the mains (the red and black wire that you can see in the photos), but you can use a LiPo battery to power it. Please be aware that the servos draw over 2.5 Amp when stalled, so the battery must be able to supply that much current. You would need a power regulater to provide the correct level to the servos and Arquino. Do not try to power the servos using the MCU or a power supply rated for 2 Amp, as the robot will not move. The Arduino connects to the LX16A through the serial port (TX, RX and GND). As you use the hardware serial port of the Arduino to connect to the PC (through USB), you must use a library like Soft Serial to create a serial port on other pins.


      1. Arman says:

        Do we use any voltage regulator or there is a particular one that is easier to connect with Servos and Arduino? if there is, can you provide more description of the regulator we need to use? ,


      2. There are three issues to take into account when choosing a regulator: 1) the output voltage. The servos and the MCU (Arduino) have voltage values that they allow as input, so the regulator must provide a voltage that is ok for both them. Otherwise you need to have two regulators. 2) beware of the maximum output current that the regulator can provide, as many regulator only go up to 2A and that is not enough for the servos. 3) start by choosing the type of battery you want to use (3S, for example) as this will determine if you need a boost converter (if the battery voltage is lower than what you need for the servos/MCU) or a down converter (if it is the other way around). The higher the mAh the battery can provide, the longer the robot can go without recharging, but the weight of the battery also increases, so the best choice may be something around 2009 mAh (for the legs only)


      3. Arman says:

        what wires did you use to connect battery-voltage reguator-arduino/servos?


      4. Maks says:

        Hello I am Arman’s partner in the project. I was wondering if it could be possible for us to go on a skype call or something similar seeing how there are a few technical difficulties that we are experiencing and the project window in which we are building our robot is drawing to a close. We now have obtained most of the parts for the robot, however, we are finding it hard to understand some of the wiring present on the robot in the pictures. I am very grateful for your help and any further assistance.


  8. Nadia says:

    Hi and thanks for this blog. This is an impressive work. I’m using LX-16A too for my project. From the pictures, I understand that the feet are screwed to the servo support with M2 screw and nuts. But what about the white bones, as the holes in them don’t seem to have a thread ? Did you glue them to servo support ?
    Thanks !


    1. Hi Nadia. Thanks for your kind words. The holes in the “bones” are just tight enough for the screws and no threading is needed. If you remove the screws and screw them back again too many times the hole will widen and the “bone” will need to be replaced, or some form of padding added inside the holes (you should be able to screw/unscrew five times at least without problem). This solution is rigid enough to the point that tearing will occur first on the servo horn (if you use plastic horns).

      Liked by 1 person

Leave a Comment

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.