<!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"/> <title>OMPL: Frequently Asked Questions</title> <meta name="author" content="Ioan A. Șucan, Mark Moll, Lydia E. Kavraki"> <link rel="stylesheet" href="../css/screen.css" type="text/css" media="screen, projection"> <link rel="stylesheet" href="../css/print.css" type="text/css" media="print"> <!--[if lt IE 7]> <script type="text/javascript" src="../js/jquery/jquery.js"></script> <script type="text/javascript" src="../js/jquery/jquery.dropdown.js"></script> <![endif]--> <script type="text/javaScript" src="search/search.js"></script> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-9156598-2']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </head> <body onload='searchBox.OnSelectItem(0);'> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search API'); --></script> <div class="navigation" id="top"> <div class="tabs" id="ompltitle"> <ul class="tablist"> <li>The Open Motion Planning Library</li> <li id="searchli"> <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 API" 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> <ul id="nav" class="dropdown"> <li class="first"><a href="index.html">Home</a></li> <li><a href="download.html">Download</a></li> <li><a href="documentation.html">Documentation</a></li> <li><span class="dir">Code API</span> <ul> <li><a href="api_overview.html">API Overview</a></li> <li><a href="namespaces.html">Namespaces</a></li> <li><a href="annotated.html">Classes</a></li> <li><a href="files.html">Files</a></li> <li><a href="dirs.html">Directories</a></li> </ul> </li> <li><span class="dir">Community</span> <ul> <li><a href="developers.html">Developers</a></li> <li><a href="thirdparty.html">Contributions</a></li> <li><a href="education.html">Education</a></li> <li><a href="gallery.html">Gallery</a></li> </ul> </li> <li><span class="dir">About</span> <ul> <li><a href="license.html">License</a></li> <li><a href="citations.html">Citations</a></li> <li><a href="acknowledgements.html">Acknowledgments</a></li> <li><a href="contact.html">Contact Us</a></li> </ul> </li> </ul> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0"name="MSearchResults" id="MSearchResults"></iframe> </div> <div class="container"> <div class="span-22 push-2 first last"> <div> <!-- Generated by Doxygen 1.7.4 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> </div> <div class="header"> <div class="headertitle"> <div class="title">Frequently Asked Questions </div> </div> </div> <div class="contents"> <div class="textblock"><ul> <li>Q: <em>Why are the Python bindings not built?</em> <br/> <b>Short answer (most likely case)</b>: after running <code>cmake</code>, type “<code>make update_bindings</code>”.<br/> <b>Long answer</b>: the bindings are automatically generated by a script. You may not have all dependencies correctly installed (or detected by cmake). Check <a class="el" href="installation.html">Installation</a> and <a class="el" href="python.html#updating_python_bindings">(Re)generating the Python bindings</a> for details on installing dependencies and the individual steps involved in creating Python bindings, respectively.</li> </ul> <ul> <li>Q: <em>Why is the code I added to the OMPL source not being compiled?</em> <br/> See <a class="el" href="buildSystem.html">Integrate your own code with OMPL's build system</a>. Essentially, just run <code>cmake</code> again after adding new files.</li> </ul> <ul> <li>Q: <em>How do I specify collision checking for a planner?</em> <br/> A: See <a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a0449ec0893e02aca2bdfc63323b624e5" title="Set the instance of the state validity checker to use. Parallel implementations of planners assume th...">ompl::base::SpaceInformation::setStateValidityChecker()</a> and <a class="el" href="classompl_1_1base_1_1StateValidityChecker.html" title="Abstract definition for a class checking the validity of states. The implementation of this class mus...">ompl::base::StateValidityChecker</a>.</li> </ul> <ul> <li>Q: <em>Can I visualize the exploration datastructure used by a planner?</em> <br/> A: Yes. You need to call <a class="el" href="classompl_1_1base_1_1Planner.html#afaaf08c87f8797803fbeb60771635ea5" title="Get information about the current run of the motion planner. Repeated calls to this function will upd...">ompl::base::Planner::getPlannerData()</a>. This will give you an instance of <a class="el" href="classompl_1_1base_1_1PlannerData.html" title="Datatype holding data a planner can expose for debug purposes.">ompl::base::PlannerData</a> which contains all the states and the edges between them. Functionality for plotting this data is however not available.</li> </ul> <ul> <li>Q: <em>Can I change the state space during planning?</em> <br/> A: No. Such changes will make the code crash.</li> </ul> <ul> <li>Q: <em>Can I set the sampler to use for a planner?</em> <br/> A: Yes. The sampler instances used by planners are allocated by either <a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a65ba2c60529f5aa23098d43c6c2b6da4" title="Allocate a uniform state sampler for the state space.">ompl::base::SpaceInformation::allocStateSampler()</a> (which calls <a class="el" href="classompl_1_1base_1_1StateSpace.html#a345d227779a17370264430aa2958c055" title="Allocate an instance of a uniform state sampler for this space.">ompl::base::StateSpace::allocStateSampler()</a> under the hood) or by <a class="el" href="classompl_1_1base_1_1SpaceInformation.html#acb94231d22c1763e3f79e5d67e5e7428" title="Allocate an instance of a valid state sampler for this space. If setValidStateSamplerAllocator() was ...">ompl::base::SpaceInformation::allocValidStateSampler()</a>. By default, <a class="el" href="classompl_1_1base_1_1SpaceInformation.html#acb94231d22c1763e3f79e5d67e5e7428" title="Allocate an instance of a valid state sampler for this space. If setValidStateSamplerAllocator() was ...">ompl::base::SpaceInformation::allocValidStateSampler()</a> produces an instance of <a class="el" href="classompl_1_1base_1_1UniformValidStateSampler.html" title="A state sampler that only samples valid states, uniformly.">ompl::base::UniformValidStateSampler</a>, unless a sampler allocator was specified. Calling <a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ae6391771fc74984a3266f986cfe07780" title="Set the allocator to use for a valid state sampler. This replaces the default uniform valid state sam...">ompl::base::SpaceInformation::setValidStateSamplerAllocator()</a> allows the user to specify the valid state sampler allocator, thus changing the sampling strategy used by planners. <div class="fragment"><pre class="fragment"><span class="preprocessor"> #include "ompl/base/samplers/ObstacleBasedValidStateSampler.h"</span> ... <a class="code" href="classompl_1_1base_1_1ValidStateSamplerPtr.html" title="A boost shared pointer wrapper for ompl::base::ValidStateSampler.">ompl::base::ValidStateSamplerPtr</a> allocValidStateSampler(<span class="keyword">const</span> <a class="code" href="classompl_1_1base_1_1SpaceInformation.html" title="The base class for space information. This contains all the information about the space planning is d...">ompl::base::SpaceInformation</a> *si) { <span class="keywordflow">return</span> <a class="code" href="classompl_1_1base_1_1ValidStateSamplerPtr.html" title="A boost shared pointer wrapper for ompl::base::ValidStateSampler.">ompl::base::ValidStateSamplerPtr</a>(<span class="keyword">new</span> <a class="code" href="classompl_1_1base_1_1ObstacleBasedValidStateSampler.html" title="Generate valid samples using the Bridge Test.">ompl::base::ObstacleBasedValidStateSampler</a>(si)); } ... <a class="code" href="classompl_1_1base_1_1StateSpacePtr.html" title="A boost shared pointer wrapper for ompl::base::StateSpace.">ompl::base::StateSpacePtr</a> space(...); <a class="code" href="classompl_1_1base_1_1SpaceInformationPtr.html" title="A boost shared pointer wrapper for ompl::base::SpaceInformation.">ompl::base::SpaceInformationPtr</a> si(<span class="keyword">new</span> <a class="code" href="classompl_1_1base_1_1SpaceInformation.html" title="The base class for space information. This contains all the information about the space planning is d...">ompl::base::SpaceInformation</a>(space)); si-><a class="code" href="classompl_1_1base_1_1SpaceInformation.html#ae6391771fc74984a3266f986cfe07780" title="Set the allocator to use for a valid state sampler. This replaces the default uniform valid state sam...">setValidStateSamplerAllocator</a>(boost::bind(&allocValidStateSampler, _1)); <span class="comment">// for simplified calls, you can also use:</span> <span class="comment">// si->setValidStateSamplerAllocator(&allocValidStateSampler);</span> </pre></div></li> </ul> <p><br/> If your question is still not answered, another good place to check is the <a href="http://sourceforge.net/mailarchive/forum.php?forum_name=ompl-users">mailing list archive</a>. </p> </div></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a></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> <div class="footer span-22 push-2 last"> <a href="http://www.kavrakilab.org">Physical and Biological Computing Group</a> • <a href="http://www.cs.rice.edu">Department of Computer Science</a> • <a href="http://www.rice.edu">Rice University</a><br> <div class="gray">Generated on Sun Oct 9 2011 23:04:30 by <a href="http://www.doxygen.org/index.html">doxygen</a> 1.7.4</div> </div> </div> </body> </html>