195 lines
9.8 KiB
HTML
195 lines
9.8 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.11"/>
|
|
<title>OMPL Plannification: Home page</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
$(window).load(resizeHeight);
|
|
</script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { init_search(); });
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectlogo"><img alt="Logo" src="flylab.png"/></td>
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">OMPL Plannification
|
|
</div>
|
|
<div id="projectbrief">Path planning with OMPL</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.11 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li class="current"><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li><a href="files.html"><span>Files</span></a></li>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){initNavTree('index.html','');});
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">Home page </div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><h1><a class="anchor" id="intro_sec"></a>
|
|
Introduction</h1>
|
|
<p>This project regroup tools for path planning in 2D or in 3D using OMPL (<a href="http://ompl.kavrakilab.org/index.html">http://ompl.kavrakilab.org/index.html</a>). It also include a ROS implementation for dynamic plannification.</p>
|
|
<p>Work with Ubuntu 14.04 (and ROS Indigo) or with Ubuntu 16.04 (and ROS Kinetic).</p>
|
|
<h1><a class="anchor" id="install_sec"></a>
|
|
Installation</h1>
|
|
<h2><a class="anchor" id="step1"></a>
|
|
Step 1 : Workspace intialization</h2>
|
|
<p>Catkin Workspace : mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace</p>
|
|
<p>cd ~/catkin_ws/ catkin_make</p>
|
|
<p>echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc</p>
|
|
<h2><a class="anchor" id="step2"></a>
|
|
Step 2 : Compilation</h2>
|
|
<p>It's possible to use the Turtlebot or the Hector Quadrotor (ROS Indigo only).</p>
|
|
<h3><a class="anchor" id="ste2a"></a>
|
|
Step 2a : Turtlebot</h3>
|
|
<p>Turtlebot dependencies : </p><pre class="fragment">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
|
|
</pre><p>Turtlebot install : </p><pre class="fragment">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)
|
|
</pre><h3><a class="anchor" id="ste2b"></a>
|
|
Step 2b : Hector Quadrotor (ROS Indigo only) WARNING : There might need some modification for the package path to make it work</h3>
|
|
<pre class="fragment"> copy "hector_quadrotor_tutorial" folder (in Source Files directory) to "~/catkin_ws/src".
|
|
</pre><p>Differences with Turtlebot </p><pre class="fragment"> 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" />
|
|
</pre><p><a class="el" href="_r_o_s___o_m_p_l___planner_8cpp_source.html">ROS_OMPL_Planner.cpp</a> : </p><pre class="fragment">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";
|
|
</pre><h1><a class="anchor" id="run"></a>
|
|
Running</h1>
|
|
<p>You can run HelloWorld program to understand how works <a class="el" href="class_o_m_p_l___planner.html" title="Class for planner for 2D and 3D planning. ">OMPL_Planner</a> alone or you can run the ROS implementation (<a class="el" href="class_r_o_s___o_m_p_l___planner.html" title="ROS implementation class for OMPL_Planner. ">ROS_OMPL_Planner</a>) which will include the ROS implementation, the visual simulation, the Octomap server, etc.</p>
|
|
<h2><a class="anchor" id="runHello"></a>
|
|
Run HelloWorld</h2>
|
|
<pre class="fragment">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)
|
|
</pre><p>Enjoy !</p>
|
|
<h2><a class="anchor" id="runROS"></a>
|
|
Run ROS implementation</h2>
|
|
<pre class="fragment">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"
|
|
</pre><h3><a class="anchor" id="config"></a>
|
|
Configurations files</h3>
|
|
<p>See launch folder for runtime configurations.</p>
|
|
<p>In config folder : planner_parameters.yaml</p>
|
|
<p>Contains all the necessary parameters for a basic use of the planner (planning dimension, collision mask, etc.).</p>
|
|
<p>See also start_turtlebot_mapping_planning_control.launch file and src folder for a deeper understanding of the ROS implementation.</p>
|
|
<h1><a class="anchor" id="todo"></a>
|
|
Todo</h1>
|
|
<p>BUG : Compilation sur certain linux : FindPathToGoal.h pb de génération avec cmake</p>
|
|
<p>Frontier exploration</p>
|
|
<p>Clean the dynmacilly allowed memory (Needed for dynamic check)</p>
|
|
<p>Optimisation :</p>
|
|
<p>prevent creation of too close state (Ex : start = goal is a problem)</p>
|
|
<p>path check : don't check path already done</p>
|
|
<p>Improving sending speed of the octomap </p>
|
|
</div></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="footer">Generated by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|