Contents
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.
Environment representation for motion planning
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.
- 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.
- 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.
- 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.
- 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.
- 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.
Using kinematics for the PR2 robot arm
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.
- 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.
- 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.
- 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.
- 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.
- 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.
''Safe'' trajectory control for the PR2 arms
This set of tutorials will show you how to execute desired trajectories on the PR2 arms in a safe manner.
- ''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.
Moving the PR2 robot arm using motion planning
This set of tutorials will show you how to move the PR2 robot arm to cartesian and joint goal positions while avoiding collisions.
- 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.
- 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.
- 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.
- 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.
- 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.
Filtering trajectories using the trajectory filter node
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.
- 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.
- 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.
Visualizing robot state and trajectories
This set of tutorials will show you how to visualize the state and trajectories of the robot using the rviz visualizer.
- 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
Create a new tutorial:






