Hexapod

by fidi665 in Circuits > Robots

15227 Views, 79 Favorites, 0 Comments

Hexapod

IMG_E4075.JPG
IMG_E4010.jpg
zenta03.jpg

I'm interested for some years to play around and creating robots and I was inspired very much by Zenta, here you'll find his Youtube channel https://www.youtube.com/channel/UCmCZ-oLEnCgmBs_T and his web site http://zentasrobots.com.

You can find a lot of kits by many different vendors in the internet, but they are very costly, up to 1.500$+ for a 4 DoF hexapod, and kits from china don't have a good quality. So, I've decided to create in hexapod in my way. Inspired by Zenta's hexapod Phoenix, you'll find it in his Youtube channel (and a kit you can find http://www.lynxmotion.com/c-117-phoenix.aspx , I've started creating my own from scratch.

For creating if set the following targets/requirements for my own:

1.) Have a lot of fun and learn new things.

2.) Cost driven design (damn, my company spoiled me totally)

3.) Parts made of ply wood (because it's easier for most people and also me to cut wood)

4.) Using free available tools (software)

So, what I've used so far?

a) SketchUp, for the mechanical design.

b) Beech ply wood 4mm and 6mm (1/4").

c) Arduino Uno, Mega, IDE.

d) Digital standard servos (found at amazon for a good price).

e) Dosuki and Bandsaw, a drilling machine, sanding paper and a file.

Legs and Servo Brackets Construction

IMG_E3943.JPG
IMG_E3944.JPG
IMG_E3945.JPG
IMG_E3946.JPG
IMG_E3948.JPG

First I was doing some research in the internet to find out how to do a robot, but wasn't very successful finding good informations of how to do mechanical design. So I was struggling a lot and finally I've decided to use SketchUp.

After some hours of of learning by doing with SketchUp, I've finished with my first design of the legs. The femur is optimized to the size of the servo horns I'm using. As I figured out the original seems to be around 1" in diameter, but my servo horns have 21mm.

Make a printout with the right scale was not working correctly with SketchUp on my computer, so I've saved it as PDF, made a printout with 100%, did some measurement and finally printed again with the right scaling factor.

For the first try I was creating only arts for two legs. For this I stacked two boards, glued (for wall paper) the printout on it and cut out the parts with a model craft bandsaw.

Material used: beech ply wood 6mm (1/2")

Afterward I made some experiments, I haven't documented, and did some optimizations. As you can see the tibia is a little oversized as well as the femur.

To mount the servo horns through the femur, 2 mm of the material has to be cut off. This can be done in different ways. With a router or with a Forstner drill. The Forstner was only 200 mm in diameter, so I had to do some postwar by hand with a chisel.

Optimizing the Femur and Tibia

Screenshot 2017-10-01 10.01.16.png
Screenshot 2017-10-01 11.10.13.png
IMG_E3954.JPG
IMG_E3955.JPG

I've changed the design a little bit.

1.) Tibia is now fitting the servo I'm using much better.

2.) Femur is now a bit smaller (about 3" from axis to axis) and fitting the servo horns (21 mm diameter).

I was using 6 board of 6 mm ply wood and glued them together with double sided tape. If this is not strong enough you can drill a hole through all boards and use a screw to fix them together. then a parts are cut out at once with the bandsaw. If you're tough enough you can also use a jigsaw :-)

Downloads

Designing the Servo Bracket

Screenshot 2017-10-01 10.32.52.png
Screenshot 2017-09-20 22.47.52.png
Screenshot 2017-09-20 22.48.57.png
Screenshot 2017-10-01 11.04.20.png

Now it's time to design the servo bracket. This is strongly designed related to the used servo I've used. All parts are made of beech ply wood 6 mm again see next step.

Downloads

Cutting and Assembling Servo Brackets

IMG_E3956.JPG
IMG_E3958.JPG

Again I've cut six parts at the same time all on the bandsaw. Method is the same as before.

1.) Using double sided tape, to glue the boards together.

2.) Screws to have more stability while cutting (not shown here).

Then I've used some model craft glue to stick them together and two SPAX screws (not applied yet in the photo).

Compared to the original hexapod I'm not using ball bearings yet, instead I'm using only 3 mm screws, washers and self fixing nuts later to assemble the legs with the body/chassis.

Assembling the Legs and Test

IMG_E3960.JPG
IMG_E3952.JPG
IMG_E3961.JPG
IMG_3949.JPG
Hexapod single leg
IMG_E3964.jpg

In the first two pictures you see the first version of a leg. Next you see comparison of old and new parts and a comparison of the new parts (version two) to the original (photo in background).

Finally you'll a first movement test.

Constructing and Assembling Body

Screenshot 2017-10-01 14.54.03.png
IMG_E3988.jpg
IMG_E3989.jpg
IMG_E3990.jpg
IMG_E3991.jpg
IMG_E3992.jpg

The body I've tried to reconstruct from photos. As reference I've used the servo horn, which I assumed with 1" diameter. So, the front side becomes a width of 4.5" and middle 6.5". For the length I assumed 7". Later I've bought the original body kit and compared it. I was getting very close to the original. Finally I've made a third version, which is a 1:1 copy of the original.

The first body kit I've made of 6 mm ply wood, here you see the second version made of 4 mm ply wood, which I've found out is strong and stiff enough. Different to the original kit I was mounting the servo horn on top, resp. through the material (you can see this also with the femur). The reason is, I not in the mood to buy expensive aluminum horns, instead I want to use the already delivers plastic horns. Another reason is, I'm getting closer to the servo, so sheering forces are less. This makes a more stable connection.

By the way, sometimes it is good to have Ganesh on board. Thanks to my friend Tejas :-)

Downloads

First Elektronics Tests

IMG_4010.JPG
Hexapod simple sequences test

All arts are assembled together now. OK, I know it's not looking very beautiful, but actually I'm experimenting a lot. In the video you can see playing some simple predefined sequences, actually there's no inverse kinematics implemented. The predefined gait isn't working properly because it's design for a 2 DoF.

In this example I'm using the SSC-32U servo controller from Lynxmotion, you'll find it here: http://www.lynxmotion.com/p-1032-ssc-32u-usb-serv...

Some days ago I was also using another PWM controller (Adafruit 16-channel PWM controller, https://www.adafruit.com/product/815 ), but the SCC has actually some nice features, like slow down the servos.

So, thats it by now. Next I have to find out how to do the inverse kinematics (IK) works, maybe I'll program a simple gait like the predefined in the SSC controller. I've already found a ready to use example here https://github.com/KurtE/Arduino_Phoenix_Parts, but I hav't got it run yet. Have not idea why, but I'm working on.

So, here's a short ToDo list.

1.) Programm a simple gait like build in in the SSC.

2.) Programm a PS3 controller class/wrapper for the Arduino Phoenix.

3.) Get the code from KurtE running or write my own code.

The servos I'm using I've found at Amazon https://www.amazon.de/dp/B01N68G6UH/ref=pe_3044161_189395811_TE_dp_1 . The price is quite good, but the quality could be much better.

First Simple Gait Test

Hexapod gait demo

As I mentioned in the last step, I've tried to program my own gait sequence. This is a very simple one, like a mechanical toy, and it is not optimized to the body I'm using here. A simple straight body would be much better.

So, wish you a lot of fun. I have to learn IK now ;-)

Remarks: When you watch the legs carefully, you'll see that some servos behaving strange. What I mean is, they are not moving always smooth, maybe I have to replace them by other servos.

Porting PS3 Controller

This morning I was working on writing a wrapper for the Phoenix code. Took me some hours, about 2-3, to do that. the code is not finally debugged and I've added some extra debugging to the console. It works so far :-)

But by the way, when I was running the Phoenix code, it looks like that all servos running inverted (opposite direction).

When you want to try out by yourself you need the code from KurtE as a basis https://github.com/KurtE/Arduino_Phoenix_Parts . Follow the instructions for install the code. Copy the Phoenix_Input_PS folder to your Arduino library folder (usually subfolder of your sketch folder), and the Phoenix_PS3_SSC32 folder to your sketch folder.

Info: If your not experienced with Arduino and tools and have some trouble, please contact Arduino community (www.arduino.cc). When you have trouble with the Phoenix code from KurtE please contact him. Thanks.

Warning: Understanding the code is in my opinion nothing for beginners, so you have to be very familiar with C/C++, programming and algorithm. The code has also a lot of conditional compiled code, controlled by #defines, this makes it very difficult to read and understand.

Hardwarelist:

  • Arduino Mega 2560
  • USB host shield (for Arduino)
  • PS3 controller
  • LynxMotion SSC-32U servo controller
  • Battery 6 V (please read the requirements off all your HW, else you may damage it)
  • Arduino IDE https://www.arduino.cc/en/Main/Software
  • Some USB cables, switches and other small parts as needed.

If you like to a PS2 controller, you'll find a lot of information in the internet about how to connect to Arduino.

So, please be patiently. I'll update this step, when the software works correctly.

First IK Test

Hexapod first IK test

I've found a different port of the Phoenix code which runs much better ( https://github.com/davidhend/Hexapod ), maybe I have configuration problem with the other code. The code seems to be a little buggy and the gaits are not looking very smooth, but for me this is a big step ahead.

Please consider, the code is actually experimental. I have to clean up and correct a lot and will publish an update the next days. The PS3 port is based on the already published PS3 port, and I've discarded the PS2 and XBee files.

Second IK Test

Hexapod Phoenix Code

Solution was so easy. I had to correct some configuration values and invert all servo angles. Now it works :-)

Tibia and Coxa EV3

IMG_E4075.JPG
IMG_E4044.JPG
IMG_E4046.JPG
IMG_E4067.JPG

I couldn't resist, so I've made new tibias and coxa (servo brackets). This is now the third version I've made. The new ones are more round shaped and have a more organic/bionic look.

So, actual status is. The hexapod is working, but still have some trouble with a few things.

1.) Haven't found out why the BT has a delay of 2..3 seconds.

2.) Servo quality is poor.

Things to do:

* Wiring of the servos have to be improved.

* Need a good battery holder.

* Have to find a way to mount the electronics.

* Re-calibrate the servos.

* Adding sensors and a voltage monitor for the battery.

Smooth Shaped Femur

IMG_4125.jpg
IMG_4119.jpg
IMG_4120.jpg
IMG_4121.jpg
IMG_4118.jpg
IMG_4122.jpg
IMG_4126.jpg

Some days ago I've already made some new femur because I wasn't satisfied fully with the previous one. In the first picture you'll see the differences. The old ones had a diameter of 21 mm at the ends, the new ones have a diameter of 1 inch. I made sink holes into the femur with my milling machine with a simple helping tool, as you can see in the next three pictures.

Before making the sinks in into the femur it makes sense to drill all holes, otherwise it may become difficult. The servo horn fits very good, next step, not shown here, is giving the edges a round shape. For this I've used a router bit with a radius of 3 mm.

On the last picture you'll see a comparison of the old and new one. Don't know what you think, but I like the new one much more.

Final Steps

Hexapod Gait Demo 2
DSC_5487_DxO_sm.jpg
DSC_5488_DxO_sm.jpg
DSC_5489_DxO_sm.jpg
DSC_5490_DxO_sm.jpg

I will finish this tutorial now, else it will become an endless story :-).

I the video you'll see the Phoenix code of KurtE running with some of my modifications. The robot isn't moving perfectly, sorry for that, but the cheap servos have a bad quality. I've ordered some other servos, I've just tested two of them with good results, and still waiting on the delivery. So, sorry I can't show you how the robot works with the new servos.

Back view: A 20 amps current sensor, left of the 10 k pot. When robot walks it will consume easily 5 amps. Right of the 10 k pot you'll see an OLED 128x64 pixel showing some status information.

Front view: A simple ultrasonic sensor HC-SR04, not integrated yet in SW.

Right side view: MPU6050 accelerator and giro (6-axis).

Left side view: Piezo loudspeaker.

Mechanical design is now more or less done, except of the servos. So, next tasks will be integrate some sensors into the SW. For this I've created a GitHub account with the SW I'm using which is base on a snapshot of KurtE's Phoenix SW.

OLED: https://www.adafruit.com/product/326

My GitHub: https://github.com/fidi665/Arduino_Phoenix_Parts