Kinematics/Overview

The kinematics components in MoveIt! form the basis of anything you would do with a robot. They provide the core functionality that you would require for representing a robot model, forward kinematics, inverse kinematics, computing Jacobians and representing the configuration of the robot. These components are designed to give you an out-of-the-box set of solvers for all your kinematics needs while still retaining the capability to integrate your own kinematics.

The RobotModel class
The RobotModel class ([/classmoveit_1_1core_1_1RobotModel.html Code API]) is built from a parsed URDF of a robot along with the SRDF (typically generated by the MoveIt! Setup Assistant). The RobotModel class allows access to groups, i.e. a collection of links and joints specified in the SRDF. Kinematic solvers can be configured for groups that are serial chains. This class provides access to most kinematic information you would want about the robot model, e.g. the parent joints or links for different parts of the robot.

The RobotModel currently incorporates the following types of joints:
 * FixedJointModel ([/classmoveit_1_1core_1_1FixedJointModel.html Code API]) - represents a fixed joint
 * RevoluteJointModel ([/classmoveit_1_1core_1_1RevoluteJointModel.html Code API]) - represents a single-dof rotary joint; either a continuous joint or one with joint limits
 * PrismaticJointModel ([/classmoveit_1_1core_1_1PrismaticJointModel.html Code API])- represents a single-dof linear joint
 * PlanarJointModel ([/classmoveit_1_1core_1_1PlanarJointModel.html Code API])- represents a planar joint with x,y translation and yaw rotation in a plane
 * FloatingJointModel ([/classmoveit_1_1core_1_1FloatingJointModel.html Code API])- represents a full six-dof joint.

The RobotState class
The RobotState class ([/classmoveit_1_1core_1_1RobotState.html Code API]) represents the configuration of a robot: both the set of joint states and the positions and orientations of every link in the robot. It provides you access to the JointStateGroup class ([/classkinematic__state_1_1JointStateGroup.html Code API]) which stores the configuration for a particular group. The JointStateGroup class can natively compute forward kinematics but also provides methods for computing the Jacobian (for groups that are serial chains). It can also be used to compute IK through plugins that use the KinematicsBase base class.

The JointState class provides the configuration for each individual joint in the KinematicState. The configuration is multi-dimensional, i.e. for each joint, multiple joint values can be stored and returned. This allows for the representation of multi-dof joints easily.

The KinematicsBase class
KinematicsBase ([/classkinematics_1_1KinematicsBase.html Code API]) is an abstract class that serves as a base class for custom implementation of inverse (and forward) kinematics for different robots. A default plugin (using numerical inverse kinematics solvers from the Orocos KDL library) is always available for solving inverse kinematics for any serial chain. Custom solvers may be configured for different robots (e.g. there is a custom analytical kinematics solver for the PR2 robot).

ROS Configuration
The KinematicModelLoader class ([/classplanning__models__loader_1_1KinematicModelLoader.html Code API]) provides an easy-to-use class for loading the kinematics components in ROS. It automatically provides a configured instantiation of the KinematicModel class, also configuring any plugins that are specified as ROS parameters in the namespace of the node.

Links

 * Back to Kinematics