PDA

View Full Version : [Question(s)] 4 dof ik

mturneruk
03-31-2017, 10:08 AM
Hi all..

I am trying to add a 4th DOF to my legged robot. I have managed to find and prove IK that works if the last part of the leg (Tarsus) remains vertical.

Please see this image and spreadsheet.
6934

Links to Image and Spreadsheet.
https://drive.google.com/file/d/0B8lI9N1TJHgkV3hTb24wOG96cm8/view?usp=sharing
https://drive.google.com/file/d/0B8lI9N1TJHgkZkZpb2Ewb2pUMzQ/view?usp=sharing

What i want though is for the last part of the leg to vary it's angle to allow the legs to reach further and also be more flexible. I can see that Zenta has achieved this in the Phoenix code, but i don't understand his code.

Any help much appreciated.

Thanks
Martin

jwatte
03-31-2017, 12:55 PM
You cannot, in general, make the fourth axis always vertical, and still get three degrees of freedom in positioning.
You need five independent degrees of freedom in your armature to get three degrees of position and two degrees of angle.
At that point, the leg will still pivot when walking, but otherwise the contact point can remain at a position and stay vertical.

Unfortunately, the image you linked to requires forum registration and login on some other forum, where I'm not a member, so I can't tell you much more than that.

mturneruk
04-01-2017, 03:32 AM
Sorry about that. I have fixed the image and also put a link to my spreadsheet with the workings.

My project is this Quadruped.
https://www.youtube.com/watch?v=jWKsVjQuVpQ`

Here is a robot that has IK that allows the tarsus to vary its angle. (Phoneix Code).
https://www.youtube.com/watch?v=RgV6BoCdTcc

jwatte
04-01-2017, 03:04 PM
Yes, I am familiar with quadrupeds!

Neither of the robots you link to keep the tarsus always vertical when moving the legs.

What, specifically, is your question? The Phoenix code isn't terribly bad (although I personally think the particular indentation style is not easy to read) so if you could ask a specific question, I'm sure that someone could attempt to give a specific answer!