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