what is the correct frame to give ik goals in?
Hi, I have been trying to use using ROS Groovy and the IKfast solver on Ubuntu 12.10, to generate 6DOF IK solutions, and have had some success, in that the robot does move the arm more or less to a point I tell it, if I give it certain quaternions as part of the goal, but am still struggling with getting the right orientation of the tip to the base.
The closest I have come to getting the solution I want is when I provide a quaternion for the goal which I think would be a +90 degree rotation around X, (x=0,y=0.7071,z=0,w=0.7071) but which results in the robot orienting the tool exactly 180 degrees out, on the Z axis.
Unfortunately whenever I attempt to get solutions with an identity quaternion, IK fails. I have actually tried all possible 90 degree transforms (there's 24 of them) to see if I could spot a pattern, but it is eluding me - about half work, and half fail. I expected to see complete failure for rotations around one particular axis, which I thought would then indicate the axis that IKFast considers to be pointing back on along the last link, and always impossible to reach.
What is the correct way to ensure the tool's orientation is pointing the way you want? I think that the goals are supposed to be relative to the base of the Ik chain, right? Is there a preferred way top set up the robot's frames? It is difficult for me to get all frames oriented with the world because of the way the meshes I am working with are oriented - and apparently reorienting them would then throw the moment of inertia figures off.
Any hints would be much appreciated!
Vivian
Are you sure the goal poses do not result in singular configurations, e.g. alignment of two axes of rotation? Not sure how if IKFast redefine the axes, but it is a goof idea to use Denavit-Hartenberg method to choose axes.
It would also help if you add kinematics scheme of your manipulator.
Thanks for the suggestion but turns out the way the axes are defined makes no difference - ikfast solves it just the same. See the rest of my answer below.