“Meet Walbi, a 2:1 scale humanoid with Arduino programs for motion capture and playback. Move it by hand, record and then play it back.
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.
You will need metal supports of the four different types available to attach the servos to the parts printed and to each-other (more information and photos available in the Release The Inner Gook blog).
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 in the project 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).”