Sophie

Sophie

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

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::base::SpaceInformation 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_1base.html">base</a>      </li>
      <li class="navelem"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html">SpaceInformation</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">ompl::base::SpaceInformation Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="ompl::base::SpaceInformation" -->
<p>The base class for space information. This contains all the information about the space planning is done in. <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 ...">setup()</a> needs to be called as well, before use.  
 <a href="classompl_1_1base_1_1SpaceInformation.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="base_2SpaceInformation_8h_source.html">SpaceInformation.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ompl::base::SpaceInformation:</div>
<div class="dyncontent">
<div class="center"><img src="classompl_1_1base_1_1SpaceInformation__inherit__graph.png" border="0" usemap="#ompl_1_1base_1_1SpaceInformation_inherit__map" alt="Inheritance graph"/></div>
<map name="ompl_1_1base_1_1SpaceInformation_inherit__map" id="ompl_1_1base_1_1SpaceInformation_inherit__map">
<area shape="rect" id="node3" href="classompl_1_1control_1_1SpaceInformation.html" title="Space information containing necessary information for planning with controls. setup() needs to be ca..." alt="" coords="5,83,211,112"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classompl_1_1base_1_1SpaceInformation-members.html">List of all members.</a></p>
<table class="memberdecls">
<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="a60718797ea47fe7ccd4a5c14acaee510"></a><!-- doxytag: member="ompl::base::SpaceInformation::SpaceInformation" ref="a60718797ea47fe7ccd4a5c14acaee510" args="(const StateSpacePtr &amp;space)" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a60718797ea47fe7ccd4a5c14acaee510">SpaceInformation</a> (const <a class="el" href="classompl_1_1base_1_1StateSpacePtr.html">StateSpacePtr</a> &amp;space)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. Sets the instance of the state space to plan with. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af79b66aea243ec09f9f0db949efbe86b"></a><!-- doxytag: member="ompl::base::SpaceInformation::isValid" ref="af79b66aea243ec09f9f0db949efbe86b" args="(const State *state) const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#af79b66aea243ec09f9f0db949efbe86b">isValid</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *state) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a given state is valid or not. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69c22d6da354e45f65c4308a5ea10011"></a><!-- doxytag: member="ompl::base::SpaceInformation::getStateSpace" ref="a69c22d6da354e45f65c4308a5ea10011" args="(void) const " -->
const <a class="el" href="classompl_1_1base_1_1StateSpacePtr.html">StateSpacePtr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a69c22d6da354e45f65c4308a5ea10011">getStateSpace</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the instance of the used state space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef300c1eff0e5a5f23dd8a621d892574"></a><!-- doxytag: member="ompl::base::SpaceInformation::getStateDimension" ref="aef300c1eff0e5a5f23dd8a621d892574" args="(void) const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#aef300c1eff0e5a5f23dd8a621d892574">getStateDimension</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the dimension of the state space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9887f6b2810e5d3befa9a7b886b5b4dd"></a><!-- doxytag: member="ompl::base::SpaceInformation::printSettings" ref="a9887f6b2810e5d3befa9a7b886b5b4dd" args="(std::ostream &amp;out=std::cout) const " -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a9887f6b2810e5d3befa9a7b886b5b4dd">printSettings</a> (std::ostream &amp;out=std::cout) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print information about the current instance of the state space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abaeaf7d8730ba3c1ae6b428be87a098c"></a><!-- doxytag: member="ompl::base::SpaceInformation::printProperties" ref="abaeaf7d8730ba3c1ae6b428be87a098c" args="(std::ostream &amp;out=std::cout) const " -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#abaeaf7d8730ba3c1ae6b428be87a098c">printProperties</a> (std::ostream &amp;out=std::cout) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print properties of the current instance of the state space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac39aa0c4b92e3ca5acfa75eeb56b080f"></a><!-- doxytag: member="ompl::base::SpaceInformation::setup" ref="ac39aa0c4b92e3ca5acfa75eeb56b080f" args="(void)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ac39aa0c4b92e3ca5acfa75eeb56b080f">setup</a> (void)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Perform additional setup tasks (run once, before use). If state validity checking resolution has not been set, estimateMaxResolution() is called to estimate it. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9260fb70aa7d41e968c97d90f9f25867"></a><!-- doxytag: member="ompl::base::SpaceInformation::isSetup" ref="a9260fb70aa7d41e968c97d90f9f25867" args="(void) const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a9260fb70aa7d41e968c97d90f9f25867">isSetup</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if setup was called. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Topology-specific state operations (as in the state space)</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a58af29d996a5fa0b05f58e3493af7f"></a><!-- doxytag: member="ompl::base::SpaceInformation::equalStates" ref="a6a58af29d996a5fa0b05f58e3493af7f" args="(const State *state1, const State *state2) const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a6a58af29d996a5fa0b05f58e3493af7f">equalStates</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *state1, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *state2) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if two states are the same. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad76b863efa604add17cae43b4ebcb0b9"></a><!-- doxytag: member="ompl::base::SpaceInformation::satisfiesBounds" ref="ad76b863efa604add17cae43b4ebcb0b9" args="(const State *state) const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ad76b863efa604add17cae43b4ebcb0b9">satisfiesBounds</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *state) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a state is inside the bounding box. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8cadda9547f74d4193c3168a3b2d34f"></a><!-- doxytag: member="ompl::base::SpaceInformation::distance" ref="ac8cadda9547f74d4193c3168a3b2d34f" args="(const State *state1, const State *state2) const " -->
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ac8cadda9547f74d4193c3168a3b2d34f">distance</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *state1, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *state2) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the distance between two states. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae59039c648f01e6bb3bf16de03b91574"></a><!-- doxytag: member="ompl::base::SpaceInformation::enforceBounds" ref="ae59039c648f01e6bb3bf16de03b91574" args="(State *state) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ae59039c648f01e6bb3bf16de03b91574">enforceBounds</a> (<a class="el" href="classompl_1_1base_1_1State.html">State</a> *state) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Bring the state within the bounds of the state space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0113dd07660e15d54a8f8c05562633d6"></a><!-- doxytag: member="ompl::base::SpaceInformation::printState" ref="a0113dd07660e15d54a8f8c05562633d6" args="(const State *state, std::ostream &amp;out=std::cout) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a0113dd07660e15d54a8f8c05562633d6">printState</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *state, std::ostream &amp;out=std::cout) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print a state to a stream. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Configuration of state validity checking</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0449ec0893e02aca2bdfc63323b624e5"></a><!-- doxytag: member="ompl::base::SpaceInformation::setStateValidityChecker" ref="a0449ec0893e02aca2bdfc63323b624e5" args="(const StateValidityCheckerPtr &amp;svc)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a0449ec0893e02aca2bdfc63323b624e5">setStateValidityChecker</a> (const <a class="el" href="classompl_1_1base_1_1StateValidityCheckerPtr.html">StateValidityCheckerPtr</a> &amp;svc)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the instance of the state validity checker to use. Parallel implementations of planners assume this validity checker is thread safe. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac60c96cd6f8450bf8cd1a3a08ed1dee6"></a><!-- doxytag: member="ompl::base::SpaceInformation::setStateValidityChecker" ref="ac60c96cd6f8450bf8cd1a3a08ed1dee6" args="(const StateValidityCheckerFn &amp;svc)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ac60c96cd6f8450bf8cd1a3a08ed1dee6">setStateValidityChecker</a> (const <a class="el" href="namespaceompl_1_1base.html#a208ad51fcef09961293d23b589a4dbfa">StateValidityCheckerFn</a> &amp;svc)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">If no state validity checking class is specified (<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...">StateValidityChecker</a>), a boost function can be specified instead. This version however incurs a small additional overhead when calling the function, since there is one more level of indirection. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ab8714ed0d6b784404aae4c5b4954db"></a><!-- doxytag: member="ompl::base::SpaceInformation::getStateValidityChecker" ref="a8ab8714ed0d6b784404aae4c5b4954db" args="(void) const " -->
const <a class="el" href="classompl_1_1base_1_1StateValidityCheckerPtr.html">StateValidityCheckerPtr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a8ab8714ed0d6b784404aae4c5b4954db">getStateValidityChecker</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the instance of the used state validity checker. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69e58548f91db3e30ac7f41c87459279"></a><!-- doxytag: member="ompl::base::SpaceInformation::setMotionValidator" ref="a69e58548f91db3e30ac7f41c87459279" args="(const MotionValidatorPtr &amp;mv)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a69e58548f91db3e30ac7f41c87459279">setMotionValidator</a> (const <a class="el" href="classompl_1_1base_1_1MotionValidatorPtr.html">MotionValidatorPtr</a> &amp;mv)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the instance of the motion validity checker to use. Parallel implementations of planners assume this validity checker is thread safe. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22d6e08c0fadd4c751aff912e56342c2"></a><!-- doxytag: member="ompl::base::SpaceInformation::getMotionValidator" ref="a22d6e08c0fadd4c751aff912e56342c2" args="(void) const " -->
const <a class="el" href="classompl_1_1base_1_1MotionValidatorPtr.html">MotionValidatorPtr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a22d6e08c0fadd4c751aff912e56342c2">getMotionValidator</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the instance of the used state validity checker. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bcd47fd9b7cf54b086d2122646736bf"></a><!-- doxytag: member="ompl::base::SpaceInformation::setStateValidityCheckingResolution" ref="a2bcd47fd9b7cf54b086d2122646736bf" args="(double resolution)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a2bcd47fd9b7cf54b086d2122646736bf">setStateValidityCheckingResolution</a> (double resolution)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the resolution at which state validity needs to be verified in order for a motion between two states to be considered valid. This value is specified as a fraction of the space's extent. This call is only applicable if a <a class="el" href="classompl_1_1base_1_1DiscreteMotionValidator.html" title="A motion validator that only uses the state validity checker. Motions are checked for validity at a s...">ompl::base::DiscreteMotionValidator</a> is used. See <a class="el" href="stateValidation.html">State Validity Checking</a>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41910a9525c7d88a64147af4f2bb35bc"></a><!-- doxytag: member="ompl::base::SpaceInformation::getStateValidityCheckingResolution" ref="a41910a9525c7d88a64147af4f2bb35bc" args="(void) const " -->
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a41910a9525c7d88a64147af4f2bb35bc">getStateValidityCheckingResolution</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the resolution at which state validity is verified. This call is only applicable if a <a class="el" href="classompl_1_1base_1_1DiscreteMotionValidator.html" title="A motion validator that only uses the state validity checker. Motions are checked for validity at a s...">ompl::base::DiscreteMotionValidator</a> is used. See <a class="el" href="stateValidation.html">State Validity Checking</a>. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">State memory management</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e758a30cc13bd00c6cee667c9232e88"></a><!-- doxytag: member="ompl::base::SpaceInformation::allocState" ref="a9e758a30cc13bd00c6cee667c9232e88" args="(void) const " -->
<a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a9e758a30cc13bd00c6cee667c9232e88">allocState</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate memory for a state. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae94a80be6d748f0d241beeab28c86957"></a><!-- doxytag: member="ompl::base::SpaceInformation::allocStates" ref="ae94a80be6d748f0d241beeab28c86957" args="(std::vector&lt; State * &gt; &amp;states) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ae94a80be6d748f0d241beeab28c86957">allocStates</a> (std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;states) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate memory for each element of the array <em>states</em>. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78dff42e6a76b87a9a4d19680fb82e31"></a><!-- doxytag: member="ompl::base::SpaceInformation::freeState" ref="a78dff42e6a76b87a9a4d19680fb82e31" args="(State *state) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a78dff42e6a76b87a9a4d19680fb82e31">freeState</a> (<a class="el" href="classompl_1_1base_1_1State.html">State</a> *state) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free the memory of a state. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a720c113d34500de5929e3fb908641079"></a><!-- doxytag: member="ompl::base::SpaceInformation::freeStates" ref="a720c113d34500de5929e3fb908641079" args="(std::vector&lt; State * &gt; &amp;states) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a720c113d34500de5929e3fb908641079">freeStates</a> (std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;states) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free the memory of an array of states. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05e4c93df272965efa3459295f70bc0f"></a><!-- doxytag: member="ompl::base::SpaceInformation::copyState" ref="a05e4c93df272965efa3459295f70bc0f" args="(State *destination, const State *source) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a05e4c93df272965efa3459295f70bc0f">copyState</a> (<a class="el" href="classompl_1_1base_1_1State.html">State</a> *destination, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *source) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a state to another. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6558a06162464c7f06a78601c5ad8230"></a><!-- doxytag: member="ompl::base::SpaceInformation::cloneState" ref="a6558a06162464c7f06a78601c5ad8230" args="(const State *source) const " -->
<a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a6558a06162464c7f06a78601c5ad8230">cloneState</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *source) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Clone a state. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Sampling of valid states</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65ba2c60529f5aa23098d43c6c2b6da4"></a><!-- doxytag: member="ompl::base::SpaceInformation::allocStateSampler" ref="a65ba2c60529f5aa23098d43c6c2b6da4" args="(void) const " -->
<a class="el" href="classompl_1_1base_1_1StateSamplerPtr.html">StateSamplerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a65ba2c60529f5aa23098d43c6c2b6da4">allocStateSampler</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a uniform state sampler for the state space. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb94231d22c1763e3f79e5d67e5e7428"></a><!-- doxytag: member="ompl::base::SpaceInformation::allocValidStateSampler" ref="acb94231d22c1763e3f79e5d67e5e7428" args="(void) const " -->
<a class="el" href="classompl_1_1base_1_1ValidStateSamplerPtr.html">ValidStateSamplerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#acb94231d22c1763e3f79e5d67e5e7428">allocValidStateSampler</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate an instance of a valid state sampler for this space. If <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...">setValidStateSamplerAllocator()</a> was previously called, the specified allocator is used to produce the state sampler. Otherwise, a ompl::base::UniformValidStateSampler() is allocated. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6391771fc74984a3266f986cfe07780"></a><!-- doxytag: member="ompl::base::SpaceInformation::setValidStateSamplerAllocator" ref="ae6391771fc74984a3266f986cfe07780" args="(const ValidStateSamplerAllocator &amp;vssa)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ae6391771fc74984a3266f986cfe07780">setValidStateSamplerAllocator</a> (const <a class="el" href="namespaceompl_1_1base.html#a58736601905ecc753990d7d053c3a0b4">ValidStateSamplerAllocator</a> &amp;vssa)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the allocator to use for a valid state sampler. This replaces the default uniform valid state sampler. This call can be made at any time, but it should not be changed while <a class="el" href="classompl_1_1base_1_1Planner.html#acc87e95df04aa24ec52e24281c9fc223" title="Function that can solve the motion planning problem. This function can be called multiple times on th...">ompl::base::Planner::solve()</a> is executing. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Primitives typically used by motion planners</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1bc9d650c9e571dbc124e1c7761bce9e"></a><!-- doxytag: member="ompl::base::SpaceInformation::getMaximumExtent" ref="a1bc9d650c9e571dbc124e1c7761bce9e" args="(void) const " -->
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a1bc9d650c9e571dbc124e1c7761bce9e">getMaximumExtent</a> (void) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum extent of the space we are planning in. This is the maximum distance that could be reported between any two given states. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#af936d24f2adf320e2158c855a0dad0af">searchValidNearby</a> (<a class="el" href="classompl_1_1base_1_1State.html">State</a> *state, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *near, double distance, unsigned int attempts) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Find a valid state near a given one. If the given state is valid, it will be returned itself. The two passed state pointers need not point to different memory. Returns true on success.  <a href="#af936d24f2adf320e2158c855a0dad0af"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ac4d572f3f831e3cfb96bd387b05798cf">searchValidNearby</a> (const <a class="el" href="classompl_1_1base_1_1ValidStateSamplerPtr.html">ValidStateSamplerPtr</a> &amp;sampler, <a class="el" href="classompl_1_1base_1_1State.html">State</a> *state, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *near, double distance) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Find a valid state near a given one. If the given state is valid, it will be returned itself. The two passed state pointers need not point to different memory. Returns true on success.  <a href="#ac4d572f3f831e3cfb96bd387b05798cf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a67f3734521dd86233648b0c9c3c80e74">randomBounceMotion</a> (const <a class="el" href="classompl_1_1base_1_1StateSamplerPtr.html">StateSamplerPtr</a> &amp;sss, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *start, unsigned int steps, std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;states, bool alloc) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Produce a valid motion starting at <em>start</em> by randomly bouncing off of invalid states. The start state <em>start</em> is not included in the computed motion (<em>states</em>). Returns the number of elements written to <em>states</em> (less or equal to <em>steps</em>).  <a href="#a67f3734521dd86233648b0c9c3c80e74"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a6047b893546bab139139104a0a7b756e">checkMotion</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *s1, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *s2, std::pair&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> *, double &gt; &amp;lastValid) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Incrementally check if the path between two motions is valid. Also compute the last state that was valid and the time of that state. The time is used to parametrize the motion from s1 to s2, s1 being at t = 0 and s2 being at t = 1. This function assumes s1 is valid.  <a href="#a6047b893546bab139139104a0a7b756e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a434b795993022c3742eb22f6c1db605d"></a><!-- doxytag: member="ompl::base::SpaceInformation::checkMotion" ref="a434b795993022c3742eb22f6c1db605d" args="(const State *s1, const State *s2) const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a434b795993022c3742eb22f6c1db605d">checkMotion</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *s1, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *s2) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the path between two states (from <em>s1</em> to <em>s2</em>) is valid, using subdivision. This function assumes <em>s1</em> is valid. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a6db453dae47c734046689c11fe7173f1">checkMotion</a> (const std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;states, unsigned int count, unsigned int &amp;firstInvalidStateIndex) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Incrementally check if a sequence of states is valid. Given a vector of states, this routine only checks the first <em>count</em> elements and marks the index of the first invalid state.  <a href="#a6db453dae47c734046689c11fe7173f1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bdcc0c19a133e5d324af2c536c3779d"></a><!-- doxytag: member="ompl::base::SpaceInformation::checkMotion" ref="a7bdcc0c19a133e5d324af2c536c3779d" args="(const std::vector&lt; State * &gt; &amp;states, unsigned int count) const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a7bdcc0c19a133e5d324af2c536c3779d">checkMotion</a> (const std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;states, unsigned int count) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if a sequence of states is valid using subdivision. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a3e5a6cdbe7c636d8e60ed7833c573668">getMotionStates</a> (const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *s1, const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *s2, std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;states, unsigned int count, bool endpoints, bool alloc) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get <em>count</em> states that make up a motion between <em>s1</em> and <em>s2</em>. Returns the number of states that were added to <em>states</em>. If <em>states.size()</em> &gt;= count or <em>alloc</em> is true, the returned value is equal to <em>count</em> (or <em>count</em> + 2, if <em>endpoints</em> is true). Otherwise, fewer states can be returned.  <a href="#a3e5a6cdbe7c636d8e60ed7833c573668"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Routines for inferring information about the state space</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84daee3700b856630c676b37536c9787"></a><!-- doxytag: member="ompl::base::SpaceInformation::probabilityOfValidState" ref="a84daee3700b856630c676b37536c9787" args="(unsigned int attempts) const " -->
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a84daee3700b856630c676b37536c9787">probabilityOfValidState</a> (unsigned int attempts) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimate probability of sampling a valid state. <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 ...">setup()</a> is assumed to have been called. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae83e285ab400971f1e5e6d171a83eb6c"></a><!-- doxytag: member="ompl::base::SpaceInformation::averageValidMotionLength" ref="ae83e285ab400971f1e5e6d171a83eb6c" args="(unsigned int attempts) const " -->
double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ae83e285ab400971f1e5e6d171a83eb6c">averageValidMotionLength</a> (unsigned int attempts) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimate the length of a valid motion. <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 ...">setup()</a> is assumed to have been called. <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="ab7d8d572b76a5899b6c3816a544abe7a"></a><!-- doxytag: member="ompl::base::SpaceInformation::stateSpace_" ref="ab7d8d572b76a5899b6c3816a544abe7a" args="" -->
<a class="el" href="classompl_1_1base_1_1StateSpacePtr.html">StateSpacePtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ab7d8d572b76a5899b6c3816a544abe7a">stateSpace_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The state space planning is to be performed in. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03cab04f748eb6637fb5a088f21cead9"></a><!-- doxytag: member="ompl::base::SpaceInformation::stateValidityChecker_" ref="a03cab04f748eb6637fb5a088f21cead9" args="" -->
<a class="el" href="classompl_1_1base_1_1StateValidityCheckerPtr.html">StateValidityCheckerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a03cab04f748eb6637fb5a088f21cead9">stateValidityChecker_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The instance of the state validity checker used for determining the validity of states in the planning process. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace9276cca898e91739b7e8b0b2daafb1"></a><!-- doxytag: member="ompl::base::SpaceInformation::motionValidator_" ref="ace9276cca898e91739b7e8b0b2daafb1" args="" -->
<a class="el" href="classompl_1_1base_1_1MotionValidatorPtr.html">MotionValidatorPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ace9276cca898e91739b7e8b0b2daafb1">motionValidator_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The instance of the motion validator to use when determining the validity of motions in the planning process. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5dd22573e611e150d15af2081dd26c8"></a><!-- doxytag: member="ompl::base::SpaceInformation::setup_" ref="af5dd22573e611e150d15af2081dd26c8" args="" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#af5dd22573e611e150d15af2081dd26c8">setup_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag indicating whether <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 ...">setup()</a> has been called on this instance. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad20bb9ec674edd4d4dbb2d13b2d89abd"></a><!-- doxytag: member="ompl::base::SpaceInformation::vssa_" ref="ad20bb9ec674edd4d4dbb2d13b2d89abd" args="" -->
<a class="el" href="namespaceompl_1_1base.html#a58736601905ecc753990d7d053c3a0b4">ValidStateSamplerAllocator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#ad20bb9ec674edd4d4dbb2d13b2d89abd">vssa_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The optional valid state sampler allocator. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75472118296827164214bb40c2f9b960"></a><!-- doxytag: member="ompl::base::SpaceInformation::msg_" ref="a75472118296827164214bb40c2f9b960" args="" -->
<a class="el" href="classompl_1_1msg_1_1Interface.html">msg::Interface</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1base_1_1SpaceInformation.html#a75472118296827164214bb40c2f9b960">msg_</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The console interface. <br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>The base class for space information. This contains all the information about the space planning is done in. <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 ...">setup()</a> needs to be called as well, before use. </p>

<p>Definition at line <a class="el" href="base_2SpaceInformation_8h_source.html#l00085">85</a> of file <a class="el" href="base_2SpaceInformation_8h_source.html">SpaceInformation.h</a>.</p>
</div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a6047b893546bab139139104a0a7b756e"></a><!-- doxytag: member="ompl::base::SpaceInformation::checkMotion" ref="a6047b893546bab139139104a0a7b756e" args="(const State *s1, const State *s2, std::pair&lt; State *, double &gt; &amp;lastValid) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ompl::base::SpaceInformation::checkMotion </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::pair&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> *, double &gt; &amp;&#160;</td>
          <td class="paramname"><em>lastValid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Incrementally check if the path between two motions is valid. Also compute the last state that was valid and the time of that state. The time is used to parametrize the motion from s1 to s2, s1 being at t = 0 and s2 being at t = 1. This function assumes s1 is valid. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">s1</td><td>start state of the motion to be checked (assumed to be valid) </td></tr>
    <tr><td class="paramname">s2</td><td>final state of the motion to be checked </td></tr>
    <tr><td class="paramname">lastValid</td><td>first: storage for the last valid state (may be NULL); this need not be different from <em>s1</em> or <em>s2</em>. second: the time (between 0 and 1) of the last valid state, on the motion from <em>s1</em> to <em>s2</em> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="base_2SpaceInformation_8h_source.html#l00327">327</a> of file <a class="el" href="base_2SpaceInformation_8h_source.html">SpaceInformation.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6db453dae47c734046689c11fe7173f1"></a><!-- doxytag: member="ompl::base::SpaceInformation::checkMotion" ref="a6db453dae47c734046689c11fe7173f1" args="(const std::vector&lt; State * &gt; &amp;states, unsigned int count, unsigned int &amp;firstInvalidStateIndex) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ompl::base::SpaceInformation::checkMotion </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;&#160;</td>
          <td class="paramname"><em>states</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int &amp;&#160;</td>
          <td class="paramname"><em>firstInvalidStateIndex</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Incrementally check if a sequence of states is valid. Given a vector of states, this routine only checks the first <em>count</em> elements and marks the index of the first invalid state. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">states</td><td>the array of states to be checked </td></tr>
    <tr><td class="paramname">count</td><td>the number of states to be checked in the array (0 to <em>count</em>) </td></tr>
    <tr><td class="paramname">firstInvalidStateIndex</td><td>location to store the first invalid state index. Unmodified if the function returns true </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html#l00239">239</a> of file <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html">SpaceInformation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a3e5a6cdbe7c636d8e60ed7833c573668"></a><!-- doxytag: member="ompl::base::SpaceInformation::getMotionStates" ref="a3e5a6cdbe7c636d8e60ed7833c573668" args="(const State *s1, const State *s2, std::vector&lt; State * &gt; &amp;states, unsigned int count, bool endpoints, bool alloc) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int ompl::base::SpaceInformation::getMotionStates </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>s1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>s2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;&#160;</td>
          <td class="paramname"><em>states</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>endpoints</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>alloc</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get <em>count</em> states that make up a motion between <em>s1</em> and <em>s2</em>. Returns the number of states that were added to <em>states</em>. If <em>states.size()</em> &gt;= count or <em>alloc</em> is true, the returned value is equal to <em>count</em> (or <em>count</em> + 2, if <em>endpoints</em> is true). Otherwise, fewer states can be returned. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">s1</td><td>the start state of the considered motion </td></tr>
    <tr><td class="paramname">s2</td><td>the end state of the considered motion </td></tr>
    <tr><td class="paramname">states</td><td>the computed set of states along the specified motion </td></tr>
    <tr><td class="paramname">count</td><td>the number of intermediate states to compute </td></tr>
    <tr><td class="paramname">endpoints</td><td>flag indicating whether <em>s1</em> and <em>s2</em> are to be included in states </td></tr>
    <tr><td class="paramname">alloc</td><td>flag indicating whether memory is to be allocated automatically </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html#l00167">167</a> of file <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html">SpaceInformation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="a67f3734521dd86233648b0c9c3c80e74"></a><!-- doxytag: member="ompl::base::SpaceInformation::randomBounceMotion" ref="a67f3734521dd86233648b0c9c3c80e74" args="(const StateSamplerPtr &amp;sss, const State *start, unsigned int steps, std::vector&lt; State * &gt; &amp;states, bool alloc) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int ompl::base::SpaceInformation::randomBounceMotion </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1StateSamplerPtr.html">StateSamplerPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>sss</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>steps</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="classompl_1_1base_1_1State.html">State</a> * &gt; &amp;&#160;</td>
          <td class="paramname"><em>states</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>alloc</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Produce a valid motion starting at <em>start</em> by randomly bouncing off of invalid states. The start state <em>start</em> is not included in the computed motion (<em>states</em>). Returns the number of elements written to <em>states</em> (less or equal to <em>steps</em>). </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">sss</td><td>the state space sampler to use </td></tr>
    <tr><td class="paramname">start</td><td>the state at which to start bouncing </td></tr>
    <tr><td class="paramname">steps</td><td>the number of bouncing steps to take </td></tr>
    <tr><td class="paramname">states</td><td>the location at which generated states will be stored </td></tr>
    <tr><td class="paramname">alloc</td><td>flag indicating whether memory should be allocated for <em>states</em> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html#l00102">102</a> of file <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html">SpaceInformation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ac4d572f3f831e3cfb96bd387b05798cf"></a><!-- doxytag: member="ompl::base::SpaceInformation::searchValidNearby" ref="ac4d572f3f831e3cfb96bd387b05798cf" args="(const ValidStateSamplerPtr &amp;sampler, State *state, const State *near, double distance) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ompl::base::SpaceInformation::searchValidNearby </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1ValidStateSamplerPtr.html">ValidStateSamplerPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>sampler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>near</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>distance</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Find a valid state near a given one. If the given state is valid, it will be returned itself. The two passed state pointers need not point to different memory. Returns true on success. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">sampler</td><td>the valid state sampler to use when attemting to find a valid sample. </td></tr>
    <tr><td class="paramname">state</td><td>the location at which to store the valid state, if one is found. This location may be modified even if no valid state is found. </td></tr>
    <tr><td class="paramname">near</td><td>a state that may be invalid near which we would like to find a valid state </td></tr>
    <tr><td class="paramname">distance</td><td>the maximum allowed distance between <em>state</em> and <em>near</em> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html#l00128">128</a> of file <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html">SpaceInformation.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="af936d24f2adf320e2158c855a0dad0af"></a><!-- doxytag: member="ompl::base::SpaceInformation::searchValidNearby" ref="af936d24f2adf320e2158c855a0dad0af" args="(State *state, const State *near, double distance, unsigned int attempts) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ompl::base::SpaceInformation::searchValidNearby </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classompl_1_1base_1_1State.html">State</a> *&#160;</td>
          <td class="paramname"><em>near</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>distance</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>attempts</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Find a valid state near a given one. If the given state is valid, it will be returned itself. The two passed state pointers need not point to different memory. Returns true on success. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">state</td><td>the location at which to store the valid state, if one is found. This location may be modified even if no valid state is found. </td></tr>
    <tr><td class="paramname">near</td><td>a state that may be invalid near which we would like to find a valid state </td></tr>
    <tr><td class="paramname">distance</td><td>the maximum allowed distance between <em>state</em> and <em>near</em> </td></tr>
    <tr><td class="paramname">attempts</td><td>the algorithm works by sampling states near state <em>near</em>. This parameter defines the maximum number of sampling attempts </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html#l00150">150</a> of file <a class="el" href="base_2src_2SpaceInformation_8cpp_source.html">SpaceInformation.cpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/ompl/base/<a class="el" href="base_2SpaceInformation_8h_source.html">SpaceInformation.h</a></li>
<li>src/ompl/base/src/<a class="el" href="base_2src_2SpaceInformation_8cpp_source.html">SpaceInformation.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:42 by&#160;<a href="http://www.doxygen.org/index.html">doxygen</a> 1.7.4</div>
</div>
</div>
</body>
</html>