Capabilities

MoveIt! provides an extensive set of capabilities for working with your robots, starting with easy ways of configuring MoveIt! for use with your robot to advanced manipulation integrating object recognition and reactive control. Each individual capability is described in detail here.


 * This high-level overview diagram provides a complete overview of the system architecture of MoveIt!
 * This pipeline overview diagram provides a library-centric overview of the capabilities in MoveIt!

=Configuration=

The primary means of configuring MoveIt! for your robot is through the MoveIt! Setup Assistant. The setup assistant will perform most configuration steps for your robot, starting with a working URDF for the robot. There are still a couple of steps that needs to be done manually (1) Configuration of the interface to the controllers on your robot and (2) Configuration of the sensors on your robot.


 * Configuring the URDF - Information on how your URDF should be setup and resources for the URDF.
 * The SRDF - An overview of the Semantic Robot Description Format (SRDF).
 * Setup Assistant - The MoveIt! Setup Assistant allows you to setup MoveIt! for your robot.
 * Controller Setup - Connecting MoveIt! to the controllers on your robot.
 * Sensor Setup - Integrating the 3D sensors on your robot with MoveIt!

=Low Level Capabilities=

Kinematics
The MoveIt! kinematics components are designed to give you an out-of-the-box kinematics solver while still retaining the ability to plugin custom kinematics. In this section, you will learn how to integrate the MoveIt! kinematics components into your own work at multiple levels.
 * Overview - An overview of the kinematics components in MoveIt!
 * IKFast - Generating an IKFast solver plugin for your robot to speed up planning.
 * Configuration - Configuring the kinematics components for your robot.
 * C++ API - The C++ API to the kinematics components in MoveIt!
 * ROS API - The ROS API to the kinematics components in MoveIt!
 * Rviz Plugin - Using the Rviz plugin to interact with your robot.
 * Integrate Custom Kinematics - Integrating a custom kinematics solver with MoveIt!
 * Associated Libraries - Associated libraries.

=Core Capabilities=

Environment Representation
The set of components used for environment representation (i.e. the PlanningScene and associated classes) provide the easiest entry point into MoveIt! for collision checking, constraint checking and environment representation. If you aim to use the motion planners provided by MoveIt!, integrate sensing into your processing pipeline, write your own motion planners, or write your own integrated high-level nodes for motion planning and perception, you will be using this set of components extensively. The environment (or world) is represented by the PlanningScene class. In this section, we will explore the PlanningScene components in detail.
 * Overview - An overview of the environment representation architecture.
 * C++ API - The C++ API for the Planning Scene class.
 * ROS API - The ROS API for the Planning Scene class.
 * Rviz Plugin - Using the Rviz plugin to create scenes and interact with them

Motion Planning
The motion planners in MoveIt! are designed to move your robot to its desired goal while obeying collision and geometric constraints. In this section, you will go in-depth into the motion planners provided by MoveIt! You will also learn to work with the planning pipeline which allows different sets of motion planners to be called in parallel.


 * Overview - An overview of the Motion Planning Architecture.
 * C++ API - The direct C++ API for using the motion planners.
 * Planning Pipeline - The planning pipeline is easy to setup and provides an easy to use interface to the motion planners and planning request adapters.
 * ROS API - The ROS API for using the motion planners (via the move_group node)
 * High Level API - C++ wrappers for easy access to the motion planning functionality
 * Benchmarking - Running benchmarks with MoveIt

Execution

 * Execution of previously computed trajectories using the move_group node
 * Execution and Monitoring of planned trajectories

Visualization
Visualization tools are important for all the debugging necessary to make complicated components work well together. In this section, you will learn about all the interaction and visualization capabilities offered by MoveIt!
 * Quick Start with the PR2 - A quick start that will walk you through working with the Rviz visualizer with the PR2.
 * Robot State Display - A simple visualization of kinematic states (robot poses) with C++ code.
 * Interactive Robot Tutorial - Interact with the Rviz RobotState display using C++ code.
 * Collision Contact Vis Tutorial - Visualize collision points interactively using C++ code.
 * Launch file - walks through a launch file that can be used for running Rviz

Benchmarking
Evaluation by comparison of motion planners, kinematic configurations and different robots.

Warehouse Storage
The warehouse provides a database of planning scenes, robot states and motion planning problems.

=High Level Capabilities=

MoveGroup Interface
The MoveIt! MoveGroup interface is the place to start for using MoveIt! from C++ code. It makes moving your robot from C code quick and easy.


 * C++ Example - How to use the MoveGroup interface to move a robot using C++ code.

Python Bindings

 * MoveIt Commander - A set of Python packages that wrap functioanlity provided by MoveIt!