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…
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 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.
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.
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.
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.
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.
In order to control the LX-16A servos you need a 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).