Goal Tolerance for Inverse Kinematics - How does it work?
Hello,
I am using Move-It! to control a Kuka youBot arm. Within Move-It!, which uses something called "KDL Kinematics Plugin" to do its inverse kinematics by default, there is an option to set goal tolerances. I set my goal tolerance in position to 0.01, and my goal tolerance in orientation to 0.1. Then I commanded the robot to 2 poses which I already knew what it was supposed to look like. Move It! claimed that it could not "sample any valid states for the goal tree," and the process failed on the second of the two poses. Initially I thought the tolerance was too low so I increased position tolerance to 0.1, and now the other pose which used to succeed fails and the youBot can't do either pose. So I decreased my tolerances back to 0.01 in position, and then decreased the tolerance to 0.01 in orientation, and suddenly the robot can do both poses.
Here's my question. Can anyone tell me:
why a LOWER tolerance results in more successfully sampled goal states? My logic is, when the robot has more freedom to move, it should sample plenty of reasonable goal states. But apparently it is the opposite, and tightening the tolerances actually results in more frequent success.
What the units are of MoveIt!'s goal tolerance? I assumed meters for position and radians for orientation.
Thank you,
-Adrian
EDIT: I tried many different tolerances and they all give different results. So it isn't actually guaranteed that a lower tolerance will work better than a higher one.
I noticed that the higher the goal tolerance, the more percentage of success in the IK alguorithm. Perhaps you can send your questions to the moveit mailing lists (you get better responses than ros answers).