Skip to main content
Version: 7

Configure Inverse Kinematics

MoveIt Pro ships with a highly optimized pose inverse kinematics solver, called PoseIK. This document describes PoseIK and how to configure it as the default IK solver.

PoseIK

PoseIK is a highly efficient implementation of a Jacobian-based Newton-Raphson Inverse Kinematics Solver, using native MoveIt! types and algorithms.

The solver shows significant performance gains compared to KDL and TRAC_IK. These are the average solve times, in milliseconds, for three common robots:

Solve times (ms)KDLTRAC_IKPoseIK
panda1.580.3060.0421
fanuc3.280.4890.0416
Kinova Gen31.0730.3860.0321

These numbers were obtained using the ik_benchmarking package on a 12th Gen Intel(R) Core(TM) i7-12700H, 2.7 GHz, under the same conditions.

Use PoseIK as the default solver

To use this solver as the default IK solver in MoveIt Pro, update your kinematics config files (e.g. kinematics.yaml, servo_kinematics.yaml, etc.) to use this solver for a given planning group:

manipulator:
kinematics_solver: pose_ik_plugin/PoseIKPlugin
solve_mode: "first_found" # See solve modes below.
target_tolerance: 0.001 # Maximum error in meters allowed for the solution.

For an example, check out the lab_sim config.

Solve modes

Two solve modes are implemented:

  • first_found: In this mode the solver will return as soon as a solution is found. It won't try to optimize for any cost. Use this mode if you care about solve speed and don't have a preference on the solution.
  • optimize_distance: In this mode the solver will always run for a given period of time, in order to find better solutions, even if one was found already. The solver will prefer solutions closer to the seed (initial joint configuration) in joint-space. Use this mode if your application can afford spending additional time in IK in exchange for better solutions.

The solve mode can be configured via the solve_mode config parameter, to be included in the YAML config file (see example above).