Skip to main content
Version: 8

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 for MoveIt Pro.

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
note

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) 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).