Hexapod project for school

Hello guys,

I’m kinda new to this hobby, but I’m very interested. I fell in love with the hexapods, watching Zenta’s A-Pod walking around in 2009, Thanks for that, Zenta!
So, I wanted to build one for myself and the first thing was a CAD model by Google SketchUp.

In the course of time there were a lot of improvements, the first picture shows not the final design, but you can see i was inspired by Zenta’s T-Hex :slight_smile:

So this was nearly 2.5 years ago, but this year in my vocational school, i have the possibility to build it for the “Mechatroniker Exposition” (little thing, were the mechatronics of the school show their talent and ability)
Anyway, in my company we have a laser cutting machine and the body and the legs were cut out for me.

Also I knew, I use the ARC-32 Board, because this should be a kind of a low cost project.

The next step was to place all the servos and I used the MG995 -> come from china and just one fifth works well but hey, they are cheap :slight_smile:

I just had to assemble the feet to the body, but custom made alu brackets are too weak, so i decided to make them out of V2A with just 1.5 mm thickness.
After bending and welding them together I could assemble the whole kit.

I would very appreciate if I may name him T-Phoenix because of the design of Zenta’s T-Hex and the Phoenix legs.

Servos are assembled after the Phoenix Assembly Guide.
But now I would have a few questions :slight_smile:

  1. I want to remote control it, I know there’s a PS2 Controller, but is the receiver included and how do I connect it to the ARC 32?
  2. Of course I want it to walk, is there already a code written for the ARC-32?

Thanks a lot for reading my story :slight_smile:

Raphael Dietz








Impressive, i like the unique look :slight_smile:.

About your first question, I made an order about 3-4 months ago that included a controller, the controller came with its own receiver, i didn’t need to buy one on its own. About connecting it to the ARC 32 … im not sure how but i think you might be able to find a guide somewhere around the forums.

Good luck with your future plans .

Thank you, you helped me a lot but there’s one more question :slight_smile:
Where can I find the code that “revives” my hexapod, because I don’t know how to do this I’m sorry :wink:

Im sorry i cant help you in that area, i’ve never used ARC 32 before, but i dont think its any different from atom pro in terms of programming

Nice parts! Nice 'bot!

I think Kurt has code to run on the ARC-32.

It came with a receiver? What kind, what do you want to connect?

Alan KM6VV

Alan KM6VV

Not sure if the question is directed to me but yea, i order PS2 controller and it came with one receiver, i just checked my order from 3 months, i didnt order a receiver, only controller :slight_smile:

Yeah the PS2 controller comes with a receiver, but some of our customers asked for spares so they could control more than one robot.

Thanks guys :slight_smile:
nodna.de/Roboter-Zubehoer/Co … --696.html
-> it says “It includes a small receiver module (not pictured), that plugs into our PS2C-01 cable”
so at least I have to buy the adapter too, which costs only 7.47 €, no problem :wink:

Now I think I have to talk to someone who knows how to connect the receiver with the ARC-32, and have a talk to kurte about the code :smiley:

R_ALF

You plug it in :smiley: :laughing:

I used the Aux2 header (you can see the pin numbers in the source file.), but I believe it is P40-43. Why these? Because they added pull up resistors (47K which are pretty weak), but it got it done for the DAT line, which was important. I then grabbed +5v and GND from some place on the board…

Note: This was with earlier version of Arc32. Not sure if anything changed in the newer versions. Don’t have one so can not test. They maybe have updated the datasheet for it, not sure…

Kurt

Updated data sheets?

Alan KM6VV

Yes, there are now up to I believe Rev C of the board. The newer boards have differences, like VS=VL type jumper likewise VS1=VS2. Plus they changed some of the layout, like Aux1/Aux2. I heard rumors that some of the pins on these may have changed… But up till this last week none of the documents were updated. Looking today it looks like maybe they have been updated.

Kurt

I’ll have to check it out. I haven’t looked for a while…

Alan KM6VV

Very cool man, well done.

Thanks snarez! And to everyone’s interest, I appreciate it!

Hey kurte, I know there’s already written a code for the Basic Atom Pro/SSC-32. Does my ARC-32 understand the same language, or is it something with the “hservo” commands I read not to long ago in the forum.
Would be cool if i may use an already written code, I’m still learning :wink:

R_ALF

No the code is different and yes we do have Phoenix code for it.

If you look in the Beta 2.1 thread, you will see places where I am pretty sure I uploaded Arc32 phoenix zip files. It will be configured to my Robot, but…
viewtopic.php?f=8&t=7658

More details about my conversion in the earlier thread: viewtopic.php?f=8&t=6042

Kurt

Yes kurte, I found the thread you wrote. There are some of them and I think the “Phoenix Beta 2_1 ARC32 Ps2” is right, isn’t it.
You guys did a great work writing the codes for every single controller, that’s great, didn’t found it before you posted it :wink: Thanks, you helped me a lot, thought the programming would be the biggest problem

Just ordered the PS 2 controller from my local dealer, can’t wait for it :slight_smile:

R_ALF

So the PS-2 controller came the day before yesterday and there’s a receiver included. I bought the adapter-cable, too. How to connect the receiver with the board, there’s already enough posts and I found it quite easily.
Now I programmed it, and it walks, even with the PS-2 controller.
BUT there’s one problem, ok there are a few :wink:
Its right rear leg, (standing behind it and looking down) the femur servo turns reversed, so when it should move up it moves down. Is there any “servo reverse function” because I found none.
And how are the mechanical limits calculated, I can see they’re going from -760 to 1060 for example but where are they ending.
And the last one, one servo is shaking when it moves, but it works fine in its normal position.

Thanks for helping :wink:

R_ALF


That is strange, as all of the right legs should act alike and likewise for the left legs. The reversing function is built into the file phoenix_driver_arc32.bas. Look at the function UpdateServoDriver and you will see that there is different code for legs 0-2 than there is for 3-5 as half of them need to be reversed. In this case I think you are having problems with leg number 0…

With a protractor… You measure and the example you give says it can go from -76 degrees to 106 degrees.

Not sure what to say here…

Kurt

I found the part of the code you said, but there you can only change either one side of the feet or the other, but single legs aren’t displayed. I tried to use another servo, but it was the same result. Now I will try to use a different pin, then I will see…

And the shaking servo is still there, tried to use a different servo again, and nothing changes, but this is not so bad. The main focus is now on the right rear leg :wink:

R_ALF

You should not need to do this??? but if all else fails you can always hack the code. Something like:

[code];--------------------------------------------------------------------
;[SERVO DRIVER] Updates the positions of the servos
;**********************************************************************
UpdateServoDriver:
;Update Right Legs
; BUGBUG : should we convert the offsets to their own table that has been pre multiplied?..
for LegIndex = 0 to 2
aswCoxaServo(LegIndex) = (-CoxaAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cCoxaPin(LegIndex)) ; Convert angle to HServo value
if LegIndex = 0 then
aswFemurServo(LegIndex) = (FemurAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cFemurPin(LegIndex))
else
aswFemurServo(LegIndex) = (-FemurAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cFemurPin(LegIndex))
endif
aswTibiaServo(LegIndex) = (-TibiaAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cTibiaPin(LegIndex))
#ifdef c4DOF
aswTarsServo(LegIndex) = (-TarsAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cTarsPin(LegIndex))
#endif
next

;Update Left Legs
for LegIndex = 3 to 5
aswCoxaServo(LegIndex) = (CoxaAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cCoxaPin(LegIndex))
aswFemurServo(LegIndex) = (FemurAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cFemurPin(LegIndex))
aswTibiaServo(LegIndex) = (TibiaAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cTibiaPin(LegIndex))
#ifdef c4DOF
aswTarsServo(LegIndex) = (TarsAngle1(LegIndex) * StepsPerDegree ) / 10 + aServoOffsets(cTarsPin(LegIndex))
#endif
next

PrevSSCTime = SSCTime
return[/code]

Again I see no reason you should need to do it, but.
Kurt