Quadruped Robot Project: Leggeduino
Background
Legged robots of all shapes and sizes are universally “cool” for many reasons. Evolution seems to have favored legs for almost all mammals and insects, and many underwater creatures as well. Even microscopic organisms are found with legs. Legs (and arms) are appendages which humans are intimately familiar with and want to recreate.
One of the projects we completed a while back was named “Leggeduino”; a combination of “legged” and “arduino”. This project came about soon after the DFRobotShop Rover, where the PCB was used as an integral part the physical structure of the robot.
The objectives of the project included:
Arduino-based
Single battery
Frame includes electronics PCB
Low cost (retail)
Wireless connectivity (optional)
No soldering required
Modularity (if possible)
Since the final price of the robot would depend largely on which actuators were used, the fewer the number of actuators, the better. A four degree of freedom (4DoF) biped would be about as inexpensive as it could get while still being arguably “legged”, and a 6 DoF biped moreso (like the Brat). However, in terms of robots which have a nice, smooth walking motion and are fairly versatile, quadruped, hexapods and octopods are preferred. A 2DoF hexapod takes a “brute force” approach to walking - it works, but it’s not very elegant. A 3DoF hexapod would need 18 servos, so a compromise would be a 3Dof quad, of which there were not many at the time.
Actuators
The next question is - what actuators to use? A legged robot needs absolute angular feedback, so the most affordable tech would be mass-produced RC servos, the least expensive of which are arguably the 9g class, which are easily ⅓ to ¼ the price of regular sized servos.
As you can see the in the Robot Leg Tutorial, the torque needed at each joint varies quite a lot based on the the number of legs in the air vs. on the ground, as well as the walking gait under different conditions and joint angles. The joint under the greatest load (for this “insect-like” leg configuration) is almost always
Controller
The Arduino Uno design had just been released, but on its own, it was not suitable for an “all in one” project, or at the very least would need a shield. Integrating a microcontroller PCB with a shield PCB into one saves quite a bit on the price, and a custom shape is possible. Arduino also has a servo library, so without any additional electronics, one Arduino Uno could be used to drive the 12 servos. Grated this gives a major limitation to the design - there are only 13 digital pins all except one of which would be used for the servos. The most useful pins on the Arduino are D0 and D1 for serial communication. This means that we might need to choose to use either the Rx (to receive serial commands) or Tx (to transmit) or include a toggle between the two. Fortunately there are 6 analog pins (which include I2C) remaining, which can also be used as digital I/O.
Power
Next comes power. A normal Arduino board has multiple power options, including 7-12V via the barrel connector (too high for normal 4.8V to 6V RC servos) or 5V via the Vin pin. The higher the voltage applied to the servos, the lower the current.
Arduino: 5V, 7-12V
RC servos: 4.8V to 6V, with 12V nominal.
Overlap: 5V
Since a 5V battery is really not common (not a multiple of 1.2V NiMh nor 3.7V for Lithium), the closest would be 4.8V (4x 1.2V cells) or 7.4V Lithium (beyond the 6V rating). Consumers apply >7V to RC servos, but this voids the warranty and can’t be the suggested approach. In order to use 5V, the only option would be a voltage regulator, ideally down from a 7.4V LiPo pack.
The compromise with 9g servos is that in order to provide decent torque in such a small package, 9g servos tend to consume high current - higher than even a normal “standard” RC servo like Hitec’s HS-311 or HS-422. With 12 9g servos under load, the current draw would be quite high, so a 5V voltage regulator would (for an efficient one) be quite expensive.
The ideal would be a 7.4V nominal servo, of which there were a few on the market back then, but only in standard servo size, and tended to be a bit higher priced. Fortunately, after a few communications with our partner Feetech, they developed an inexpensive 9g servo which would operate at 7.4V. This meant that one 7.4V LiPo could be used to power the onboard electronics and the servos with little worry about maximum continuous current discharge. An onboard voltage regulator would still be needed, but would need to handle a lot less current.
Proof of concept
In order to ensure dimensional accuracy and to create a simple prototype, plexiglass was chosen to create a basic frame. You might notice the design is different than the final one chosen, but cutting and glueing 2D parts is considerably faster than bending metal. The black plastic parts on the far left have the protective cover removed.
Unfortunately the assembled proof of concept was gutted to make the final prototype, and no photos were taken (sorry about that).
Frame / Mechanics
Finding the right material for a commercial project is never easy and is a compromise between quantity to be sold, durability, aesthetics, weight and more. Injection molding is one of the least expensive materials around and can give complex shapes, but molds are expensive. 2D laser cutting might be an option but the shapes would be limited. Aluminum sheets can be manipulated into more complex shapes. In the end several prototypes were created and include plexiglass, polycarbonate and aluminum.
For modularity and versatility, bent aluminum was chosen; the brackets could be used for other projects, and were relatively easy to create. The servos shown are actually 7.4V prototypes.
Metal Brackets
For anyone interested in recreating the bent metal brackets, the designs can be found below. They are really intended to be used with Feetech 7.4V servos and the Lynxmotion micro servo hinge.
Versatility / Limitations
Although the prototype was created to resemble a simple insect, the concept can be reused to create a mammal-like quad (dog for example). There is nothing special about the design of the brackets except that they don’t use much material, and won’t break under load. The connections on the C-brackets are versatile enough to use a few other 9g servos. The hardware is a 2-56 x ¼” standard Phillips screw and nut between brackets, and ¼” x #2 Phillips head tapping screws between the brackets and the servo horns (force threaded).
For aesthetics, 8x cool blue LEDs were added around the PCB (just like the DFRobotShop Rover), though these are not user controlled - they turn on as soon as the robot is powered.
9g servos are power hungry indeed, which limits the operating time of the robot. An energy efficient gait would need to be chosen and the next step would be to create code to make it walk smoothly. A tripod gait, where only one leg is lifted at a time seems best since it limits the load on the servos. There are no sensors to detect if the foot has hit an object, so one of the main limitations would be that the gait is not adaptive.