<!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::control::ODEEnvironment 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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0"name="MSearchResults" id="MSearchResults"></iframe> </div> <div class="container"> <div class="span-22 push-2 first last"> <div> <!-- Generated by Doxygen 1.7.4 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div 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_1control.html">control</a> </li> <li class="navelem"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html">ODEEnvironment</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-attribs">Public Attributes</a> </div> <div class="headertitle"> <div class="title">ompl::control::ODEEnvironment Class Reference</div> </div> </div> <div class="contents"> <!-- doxytag: class="ompl::control::ODEEnvironment" --> <p>This class contains the ODE constructs OMPL needs to know about when planning. <a href="classompl_1_1control_1_1ODEEnvironment.html#details">More...</a></p> <p><code>#include <<a class="el" href="ODEEnvironment_8h_source.html">ODEEnvironment.h</a>></code></p> <p><a href="classompl_1_1control_1_1ODEEnvironment-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="affbd44a3a8f3b0ee9bab101dd6118882"></a><!-- doxytag: member="ompl::control::ODEEnvironment::getControlDimension" ref="affbd44a3a8f3b0ee9bab101dd6118882" args="(void) const =0" --> virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#affbd44a3a8f3b0ee9bab101dd6118882">getControlDimension</a> (void) const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Number of parameters (double values) needed to specify a control input. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af00a9cd54690f68b9c5e5be3bbb9505b"></a><!-- doxytag: member="ompl::control::ODEEnvironment::getControlBounds" ref="af00a9cd54690f68b9c5e5be3bbb9505b" args="(std::vector< double > &lower, std::vector< double > &upper) const =0" --> virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#af00a9cd54690f68b9c5e5be3bbb9505b">getControlBounds</a> (std::vector< double > &lower, std::vector< double > &upper) const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the control bounds -- the bounding box in which to sample controls. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a63631eea956ae809f68412fa71218214"></a><!-- doxytag: member="ompl::control::ODEEnvironment::applyControl" ref="a63631eea956ae809f68412fa71218214" args="(const double *control) const =0" --> virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#a63631eea956ae809f68412fa71218214">applyControl</a> (const double *control) const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Application of a control. This function sets the forces/torques/velocities for bodies in the simulation based on control inputs. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9a735c35a15101711f7ba96e44ea15e"></a><!-- doxytag: member="ompl::control::ODEEnvironment::isValidCollision" ref="ad9a735c35a15101711f7ba96e44ea15e" args="(dGeomID geom1, dGeomID geom2, const dContact &contact) const " --> virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#ad9a735c35a15101711f7ba96e44ea15e">isValidCollision</a> (dGeomID geom1, dGeomID geom2, const dContact &contact) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Decide whether a collision is a valid one or not. In some cases, collisions between some bodies can be allowed. By default, this function always returns false, making all collisions invalid. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae32fec4cb60f1d4748d044c8f0f9bb26"></a><!-- doxytag: member="ompl::control::ODEEnvironment::getMaxContacts" ref="ae32fec4cb60f1d4748d044c8f0f9bb26" args="(dGeomID geom1, dGeomID geom2) const " --> virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#ae32fec4cb60f1d4748d044c8f0f9bb26">getMaxContacts</a> (dGeomID geom1, dGeomID geom2) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the maximum number of contacts to set up between two colliding geoms. By default, this just returns the member variable maxContacts. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ca2fc51b8a772dc0a4235f5884507cc"></a><!-- doxytag: member="ompl::control::ODEEnvironment::setupContact" ref="a9ca2fc51b8a772dc0a4235f5884507cc" args="(dGeomID geom1, dGeomID geom2, dContact &contact) const " --> virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#a9ca2fc51b8a772dc0a4235f5884507cc">setupContact</a> (dGeomID geom1, dGeomID geom2, dContact &contact) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Parameters to set when contacts are created between <em>geom1</em> and <em>geom2</em>. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5da2bbc0b93a6194bcb79bb6dfe387a"></a><!-- doxytag: member="ompl::control::ODEEnvironment::getGeomName" ref="ae5da2bbc0b93a6194bcb79bb6dfe387a" args="(dGeomID geom) const " --> std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#ae5da2bbc0b93a6194bcb79bb6dfe387a">getGeomName</a> (dGeomID geom) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the name of a body. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae6ff2e49fd57d861944c023f353ca36"></a><!-- doxytag: member="ompl::control::ODEEnvironment::setGeomName" ref="aae6ff2e49fd57d861944c023f353ca36" args="(dGeomID geom, const std::string &name)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#aae6ff2e49fd57d861944c023f353ca36">setGeomName</a> (dGeomID geom, const std::string &name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the name of a body. <br/></td></tr> <tr><td colspan="2"><h2><a name="pub-attribs"></a> Public Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a963d0d057d2b588d594051b42292ffc6"></a><!-- doxytag: member="ompl::control::ODEEnvironment::world_" ref="a963d0d057d2b588d594051b42292ffc6" args="" --> dWorldID </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#a963d0d057d2b588d594051b42292ffc6">world_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The ODE world where the simulation is performed. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0eba2a3d6bb57f365878c70c7f30f00"></a><!-- doxytag: member="ompl::control::ODEEnvironment::collisionSpaces_" ref="ac0eba2a3d6bb57f365878c70c7f30f00" args="" --> std::vector< dSpaceID > </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#ac0eba2a3d6bb57f365878c70c7f30f00">collisionSpaces_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The set of spaces where contacts need to be evaluated before simulation takes place. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa72f756a8a9078e4318ac99b8b5e071a"></a><!-- doxytag: member="ompl::control::ODEEnvironment::stateBodies_" ref="aa72f756a8a9078e4318ac99b8b5e071a" args="" --> std::vector< dBodyID > </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#aa72f756a8a9078e4318ac99b8b5e071a">stateBodies_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The set of bodies that need to be considered part of the state when planning. This is not necessarily all the bodies in the environment. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5cfcd1480c34a4b1b53545b6619c4400"></a><!-- doxytag: member="ompl::control::ODEEnvironment::geomNames_" ref="a5cfcd1480c34a4b1b53545b6619c4400" args="" --> std::map< dGeomID, std::string > </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#a5cfcd1480c34a4b1b53545b6619c4400">geomNames_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Optional map of names given to geoms. This is useful when collision checking is verbose. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4ba29fa6f1a76e2a8e7439e9523f046"></a><!-- doxytag: member="ompl::control::ODEEnvironment::verboseContacts_" ref="aa4ba29fa6f1a76e2a8e7439e9523f046" args="" --> bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#aa4ba29fa6f1a76e2a8e7439e9523f046">verboseContacts_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Issue debug messages when contacts are found. Default is false. This should only be used for debugging. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8955f21ea18d0bd1037608de29f32e6b"></a><!-- doxytag: member="ompl::control::ODEEnvironment::contactGroup_" ref="a8955f21ea18d0bd1037608de29f32e6b" args="" --> dJointGroupID </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#a8955f21ea18d0bd1037608de29f32e6b">contactGroup_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The group of joints where contacts are created. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac41b8cd93bfc8d8448ca8cd08649454a"></a><!-- doxytag: member="ompl::control::ODEEnvironment::maxContacts_" ref="ac41b8cd93bfc8d8448ca8cd08649454a" args="" --> unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#ac41b8cd93bfc8d8448ca8cd08649454a">maxContacts_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The maximum number of contacts to create between two bodies when a collision occurs. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6032bec24d39ca426f647c0fc4a82fc"></a><!-- doxytag: member="ompl::control::ODEEnvironment::stepSize_" ref="ac6032bec24d39ca426f647c0fc4a82fc" args="" --> double </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#ac6032bec24d39ca426f647c0fc4a82fc">stepSize_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The simulation step size. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc3b955163e4707c0164b4e43b0509cc"></a><!-- doxytag: member="ompl::control::ODEEnvironment::maxControlSteps_" ref="abc3b955163e4707c0164b4e43b0509cc" args="" --> unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#abc3b955163e4707c0164b4e43b0509cc">maxControlSteps_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The maximum number of times a control is applies in sequence. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5578355917aff91e7656d0bc2de7c4b"></a><!-- doxytag: member="ompl::control::ODEEnvironment::minControlSteps_" ref="af5578355917aff91e7656d0bc2de7c4b" args="" --> unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#af5578355917aff91e7656d0bc2de7c4b">minControlSteps_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The minimum number of times a control is applies in sequence. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ef75187c77c26d167603e3b3d907ce9"></a><!-- doxytag: member="ompl::control::ODEEnvironment::mutex_" ref="a4ef75187c77c26d167603e3b3d907ce9" args="" --> boost::mutex </td><td class="memItemRight" valign="bottom"><a class="el" href="classompl_1_1control_1_1ODEEnvironment.html#a4ef75187c77c26d167603e3b3d907ce9">mutex_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Lock to use when performing simulations in the world. (ODE simulations are NOT thread safe) <br/></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>This class contains the ODE constructs OMPL needs to know about when planning. </p> <p>Definition at line <a class="el" href="ODEEnvironment_8h_source.html#l00065">65</a> of file <a class="el" href="ODEEnvironment_8h_source.html">ODEEnvironment.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>src/ompl/extensions/ode/<a class="el" href="ODEEnvironment_8h_source.html">ODEEnvironment.h</a></li> <li>src/ompl/extensions/ode/src/<a class="el" href="ODEEnvironment_8cpp_source.html">ODEEnvironment.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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> </div> <div class="footer span-22 push-2 last"> <a href="http://www.kavrakilab.org">Physical and Biological Computing Group</a> • <a href="http://www.cs.rice.edu">Department of Computer Science</a> • <a href="http://www.rice.edu">Rice University</a><br> <div class="gray">Generated on Sun Oct 9 2011 23:04:43 by <a href="http://www.doxygen.org/index.html">doxygen</a> 1.7.4</div> </div> </div> </body> </html>