Source code for all the tutorials presented here and most of the configuration files for the tutorials can also be found in the pr2_arm_navigation_tutorials package.

Automatically configuring and using arm navigation (Electric)

  1. Planning Description Configuration Wizard

    This tutorial explains the use of the planning description configuration wizard, which automatically generates a stack containing configuration and launch files used in arm planning.

  2. Understanding and adjusting the auto-generated arm navigation application

    This tutorial will walk you through the launch files generated by the planning description visualization wizard and describe aspects you may wish to change for your robot.

  3. Planning Components Visualizer

    This tutorial explains the planning components visualizer in the move_arm package, and how it may be used to interact with a robot.

  4. Warehouse Viewer

    Learn to use the planning scene warehouse viewer, a GUI application for editing, loading, and saving planning scenes and trajectories.

Using the Planning Scene architecture (Electric)

  1. Checking a state for validity

    In this tutorial we show how you can use the planning scene architecture with the environment monitor, as well as code in the planning_environment stack to check state validity - whether or not a given state is within the joint limits, or in collision with the robot's other links or the environment. You'll also see how to publish markers based on this information.

  2. Checking Trajectory Validity

    This tutorial will describe using the Planning Scene Architecture to check whether or not an entire Joint Trajectory is valid: focusing on whether it obeys joint limits and avoids collision.

  3. Adding Virtual Objects to the Planning Scene

    In this tutorial we show how to add virtual objects to the Planning Scene and to check state validity against the virtual objects.

  4. Attaching Virtual Objects to the Robot

    In this tutorial we describe attaching virtual objects to the robot's body - these are objects that are assumed to move with the robot instead of being static in the environment.

  5. Understanding the arm navigation Planning Scene Architecture

    This tutorial will go into the new formulation of arm navigation 1.0, focusing particularly on the Planning Scene. It will describe what it is, the design philosophy behind it, and how to use it in different contexts.

Moving the PR2 robot arm using motion planning (Diamondback and Electric)

This set of tutorials will show you how to move the PR2 robot arm to cartesian and joint goal positions while avoiding collisions (all sections are taken from the tutorial of move_arm).

  1. Getting started with arm navigation

    This tutorial describes how to get started with using the arm navigation stack to plan and control a robot arm.

  2. Moving the arm to a joint goal

    In this tutorial, we will use a simple action client to get the move_arm node to move the arm to a joint goal.

  3. Moving the arm to a pose goal

    In this tutorial, we will use the action client to send a pose goal for the move_arm node to move the arm to.

  4. Specifying complex pose goal constraints

    In this tutorial, we will use the action client to send a pose goal for the move_arm node to move the arm to. We will also learn how to specify a region of tolerance for the pose goal using a geometric shape.

  5. Specifying path constraints for motion planning

    This tutorial will show you how to specify path constraints for move_arm. This is useful, e.g., if you want to execute tasks like moving a glass with water in it. You can use the path constraints to specify that the glass should stay approximately upright.

Using kinematics for the PR2 robot arm (Diamondback and Electric)

This set of tutorials will show you how to compute kinematics for the PR2 arms. These tutorials also show an example of how the motion_planning_environment can be used for checking collisions.

  1. Getting started with kinematics for the PR2

    This tutorial will show you how to get started with computing position forward and inverse kinematics for the PR2.

  2. Getting kinematic solver info from a kinematics node

    This tutorial will show you how to get information about the links and joints that a kinematics solver deals with.

  3. Forward kinematics for the PR2 arms

    This tutorial will show you how to use a kinematics node to solve the forward kinematics and get the cartesian positions for the links on a PR2 arm.

  4. Inverse kinematics for the PR2 arms

    This tutorial will show you how to use a kinematics node to solve the inverse kinematics and get the joint positions for a desired cartesian position of the PR2 arms.

  5. Collision free inverse kinematics for the PR2 arms

    This tutorial will show you how to use a kinematics node to get collision free inverse kinematics solutions for a desired cartesian position of the PR2 arms.

Environment representation for motion planning (Diamondback)

This set of tutorials will show you how to create and use an environment representation for motion planning. The environment representation contains a robot, objects that are sensed in the world or inserted manually into the environment and a collision representation of the world.

  1. Making collision maps from self-filtered laser data

    This tutorial introduces the processing pipeline that takes scans from the tilting laser on the PR2, self-filters the robot from the data, and constructs a collision map that can then be used for checking potential collisions.

  2. Checking collisions for a joint trajectory

    This tutorial will show you how to check whether an input joint trajectory is in collision, violates joint limits or satisfies constraints.

  3. Checking collisions for a given robot state

    This tutorial will show you how to use the environment server with laser collision map data to check whether a given robot state is collision free, within the joint limits and satisfies joint or cartesian constraints.

  4. Adding known objects to the motion planning environment

    This tutorial will introduce the topic of adding known objects to the collision environment. Known objects are shapes that have been recognized by a semantic perception pipeline or are known to exist at particular positions by a system designer.

  5. Attaching objects to the robot's body

    This tutorial describes methods by which known objects can be attached to a robot's body. Attaching an object to the body means that the object will move when the robot moves; this functionality allows motion planners and the trajectory monitor to deal with situations where the robot has grasped something and avoiding collisions between the grasped object and the environment becomes important.

''Safe'' trajectory control for the PR2 arms (Diamondback)

This set of tutorials will show you how to execute desired trajectories on the PR2 arms in a safe manner.

  1. ''Safe'' arm trajectory control

    This package implements a simple action interface to a safe arm trajectory controller. The controller will execute a desired trajectory only if the trajectory will not result in self collisions or a collision with the environment.

Filtering trajectories using the trajectory filter node (Diamondback)

The motion plans that are output from motion planners are often not very smooth. They need to be further filtered before they can be sent out to a controller with the expectation of achieving good tracking. This set of tutorials will show you how to use a trajectory filter node to filter joint trajectories.

  1. Converting arm navigation trajectory filters into MoveIt Planning Request Adapters

    This tutorial describes how to convert an Arm Navigation Trajectory Filter Plugin into a MoveIt Planning Request Adapter that can be compiled in a catkin package. (<=Groovy)

  2. Developing a Planning Request Adapter

    This tutorial is a step by step development of a planning request adapter using a simple smoothing filter as an example

  3. Using a planning adapter inside of MoveIt.

    This tutorial will show you how to use a planning request adapter with MoveIt.

  4. Learn how to create your own trajectory filter

    Learn how to create your own trajectory filter

  5. Generating collision free cubic spline trajectories

    In this tutorial, you will learn to configure the joint trajectory filter node to generate collision free cubic spline trajectories.

  6. Filtering joint trajectories using the trajectory_filter_server

    This tutorial will show you how to use the trajectory filtering service provided by the trajectory filter server.

  7. Utilizing Trajectory Filters with a Generated Arm Navigation Package

    Gives an overview of the common industrial trajectory filters and shows how to apply them to an auto-generated arm navigation package

Visualizing robot state and trajectories (Diamondback)

This set of tutorials will show you how to visualize the state and trajectories of the robot using the rviz visualizer.

  1. Displaying joint paths for the entire robot in rviz

    This tutorial will teach you how to display a robot model in rviz and visualize joint paths for any set of joints on the robot.

Use cases

  1. Checking a state for validity

    In this tutorial we show how you can use the planning scene architecture with the environment monitor, as well as code in the planning_environment stack to check state validity - whether or not a given state is within the joint limits, or in collision with the robot's other links or the environment. You'll also see how to publish markers based on this information.

  2. Checking Trajectory Validity

    This tutorial will describe using the Planning Scene Architecture to check whether or not an entire Joint Trajectory is valid: focusing on whether it obeys joint limits and avoids collision.

  3. Planning Components Visualizer

    This tutorial explains the planning components visualizer in the move_arm package, and how it may be used to interact with a robot.

  4. Warehouse Viewer

    Learn to use the planning scene warehouse viewer, a GUI application for editing, loading, and saving planning scenes and trajectories.

  5. Planning Description Configuration Wizard

    This tutorial explains the use of the planning description configuration wizard, which automatically generates a stack containing configuration and launch files used in arm planning.

  6. Understanding and adjusting the auto-generated arm navigation application

    This tutorial will walk you through the launch files generated by the planning description visualization wizard and describe aspects you may wish to change for your robot.

  7. Running the arm_navigation stack on the Barrett WAM (Fuerte)

    A tutorial teaching how to set up and run the arm_navigation stack on the Barrett WAM.

  8. Adding Virtual Objects to the Planning Scene

    In this tutorial we show how to add virtual objects to the Planning Scene and to check state validity against the virtual objects.

  9. Attaching Virtual Objects to the Robot

    In this tutorial we describe attaching virtual objects to the robot's body - these are objects that are assumed to move with the robot instead of being static in the environment.

  10. The IROS 2011 Tutorial on Motion Planning for Real Robots

    This tutorial runs you through the steps in going from a URDF to a full set of launch and configuration files that you can use to run motion planning and kinematics on your own robot.

  11. Running the object pickup pipeline

  12. Understanding the arm navigation Planning Scene Architecture

    This tutorial will go into the new formulation of arm navigation 1.0, focusing particularly on the Planning Scene. It will describe what it is, the design philosophy behind it, and how to use it in different contexts.

  13. Running arm navigation on non-PR2 arm

    This tutorial describes the steps necessary to make arm_navigation stack running on an arm other than PR2

  14. Automatically Generating Arm Navigation Configurations

    Tutorials on the planning components visualizer and planning description configuration wizard.

  15. Using cob_arm_navigation to plan collision-free arm movements for Care-O-bot 3.

    This tutorial will explain which launch files need to be started to plan collision-free movements for the care-o-bot mobile manipulator.

Create a new tutorial:

Wiki: arm_navigation/Tutorials (last edited 2013-01-05 14:36:51 by IsuraRanatunga)