Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > e7618febbb9cbed15bb79e326774c050 > files > 837

ompl-devel-0.9.5-1.fc14.i686.rpm

<!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: ompl::geometric::PRM Class Reference</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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</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 id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceompl.html">ompl</a>      </li>
      <li class="navelem"><a class="el" href="namespaceompl_1_1geometric.html">geometric</a>      </li>
      <li class="navelem"><a class="el" href="classompl_1_1geometric_1_1PRM.html">PRM</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">ompl::geometric::PRM Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="ompl::geometric::PRM" --><!-- doxytag: inherits="ompl::base::Planner" -->
<p>Probabilistic RoadMap planner.  
 <a href="classompl_1_1geometric_1_1PRM.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="PRM_8h_source.html">PRM.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ompl::geometric::PRM:</div>
<div class="dyncontent">
<div class="center"><img src="classompl_1_1geometric_1_1PRM__inherit__graph.png" border="0" usemap="#ompl_1_1geometric_1_1PRM_inherit__map" alt="Inheritance graph"/></div>
<map name="ompl_1_1geometric_1_1PRM_inherit__map" id="ompl_1_1geometric_1_1PRM_inherit__map">
<area shape="rect" id="node2" href="classompl_1_1base_1_1Planner.html" title="Base class for a planner." alt="" coords="12,5,151,35"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classompl_1_1geometric_1_1PRM-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__state__t.html">vertex_state_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__successful__connection__attempts__t.html">vertex_successful_connection_attempts_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__total__connection__attempts__t.html">vertex_total_connection_attempts_t</a></td></tr>
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::adjacency_list<br class="typebreak"/>
&lt; boost::vecS, boost::vecS, <br class="typebreak"/>
boost::undirectedS, <br class="typebreak"/>
boost::property<br class="typebreak"/>
&lt; <a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__state__t.html">vertex_state_t</a>, <a class="el" href="classompl_1_1base_1_1State.html">base::State</a> <br class="typebreak"/>
*, boost::property<br class="typebreak"/>
&lt; <a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__total__connection__attempts__t.html">vertex_total_connection_attempts_t</a>, <br class="typebreak"/>
unsigned int, boost::property<br class="typebreak"/>
&lt; <a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__successful__connection__attempts__t.html">vertex_successful_connection_attempts_t</a>, <br class="typebreak"/>
unsigned int, boost::property<br class="typebreak"/>
&lt; boost::vertex_predecessor_t, <br class="typebreak"/>
unsigned long int, <br class="typebreak"/>
boost::property<br class="typebreak"/>
&lt; boost::vertex_rank_t, <br class="typebreak"/>
unsigned long int &gt;<br class="typebreak"/>
 &gt; &gt; &gt; &gt;, boost::property<br class="typebreak"/>
&lt; boost::edge_weight_t, double, <br class="typebreak"/>
boost::property<br class="typebreak"/>
&lt; boost::edge_index_t, <br class="typebreak"/>
unsigned int &gt; &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The underlying roadmap graph.  <a href="#ad5e78674f3419bb018a7f94d80d128fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5e716e7ab7cc38987dd47566490694f"></a><!-- doxytag: member="ompl::geometric::PRM::Vertex" ref="ae5e716e7ab7cc38987dd47566490694f" args="" -->
typedef boost::graph_traits<br class="typebreak"/>
&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a> &gt;::vertex_descriptor&#160;</td><td class="memItemRight" valign="bottom"><b>Vertex</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ae7fb5b9ce5a81217f22e8cde19c9a7"></a><!-- doxytag: member="ompl::geometric::PRM::Edge" ref="a1ae7fb5b9ce5a81217f22e8cde19c9a7" args="" -->
typedef boost::graph_traits<br class="typebreak"/>
&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a> &gt;::edge_descriptor&#160;</td><td class="memItemRight" valign="bottom"><b>Edge</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a936f87c1aa070771552ee72f3d1154a8"></a><!-- doxytag: member="ompl::geometric::PRM::RoadmapNeighbors" ref="a936f87c1aa070771552ee72f3d1154a8" args="" -->
typedef boost::shared_ptr<br class="typebreak"/>
&lt; <a class="el" href="classompl_1_1NearestNeighbors.html">NearestNeighbors</a>&lt; Vertex &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>RoadmapNeighbors</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::function1<br class="typebreak"/>
&lt; std::vector&lt; Vertex &gt;<br class="typebreak"/>
 &amp;, const Vertex &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ad7ecc062d1cfcd1d4496846de2ec8a08">ConnectionStrategy</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A function returning the milestones that should be attempted to connect to.  <a href="#ad7ecc062d1cfcd1d4496846de2ec8a08"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef boost::function2&lt; bool, <br class="typebreak"/>
const Vertex &amp;, const Vertex &amp; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ac0b88385d600799a0ef7db709cf077b8">ConnectionFilter</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A function that can reject connections.  <a href="#ac0b88385d600799a0ef7db709cf077b8"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5db629bb4a2bf02fb76a4cabbc5e0dcb"></a><!-- doxytag: member="ompl::geometric::PRM::PRM" ref="a5db629bb4a2bf02fb76a4cabbc5e0dcb" args="(const base::SpaceInformationPtr &amp;si, bool starStrategy=false)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a5db629bb4a2bf02fb76a4cabbc5e0dcb">PRM</a> (const <a class="el" href="classompl_1_1base_1_1SpaceInformationPtr.html">base::SpaceInformationPtr</a> &amp;si, bool starStrategy=false)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefef4c0c54de26622152347fa0078961"></a><!-- doxytag: member="ompl::geometric::PRM::setProblemDefinition" ref="aefef4c0c54de26622152347fa0078961" args="(const base::ProblemDefinitionPtr &amp;pdef)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aefef4c0c54de26622152347fa0078961">setProblemDefinition</a> (const <a class="el" href="classompl_1_1base_1_1ProblemDefinitionPtr.html">base::ProblemDefinitionPtr</a> &amp;pdef)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the problem definition for the planner. The problem needs to be set before calling <a class="el" href="classompl_1_1geometric_1_1PRM.html#af622f66347e33f4bb6a2fe7f5df97b5f" title="Function that can solve the motion planning problem. This function can be called multiple times on th...">solve()</a>. Note: If this problem definition replaces a previous one, it may also be necessary to call <a class="el" href="classompl_1_1geometric_1_1PRM.html#a54c8858fdff3da173a0650e66f962f94" title="Clear all internal datastructures. Planner settings are not affected. Subsequent calls to solve() wil...">clear()</a>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a8a7ce65640dd499ba32d80d3495d38bf">setConnectionStrategy</a> (const <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad7ecc062d1cfcd1d4496846de2ec8a08">ConnectionStrategy</a> &amp;connectionStrategy)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the connection strategy function that specifies the milestones that connection attempts will be make to for a given milestone.  <a href="#a8a7ce65640dd499ba32d80d3495d38bf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab8832a466b3178de436acbb000712f2b"></a><!-- doxytag: member="ompl::geometric::PRM::setMaxNearestNeighbors" ref="ab8832a466b3178de436acbb000712f2b" args="(unsigned int k)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ab8832a466b3178de436acbb000712f2b">setMaxNearestNeighbors</a> (unsigned int k)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience function that sets the connection strategy to the default one with k nearest neighbors. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ad1e0bed0774005cf08bca672eec73abf">setConnectionFilter</a> (const <a class="el" href="classompl_1_1geometric_1_1PRM.html#ac0b88385d600799a0ef7db709cf077b8">ConnectionFilter</a> &amp;connectionFilter)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the function that can reject a milestone connection.  <a href="#ad1e0bed0774005cf08bca672eec73abf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a294b21109833dbbc80f5eb322e9c4fbc"></a><!-- doxytag: member="ompl::geometric::PRM::getPlannerData" ref="a294b21109833dbbc80f5eb322e9c4fbc" args="(base::PlannerData &amp;data) const " -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a294b21109833dbbc80f5eb322e9c4fbc">getPlannerData</a> (<a class="el" href="classompl_1_1base_1_1PlannerData.html">base::PlannerData</a> &amp;data) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get information about the current run of the motion planner. Repeated calls to this function will update <em>data</em> (only additions are made). This is useful to see what changed in the exploration datastructure, between calls to <a class="el" href="classompl_1_1geometric_1_1PRM.html#af622f66347e33f4bb6a2fe7f5df97b5f" title="Function that can solve the motion planning problem. This function can be called multiple times on th...">solve()</a>, for example (without calling <a class="el" href="classompl_1_1geometric_1_1PRM.html#a54c8858fdff3da173a0650e66f962f94" title="Clear all internal datastructures. Planner settings are not affected. Subsequent calls to solve() wil...">clear()</a> in between). <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f15e6dafe26d97547526317b457c201"></a><!-- doxytag: member="ompl::geometric::PRM::growRoadmap" ref="a9f15e6dafe26d97547526317b457c201" args="(double growTime)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a9f15e6dafe26d97547526317b457c201">growRoadmap</a> (double growTime)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">If the user desires, the roadmap can be improved for a specified amount of time. The <a class="el" href="classompl_1_1geometric_1_1PRM.html#af622f66347e33f4bb6a2fe7f5df97b5f" title="Function that can solve the motion planning problem. This function can be called multiple times on th...">solve()</a> method will also improve the roadmap, as needed. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a718ea717e0928e0d4555683021508e46"></a><!-- doxytag: member="ompl::geometric::PRM::expandRoadmap" ref="a718ea717e0928e0d4555683021508e46" args="(double expandTime)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a718ea717e0928e0d4555683021508e46">expandRoadmap</a> (double expandTime)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempt to connect disjoint components in the roadmap using random bounding motions (the <a class="el" href="classompl_1_1geometric_1_1PRM.html" title="Probabilistic RoadMap planner.">PRM</a> expansion step) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af622f66347e33f4bb6a2fe7f5df97b5f"></a><!-- doxytag: member="ompl::geometric::PRM::solve" ref="af622f66347e33f4bb6a2fe7f5df97b5f" args="(const base::PlannerTerminationCondition &amp;ptc)" -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#af622f66347e33f4bb6a2fe7f5df97b5f">solve</a> (const <a class="el" href="classompl_1_1base_1_1PlannerTerminationCondition.html">base::PlannerTerminationCondition</a> &amp;ptc)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that can solve the motion planning problem. This function can be called multiple times on the same problem, without calling <a class="el" href="classompl_1_1geometric_1_1PRM.html#a54c8858fdff3da173a0650e66f962f94" title="Clear all internal datastructures. Planner settings are not affected. Subsequent calls to solve() wil...">clear()</a> in between. This allows the planner to continue work more time on an unsolved problem, for example. If this option is used, it is assumed the problem definition is not changed (unpredictable results otherwise). The only change in the problem definition that is accounted for is the addition of starting or goal states (but not changing previously added start/goal states). The function terminates if the call to <em>ptc</em> returns true. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54c8858fdff3da173a0650e66f962f94"></a><!-- doxytag: member="ompl::geometric::PRM::clear" ref="a54c8858fdff3da173a0650e66f962f94" args="(void)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a54c8858fdff3da173a0650e66f962f94">clear</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear all internal datastructures. Planner settings are not affected. Subsequent calls to <a class="el" href="classompl_1_1geometric_1_1PRM.html#af622f66347e33f4bb6a2fe7f5df97b5f" title="Function that can solve the motion planning problem. This function can be called multiple times on th...">solve()</a> will ignore all previous work. <br/></td></tr>
<tr><td class="memTemplParams" colspan="2"><a class="anchor" id="a3501a3f473485b8c4f577e7f6a7d3b9f"></a><!-- doxytag: member="ompl::geometric::PRM::setNearestNeighbors" ref="a3501a3f473485b8c4f577e7f6a7d3b9f" args="(void)" -->
template&lt;template&lt; typename T &gt; class NN&gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a3501a3f473485b8c4f577e7f6a7d3b9f">setNearestNeighbors</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a different nearest neighbors datastructure. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52ccbc48b63859db436ad03d95091fa9"></a><!-- doxytag: member="ompl::geometric::PRM::setup" ref="a52ccbc48b63859db436ad03d95091fa9" args="(void)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a52ccbc48b63859db436ad03d95091fa9">setup</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform extra configuration steps, if needed. This call will also issue a call to <a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ac39aa0c4b92e3ca5acfa75eeb56b080f" title="Perform additional setup tasks (run once, before use). If state validity checking resolution has not ...">ompl::base::SpaceInformation::setup()</a> if needed. This must be called before solving. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4af8923519e8135a0426364c1bedf87"></a><!-- doxytag: member="ompl::geometric::PRM::getRoadmap" ref="ad4af8923519e8135a0426364c1bedf87" args="(void) const " -->
const <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getRoadmap</b> (void) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a983bce5dd72ba208357b5518f4515125"></a><!-- doxytag: member="ompl::geometric::PRM::distanceFunction" ref="a983bce5dd72ba208357b5518f4515125" args="(const Vertex a, const Vertex b) const " -->
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a983bce5dd72ba208357b5518f4515125">distanceFunction</a> (const Vertex a, const Vertex b) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute distance between two milestones (this is simply distance between the states of the milestones) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add6627598d515cbc5c77ac7f669f2721"></a><!-- doxytag: member="ompl::geometric::PRM::milestoneCount" ref="add6627598d515cbc5c77ac7f669f2721" args="(void) const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#add6627598d515cbc5c77ac7f669f2721">milestoneCount</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute distance between two milestones (this is simply distance between the states of the milestones) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11d8d57046a1f8ec2ddad6771b570d62"></a><!-- doxytag: member="ompl::geometric::PRM::getNearestNeighbors" ref="a11d8d57046a1f8ec2ddad6771b570d62" args="(void)" -->
const RoadmapNeighbors &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>getNearestNeighbors</b> (void)</td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6134f963a94d1ecf831dbac17b04be42"></a><!-- doxytag: member="ompl::geometric::PRM::freeMemory" ref="a6134f963a94d1ecf831dbac17b04be42" args="(void)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a6134f963a94d1ecf831dbac17b04be42">freeMemory</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free all the memory allocated by the planner. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa393c5591243c7d166fc0f73b46627f2"></a><!-- doxytag: member="ompl::geometric::PRM::addMilestone" ref="aa393c5591243c7d166fc0f73b46627f2" args="(base::State *state)" -->
Vertex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aa393c5591243c7d166fc0f73b46627f2">addMilestone</a> (<a class="el" href="classompl_1_1base_1_1State.html">base::State</a> *state)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a milestone for a given state (<em>state</em>) and store it in the nearest neighbors data structure. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b699f5d6c9ffd15094ef3854f1eb7b4"></a><!-- doxytag: member="ompl::geometric::PRM::uniteComponents" ref="a8b699f5d6c9ffd15094ef3854f1eb7b4" args="(Vertex m1, Vertex m2)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a8b699f5d6c9ffd15094ef3854f1eb7b4">uniteComponents</a> (Vertex m1, Vertex m2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Make two milestones (<em>m1</em> and <em>m2</em>) be part of the same connected component. The component with fewer elements will get the id of the component with more elements. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2815e95d4785eeb45175f1cb4d5778a9"></a><!-- doxytag: member="ompl::geometric::PRM::growRoadmap" ref="a2815e95d4785eeb45175f1cb4d5778a9" args="(const std::vector&lt; Vertex &gt; &amp;start, const std::vector&lt; Vertex &gt; &amp;goal, const base::PlannerTerminationCondition &amp;ptc, base::State *workState)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a2815e95d4785eeb45175f1cb4d5778a9">growRoadmap</a> (const std::vector&lt; Vertex &gt; &amp;start, const std::vector&lt; Vertex &gt; &amp;goal, const <a class="el" href="classompl_1_1base_1_1PlannerTerminationCondition.html">base::PlannerTerminationCondition</a> &amp;ptc, <a class="el" href="classompl_1_1base_1_1State.html">base::State</a> *workState)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Randomly sample the state space, add and connect milestones in the roadmap. Stop this process when the termination condition <em>ptc</em> returns true or when any of the <em>start</em> milestones are in the same connected component as any of the <em>goal</em> milestones. Use <em>workState</em> as temporary memory. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b09a1ba7f16a58264933323fea83065"></a><!-- doxytag: member="ompl::geometric::PRM::expandRoadmap" ref="a3b09a1ba7f16a58264933323fea83065" args="(const std::vector&lt; Vertex &gt; &amp;starts, const std::vector&lt; Vertex &gt; &amp;goals, const base::PlannerTerminationCondition &amp;ptc, std::vector&lt; base::State * &gt; &amp;workStates)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a3b09a1ba7f16a58264933323fea83065">expandRoadmap</a> (const std::vector&lt; Vertex &gt; &amp;starts, const std::vector&lt; Vertex &gt; &amp;goals, const <a class="el" href="classompl_1_1base_1_1PlannerTerminationCondition.html">base::PlannerTerminationCondition</a> &amp;ptc, std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">base::State</a> * &gt; &amp;workStates)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Attempt to connect disjoint components in the roadmap using random bounding motions (the <a class="el" href="classompl_1_1geometric_1_1PRM.html" title="Probabilistic RoadMap planner.">PRM</a> expansion step) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdfe06f2ca9b6e13149a0ce0aa228e59"></a><!-- doxytag: member="ompl::geometric::PRM::haveSolution" ref="acdfe06f2ca9b6e13149a0ce0aa228e59" args="(const std::vector&lt; Vertex &gt; &amp;start, const std::vector&lt; Vertex &gt; &amp;goal, std::pair&lt; Vertex, Vertex &gt; *endpoints=NULL)" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#acdfe06f2ca9b6e13149a0ce0aa228e59">haveSolution</a> (const std::vector&lt; Vertex &gt; &amp;start, const std::vector&lt; Vertex &gt; &amp;goal, std::pair&lt; Vertex, Vertex &gt; *endpoints=NULL)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if there exists a solution, i.e., there exists a pair of milestones such that the first is in <em>start</em> and the second is in <em>goal</em>, and the two milestones are in the same connected component. If <em>endpoints</em> is not null, that pair is recorded. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f13f8a7e5ba67332f4734b037870c33"></a><!-- doxytag: member="ompl::geometric::PRM::constructSolution" ref="a3f13f8a7e5ba67332f4734b037870c33" args="(const Vertex start, const Vertex goal)" -->
<a class="el" href="classompl_1_1base_1_1PathPtr.html">base::PathPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a3f13f8a7e5ba67332f4734b037870c33">constructSolution</a> (const Vertex start, const Vertex goal)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Given two milestones from the same connected component, construct a path connecting them and set it as the solution. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03722f1e038d5e2e7dcbb97832f6458b"></a><!-- doxytag: member="ompl::geometric::PRM::starStrategy_" ref="a03722f1e038d5e2e7dcbb97832f6458b" args="" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a03722f1e038d5e2e7dcbb97832f6458b">starStrategy_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag indicating whether the default strategy is the Star trategy or not. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad440cded7058f4b8fd703891d151922c"></a><!-- doxytag: member="ompl::geometric::PRM::sampler_" ref="ad440cded7058f4b8fd703891d151922c" args="" -->
<a class="el" href="classompl_1_1base_1_1ValidStateSamplerPtr.html">base::ValidStateSamplerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ad440cded7058f4b8fd703891d151922c">sampler_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sampler user for generating valid samples in the state space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e22fbb5fdd9f79211631cfad8c6e52d"></a><!-- doxytag: member="ompl::geometric::PRM::simpleSampler_" ref="a2e22fbb5fdd9f79211631cfad8c6e52d" args="" -->
<a class="el" href="classompl_1_1base_1_1StateSamplerPtr.html">base::StateSamplerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a2e22fbb5fdd9f79211631cfad8c6e52d">simpleSampler_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sampler user for generating random in the state space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3c4074fd06b96a0b12d39b11bf19f310"></a><!-- doxytag: member="ompl::geometric::PRM::nn_" ref="a3c4074fd06b96a0b12d39b11bf19f310" args="" -->
RoadmapNeighbors&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a3c4074fd06b96a0b12d39b11bf19f310">nn_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Nearest neighbors data structure. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa25666bfa02ff8d549b967d411202ea0"></a><!-- doxytag: member="ompl::geometric::PRM::g_" ref="aa25666bfa02ff8d549b967d411202ea0" args="" -->
<a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aa25666bfa02ff8d549b967d411202ea0">g_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Connectivity graph. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a084b230c442b1f7e0a22febdf2892ee8"></a><!-- doxytag: member="ompl::geometric::PRM::startM_" ref="a084b230c442b1f7e0a22febdf2892ee8" args="" -->
std::vector&lt; Vertex &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a084b230c442b1f7e0a22febdf2892ee8">startM_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Array of start milestones. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8d91585b24b60381244e928a3e8d0f2"></a><!-- doxytag: member="ompl::geometric::PRM::goalM_" ref="ac8d91585b24b60381244e928a3e8d0f2" args="" -->
std::vector&lt; Vertex &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ac8d91585b24b60381244e928a3e8d0f2">goalM_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Array of goal milestones. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebf9bf1cc13173276301a3413eb92f89"></a><!-- doxytag: member="ompl::geometric::PRM::approxsol_" ref="aebf9bf1cc13173276301a3413eb92f89" args="" -->
<a class="el" href="classompl_1_1base_1_1PathPtr.html">base::PathPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aebf9bf1cc13173276301a3413eb92f89">approxsol_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Storage for approximate solutions. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf99a585bd59f84e43aa64a41de2605c"></a><!-- doxytag: member="ompl::geometric::PRM::approxlen_" ref="aaf99a585bd59f84e43aa64a41de2605c" args="" -->
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aaf99a585bd59f84e43aa64a41de2605c">approxlen_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The length of the approximate solution. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad88ed69d1ac8d376f91639eb5b0b638c"></a><!-- doxytag: member="ompl::geometric::PRM::stateProperty_" ref="ad88ed69d1ac8d376f91639eb5b0b638c" args="" -->
boost::property_map&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a>, <br class="typebreak"/>
<a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__state__t.html">vertex_state_t</a> &gt;::type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ad88ed69d1ac8d376f91639eb5b0b638c">stateProperty_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to the internal base::state at each Vertex. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad279ee7f7070426d6835dd03a970f3a8"></a><!-- doxytag: member="ompl::geometric::PRM::totalConnectionAttemptsProperty_" ref="ad279ee7f7070426d6835dd03a970f3a8" args="" -->
boost::property_map&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a>, <br class="typebreak"/>
<a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__total__connection__attempts__t.html">vertex_total_connection_attempts_t</a> &gt;<br class="typebreak"/>
::type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ad279ee7f7070426d6835dd03a970f3a8">totalConnectionAttemptsProperty_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to the number of total connection attempts for a vertex. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2bbda9d19b0cb3c4b848bdebdfeecb1"></a><!-- doxytag: member="ompl::geometric::PRM::successfulConnectionAttemptsProperty_" ref="aa2bbda9d19b0cb3c4b848bdebdfeecb1" args="" -->
boost::property_map&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a>, <br class="typebreak"/>
<a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__successful__connection__attempts__t.html">vertex_successful_connection_attempts_t</a> &gt;<br class="typebreak"/>
::type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aa2bbda9d19b0cb3c4b848bdebdfeecb1">successfulConnectionAttemptsProperty_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to the number of successful connection attempts for a vertex. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef27444f5bb1cd1735a6653a00232f18"></a><!-- doxytag: member="ompl::geometric::PRM::weightProperty_" ref="aef27444f5bb1cd1735a6653a00232f18" args="" -->
boost::property_map&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a>, <br class="typebreak"/>
boost::edge_weight_t &gt;::type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aef27444f5bb1cd1735a6653a00232f18">weightProperty_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to the weights of each Edge. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa73e5b42a13b926bfe22826656a88550"></a><!-- doxytag: member="ompl::geometric::PRM::edgeIDProperty_" ref="aa73e5b42a13b926bfe22826656a88550" args="" -->
boost::property_map&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a>, <br class="typebreak"/>
boost::edge_index_t &gt;::type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aa73e5b42a13b926bfe22826656a88550">edgeIDProperty_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Access to the indices of each Edge. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a287f90dddb41fabd54c8840901dcf551"></a><!-- doxytag: member="ompl::geometric::PRM::disjointSets_" ref="a287f90dddb41fabd54c8840901dcf551" args="" -->
boost::disjoint_sets<br class="typebreak"/>
&lt; boost::property_map&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a>, <br class="typebreak"/>
boost::vertex_rank_t &gt;::type, <br class="typebreak"/>
boost::property_map&lt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">Graph</a>, <br class="typebreak"/>
boost::vertex_predecessor_t &gt;<br class="typebreak"/>
::type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a287f90dddb41fabd54c8840901dcf551">disjointSets_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Data structure that maintains the connected components. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2cd6c46e940a4b22051408c0dd8e05b"></a><!-- doxytag: member="ompl::geometric::PRM::maxEdgeID_" ref="ad2cd6c46e940a4b22051408c0dd8e05b" args="" -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#ad2cd6c46e940a4b22051408c0dd8e05b">maxEdgeID_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum unique id number used so for for edges. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a834d99372562ad29dafb42c2c5758299"></a><!-- doxytag: member="ompl::geometric::PRM::connectionStrategy_" ref="a834d99372562ad29dafb42c2c5758299" args="" -->
<a class="el" href="classompl_1_1geometric_1_1PRM.html#ad7ecc062d1cfcd1d4496846de2ec8a08">ConnectionStrategy</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#a834d99372562ad29dafb42c2c5758299">connectionStrategy_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that returns the milestones to attempt connections with. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afdcd00e44119e8519bb39900f881332f"></a><!-- doxytag: member="ompl::geometric::PRM::connectionFilter_" ref="afdcd00e44119e8519bb39900f881332f" args="" -->
<a class="el" href="classompl_1_1geometric_1_1PRM.html#ac0b88385d600799a0ef7db709cf077b8">ConnectionFilter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#afdcd00e44119e8519bb39900f881332f">connectionFilter_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that can reject a milestone connection. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad9c9af7b63886f0d866da2953320e2d"></a><!-- doxytag: member="ompl::geometric::PRM::userSetConnectionStrategy_" ref="aad9c9af7b63886f0d866da2953320e2d" args="" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#aad9c9af7b63886f0d866da2953320e2d">userSetConnectionStrategy_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag indicating whether the employed connection strategy was set by the user (or defaults are assumed) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adca46f63edd3ad7ff1a13483242c1bf2"></a><!-- doxytag: member="ompl::geometric::PRM::rng_" ref="adca46f63edd3ad7ff1a13483242c1bf2" args="" -->
<a class="el" href="classompl_1_1RNG.html">RNG</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1geometric_1_1PRM.html#adca46f63edd3ad7ff1a13483242c1bf2">rng_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Random number generator. <br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Probabilistic RoadMap planner. </p>
<p><a class="anchor" id="gPRM"></a></p>
<dl class="user"><dt><b>Short description</b></dt><dd><a class="el" href="classompl_1_1geometric_1_1PRM.html" title="Probabilistic RoadMap planner.">PRM</a> is a planner that constructs a roadmap of milestones that approximate the connectivity of the state space. The milestones are valid states in the state space. Near-by milestones are connected by valid motions. Finding a motion plan that connects two given states is reduced to a discrete search (this implementation uses A*) in the roadmap.</dd></dl>
<dl class="user"><dt><b>External documentation</b></dt><dd>L.E. Kavraki, P.Švestka, J.-C. Latombe, and M.H. Overmars, Probabilistic roadmaps for path planning in high-dimensional configuration spaces, <em>IEEE Trans. on Robotics and Automation</em>, vol. 12, pp. 566–580, Aug. 1996. DOI: <a href="http://dx.doi.org/10.1109/70.508439">10.1109/70.508439</a><br/>
 <a href="http://ieeexplore.ieee.org/ielx4/70/11078/00508439.pdf?tp=&amp;arnumber=508439&amp;isnumber=11078">[PDF]</a> <a href="http://www.kavrakilab.org/robotics/prm.html">[more]</a> </dd></dl>

<p>Definition at line <a class="el" href="PRM_8h_source.html#l00079">79</a> of file <a class="el" href="PRM_8h_source.html">PRM.h</a>.</p>
</div><hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="ac0b88385d600799a0ef7db709cf077b8"></a><!-- doxytag: member="ompl::geometric::PRM::ConnectionFilter" ref="ac0b88385d600799a0ef7db709cf077b8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef boost::function2&lt;bool, const Vertex&amp;, const Vertex&amp;&gt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ac0b88385d600799a0ef7db709cf077b8">ompl::geometric::PRM::ConnectionFilter</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A function that can reject connections. </p>
<p>This is called after previous connections from the neighbor list have been added to the roadmap. </p>

<p>Definition at line <a class="el" href="PRM_8h_source.html#l00140">140</a> of file <a class="el" href="PRM_8h_source.html">PRM.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad7ecc062d1cfcd1d4496846de2ec8a08"></a><!-- doxytag: member="ompl::geometric::PRM::ConnectionStrategy" ref="ad7ecc062d1cfcd1d4496846de2ec8a08" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef boost::function1&lt;std::vector&lt;Vertex&gt;&amp;, const Vertex&gt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad7ecc062d1cfcd1d4496846de2ec8a08">ompl::geometric::PRM::ConnectionStrategy</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>A function returning the milestones that should be attempted to connect to. </p>
<dl class="note"><dt><b>Note:</b></dt><dd>Can't use the prefered boost::function syntax here because the Python bindings don't like it. </dd></dl>

<p>Definition at line <a class="el" href="PRM_8h_source.html#l00133">133</a> of file <a class="el" href="PRM_8h_source.html">PRM.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad5e78674f3419bb018a7f94d80d128fb"></a><!-- doxytag: member="ompl::geometric::PRM::Graph" ref="ad5e78674f3419bb018a7f94d80d128fb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef boost::adjacency_list&lt; boost::vecS, boost::vecS, boost::undirectedS, boost::property &lt; <a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__state__t.html">vertex_state_t</a>, <a class="el" href="classompl_1_1base_1_1State.html">base::State</a>*, boost::property &lt; <a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__total__connection__attempts__t.html">vertex_total_connection_attempts_t</a>, unsigned int, boost::property &lt; <a class="el" href="structompl_1_1geometric_1_1PRM_1_1vertex__successful__connection__attempts__t.html">vertex_successful_connection_attempts_t</a>, unsigned int, boost::property &lt; boost::vertex_predecessor_t, unsigned long int, boost::property &lt; boost::vertex_rank_t, unsigned long int &gt; &gt; &gt; &gt; &gt;, boost::property &lt; boost::edge_weight_t, double, boost::property &lt; boost::edge_index_t, unsigned int&gt; &gt; &gt; <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad5e78674f3419bb018a7f94d80d128fb">ompl::geometric::PRM::Graph</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The underlying roadmap graph. </p>
<dl class="user"><dt><b>Any BGL graph representation could be used here. Because we</b></dt><dd>expect the roadmap to be sparse (m&lt;n^2), an adjacency_list is more appropriate than an adjacency_matrix.</dd></dl>
<dl class="user"><dt><b>Obviously, a ompl::base::State* vertex property is required.</b></dt><dd>The incremental connected components algorithm requires vertex_predecessor_t and vertex_rank_t properties. If boost::vecS is not used for vertex storage, then there must also be a boost:vertex_index_t property manually added.</dd></dl>
<dl class="user"><dt><b>Edges should be undirected and have a weight property.</b></dt><dd></dd></dl>

<p>Definition at line <a class="el" href="PRM_8h_source.html#l00119">119</a> of file <a class="el" href="PRM_8h_source.html">PRM.h</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ad1e0bed0774005cf08bca672eec73abf"></a><!-- doxytag: member="ompl::geometric::PRM::setConnectionFilter" ref="ad1e0bed0774005cf08bca672eec73abf" args="(const ConnectionFilter &amp;connectionFilter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ompl::geometric::PRM::setConnectionFilter </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classompl_1_1geometric_1_1PRM.html#ac0b88385d600799a0ef7db709cf077b8">ConnectionFilter</a> &amp;&#160;</td>
          <td class="paramname"><em>connectionFilter</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the function that can reject a milestone connection. </p>
<dl class="user"><dt><b>The given function is called immediately before a connection</b></dt><dd>is checked for collision and added to the roadmap. Other neighbors may have already been connected before this function is called. This allows certain heuristics that use the structure of the roadmap (like connected components or useful cycles) to be implemented by changing this function.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">connectionFilter</td><td>A function that takes the new milestone, a neighboring milestone and returns whether a connection should be attempted. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="PRM_8h_source.html#l00188">188</a> of file <a class="el" href="PRM_8h_source.html">PRM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8a7ce65640dd499ba32d80d3495d38bf"></a><!-- doxytag: member="ompl::geometric::PRM::setConnectionStrategy" ref="a8a7ce65640dd499ba32d80d3495d38bf" args="(const ConnectionStrategy &amp;connectionStrategy)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ompl::geometric::PRM::setConnectionStrategy </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classompl_1_1geometric_1_1PRM.html#ad7ecc062d1cfcd1d4496846de2ec8a08">ConnectionStrategy</a> &amp;&#160;</td>
          <td class="paramname"><em>connectionStrategy</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the connection strategy function that specifies the milestones that connection attempts will be make to for a given milestone. </p>
<dl class="user"><dt><b>The behavior and performance of PRM can be changed drastically</b></dt><dd>by varying the number and properties if the milestones that are connected to each other.</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pdef</td><td>A function that takes a milestone as an argument and returns a collection of other milestones to which a connection attempt must be made. The default connection strategy is to connect a milestone's 10 closest neighbors. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="PRM_8h_source.html#l00165">165</a> of file <a class="el" href="PRM_8h_source.html">PRM.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/ompl/geometric/planners/prm/<a class="el" href="PRM_8h_source.html">PRM.h</a></li>
<li>src/ompl/geometric/planners/prm/src/<a class="el" href="PRM_8cpp_source.html">PRM.cpp</a></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">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</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> &bull;
  <a href="http://www.cs.rice.edu">Department of Computer Science</a> &bull;
  <a href="http://www.rice.edu">Rice University</a><br>
  <div class="gray">Generated on Sun Oct 9 2011 23:04:43 by&#160;<a href="http://www.doxygen.org/index.html">doxygen</a> 1.7.4</div>
</div>
</div>
</body>
</html>