MoveIt! Tutorials

These tutorials will run you through how to use MoveIt! with your robot. It is assumed that you have already configured MoveIt! for your robot - check the list of robots running MoveIt! to see whether MoveIt! is already available for your robot. Otherwise, skip to the tutorial on Setting up MoveIt! for your robot. If you just want to test MoveIt!, use the PR2 as your quick-start robot.


All tutorials referencing the PR2 have only been tested with ROS Indigo but likely work with ROS Jade. See issue for more information.

Before beginning the tutorials it is recommended that you read through the Concepts page to get a general overview of how MoveIt! works. This page runs through some of the basic concepts underlying the MoveIt! system architecture, interfaces and usage.


The primary user interface to MoveIt! is through the move_group_interface. You can use this interface both through C++ and Python. A GUI-based interface is available through the use of the MoveIt! Rviz Plugin. We will walk through each of these interfaces in detail:


This set of advanced tutorials is meant for developers who are using MoveIt!’s C++ API. Most users wanting to access MoveIt! in C++ or Python should use the move_group_interface (above).

Integration with New Robot

Before attempting to integrate a new robot with MoveIt!, check whether your robot has already been setup (see the list of robots running MoveIt!). Otherwise, follow the tutorials in this section to integrate your robot with MoveIt! (and share your results on the MoveIt! mailing list)


The original MoveIt! tutorials were created by Sachin Chitta, Dave Hershberger, and Acorn Pooley at SRI International. Further improvements have been made by Dave Coleman, Michael Gorner, and Francisco Suarez. Please help us improve these docs!

Open Source Feedback

See something that needs improvement? Please open a pull request on this GitHub page