KurtE / Phantom_Phoenix

Lynxmotion Phoenix code ported to Trossen PhantomX
94 stars 34 forks source link

Add octopod configuration #1

Closed KevinGrandon closed 9 years ago

KevinGrandon commented 9 years ago

@KurtE - This is not yet functional, but the beginning of a potential configuration for octopods. This uses some measurements that I took for the Edge kit, as well pin numbers which are currently local to my robot.

Let me know what you think, and if this is something that you'd want within the main repo. Thanks!

KurtE commented 9 years ago

Hi Kevin,

What might be good is if you created a new branch (like octopod) for this, which once you have some stuff working, we can decide if it should stay it's own branch or to then pull the branch back into the main one.

Thanks

KevinGrandon commented 9 years ago

Hey Kurt, that sounds good. I'll go ahead and open a pull request against a new branch shortly. Once we have a video of the octopod working and the code looks good maybe we can put it in the main branch.

This is actually pretty close I think, just missing something small. The outside four legs seem to work properly, but the middle four don't yet. They seem to hone into the body while the outer four move properly. The inside legs seem to lift up and touch the undercarriage, so it seems that some calculation is off. Let me know if you have any ideas.

KurtE commented 9 years ago

I would probably play some with the default leg positions. Try moving them out a little and see if that helps

KevinGrandon commented 9 years ago

Would this be cRMRInitPosZ, cRMFInitPosZ? These are currently listed as 0, and I left the default X/Y/Z of the middle legs to copy the hexapod.

I'll try adjusting these numbers later tonight. I'm still lacking knowledge about how to calculate the default position in X/Y/Z space, but I will give it a shot!

KurtE commented 9 years ago

The X and Z init positions have to do with how far from the body the leg should be. ie the actual length from the body is sqrt(x_x + z_z). The simple simple triangle stuff. So what sets these values is then what angle do you wish for the legs to be initialized to. With the hexapod the middle legs are perpendicular to the body, so the z offset is 0 (ie the whole distance is in the X direction).

Assuming you start off with all 4 middle legs like this 0 for them is fine. The next thing to also look at is the Min/Max angles and also potentially if the angles are to inverted or not...

I will try to take a look as well later.

Kurt

KevinGrandon commented 9 years ago

Thanks for the hint Kurt. After looking at the angle definitions again, it does appear that the hexa and quad had differing inverse definitions for each side. Updating these does seem to position all of the legs correctly!

The gaits are looking pretty good, but I noticed that the Tibia servos are not moving. Working on that now, but once that's done it seems like it should be fully functional.