Skip to main content
Version: 7

Computing Inverse Kinematics

Computing Inverse Kinematics (IK) is a fundamental problem in robotics. Given a desired end-effector pose, the goal is to find a set of joint angles that will achieve that pose. MoveIt Pro provides a highly optimized pose IK solver called PoseIK. This document describes the different Behaviors available to compute Inverse Kinematics.

PoseIK

PoseIK offers significant benefits over other IK solvers:

  • Performance: PoseIK is orders of magnitude faster than existing open-source solvers.
  • Deterministic: PoseIK is deterministic and will always return the same solution for the same input.
  • Support for cost functions: PoseIK supports cost functions to optimize the solution based on user-defined criteria.
  • Support for multiple end-effectors: PoseIK can solve IK for multiple end-effectors simultaneously, even if those end-effectors are on kinematic chains that share common links (e.g. a humanoid torso with two arms).

See this guide for information on how to configure PoseIK as the default IK solver in your workspace.

A Behavior to compute Inverse Kinematics

Required Version
This feature requires MoveIt Pro version 7.6 or newer.
tip

To see an example in action, start MoveIt Pro using moveit_pro run -c multi_arm_sim and run the Multi-tip IK Example Objective.

The ComputeInverseKinematics Behavior uses PoseIK to compute Inverse Kinematics for a given set of Cartesian-space goals. The Behavior can solve IK for a single end-effector (most typical case) or multiple end-effectors simultaneously. It takes the planning group name as input, as well as the desired end-effector poses and corresponding tip link names to compute IK for.

It outputs the joint states for the given planning group that achieve the desired end-effector poses.

Then you can command the robot to move to those joint configurations with other Objectives like Move To Joint State.

Computing Inverse Kinematics as part of an MTC Task

tip

To see an example in action, start MoveIt Pro using moveit_pro run -c lab_sim and run the Grasp Planning Objective.

MoveIt Pro includes a Behavior called SetupMTCBatchPoseIK that can be used to evaluate a set of IK goals for a given planning group. MTC will then use PoseIK to compute IK for each goal in the set, and rank the solutions based on a cost function (typically joint-space distance to the current robot configuration). The solutions are then fed into the larger planning pipeline for further processing.

A typical use case of this Behavior is to find a feasible grasp / place pose amongst a set of candidate poses. This Behavior only supports a single end-effector at the moment (i.e. kinematic chains).