My Hexapod walks!

Yes, I am just starting to get it together.
Yes, wires everywhere.
But IT'S ALIVE!!!!

Next steps include

  • smoothing the foot lift and set, rather than the slam up and down I have now.
  • Remote Control input
  • Solve the logic for transitions from one walking mode to another

Then, further down the road, video processing for navigation and object recognition.

But small steps as they say.

Is that a custom bracket job, or did you purchase it from somewhere? It looks great, nonetheless! I've always wanted to try and replicate the ODEX-1 full-scale using modern materials, motor drives, electronics and computational advances - but aside from the cost (which might be fairly large), I just don't have the time with all my other projects waiting in line!

:slight_smile:

Looks great

Any way you could speed it up to chase people? ;D

Mowcius

I'm making hexapod too for my kid.
Could you share the code?

Thanks.

Is that a custom bracket job, or did you purchase it from somewhere?

Our first work was with wooden brackets, because we could manufacture then with the band saw and a drill. They simply bolted to the servo horns. But this puts all of the side load on the output shaft of the servo. The commercial brackets mount the servo in a frame that has a bearing on the bottom. The bracket engages both the servo horn on one side and the bearing on the other, making the joint much stronger. The down side is cost.

Any way you could speed it up to chase people?

Certainly it can walk faster. The entire step cycle is 4 seconds. I think that the step cycle can be reduced down to a half second or so. That would be 8 times faster. We will do testing to see how fast it can go without loosing accuracy on the step smoothness.

Could you share the code?

Absolutely. I have to clean up the code a bit, and put in some explanation for what the various elements are there for. I did modify the servo library to handle servo reversing and servo trim. I will include those files. They are from the 0017 version of the IDE. I have not tested them with 0018. The servo library did change some, and I have not merged my changes into the 0018 version of the library yet.

What components are you using? I got the Phoenix chassis, somewhat ant like. There are also radial chassis. My code is written for the ant version, but would work with the radial model with the legs pointed out sideways like a crab.

So far, we only walk forward. But we have constructed the various functions with hooks to hang future functionality on, like RC direction and speed control, rotational movement, translational movement (mix of forward and sideways movement with the orientation remaining the same), and turning.

Looks like you are using the phoenix body and the "round hexapod" legs, am I right? I am interested in creating a phoenix arduino controlled robot... What type of motors are they? If I remember well another of your posts you use the Mega, right?
I will follow your project with interest and Ihope to contribute!
Federico

Hi vince,

If your looking to keep the RC side of your hexapod project all Arduino you might be interested in some of the code I have posted while looking for assistance with a very nood question.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267236058

I'm currently using a Duemilanove with Liquidware Input sheilds as a dual stick 6 button transmitter via xbee for a RC tank project.

Have you implemented any IK into the movements?

I have read many times about this invers kinematic. What is exactly? :slight_smile:

It probably encompasses much more than what I am doing, but I still use the term to describe it.

Basically, if I know that I want the foot of one leg to be in a certain position, I can use algebra and trigonometric functions to calculate the angles of each joint that will put the foot in that position.

If I get a chance, I will write up a description of the formulas I am using.

It was a lot of fun using my dormant math skillz ;D

ack quicktime ... must reboot

but sounds quite cool

Looks awesome. I'm working on the radial hexapod body from lynxmotion.

I've been reading alot on the internet (probably too much for my own good because I have too many ideas floating around in my head), but I digress.

The Mega looks like the best solution for the robot for starters at least. How did you modify it to control the extra servos? I can't find any details on that aspect of using the Mega to control 18 servos.

How did you modify it to control the extra servos?

You don't need to modify anything to control 18 servos with the mega, the mega supports up to 48 servos with the standard Servo library.

The changes vinceherman made were to provide configuration to reverse the servo direction and to trim the position of the servo.

Noted.

Thanks for the prompt response, mem. I thought that was the case; I just misunderstood other posts I had read.

I am wondering if there any reason for not including this sort of modification in the standard servo library?

Why would you need the modification? To lesen the maximum amount of servos?
I don't understand what you mean.

There is the possibility that I am the one that is not understanding :slight_smile:
Looks like userful to have the possibility to reverse the direction and to trim the position of the servos, so I was wondering why this is not implemented by default...

The modifications make the code more complicated, and as originally suggested, it doubles the RAM used for each servo.
The servo direction can be reversed without adding code to the library by using the map function in a sketch ( or something like servo.write( 180-pos)
Trim can be changed using the optional parameters that set min and max values to attach.

Vinceherman's modification to change trim is more convenient for him in his application but it may seem odd to some people to have a trim function that results in a command to send a 1500us pulse actually produce a pulse that is not 1500us.

A nice thing about having source code available is that it enables people to customize things to suit their needs. But making code bigger and more complicated by adding features that most people won't use is usually not a good thing to do.

That said, I am all for vinceherman posting his modifcations in a thread for people that want these features.

Thanks for the explanation, I understand now!

I am trying to do one of this too. The objective is to stuty IA. I am thinking to use one arduino to control six servos.
But I am worry to burn the arduino by using 6 standard servo at once.

Could some one give me advice about it?

But I am worry to burn the arduino by using 6 standard servo at once.

You won't burn out the Arduino using six servos at once provided you give the servos their own independent power source (like a battery pack). Only if you try to pull the current needed completely from the Arduino can you possibly burn something out (which can happen with a -single- servo, depending on the servo's current requirements and load).