This is my hexapod robot inspired by the PhantomX AX from Trossen Robotics. The PhantomX costs $1300, which is way too expensive for my taste, so I decided to design a robot using cheap MG996R clone 11kg-cm servos. Before starting, I added up the approximate weights of the servos, 3D printed parts, hardware, and electronics and computed the worst-case required torques for the various leg joints, which I found were within the capacity of these servos. I paid about $5 each on Amazon for my MG996R clones in packs of 10 – mine were marked LKY62. The rest of the parts (SBEC, Mega 2560, LiPo battery, 624Z bearings, and screws) totalled about $75. I had the PS2 controller already, but you can find them used on ebay for around $25. The 3D printed parts used around 600g of PLA filament, so figure less than $10 for that. So total cost is right around $200.
Here is a demonstration video of the finished robot:
I designed the robot in Autodesk Fusion 360 and printed the parts on my Creality CR-10S 3D printer. The parts were designed with low weight in mind (thin walls, lightening holes, etc.) to maximize the chances of this working with the servos I had chosen. The PLA parts were printed a bit on the hot side (210° C) for better layer-to-layer adhesion and part strength. All parts were printed with a 0.4mm nozzle at 0.2mm layer height. Files for all the 3D printed parts are available on Thingiverse.
The following parts and quantities are printed in PLA at 30% infill, no support material is needed:
- 1 – Body Bottom Plate
- 6 – Body Risers
- 1 – Body Top Plate
- 12 – Femur Bracket End Caps
- 12 – Femur Brackets
- 18 – Servo Bearing Centers
- 6 – Tibia Base Plates
- 6 – Tibia Bracket End Caps
- 6 – Tibia Brackets
- 6 – Tibia Foot Plates
- 6 – Tibia Sides 1
- 6 – Tibia Sides 2 (Note: the tibia sides are identical, they are just printed with opposing sides down)
- 6 – Tibia Spacer Tubes
The following parts and quantities are printed in PLA at 30% infill with support:
- 1 – Receiver Holder
- 1 – SBEC Holder
- 18 – Servo Mounts
- 6 – Wire Guides
The following parts and quantities are printed in TPU at 10% infill, no support needed
- 6 – Tibia Foot Bumpers
3/8″, 1/2″, and 5/8″ 4-40 machine screws and nuts and 1/4″ #2 screws from McMaster-Carr . I originally started out by tapping the holes in the plastic parts but I found that the screws worked just fine when driven into the raw holes with an electric drill-driver. The 624Z bearings fit tightly into the servo mounts, so heating the bearings before pressing them into the mount made assembly easier. Important: the servos need to be ‘centered’ (i.e. set to 90 degrees) before they are attached and assembled into the leg parts.
- a Mega 2560 processor board (Arduino clone) bought on ebay.
- a YEP 20A HV (2~12S) SBEC to power the servos bought from Hobby King. I removed the shrink wrap and remounted it in a 3D printed base, which required resoldering the power leads. The regulator was set to output 6 volts.
- a Logitech PS2 wireless controller and receiver. I carefully removed the receiver circuit board from its case using a Dremel cutting wheel and remounted it in a 3D printed base. The excellent ps2x_lib code library from Bill Porter was used in the software to interface with the PS2 receiver.
- a 5000mAh 3S 20C LiPo battery from Hobby King. I happened to have this pack on-hand, but the robot probably would work fine with a smaller mAh capacity and possibly a 2 cell 2S pack instead.
I also used two 7×15 hole perfboards as servo headers, and a 9×17 hole perfboard for the LED status display board. There are just a handful of discrete components besides this. See the complete parts list and schematics below.
- Tripod: a group of 3 legs moves forward while the other 3 legs provide support
- Wave: legs move forward one at a time while the other 5 legs provide support
- Ripple: left legs move forward rear-to-front while right also do the same, but right side is offset so the right rear starts midway through the left middle stroke
- Tetrapod: right front and left rear legs move forward together, then right rear and left middle, and finally right middle and left front legs move
When walking, the robot uses the remote joystick inputs – x and y from the right joystick and rotation from the left joystick – to tell the body which way to move. The gait engines compute the individual foot tip positions required to accomplish the desired movement. Then the IK calculation is applied to each leg’s foot tip coordinate to tell the individual servos where to go to position the legs as requested by the gait engine.
There are also modes programmed to stand in-place and translate or rotate the body. The translation is just a simple addition of an x, y, or z offset to the coordinate system. Body rotation is more involved, but is derived as shown in below where the x, y, and z offsets are computed using matrix multiplication.
Finally, here is the complete software source for this robot: