Hexapod Robot

 Hexapod Robot

Thanks to the Open Source community, thousands of people around the World, with a bit of skill and another bit of money, we're able to play with ultimate designs in legged robots.

This, another time.  opens new horizons for those who love innovation.

Electromechanics - Servomotors

Servomotors or servos (for short) are responsible for giving the robot the ability to move. It's DC motors driven by an electronic system that is able to set the output shaft in a particular position. They have been used long ago in model airplanes and although they have evolved, existing today digital models with RS-232 or I2C bus, the ones which I will use are very basic with PWM input.

Due to its low cost (approx. $5 on ebay) and its high torque (10 kg.cm @ 5V / 13 kg.cm @ 6V) I have chosen the model Tower Pro MG995 which has metal gears and ball bearings, but I have not read almost nothing good about them and as I have seen, their quality is also low, since some have been "fried" mosfets which govern them. I suspect that this is because with the heating of the motor due to degradation of this, it hangs slightly but enough to require a current too high for a long time that ends with SOIC8 mosfets that form the bridge that feeds the motor.

I've tried to substitute these transistors for others with higher current capacity but the result has been more or less the same

It also must be said that these failures have occurred feeding servos directly with a battery LiPo 2S to about 8V so it is imperative to use a voltage regulator that delivers as maximum 7V, since according to the specifications, the maximum power voltage is 7.2V. Due to the number of servos to feed, this regulator must be capable of supplying at least 18A whereas consumption of approx. 1A for each servo, which is quite real. For these reasons, the use of a linear regulator (which could be achieved by placing several 7806 in parallel) is ruled out due to his very low efficiency, because that could be expected from unacceptable heating and a considerable shortening of the duration of the battery. The idea is to use a switching regulator, for example this one from Hobbyking.


Hexápod #1: PhantomX clone

After analyzing the various models of hexapod robots that are designed to date, and although the Lynxmotion's Phoenix model seems aesthetically more interesting, I decided to build something very similar to the PhantomX model of Trossenrobotics, which is specifically which shows the image above.

Mechanical structure

It is the physical part of the robot, i.e., the body and limbs of the same. The design is strongly based on the following model which can be found at thingiverse.com, although it has been slightly modified using Blender, excellent 3D modeling and animation software again more, offered free of charge on the blender.org website.

After a non trivial googling session I have found a kc2462 based servomotor schematic probably the same circuit which MG995, MG996 or MG946 (which are more robust than the two firsts) implements. Note the full bridge of mosfets: Q1 & Q2 N-Channel type and Q3 & Q4 P-Channel ones. Also we can see the W1 potentiometer which shaft is a solidarie with servo output shaft in order to provide position feedback. Mosfet gates are driven with a PWM signal with a duty cycle proportional to actual position error.

Servomotor Schematic

Electronics - Hardware

One of the servo controller most popular in the market is the lynxmotion SSC-32USB, capable of controlling 32 servos from a set of commands received through a serial port. Is based on a well known Atmel ATmega328p microcontroller, which offers usb thanks to FTDI chip. There are several programs that allow you to interact from a PC, basically for debugging and calibration operations.

Instructions that allow the robot to walk required the resolution of a problem of inverse kinematics, this plate falls short for this and this is why we need the help of an  arduino Nano, also with a 328p MCU, which will send the control orders to the SSC-32 from orders received through a receiver of a playstation 2 Wireless controller (2.4 GHz) being widely used in the world of animatronics/robotics or the latter. Communication between the receiver and the arduino is carried out using a synchronous bus SPI type implemented by software on the Nano.The receiver requires 3.3V providing us with the arduino through a linear regulator that incorporates.

Electronics - Software

There are different patterns when it comes to moving the limbs for walking, called "Gaits". The best known is the tripod mode, in which there are always three feet in contact with the ground, since it is the minimum number needed to achieve static stability. Each pattern or "gait" requires its forms of movement of the extremities, depending on the direction of the movement. Each tip is articulated by 3 servo motors, this type of robot is says that it has 3 degrees of freedom or 3DOF by each limb and, as it is equipped with 6 tips, we will say that it has 18 degrees of freedom, i.e. 18 angles which can vary between 0 and 180 degrees.

The particular position of the end of each leg is given by their coordinates X, Y, Z, relatively easy to define in each movement. However the control software, which runs on the arduino Nano, should send the values of angles needed to achieve this position X, Y, Z concrete. This is what is known as a problem of the inverse kinematics, whose solution requires certain power of calculation by certain routines that are called inverse kinematics engine or "IK Engine". For those who wish to deepen calculations are very well explained, very easily, in the following article.

The software provided by the PhantomX robot manufacturer uses the IK Engine called NUKE ("Nearly Universal Kinematics Engine"), however I have opted for the use of another popular software called "Phoenix code" that is "open source" and rather more complete as well as get a more natural and versatile walk. This software for the Arduino environment is available for free on the GitHub platform.

Copyright © All Rights Reserved