<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>mrpt::reactivenav::CPRRTNavigator Class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <div align="left"><a href="http://www.mrpt.org/">Main MRPT website</a> > <b>C++ reference</b> </div> <div align="right"> <a href="index.html"><img border="0" src="mrpt_logo.png" alt="MRPT logo"></a> </div> <!-- Generated by Doxygen 1.7.5 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <div class="left"> <form id="FSearchBox" action="search.php" method="get"> <img id="MSearchSelect" src="search/mag.png" alt=""/> <input type="text" id="MSearchField" name="query" value="Search" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"/> </form> </div><div class="right"></div> </div> </li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespacemrpt.html">mrpt</a> </li> <li class="navelem"><a class="el" href="namespacemrpt_1_1reactivenav.html">reactivenav</a> </li> <li class="navelem"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html">CPRRTNavigator</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-attribs">Public Attributes</a> | <a href="#pub-static-attribs">Static Public Attributes</a> | <a href="#pri-methods">Private Member Functions</a> | <a href="#pri-attribs">Private Attributes</a> </div> <div class="headertitle"> <div class="title">mrpt::reactivenav::CPRRTNavigator Class Reference<div class="ingroups"><a class="el" href="group__mrpt__reactivenav__grp.html">[mrpt-reactivenav]</a></div></div> </div> </div> <div class="contents"> <!-- doxytag: class="mrpt::reactivenav::CPRRTNavigator" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>This class is a multi-threaded mobile robot navigator, implementing an (anytime) PTG-based Rapidly-exploring Random Tree (PRRT) search algorithm. </p> <p><b>Usage:</b><br/> </p> <ul> <li>Create an instance of the <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html" title="This class is a multi-threaded mobile robot navigator, implementing an (anytime) PTG-based Rapidly-ex...">CPRRTNavigator</a> class (an object on the heap, i.e. no 'new', is preferred, but just for the convenience of the user).</li> <li>Set all the parameters in <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aae065073b31838516e694308f926acfc" title="Change here all the parameters of the navigator.">CPRRTNavigator::params</a></li> <li>Call <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a985d355f265e58cb390e522201c3601a" title="Initialize the navigator using the parameters in "params"; read the usage instructions in CPRRTNaviga...">CPRRTNavigator::initialize</a>. If all the params are OK, true is returned and you can go on.</li> <li>Start a navigation by calling <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ad60aab288648289224f948e828adeec3" title="Starts a navigation to a 2D pose (including a desired heading at the target).">CPRRTNavigator::navigate</a>.</li> <li>From your application, you must update all the sensory data (from the real robot or a simulator) on a timely-fashion. The navigator will stop the robot if the last sensory data is too old.</li> </ul> <p>Note that all the public methods are thread-safe.</p> <p><b>About the algorithm:</b><br/> </p> <p><b>Changes history</b></p> <ul> <li>05/JUL/2009: Creation (JLBC). This is an evolution from leassons learnt from the pure reactive navigator based on PTGs. </li> </ul> </div> <p><code>#include <<a class="el" href="_c_p_r_r_t_navigator_8h_source.html">mrpt/reactivenav/CPRRTNavigator.h</a>></code></p> <p><a href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator_1_1_t_options.html">TOptions</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator_1_1_t_path_data.html">TPathData</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Each data point in m_planned_path. <a href="structmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator_1_1_t_path_data.html#details">More...</a><br/></td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aade1c1b4122cac9fbc9366df5e6f3864">CPRRTNavigator</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#aade1c1b4122cac9fbc9366df5e6f3864"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#af70f3e9d159bc5c495127cead8664d6e">~CPRRTNavigator</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#af70f3e9d159bc5c495127cead8664d6e"></a><br/></td></tr> <tr><td colspan="2"><div class="groupHeader">Navigation control methods</div></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a985d355f265e58cb390e522201c3601a">initialize</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Initialize the navigator using the parameters in "params"; read the usage instructions in <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html" title="This class is a multi-threaded mobile robot navigator, implementing an (anytime) PTG-based Rapidly-ex...">CPRRTNavigator</a>. <a href="#a985d355f265e58cb390e522201c3601a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ad60aab288648289224f948e828adeec3">navigate</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">mrpt::math::TPose2D</a> &target_pose)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Starts a navigation to a 2D pose (including a desired heading at the target). <a href="#ad60aab288648289224f948e828adeec3"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aec34cfc98c0b751d23f59a467f9ff687">navigate</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">mrpt::math::TPoint2D</a> &target_point)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Starts a navigation to a given 2D point (any heading at the target). <a href="#aec34cfc98c0b751d23f59a467f9ff687"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a5898c40dc023b5fe0791ba23ffb7c5da">cancel</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Cancel current navegacion. <a href="#a5898c40dc023b5fe0791ba23ffb7c5da"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a94634bd17741d8339c52cb51d8773777">resume</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Continues with suspended navigation. <a href="#a94634bd17741d8339c52cb51d8773777"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a00b2663fb35dea813e765a28fc58582d">suspend</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Suspend current navegation. <a href="#a00b2663fb35dea813e765a28fc58582d"></a><br/></td></tr> <tr><td colspan="2"><div class="groupHeader">Debug and logging</div></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#adbb72d2bcfa618f0352e0d1a2d01cd8b">setPathToFollow</a> (const <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac4759f9afdeaf6613fb5fec336938374">TPlannedPath</a> &path)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Manually sets the short-time path to be followed by the robot (use 'navigate' instead, this method is for debugging mainly) <a href="#adbb72d2bcfa618f0352e0d1a2d01cd8b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a0e546cc695c8245400f4cbf6f7c108fa">getCurrentPlannedPath</a> (<a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac4759f9afdeaf6613fb5fec336938374">TPlannedPath</a> &path) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current planned path the robot is following. <a href="#a0e546cc695c8245400f4cbf6f7c108fa"></a><br/></td></tr> <tr><td colspan="2"><div class="groupHeader">Sensory data methods: call them to update the navigator knowledge on the outside world.</div></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a9c0f6ae558ef1478de6a42ac8c74ed08">processNewLocalization</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> &new_robot_pose, const <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a> &new_robot_cov, <a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> timestamp)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Updates the navigator with a low or high-rate estimate from a localization (or SLAM) algorithm running somewhere else. <a href="#a9c0f6ae558ef1478de6a42ac8c74ed08"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a329ba8824f9368937469a5f41849c20f">processNewOdometryInfo</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> &newOdoPose, <a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> timestamp, bool hasVelocities=false, float v=0, float w=0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Updates the navigator with high-rate odometry from the mobile base. <a href="#a329ba8824f9368937469a5f41849c20f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a02d3f44989950c03b396f03ca1afc095">processNewObstaclesData</a> (const <a class="el" href="classmrpt_1_1slam_1_1_c_points_map.html">mrpt::slam::CPointsMap</a> *obstacles, <a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> timestamp)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Must be called in a timely fashion to let the navigator know about the obstacles in the environment. <a href="#a02d3f44989950c03b396f03ca1afc095"></a><br/></td></tr> <tr><td colspan="2"><div class="groupHeader">Virtual methods to be implemented by the user.</div></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#acb204e1909939d81c4e0b2125fab3a04">onMotionCommand</a> (float v, float w)=0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This is the most important method the user must provide: to send an instantaneous velocity command to the robot. <a href="#acb204e1909939d81c4e0b2125fab3a04"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aa582e40ef55ad4a83687f380b1ebb28e">onNavigationStart</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Re-implement this method if you want to know when a new navigation has started. <a href="#aa582e40ef55ad4a83687f380b1ebb28e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a918557efcb18f959d2f5f2fe81587f63">onNavigationEnd</a> (bool targetReachedOK)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Re-implement this method if you want to know when and why a navigation has ended. <a href="#a918557efcb18f959d2f5f2fe81587f63"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ab4a3c677d4f39f7579b21be27fc503b7">onApproachingTarget</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Re-implement this method if you want to know when the robot is approaching the target: this event is raised before onNavigationEnd, when the robot is closer than a certain distance to the target. <a href="#ab4a3c677d4f39f7579b21be27fc503b7"></a><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="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html">mrpt::poses::CRobot2DPoseEstimator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#af247a47a88dab4cc96b1cab2ed171f0b">m_robotStateFilter</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Object maintained by the robot-tracking thread (All methods are thread-safe). <a href="#af247a47a88dab4cc96b1cab2ed171f0b"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pub-static-attribs"></a> Static Public Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static const double </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ad4ea80185f3a227c729cf83da3f6489b">INVALID_HEADING</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Used to refer to undefined or "never mind" headings values. <a href="#ad4ea80185f3a227c729cf83da3f6489b"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pri-methods"></a> Private Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aef88bd0e6a52b03f0e55dd384fa2d5c6">thread_planner</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Thread function. <a href="#aef88bd0e6a52b03f0e55dd384fa2d5c6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a9ad0ca5a36f0d2e0b006ea2781f1a4b1">thread_test_collision</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Thread function. <a href="#a9ad0ca5a36f0d2e0b006ea2781f1a4b1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a6a092b8cbd83ba4eb835db2f16cd9a0d">thread_path_tracking</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Thread function. <a href="#a6a092b8cbd83ba4eb835db2f16cd9a0d"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pri-attribs"></a> Private Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1system_1_1_t_thread_handle.html">TThreadHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a9f6dc216a23ce62bb3447218a7ad10f9">m_thr_planner</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Thread handle. <a href="#a9f6dc216a23ce62bb3447218a7ad10f9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1system_1_1_t_thread_handle.html">TThreadHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a65e8aab888ceadf7326e5c146e3bdc36">m_thr_testcol</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Thread handle. <a href="#a65e8aab888ceadf7326e5c146e3bdc36"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1system_1_1_t_thread_handle.html">TThreadHandle</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#af8274ad039e262eecefbb20810af7e79">m_thr_pathtrack</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Thread handle. <a href="#af8274ad039e262eecefbb20810af7e79"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac0ce69545de3e651b050385a3da0f354">m_initialized</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The object is ready to navigate. Users must call "initialize" first. <a href="#ac0ce69545de3e651b050385a3da0f354"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a10dbf8b8724bef6837022469bb67c59d">m_closingThreads</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set to true at destructor. <a href="#a10dbf8b8724bef6837022469bb67c59d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a31a8b2b3f951a79251283b7b78a7801c">m_target_pose</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Heading may be INVALID_HEADING to indicate "don't mind". <a href="#a31a8b2b3f951a79251283b7b78a7801c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a54e46b1065d6effc0c63b2a33b3e644c">m_target_pose_time</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1synch_1_1_c_critical_section.html">CCriticalSection</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a5819dc1781d4cf3ce6db0db78277a0a5">m_target_pose_cs</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1vector.html">std::vector</a>< float > </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a2d6ba3bda62366e68c21e5f5071956a3">m_last_obstacles_x</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1vector.html">std::vector</a>< float > </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a375e0b1fa177426b6175ff4ead2f9c0f">m_last_obstacles_y</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a8c73e87eca9abdc37f2755de2abcc02d">m_last_obstacles_time</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1synch_1_1_c_critical_section.html">CCriticalSection</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#acac78122cbb624fd0d815dc289061636">m_last_obstacles_cs</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1synch_1_1_c_critical_section.html">CCriticalSection</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aa91bf8d6a540c2eca3d7d61e7b9c3845">m_planned_path_cs</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a8c5ba43a18d2ab0d31ec68d26b593984">m_planned_path_time</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The last modification time. INVALID_TIMESTAMP means there is no path. <a href="#a8c5ba43a18d2ab0d31ec68d26b593984"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac4759f9afdeaf6613fb5fec336938374">TPlannedPath</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a2cb1e3a1f06fcc3b06b7f2bffca6112d">m_planned_path</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacemrpt_1_1reactivenav.html#ac7430721e888f0c857d2e681566adf15">TListPTGs</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a2784ee37f3ad7f549197b5a282e3ef3b">m_PTGs</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The list of PTGs used by the anytime planner to explore the free-space. <a href="#a2784ee37f3ad7f549197b5a282e3ef3b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1synch_1_1_c_critical_section.html">CCriticalSection</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac7cc5be2c9826aa0d262b571e346ae0c">m_PTGs_cs</a></td></tr> <tr><td colspan="2"><h2><a name="member-group"></a> Navigator data structures</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classstd_1_1list.html">std::list</a>< <a class="el" href="structmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator_1_1_t_path_data.html">TPathData</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac4759f9afdeaf6613fb5fec336938374">TPlannedPath</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">An ordered list of path poses. <a href="#ac4759f9afdeaf6613fb5fec336938374"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator_1_1_t_options.html">TOptions</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aae065073b31838516e694308f926acfc">params</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Change here all the parameters of the navigator. <a href="#aae065073b31838516e694308f926acfc"></a><br/></td></tr> </table> <hr/><h2>Member Typedef Documentation</h2> <a class="anchor" id="ac4759f9afdeaf6613fb5fec336938374"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::TPlannedPath" ref="ac4759f9afdeaf6613fb5fec336938374" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="classstd_1_1list.html">std::list</a><<a class="el" href="structmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator_1_1_t_path_data.html">TPathData</a>> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac4759f9afdeaf6613fb5fec336938374">mrpt::reactivenav::CPRRTNavigator::TPlannedPath</a></td> </tr> </table> </div> <div class="memdoc"> <p>An ordered list of path poses. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00132">132</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="aade1c1b4122cac9fbc9366df5e6f3864"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::CPRRTNavigator" ref="aade1c1b4122cac9fbc9366df5e6f3864" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">mrpt::reactivenav::CPRRTNavigator::CPRRTNavigator </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Constructor. </p> </div> </div> <a class="anchor" id="af70f3e9d159bc5c495127cead8664d6e"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::~CPRRTNavigator" ref="af70f3e9d159bc5c495127cead8664d6e" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual mrpt::reactivenav::CPRRTNavigator::~CPRRTNavigator </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Destructor. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a5898c40dc023b5fe0791ba23ffb7c5da"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::cancel" ref="a5898c40dc023b5fe0791ba23ffb7c5da" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::cancel </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Cancel current navegacion. </p> <dl class="note"><dt><b>Note:</b></dt><dd><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a985d355f265e58cb390e522201c3601a" title="Initialize the navigator using the parameters in "params"; read the usage instructions in CPRRTNaviga...">CPRRTNavigator::initialize</a> must be called first. </dd></dl> </div> </div> <a class="anchor" id="a0e546cc695c8245400f4cbf6f7c108fa"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::getCurrentPlannedPath" ref="a0e546cc695c8245400f4cbf6f7c108fa" args="(TPlannedPath &path) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::getCurrentPlannedPath </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac4759f9afdeaf6613fb5fec336938374">TPlannedPath</a> & </td> <td class="paramname"><em>path</em></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Returns the current planned path the robot is following. </p> </div> </div> <a class="anchor" id="a985d355f265e58cb390e522201c3601a"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::initialize" ref="a985d355f265e58cb390e522201c3601a" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool mrpt::reactivenav::CPRRTNavigator::initialize </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Initialize the navigator using the parameters in "params"; read the usage instructions in <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html" title="This class is a multi-threaded mobile robot navigator, implementing an (anytime) PTG-based Rapidly-ex...">CPRRTNavigator</a>. </p> <p>This method should be called only once at the beginning of the robot operation. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>true on sucess, false on any error preparing the navigator (and no navigation command will be processed until that's fixed). </dd></dl> </div> </div> <a class="anchor" id="ad60aab288648289224f948e828adeec3"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::navigate" ref="ad60aab288648289224f948e828adeec3" args="(const mrpt::math::TPose2D &target_pose)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::navigate </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">mrpt::math::TPose2D</a> & </td> <td class="paramname"><em>target_pose</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Starts a navigation to a 2D pose (including a desired heading at the target). </p> <dl class="note"><dt><b>Note:</b></dt><dd><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a985d355f265e58cb390e522201c3601a" title="Initialize the navigator using the parameters in "params"; read the usage instructions in CPRRTNaviga...">CPRRTNavigator::initialize</a> must be called first. </dd></dl> </div> </div> <a class="anchor" id="aec34cfc98c0b751d23f59a467f9ff687"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::navigate" ref="aec34cfc98c0b751d23f59a467f9ff687" args="(const mrpt::math::TPoint2D &target_point)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::navigate </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_point2_d.html">mrpt::math::TPoint2D</a> & </td> <td class="paramname"><em>target_point</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Starts a navigation to a given 2D point (any heading at the target). </p> <dl class="note"><dt><b>Note:</b></dt><dd><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a985d355f265e58cb390e522201c3601a" title="Initialize the navigator using the parameters in "params"; read the usage instructions in CPRRTNaviga...">CPRRTNavigator::initialize</a> must be called first. </dd></dl> </div> </div> <a class="anchor" id="ab4a3c677d4f39f7579b21be27fc503b7"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::onApproachingTarget" ref="ab4a3c677d4f39f7579b21be27fc503b7" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void mrpt::reactivenav::CPRRTNavigator::onApproachingTarget </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Re-implement this method if you want to know when the robot is approaching the target: this event is raised before onNavigationEnd, when the robot is closer than a certain distance to the target. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00244">244</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="acb204e1909939d81c4e0b2125fab3a04"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::onMotionCommand" ref="acb204e1909939d81c4e0b2125fab3a04" args="(float v, float w)=0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool mrpt::reactivenav::CPRRTNavigator::onMotionCommand </td> <td>(</td> <td class="paramtype">float </td> <td class="paramname"><em>v</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"><em>w</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This is the most important method the user must provide: to send an instantaneous velocity command to the robot. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">v</td><td>Desired linear speed, in meters/second. </td></tr> <tr><td class="paramname">w</td><td>Desired angular speed, in rads/second. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>false on any error. In that case, the navigator will immediately stop the navigation and announce the error. </dd></dl> </div> </div> <a class="anchor" id="a918557efcb18f959d2f5f2fe81587f63"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::onNavigationEnd" ref="a918557efcb18f959d2f5f2fe81587f63" args="(bool targetReachedOK)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void mrpt::reactivenav::CPRRTNavigator::onNavigationEnd </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"><em>targetReachedOK</em></td><td>)</td> <td><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Re-implement this method if you want to know when and why a navigation has ended. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">targetReachedOK</td><td>Will be false if the navigation failed. </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00239">239</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="aa582e40ef55ad4a83687f380b1ebb28e"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::onNavigationStart" ref="aa582e40ef55ad4a83687f380b1ebb28e" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void mrpt::reactivenav::CPRRTNavigator::onNavigationStart </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Re-implement this method if you want to know when a new navigation has started. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00234">234</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a9c0f6ae558ef1478de6a42ac8c74ed08"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::processNewLocalization" ref="a9c0f6ae558ef1478de6a42ac8c74ed08" args="(const TPose2D &new_robot_pose, const CMatrixDouble33 &new_robot_cov, TTimeStamp timestamp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::processNewLocalization </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> & </td> <td class="paramname"><em>new_robot_pose</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="namespacemrpt_1_1math.html#a58d0ee60eee38e990848ccb8b83e8338">CMatrixDouble33</a> & </td> <td class="paramname"><em>new_robot_cov</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td> <td class="paramname"><em>timestamp</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Updates the navigator with a low or high-rate estimate from a localization (or SLAM) algorithm running somewhere else. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">new_robot_pose</td><td>The (global) coordinates of the mean robot pose as estimated by some external module. </td></tr> <tr><td class="paramname">new_robot_cov</td><td>The 3x3 covariance matrix of that estimate. </td></tr> <tr><td class="paramname">timestamp</td><td>The associated timestamp of the data. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a02d3f44989950c03b396f03ca1afc095"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::processNewObstaclesData" ref="a02d3f44989950c03b396f03ca1afc095" args="(const mrpt::slam::CPointsMap *obstacles, TTimeStamp timestamp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::processNewObstaclesData </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1slam_1_1_c_points_map.html">mrpt::slam::CPointsMap</a> * </td> <td class="paramname"><em>obstacles</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td> <td class="paramname"><em>timestamp</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Must be called in a timely fashion to let the navigator know about the obstacles in the environment. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">obstacles</td><td></td></tr> <tr><td class="paramname">timestamp</td><td>The associated timestamp of the sensed points. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a329ba8824f9368937469a5f41849c20f"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::processNewOdometryInfo" ref="a329ba8824f9368937469a5f41849c20f" args="(const TPose2D &newOdoPose, TTimeStamp timestamp, bool hasVelocities=false, float v=0, float w=0)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::processNewOdometryInfo </td> <td>(</td> <td class="paramtype">const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> & </td> <td class="paramname"><em>newOdoPose</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td> <td class="paramname"><em>timestamp</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>hasVelocities</em> = <code>false</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"><em>v</em> = <code>0</code>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">float </td> <td class="paramname"><em>w</em> = <code>0</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Updates the navigator with high-rate odometry from the mobile base. </p> <p>The odometry poses are dealed internally as increments only, so there is no problem is arbitrary mismatches between localization (from a particle filter or SLAM) and the odometry. </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">newOdoPose</td><td>The global, cummulative odometry as computed by the robot. </td></tr> <tr><td class="paramname">timestamp</td><td>The associated timestamp of the measurement. </td></tr> <tr><td class="paramname">hasVelocities</td><td>If false, the next arguments are ignored. </td></tr> <tr><td class="paramname">v</td><td>Measured linear speed, in m/s. </td></tr> <tr><td class="paramname">w</td><td>Measured angular speed, in rad/s. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a94634bd17741d8339c52cb51d8773777"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::resume" ref="a94634bd17741d8339c52cb51d8773777" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::resume </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Continues with suspended navigation. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a00b2663fb35dea813e765a28fc58582d" title="Suspend current navegation.">suspend</a> </dd></dl> <dl class="note"><dt><b>Note:</b></dt><dd><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a985d355f265e58cb390e522201c3601a" title="Initialize the navigator using the parameters in "params"; read the usage instructions in CPRRTNaviga...">CPRRTNavigator::initialize</a> must be called first. </dd></dl> </div> </div> <a class="anchor" id="adbb72d2bcfa618f0352e0d1a2d01cd8b"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::setPathToFollow" ref="adbb72d2bcfa618f0352e0d1a2d01cd8b" args="(const TPlannedPath &path)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::setPathToFollow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac4759f9afdeaf6613fb5fec336938374">TPlannedPath</a> & </td> <td class="paramname"><em>path</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Manually sets the short-time path to be followed by the robot (use 'navigate' instead, this method is for debugging mainly) </p> </div> </div> <a class="anchor" id="a00b2663fb35dea813e765a28fc58582d"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::suspend" ref="a00b2663fb35dea813e765a28fc58582d" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::suspend </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Suspend current navegation. </p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a94634bd17741d8339c52cb51d8773777" title="Continues with suspended navigation.">resume</a> </dd></dl> <dl class="note"><dt><b>Note:</b></dt><dd><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a985d355f265e58cb390e522201c3601a" title="Initialize the navigator using the parameters in "params"; read the usage instructions in CPRRTNaviga...">CPRRTNavigator::initialize</a> must be called first. </dd></dl> </div> </div> <a class="anchor" id="a6a092b8cbd83ba4eb835db2f16cd9a0d"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::thread_path_tracking" ref="a6a092b8cbd83ba4eb835db2f16cd9a0d" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::thread_path_tracking </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Thread function. </p> </div> </div> <a class="anchor" id="aef88bd0e6a52b03f0e55dd384fa2d5c6"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::thread_planner" ref="aef88bd0e6a52b03f0e55dd384fa2d5c6" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::thread_planner </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Thread function. </p> </div> </div> <a class="anchor" id="a9ad0ca5a36f0d2e0b006ea2781f1a4b1"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::thread_test_collision" ref="a9ad0ca5a36f0d2e0b006ea2781f1a4b1" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::reactivenav::CPRRTNavigator::thread_test_collision </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Thread function. </p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="ad4ea80185f3a227c729cf83da3f6489b"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::INVALID_HEADING" ref="ad4ea80185f3a227c729cf83da3f6489b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const double <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ad4ea80185f3a227c729cf83da3f6489b">mrpt::reactivenav::CPRRTNavigator::INVALID_HEADING</a><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Used to refer to undefined or "never mind" headings values. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00248">248</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a10dbf8b8724bef6837022469bb67c59d"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_closingThreads" ref="a10dbf8b8724bef6837022469bb67c59d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a10dbf8b8724bef6837022469bb67c59d">mrpt::reactivenav::CPRRTNavigator::m_closingThreads</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>set to true at destructor. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00265">265</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="ac0ce69545de3e651b050385a3da0f354"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_initialized" ref="ac0ce69545de3e651b050385a3da0f354" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac0ce69545de3e651b050385a3da0f354">mrpt::reactivenav::CPRRTNavigator::m_initialized</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>The object is ready to navigate. Users must call "initialize" first. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00264">264</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="acac78122cbb624fd0d815dc289061636"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_last_obstacles_cs" ref="acac78122cbb624fd0d815dc289061636" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1synch_1_1_c_critical_section.html">CCriticalSection</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#acac78122cbb624fd0d815dc289061636">mrpt::reactivenav::CPRRTNavigator::m_last_obstacles_cs</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00277">277</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a8c73e87eca9abdc37f2755de2abcc02d"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_last_obstacles_time" ref="a8c73e87eca9abdc37f2755de2abcc02d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a8c73e87eca9abdc37f2755de2abcc02d">mrpt::reactivenav::CPRRTNavigator::m_last_obstacles_time</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00276">276</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a2d6ba3bda62366e68c21e5f5071956a3"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_last_obstacles_x" ref="a2d6ba3bda62366e68c21e5f5071956a3" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classstd_1_1vector.html">std::vector</a><float> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a2d6ba3bda62366e68c21e5f5071956a3">mrpt::reactivenav::CPRRTNavigator::m_last_obstacles_x</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00275">275</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a375e0b1fa177426b6175ff4ead2f9c0f"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_last_obstacles_y" ref="a375e0b1fa177426b6175ff4ead2f9c0f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classstd_1_1vector.html">std::vector</a><float> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a375e0b1fa177426b6175ff4ead2f9c0f">mrpt::reactivenav::CPRRTNavigator::m_last_obstacles_y</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00275">275</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a2cb1e3a1f06fcc3b06b7f2bffca6112d"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_planned_path" ref="a2cb1e3a1f06fcc3b06b7f2bffca6112d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac4759f9afdeaf6613fb5fec336938374">TPlannedPath</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a2cb1e3a1f06fcc3b06b7f2bffca6112d">mrpt::reactivenav::CPRRTNavigator::m_planned_path</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00282">282</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="aa91bf8d6a540c2eca3d7d61e7b9c3845"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_planned_path_cs" ref="aa91bf8d6a540c2eca3d7d61e7b9c3845" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1synch_1_1_c_critical_section.html">CCriticalSection</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aa91bf8d6a540c2eca3d7d61e7b9c3845">mrpt::reactivenav::CPRRTNavigator::m_planned_path_cs</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00280">280</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a8c5ba43a18d2ab0d31ec68d26b593984"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_planned_path_time" ref="a8c5ba43a18d2ab0d31ec68d26b593984" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a8c5ba43a18d2ab0d31ec68d26b593984">mrpt::reactivenav::CPRRTNavigator::m_planned_path_time</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>The last modification time. INVALID_TIMESTAMP means there is no path. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00281">281</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a2784ee37f3ad7f549197b5a282e3ef3b"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_PTGs" ref="a2784ee37f3ad7f549197b5a282e3ef3b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="namespacemrpt_1_1reactivenav.html#ac7430721e888f0c857d2e681566adf15">TListPTGs</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a2784ee37f3ad7f549197b5a282e3ef3b">mrpt::reactivenav::CPRRTNavigator::m_PTGs</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>The list of PTGs used by the anytime planner to explore the free-space. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00285">285</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="ac7cc5be2c9826aa0d262b571e346ae0c"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_PTGs_cs" ref="ac7cc5be2c9826aa0d262b571e346ae0c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1synch_1_1_c_critical_section.html">CCriticalSection</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#ac7cc5be2c9826aa0d262b571e346ae0c">mrpt::reactivenav::CPRRTNavigator::m_PTGs_cs</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00286">286</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="af247a47a88dab4cc96b1cab2ed171f0b"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_robotStateFilter" ref="af247a47a88dab4cc96b1cab2ed171f0b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html">mrpt::poses::CRobot2DPoseEstimator</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#af247a47a88dab4cc96b1cab2ed171f0b">mrpt::reactivenav::CPRRTNavigator::m_robotStateFilter</a></td> </tr> </table> </div> <div class="memdoc"> <p>Object maintained by the robot-tracking thread (All methods are thread-safe). </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00290">290</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a31a8b2b3f951a79251283b7b78a7801c"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_target_pose" ref="a31a8b2b3f951a79251283b7b78a7801c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a31a8b2b3f951a79251283b7b78a7801c">mrpt::reactivenav::CPRRTNavigator::m_target_pose</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Heading may be INVALID_HEADING to indicate "don't mind". </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00267">267</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a5819dc1781d4cf3ce6db0db78277a0a5"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_target_pose_cs" ref="a5819dc1781d4cf3ce6db0db78277a0a5" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1synch_1_1_c_critical_section.html">CCriticalSection</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a5819dc1781d4cf3ce6db0db78277a0a5">mrpt::reactivenav::CPRRTNavigator::m_target_pose_cs</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00269">269</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a54e46b1065d6effc0c63b2a33b3e644c"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_target_pose_time" ref="a54e46b1065d6effc0c63b2a33b3e644c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a">TTimeStamp</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a54e46b1065d6effc0c63b2a33b3e644c">mrpt::reactivenav::CPRRTNavigator::m_target_pose_time</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00268">268</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="af8274ad039e262eecefbb20810af7e79"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_thr_pathtrack" ref="af8274ad039e262eecefbb20810af7e79" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structmrpt_1_1system_1_1_t_thread_handle.html">TThreadHandle</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#af8274ad039e262eecefbb20810af7e79">mrpt::reactivenav::CPRRTNavigator::m_thr_pathtrack</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Thread handle. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00255">255</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a9f6dc216a23ce62bb3447218a7ad10f9"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_thr_planner" ref="a9f6dc216a23ce62bb3447218a7ad10f9" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structmrpt_1_1system_1_1_t_thread_handle.html">TThreadHandle</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a9f6dc216a23ce62bb3447218a7ad10f9">mrpt::reactivenav::CPRRTNavigator::m_thr_planner</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Thread handle. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00253">253</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="a65e8aab888ceadf7326e5c146e3bdc36"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::m_thr_testcol" ref="a65e8aab888ceadf7326e5c146e3bdc36" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structmrpt_1_1system_1_1_t_thread_handle.html">TThreadHandle</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#a65e8aab888ceadf7326e5c146e3bdc36">mrpt::reactivenav::CPRRTNavigator::m_thr_testcol</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Thread handle. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00254">254</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> <a class="anchor" id="aae065073b31838516e694308f926acfc"></a><!-- doxytag: member="mrpt::reactivenav::CPRRTNavigator::params" ref="aae065073b31838516e694308f926acfc" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator_1_1_t_options.html">TOptions</a> <a class="el" href="classmrpt_1_1reactivenav_1_1_c_p_r_r_t_navigator.html#aae065073b31838516e694308f926acfc">mrpt::reactivenav::CPRRTNavigator::params</a></td> </tr> </table> </div> <div class="memdoc"> <p>Change here all the parameters of the navigator. </p> <p>Definition at line <a class="el" href="_c_p_r_r_t_navigator_8h_source.html#l00178">178</a> of file <a class="el" href="_c_p_r_r_t_navigator_8h_source.html">CPRRTNavigator.h</a>.</p> </div> </div> </div> <br><hr><br> <table border="0" width="100%"> <tr> <td> Page generated by <a href="http://www.doxygen.org" target="_blank">Doxygen 1.7.5</a> for MRPT 0.9.5 SVN: at Sun Sep 25 17:20:18 UTC 2011</td><td></td> <td width="100"> </td> <td width="150"> </td></tr> </table> </body></html>