# IKFast Robot Database¶

 Release: 61

Inverse kinematics statistics using IKFast: The Robot Kinematics Compiler. All possible permutations of the supported inverse kinematics types and the robot manipulators are tested.

## IKFast Performance Testing¶

There are four different ways of calling the IK solver:

• GetSolution(goal) - call with just the end effector parameterization, return the first solution found within limits.
• GetSolution(goal,*free*) - call with end effector parameterization and specify all free joint values, return the first solution found within limits.
• GetSolutions(goal) - call with just the end effector parameterization, return all solutions searching through all free joint values.
• GetSolutions(goal,*free*) - call with end effector parameterization and specify all free joint values, return all possible solutions.

The following algorithm tests these four calls by:

1. Randomly sample a robot configuration and compute the correct parameterization of the end effector goal and free joint values free.
2. Move the robot to a random position.
3. Call GetSolution(goal), GetSolutions(goal), GetSolutions(goal,*free*)
4. Call GetSolution(goal,*free_random*) and GetSolutions(goal,*free_random*). Check that the returned solutions have same values as free parameters.

For every end effector parameterization and a returned solution, set the returned solution on the robot and compute the error between the original end effector and the new end effector. If the error is greater than 0.001000, then the IK is wrong and the iteration is a failure. If no wrong solutions were returned and at least one correct IK solution is found within limits, then the iteration is a success. When the free values are not specified, the IK solver will discretize the range of the freevalues and test with all possible combinations .

The number of tests is determined by the number of free parameters: 0 free - 10000 tests, 1 free - 4000 tests, 2 free - 200 tests

Four values are extracted to measure the performance of a generated IK solver:

• wrong rate - number of parameterizations where at least one wrong solution was returned.
• success rate - number of parameterizations where all returned solutions are correct
• no solution rate - number of parameterizations where no solutions were found within limits
• missing solution rate - number of parameterizations where the specific sampled solution was not returned, but at least one solution was found.

An IK is successful if the wrong rate is 0, success rate is > 0.400000, and the no solution rate is < 0.600000. The raw function call run-time is also recorded.

Degenerate configurations can frequently occur when the robot axes align, this produces a lot of divide by zero conditions inside the IK. In order to check all such code paths, the configuration sampler common tests angles 0, pi/2, pi, and -pi/2.

  The discretization of the free joint values depends on the robot manipulator and is given in each individual manipulator page.

## Questions/Feedback

Having problems with OpenRAVE?