Ikine3 and joint limits in inverse kinematics

450 views
Skip to first unread message

Thomas Feix

unread,
Nov 12, 2012, 4:03:36 PM11/12/12
to robotics...@googlegroups.com
Hi, 

I am trying to model fingers using the toolbox. A finger is modeled as a three link structure at this point, and they move within one plane. I would like to check, given a point in space, if the finger can reach that given point (match the fingertip location, I do not care about the orientation of the fingertip). 

I am trying the following:

L1(1) = Link([0 0 1 0 0 0]);
L1(2) = Link([0 0 2 0 0 0]);
L1(3) = Link([0 0 3 0 0 0]);
R = SerialLink(L1,'qlim',[0 pi/2; 0 pi/2; 0 pi/2]);


Now i would like to calculate the inverse kinematics given a point:
q = R.ikine(transl([3 -3 0]),[10 10 10],[1 1 1 0 0 0])

Works fine, only that is does not take the qlim into account. I read in another thread the they are currently not taken into account at all. Are there workarounds for that?

My second approach is to use ikine3 instead: 
q = r.ikine3(transl([3 -3 0]))

I get the following error message:

Undefined function or variable 'd4'.

Error in SerialLink/ikine3 (line 136)
    Psi = acos((a2^2-d4^2-a3^2+V114^2+Pz^2)/(2.0*a2*r));

Looking at the function, it seems to me that d4 is never assigned the first place?!


Any help would be really appreciated,
Thomas

Peter Corke

unread,
Nov 17, 2012, 4:28:12 PM11/17/12
to robotics...@googlegroups.com
To solve for the inverse kinematics with joint constraints would need a constrained optimiser like fmincon to do the hard work.  It's on the list but there's a few things in front of it.

The maximum reach of the finger is 1+2+3, or 6, so perhaps just a simple test of Euclidean distance would be enough for a fast initial filtering step.

The ikine3() function was a quick hack from ikine6s() which I thought would be useful, but I didn't think it through properly.  The way the Puma is defined, which is what this solution is for, the lower arm length is actually part of the fourth link (d4) and this function takes only a three link robot.  I think ikine3() will either go, or be replaced by the approach from Spong etal. page 108.

peter

Thomas Feix

unread,
Nov 30, 2012, 10:55:11 AM11/30/12
to robotics...@googlegroups.com
Hi!
Thanks for the answer! 
I ended up with some sort of geometric solution, which seems to work just fine. 
Reply all
Reply to author
Forward
0 new messages