<!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: Changelog</title> <meta name="author" content="Ioan A. Șucan, Mark Moll, Lydia E. Kavraki"> <link rel="stylesheet" href="../css/screen.css" type="text/css" media="screen, projection"> <link rel="stylesheet" href="../css/print.css" type="text/css" media="print"> <!--[if lt IE 7]> <script type="text/javascript" src="../js/jquery/jquery.js"></script> <script type="text/javascript" src="../js/jquery/jquery.dropdown.js"></script> <![endif]--> <script type="text/javaScript" src="search/search.js"></script> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-9156598-2']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> </head> <body onload='searchBox.OnSelectItem(0);'> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search API'); --></script> <div class="navigation" id="top"> <div class="tabs" id="ompltitle"> <ul class="tablist"> <li>The Open Motion Planning Library</li> <li id="searchli"> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search API" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </li> </ul> </div> <ul id="nav" class="dropdown"> <li class="first"><a href="index.html">Home</a></li> <li><a href="download.html">Download</a></li> <li><a href="documentation.html">Documentation</a></li> <li><span class="dir">Code API</span> <ul> <li><a href="api_overview.html">API Overview</a></li> <li><a href="namespaces.html">Namespaces</a></li> <li><a href="annotated.html">Classes</a></li> <li><a href="files.html">Files</a></li> <li><a href="dirs.html">Directories</a></li> </ul> </li> <li><span class="dir">Community</span> <ul> <li><a href="developers.html">Developers</a></li> <li><a href="thirdparty.html">Contributions</a></li> <li><a href="education.html">Education</a></li> <li><a href="gallery.html">Gallery</a></li> </ul> </li> <li><span class="dir">About</span> <ul> <li><a href="license.html">License</a></li> <li><a href="citations.html">Citations</a></li> <li><a href="acknowledgements.html">Acknowledgments</a></li> <li><a href="contact.html">Contact Us</a></li> </ul> </li> </ul> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0"name="MSearchResults" id="MSearchResults"></iframe> </div> <div class="container"> <div class="span-22 push-2 first last"> <div> <!-- Generated by Doxygen 1.7.4 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> </div> <div class="header"> <div class="headertitle"> <div class="title">Changelog </div> </div> </div> <div class="contents"> <div class="textblock"><h2><a class="anchor" id="aug_10_2011"></a> August 10, 2011</h2> <ul> <li>Replaced the implementation of BasicPRM with PRM. Thanks to James Marble, the new implementation uses BGL.</li> </ul> <h2><a class="anchor" id="jul_21_2011"></a> July 21, 2011</h2> <ul> <li>Added isStraightLinePathValid() to PlannerDefinition</li> </ul> <h2><a class="anchor" id="jul_12_2011"></a> July 12, 2011</h2> <ul> <li>Using boost ublas for real vector projections</li> </ul> <h2><a class="anchor" id="jul_9_2011"></a> July 9, 2011</h2> <ul> <li>Benchmarked planners are now run in a separate thread (and termination conditions are evaluated separately, to detect crashes)</li> </ul> <h2><a class="anchor" id="jul_5_2011"></a> July 5, 2011</h2> <ul> <li>Added GNAT nearest neighbors datastructure</li> </ul> <h2><a class="anchor" id="jun_29_2011"></a> June 29, 2011</h2> <ul> <li>Moved state propagation functionality from ControlSpace to a separate StatePropagator class</li> </ul> <h2><a class="anchor" id="june_22_2011"></a> June 22, 2011</h2> <ul> <li>Added representation of a discrete state space</li> </ul> <h2><a class="anchor" id="june_15_2011"></a> June 15, 2011</h2> <ul> <li>Improvements to control::KPIECE1, so that it considers goal biasing more appropriately</li> <li>Move code for extracting machine properties from util/ to benchmark/</li> <li>Add sanity checks for state spaces</li> </ul> <h2><a class="anchor" id="june_8_2011"></a> June 8, 2011</h2> <ul> <li>Added representation of probability density functions (PDF)</li> <li>Added getType() for Goal and replaced getType() for planners by getSpecs()</li> <li>Documentation fixes</li> </ul> <h2><a class="anchor" id="june_3_2011"></a> June 3, 2011</h2> <ul> <li>Added notion of probability of success for goals</li> <li>Added initial version of RRTstar contribution</li> </ul> <h2><a class="anchor" id="may_20_2011"></a> May 20, 2011</h2> <ul> <li>Generalized planner termination conditions. The user can now call terminate() at any time to signal a planner it should stop its computation</li> </ul> <h2><a class="anchor" id="may_19_2011"></a> May 19, 2011</h2> <ul> <li>Renamed StateManifold to StateSpace and ControlManifold to ControlSpace</li> </ul> <h2><a class="anchor" id="apr_15_2011"></a> April 15, 2011</h2> <ul> <li>Added ability to generate random paths</li> </ul> <h2><a class="anchor" id="apr_05_2011"></a> April 5, 2011</h2> <ul> <li>Added bi-directional version of KPIECE (BKPIECE)</li> <li>Removed use of hill climbing in KPIECE</li> <li>Added a common Discretization to be used by all KPIECE-type planners</li> <li>bugfix for SO2StateSpace</li> </ul> <h2><a class="anchor" id="mar_21_2011"></a> March 21, 2011</h2> <ul> <li>Some work on automatic computation of cell sizes for projections</li> </ul> <h2><a class="anchor" id="mar_17_2011"></a> March 17, 2011</h2> <ul> <li>Path smoothing with B-Splines</li> </ul> <h2><a class="anchor" id="mar_10_2011"></a> March 10, 2011</h2> <ul> <li>Expose magic constants</li> </ul> <h2><a class="anchor" id="feb_15_2011"></a> February 15, 2011</h2> <ul> <li>StateValidityChecker allows for distances to invalid states to be specified</li> <li>Improvements to GAIK and Profiler</li> </ul> <h2><a class="anchor" id="feb_10_2011"></a> February 10, 2011</h2> <ul> <li>Function to visualize the structure of a state space (diagram())</li> <li>Additions and bugfixes for state operators</li> </ul> <h2><a class="anchor" id="feb_5_2011"></a> February 5, 2011</h2> <ul> <li>Bugfix for planning with controls</li> </ul> <h2><a class="anchor" id="jan_14_2011"></a> January 14, 2011</h2> <ul> <li>Convenience operators on scoped states: state[index] will return a double value, if one exists, state[space] will return the part of the state that corresponds to the specified state space. space1 + space2 yields the Cartesian product of the two. A corresponding - operator exists as well.</li> </ul> <h2><a class="anchor" id="dec_31_2010"></a> December 31, 2010</h2> <ul> <li>Added copyToReals/copyFromReals for states & controls</li> </ul> <h2><a class="anchor" id="nov_15_2010"></a> November 15, 2010</h2> <ul> <li>Improved ODE bindings</li> <li>Added support for sampling controls based on the previous control and/or the state at which the control will be executed.</li> </ul> <h2><a class="anchor" id="nov_10_2010"></a> November 10, 2010</h2> <ul> <li>Added a new function for shortening computed solution paths: collapseCloseVertices()</li> <li>Added a repair() function to PathGeometric.</li> <li>Added a representation of time as a state space (TimeStateSpace)</li> </ul> <h2><a class="anchor" id="nov_03_2010"></a> November 3, 2010</h2> <ul> <li>Added support for ODE bindings</li> <li>Added support for compound projections</li> </ul> <h2><a class="anchor" id="oct_07_2010"></a> October 7, 2010</h2> <ul> <li>Added the concept of MotionValidator for checking validity of path segments.</li> <li>The collision checking resolution is a percentage of the extent of the entire space</li> <li>Generic termination conditions for planners</li> <li>Added benchmakring for planning under geometric constraints</li> <li>Added registerDefaultProjection() for StateSpace.</li> </ul> <h2><a class="anchor" id="aug_09_2010"></a> August 9, 2010</h2> <ul> <li>Including the following sampling-based motion planning algorithms (inherit from <a class="el" href="classompl_1_1base_1_1Planner.html" title="Base class for a planner.">ompl::base::Planner</a>):<ul> <li>planning under geometric constraints: KPIECE, LBKPIECE, SBL, pSBL, EST, RRT, pRRT, RRTConnect, LazyRRT, PRM</li> <li>planning under differential constraints: KPIECE, RRT</li> </ul> </li> </ul> <ul> <li>The representation of states (<a class="el" href="classompl_1_1base_1_1State.html" title="Definition of an abstract state.">ompl::base::State</a>) is abstract: state spaces that operate on states (<a class="el" href="classompl_1_1base_1_1StateSpace.html" title="Representation of a space in which planning can be performed. Topology specific sampling, interpolation and distance are defined.">ompl::base::StateSpace</a>) and controls (<a class="el" href="classompl_1_1control_1_1ControlSpace.html" title="A control space representing the space of applicable controls.">ompl::control::ControlSpace</a>) need to be defined. Based on the topology-specific functionality offered by these state spaces, primitives used by algorithms are implemented (<a class="el" href="classompl_1_1base_1_1SpaceInformation.html" title="The base class for space information. This contains all the information about the space planning is d...">ompl::base::SpaceInformation</a> and <a class="el" href="classompl_1_1control_1_1SpaceInformation.html" title="Space information containing necessary information for planning with controls. setup() needs to be ca...">ompl::control::SpaceInformation</a>). Euclidean projections are defined for StateSpace using registerProjection()</li> </ul> <ul> <li>The representation of goals is abstract. In the most general case, a goal is a predicate function that states whether the goal has been reached or not (<a class="el" href="classompl_1_1base_1_1Goal.html" title="Abstract definition of goals. Will contain solutions, if found.">ompl::base::Goal</a>). More specifically, the goal can designate a region and can compute an approximate distance to this region (<a class="el" href="classompl_1_1base_1_1GoalRegion.html" title="Definition of a goal region.">ompl::base::GoalRegion</a>). This is useful when biasing planners is desirable. A further layer of abstraction allows sampling these regions (<a class="el" href="classompl_1_1base_1_1GoalSampleableRegion.html" title="Abstract definition of a goal region that can be sampled.">ompl::base::GoalSampleableRegion</a>). Instantiations of this latter abstraction for a goal state (<a class="el" href="classompl_1_1base_1_1GoalState.html" title="Definition of a goal state.">ompl::base::GoalState</a>) and a set of states (<a class="el" href="classompl_1_1base_1_1GoalStates.html" title="Definition of a set of goal states.">ompl::base::GoalStates</a>) are provided.</li> </ul> <ul> <li>The start states and goal representation are specified as a problem definition (<a class="el" href="classompl_1_1base_1_1ProblemDefinition.html" title="Definition of a problem to be solved. This includes the start state(s) for the system and a goal spec...">ompl::base::ProblemDefinition</a>)</li> </ul> <ul> <li>State validity checking is external to this library (<a class="el" href="classompl_1_1base_1_1StateValidityChecker.html" title="Abstract definition for a class checking the validity of states. The implementation of this class mus...">ompl::base::StateValidityChecker</a>).</li> </ul> <ul> <li>Support for Python bindings </li> </ul> </div></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> </div> <div class="footer span-22 push-2 last"> <a href="http://www.kavrakilab.org">Physical and Biological Computing Group</a> • <a href="http://www.cs.rice.edu">Department of Computer Science</a> • <a href="http://www.rice.edu">Rice University</a><br> <div class="gray">Generated on Sun Oct 9 2011 23:04:41 by <a href="http://www.doxygen.org/index.html">doxygen</a> 1.7.4</div> </div> </div> </body> </html>