Full Text

Photos and Video Results

Documentation

If you are interested in using the Open Source implementation of the navigation system presented in this paper, you'll find the most up-to-date documentation and code here. If, however, you're interested in running the code and experiments presented in this paper as they were at the time of publication, please follow the instructions presented in the following section.

Instructions for reproducing experiments

In order to run the experiments presented in this paper, we assume some knowlege of the Robot Operating System (ROS). Detailed documentation on ROS can be found here.

Checking Out the Code

An Open Source implementation of the PR2 navigation system written using the Robot Operating System (ROS) is available for download. All of the experiments presented in the paper can be installed and run using the following rosinstall file: icra_navigation_gazebo.rosconfig. For instructions on installing and building a source tree from a rosinstall file please see the following documentation.

Before executing the steps below to build or run the code, be sure to source the shell setup file:

source ~/icra10_navigation_ros/setup.sh

Running Experiments in Simulation

Running the simulated experiments presented in this paper requires two steps.

First, build the icra_navigation_gazebo package:

rosmake icra_navigation_gazebo

Next, run the tests presented in the paper:

roscd icra_navigation_gazebo
make test

You should see the robot move through each of the test worlds, avoiding obstacles along the way.

Running Experiments on a Robot

If you have a PR2 Beta robot (stock configuration), you can also run the experiments presented in the paper on the robot itself. First, set up test environments that more-or-less match those of the simulation worlds. Next, for each environment, bring up the PR2 navigation system and give the robot a goal in the environment that requires it to navigate around obstacles. Instructions for bringing the navigation system up on a PR2 Beta are as follows:

On the PR2

First, make sure that you have the navigation system built on the robot:

rosmake 2dnav_pr2 pr2_bringup pr2_tuckarm

Next, bring-up and calibrate the robot:

roslaunch pr2_bringup pr2.launch

Make sure the arms of the robot are tucked:

rosrun pr2_tuckarm tuckarm.py b

Run the navigation system:

roscd 2dnav_pr2
roslaunch move_base_local/2dnav_pr2.launch

On a Local Computer

Make sure that you set your ROS_MASTER_URI environment variable to match that of your robot:

export ROS_MASTER_URI=http://pr2:11311

Run an rviz configuration file that will allow you to send goals to the robot:

roslaunch 2dnav_pr2 rviz_move_base_local.launch

Sending a Goal

With the robot up and rviz running on your local machine, you can now send a goal to the navigation system that will cause it to navigate around the obstacles placed in its way using the "2D Nav Goal" button. Once a goal is sent, you should see the robot move in an attempt to achieve the goal.