HF08 Build Notes

Assembly

What follows is a brief overview of building the Helium Frog HF08 Hexapod Robot. Before you build, do not underestimate the cost of this robot. I used cheap servos and they cost about 8 each, as you need 18 this comes to 144. The Dagu red back spider controller is 35 and the M2 threaded rod is quite pricey. I estimate about 40 for nuts bolts and threaded bar. In total, the cost is about 250. All reprapped parts were printed on a Prusa Mendel printer. The main body parts bieng the hardest to print. The main body is split into 3 parts for the lower section and is printable. If printing in ABS (which I do) you do need a heated bed to avoid warping. Also print the large parts with 3 solid bottom layers, so if your bed is a little unlevel, the part has a chance to print at least one  good solid layer before the infill starts. I printed all my parts at 35% infill using SFACT to generate my G code. I used simple cross hatching infill.

Please note that this robot is a first build and I am sure it can be improved, in fact I would welcome you to hack it about and improve the design. The firmware is simple no frills and so is the host software. Having said that is does 95% of what a robot costing 3 times as much does and with a little more work on your part developing the firmware it could do much more. Please feel free to post me any updates you do as I can update the basic design as we go along.

This guide is not a detailed build manual, but the robot is fairly simple and the legs are a repetitive build, 3 left 3 right. Take a look at the full assembly .stl model to get a good look around at areas where you may be unsure. You can download Blender 3D software that will load up the full model so you can rotate it around and examine it further.

My robot used Hexatronic HX5010 servos which came with servo horns and rubber grommets and brass mounting bushes. The Hexatronic servos although plastic geared are double bearing, high torque and work well. I experienced a little hunting on the coxa servos, but by tightening the underside nyloc nuts I was able to add a little hinge resistance to overcome this.

The following image shows how the main robot is assembled. Note the rear leg pair are switched over so the servos are further to the centre of the robot.


The image below shows a left hand sub assembly. The right hand assembly is just a mirror image. Build the assemblies up like this and when complete mount them to the body. Note the outer leg (Tibia) is held together at the bottom with an M2 nut and bolt. The "Boots" are rubber thimbles as used to count money. These come in various sizes, but these are the small 00 (Zero Zero) sized ones. I used a couple of blobs of bostic glue to hold them in place. You need M2 and M3 bolts of various lengths, but I bought packs of M2 x 20mm and M3 x 25. These are easily cut to length after assembly using a pair of pliers and cleaned up with a file. The threaded bar is cut with pliers, but make sure you put a few nuts on the thread before using the pliers as this makes it easier to clean off the burrs. I actually only installed 2 M2 x 50mm rods in the outer tibia servo, but used 4 on the femur (middle) servo. This proved sufficient to hold everything in place.



The image below shows the Left hand leg assembly again from the other side. Note the slot indicated. Pull the innermost servo (Coxa) cable through this slot during assembly. This way it stops it catching on the moving leg as it pivots around. Its a good fit when pulled taught. When the M3 vertical bolts are tightened it grips the wiring firmly. When the assembly is complete articulate the joints and check that the threaded bar ends don't foul the moving arms. If so, just clip them off with pliers and file the ends flat.


 

The following image shows how the 623 bearings are assembled. There is a washer either side of the spacing nut. I assembled the arm, bearings and servo supports to each end of the arm, before assembling the servos to them.



The last image shows the hexapod assembly with the outer legs removed. So far my robot doesn't have on board batteries, but there is room for them in the body and slots so they can be cable tied to the lower body. There are also spare holes so you can mount a head or camera and two holes underneath so you can mount the whole robot on the support pillar (shown in brown). I found this really useful when developing the firmware as I could have the robot on the bench and operate the legs to check the gait and leg positions.



Setting up the robot legs

Connecting the servos to the main board is pretty simple. I have the servos connected to the following pins.
 FL = front left leg        BR = Back right leg etc. Check the firmware though as I am doing updates and may have changed from what you see here. I had some problems with one of the legs thrashing about during firmware updates and when first powering up the robot. It seems that some of the dual function pins (The ones that can be used for timers and serial links) have voltages that can fluctuate on power up. Just move the servo connectors elsewhere and modify the pinout values in the firmware to suit. The hexatronic servos have brown red and orange wires. The brown wire goes to the outside of the board.

#define FL_COXA         32            
#define FL_FEMUR        31
#define FL_TIBIA        30

#define FR_COXA         43            
#define FR_FEMUR        44
#define FR_TIBIA        45

#define ML_COXA         22            
#define ML_FEMUR        23
#define ML_TIBIA        24

#define MR_COXA         48            
#define MR_FEMUR        47
#define MR_TIBIA        46

#define BL_COXA         7            
#define BL_FEMUR        8
#define BL_TIBIA        9

#define BR_COXA         10                       
#define BR_FEMUR        11          
#define BR_TIBIA        12 


I am running my robot on a tethered cable. This has a USB cable going between the Dagu board and my PC com port. I also have a power and earth wire going to a 13.8V desk power supply. I beleive the Dagu board handles upto 48V and has an on board voltage regulator. Check out the specs for further information.
 
Before going for a walk it is important to set the servos in the neutral position. Undo the servo horns from the servo body and pull the servo horns off the splined shafts. Switch on the robot and wait for all the servos to home. Now push the horns back on, making sure the centre legs point straight out and the front and rear legs are at 45 degrees fore and aft. Also ensure the centre arms of the leg (Femur) are horizontal and the outer legs point straight down. This is the base home position. If you want to see more clearly this position take a look at the videos on Youtube (Search Youtube for Helium Frog HF08). The video "Slow moving" demonstrates the home position. Note when the robot transitions between linear and rotational moves it first returns to the home position. The home position is also shown when the robot does a little on the spot dance at the end of the video!

Its impossible to get this position exact as the splines on the servos are quite coarse, but get them near and fine tune the values in the firmware to get them exact. A 1200 microsecond pulsewidth is the base value, but play around with each servo value until the legs are nicely positioned. I found it usefull to mark out a base board with the exact positions when I was developing the robot on the bench. You can see this in the video titled "HF08 Leg Close Up".

Click the following image to get a better view of the values that you need to modify to tune the home position. As stated the base value is 1200, but you can see I have modified the values a little to get the legs nicely homed.



Controlling the robot

The robot is controlled using my own G codes in a similar way to a CNC machine. I have developed a simple Host program developed in Visual C# so control is a little more intuative.

I am still developing this software, but control is easy. Select the port the robot is connected to and select the baud rate (The firmware is currently set to 115200 baud) Open the port and the robot is ready to go. Use the buttons to move or rotate, or alternatively use the keyboard. The numberpad moves linearly (Key 5 homes the robot) and Z and X to rotate. Use the sliders to alter the robot speed, step distance and step height. Alternatively just send the G codes manually using hyperterminal or other programs. The basic command set is as follows. Check out the software though as these are still bieng developed.

G0 to  G5 controls the legs individually
Syntax G0 X100 Y50 Z-120 moves the front left leg to X100 Y50 Z-120.

This coordinate is relative to the robot centre. The Z coordinate is relative to a horizontal plane through the inner femur pivot points.

G11  Linear Move
Syntax  G11 D90 Moves the robot forward    
Syntax  G11 D0  Moves the robot Right
Syntax  G11 D180 Moves the robot Left

G20 Rotate Left (Anticlockwise)

G21 Rotate Right (Clockwise)

M10 Adjust Parameters

Syntax M10 A 80 B 100 C 30 sets speed to 80mm/sec step distance to 100mm and step height to 30mm

M114 Verbose mode toggle
This toggles off information reporting back to the host software.

M115 Firmware version
This just reports back what version of software is loaded to the machine.

If sending the commands manually. Make sure you send all the components of the command as you may get unexpected results. Also make sure the commands are in upper case.

Suggested improvements

The legs could do with bieng a bit stiffer. I have put two holes in each femur pair. A cross brace might improve things. I also used the rubber grommets to mount the servos. I think these should be removed and the servos mounted with M3 threaded rod rather than M2.

Change the servos to metal shafts versions. The cheap option is to go for Towerpro/Hextronic MG995. Unfortunately these are cloned on a regular basis, so you can get ones that don't work too well. I might buy one or two just to try first. The other option is of course to go to Hitec HS-645 MG but these are twice the price. I know they will work really well, but my robot is designed to use cheap servos. Be aware that the servo body sizes do vary a little, so you may need to file or modify a few of the parts to get a good fit.

Simplify and reduce the bolt count. I am not sure the 623 bearings are the best way to do things. I think an M6 plain pivot might work better, be easier and stiffer. By removing the brass insert in the servos, you could mount them with M3 studding rather than M2. M2 studding is quite expensive compared to M3 for some reason, its also very fiddly to assemble. M3 would be better.

Messy wiring. I could Re design the Coxa Top part to incorporate a wire guide / cable tie fixing point on each leg.

Bowden cable legs.  It would be nice to get the servos off the legs and into the body. This way the legs would be narrower meaning the robot could have a longer stride without the risk of the legs hitting each other.

Improve firmware. Currently you should really home before going from linear to rotational moves. The firmware could do this automatically if it kept a log of the last move.

Remove umbilical cord. Use on board batteries and an X bee bluetooth controller to go completely wireless.

Bodyshell. A nice covering for the electronics (A teardrop shell for example) would improve the look of the robot.

Eye Candy. Some robots have routines in the firmware for alternative gaits, body roll and pose positions. Its just a case of adding more detail into the firmware.

Remember the robot is modular, so it would be possible to change it to a quadruped or octapod quite simply.



Thats all I have at the moment. Please contact me if you are unsure of anything as I am not the best at documenting my projects and I am sure I have missed something. Please email me via the Helium Frog website with questions, pictures, suggestions and modifications.