jeshoward / turtlebot_rrt

Rapidly Exploring Random Tree (RRT) global path planning plugin for ROS Kinetic Kame

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status Travis Build Status

License Software License

Randomly Exploring Random Tree Path Planner ROS Plugin

This plugin implements a simulated Randomly Exploring Random Tree (RRT) path planner for the Kinetic Kame release of the Robot Operating System (ROS) framework. It uses the nav_core::BaseGlobalPlanner interface and can be used on any platforms that implement the move_base package, but has been specifically tested using the simulated Turtlebot platform.

A presentation on the project can be found on YouTube here. The video provides an overview of the project, UML diagrams, as well as a demo.

Table of Contents

Personnel

This plugin was created by Jessica Howard as a final project for the University of Maryland course ENPM808X - Software Development for Robotics during the Fall 2017 semester.

Installation

Clone the package into your catkin workspace:

cd [workspace]/src
git clone https://github.com/jeshoward/turtlebot_rrt.git
cd ..
catkin_make
source devel/setup.bash

Dependencies

  1. ROS Kinetic Kame (Installation Instructions)
  2. Catkin (Installation Instructions)
  3. Rviz (Installation Instructions)
  4. Gazebo (Installation Instructions)

Usage

To run the plugin out of the box, follow the steps in the demo. The plugin uses a static map and is currently only packaged with a single map. To create custom maps follow the instructions provided here. Once you have created your map place the .world, .yaml, and .pgm file into the /maps directory all using the same file name and then use the map_name arg with the launch file:

roslaunch turtlebot_rrt rrt_planner.launch

Launch file args

map_name indicates the map that you want to use. This assumes that you already have a .world, .yaml, and a .pgm file in the /maps directory.

step_size indicates the size of the step that the RRT algorithm uses. Sometimes called epsilon. A lower value is more accurate, a higher value is faster. Parameter is entered in meters. Has a default value of 2.5.

max_iterations determines the maximum number of vertices that will be created searching for a path between the starting point and the goal. This prevents infinite loops in the event the goal is unreachable. Parameter is an integer. Has a default value of 200,000.

delta is the incremental amount that will be checked along each step_size for obstacles. Choosing a lower value is more accurate, a higher value is faster. Parameter is entered in meters. Has a default value of 1.0.

goal_radius is how close you have to be to the goal for it to count. Parameter is entered in meters. Has a default value of 1.0.

Demo Steps

These steps assume that you have already cloned the repository, if not see Installation.

  1. Run the demo launch file
roslaunch turtlebot_rrt rrt_planner.launch

alt tag

  1. To set a goal for the robot switch to the Rviz window and and click "2D Nav Goal" at the top and select on the map where you want the robot to go.

Creating Custom Maps

A single demo map has been provided here, if you want to create your own Gazebo worlds and this RRT algorithm to navigate them follow this tutorial.

Test Steps

These steps assume that you have already cloned the repository, if not see Installation.

cd [workspace]/src
catkin_make run_tests && catkin_test_results

Issues

Issue tracking sheet can be found with the Sprint Backlog in the Issues tab.

SIP

License

BSD 3-Clause License

Copyright (c) 2017, Jessica Howard All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

About

Rapidly Exploring Random Tree (RRT) global path planning plugin for ROS Kinetic Kame

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 96.0%Language:CMake 4.0%