OMPL_Planning/Documentation/html/index.html
2020-09-16 10:05:14 +02:00

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&#160;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" &gt;&gt; ~/.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" ===&gt; "/world"
&lt;node pkg="control_turtlebot" type="controller_turtlebot.py" name="controller_turtlebot" respawn="true" output="screen" /&gt; ===&gt; &lt;node pkg="control_turtlebot" type="controller_quadrotor.py" name="controller_quadrotor" respawn="true" output="screen" /&gt;
</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, &amp;ROS_OMPL_Planner::odomCallback, this); ==&gt; odom_sub_ = node_handler_.subscribe("/ground_truth/state", 1, &amp;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"; ===&gt; 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>