OMPL Plannification
Path planning with OMPL
Home page

Introduction

This project regroup tools for path planning in 2D or in 3D using OMPL (http://ompl.kavrakilab.org/index.html). It also include a ROS implementation for dynamic plannification.

Work with Ubuntu 14.04 (and ROS Indigo) or with Ubuntu 16.04 (and ROS Kinetic).

Installation

Step 1 : Workspace intialization

Catkin Workspace : mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace

cd ~/catkin_ws/ catkin_make

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

Step 2 : Compilation

It's possible to use the Turtlebot or the Hector Quadrotor (ROS Indigo only).

Step 2a : Turtlebot

Turtlebot dependencies :

sudo apt-get install ros-kinetic-turtlebot* ros-kinetic-octomap* ros-kinetic-octovis

 or

 sudo apt-get install ros-indigo-turtlebot* ros-indigo-octomap* ros-indigo-octovis

Turtlebot install :

copy "mapping_planning_tutorial" folder (in Source Files directory) to "~/catkin_ws/src".

cd ~/catkin_ws/

catkin_make (mignt need to be performed multiple times if you have error messages with "FindPathToGoal". Warning : it's possible that you won't manage to compile if you don't have enough computation power)

Step 2b : Hector Quadrotor (ROS Indigo only) WARNING : There might need some modification for the package path to make it work

    copy "hector_quadrotor_tutorial" folder (in Source Files directory) to "~/catkin_ws/src".

Differences with Turtlebot

    Launch file : start_turtlebot_mapping_planning_control.launch

        "/odom"  ===> "/world"

    <node pkg="control_turtlebot" type="controller_turtlebot.py" name="controller_turtlebot" respawn="true" output="screen" />  ===> <node pkg="control_turtlebot" type="controller_quadrotor.py" name="controller_quadrotor" respawn="true" output="screen" />

ROS_OMPL_Planner.cpp :

odom_sub_ = _node_hand.subscribe("/odom", 1, &ROS_OMPL_Planner::odomCallback, this); ==>  odom_sub_ = node_handler_.subscribe("/ground_truth/state", 1, &ROS_OMPL_Planner::odomCallback, this);

visual_result_path.header.frame_id = result_path.header.frame_id = q_init_goal.header.frame_id = visual_rrt.header.frame_id =  "/odom"; ===> visual_result_path.header.frame_id = result_path.header.frame_id = q_init_goal.header.frame_id = visual_rrt.header.frame_id =  "/world";

Running

You can run HelloWorld program to understand how works OMPL_Planner alone or you can run the ROS implementation (ROS_OMPL_Planner) which will include the ROS implementation, the visual simulation, the Octomap server, etc.

Run HelloWorld

copy the octomap file (.bt) (in Maps directory) you want to use from the Map folder in the project to "~/catkin_ws/devel/lib/control_turtlebot" folder.

cd ~/catkin_ws/devel/lib/control_turtlebot

run HelloWorld (./HelloWorld)

Enjoy !

Run ROS implementation

1st terminal (Gazebo / Rviz / Controller) : 

    Turtlebot :  roslaunch control_turtlebot start_turtlebot_modules.launch

    Quadrotor :  roslaunch hector_quadrotor_demo indoor

    2nd terminal (Octomap / Planning): roslaunch control_turtlebot start_turtlebot_mapping_planning_control.launch

3rd terminal (Planning request) : rosservice call /controller_turtlebot/find_path_to_goal "goal_state_x: 0.0
                                                                                           goal_state_y: 0.0
                                                                                           goal_state_z: 0.0"
                                  rosservice call /controller_turtlebot/goto "goal_state_x: 0.0
                                                                              goal_state_y: 0.0
                                                                              goal_state_z: 0.0" 

Configurations files

See launch folder for runtime configurations.

In config folder : planner_parameters.yaml

Contains all the necessary parameters for a basic use of the planner (planning dimension, collision mask, etc.).

See also start_turtlebot_mapping_planning_control.launch file and src folder for a deeper understanding of the ROS implementation.

Todo

BUG : Compilation sur certain linux : FindPathToGoal.h pb de génération avec cmake

Frontier exploration

Clean the dynmacilly allowed memory (Needed for dynamic check)

Optimisation :

prevent creation of too close state (Ex : start = goal is a problem)

path check : don't check path already done

Improving sending speed of the octomap