<!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>The MRPT project: mrpt::poses::CRobot2DPoseEstimator 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.2 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div class="navigation" id="top"> <div 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 id="searchli"> <div id="MSearchBox" class="MSearchBoxInactive"> <span 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> </span><span class="right"></span> </div> </li> </ul> </div> <div 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="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"> <ul> <li><a class="el" href="namespacemrpt.html">mrpt</a> </li> <li><a class="el" href="namespacemrpt_1_1poses.html">poses</a> </li> <li><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html">CRobot2DPoseEstimator</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="#pri-static-methods">Static Private Member Functions</a> | <a href="#pri-attribs">Private Attributes</a> </div> <div class="headertitle"> <h1>mrpt::poses::CRobot2DPoseEstimator Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="mrpt::poses::CRobot2DPoseEstimator" --><hr/><a name="_details"></a><h2>Detailed Description</h2> <p>A simple filter to estimate and extrapolate the robot 2D (x,y,phi) pose from asynchronous odometry and localization data. </p> <p>The implemented model is a state vector:</p> <ul> <li>(x,y,phi,v,w) for the robot pose (x,y,phi) and velocities (v,w).</li> </ul> <p>The filter can be asked for an extrapolation for some arbitrary time "t'", and it'll do a simple linear prediction. All methods are thread-safe. </p> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00049">49</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> <p><code>#include <<a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">mrpt/poses/CRobot2DPoseEstimator.h</a>></code></p> <p><a href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1poses_1_1_c_robot2_d_pose_estimator_1_1_t_options.html">TOptions</a></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_1poses_1_1_c_robot2_d_pose_estimator.html#ab0cf5743151d4263cdfcdc751e167840">CRobot2DPoseEstimator</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <a href="#ab0cf5743151d4263cdfcdc751e167840"></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_1poses_1_1_c_robot2_d_pose_estimator.html#a39bf647f534173934317112b61ee7c17">~CRobot2DPoseEstimator</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#a39bf647f534173934317112b61ee7c17"></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_1poses_1_1_c_robot2_d_pose_estimator.html#abae5f9fc58c9657b71f7f5fdcac91129">reset</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a7b54366fd0d9f8e7411125a4eb970c6b">processUpdateNewPoseLocalization</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> &newPose, const <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixDouble33</a> &newPoseCov, <a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> cur_tim)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Updates the filter so the pose is tracked to the current time. <a href="#a7b54366fd0d9f8e7411125a4eb970c6b"></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_1poses_1_1_c_robot2_d_pose_estimator.html#ad54265ddf1584ce0c29ae5178fb04b37">processUpdateNewOdometry</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> &newGlobalOdometry, <a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> cur_tim, bool hasVelocities=false, float v=0, float w=0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Updates the filter so the pose is tracked to the current time. <a href="#ad54265ddf1584ce0c29ae5178fb04b37"></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_1poses_1_1_c_robot2_d_pose_estimator.html#aef64bfdf0cc75d187dd36f6156fee3c8">getCurrentEstimate</a> (<a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> &pose, float &v, float &w, <a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> tim_query=mrpt::system::now()) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the current estimate, obtained as: <a href="#aef64bfdf0cc75d187dd36f6156fee3c8"></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_1poses_1_1_c_robot2_d_pose_estimator.html#a7238be4e235f437157f32454f4fc6e83">getCurrentEstimate</a> (<a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &pose, float &v, float &w, <a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> tim_query=mrpt::system::now()) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the current estimate, obtained as: <a href="#a7238be4e235f437157f32454f4fc6e83"></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_1poses_1_1_c_robot2_d_pose_estimator.html#a9b036f895e9e06fb9b5c28556350a41c">getLatestRobotPose</a> (<a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> &pose) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the latest known robot pose, either from odometry or localization. <a href="#a9b036f895e9e06fb9b5c28556350a41c"></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_1poses_1_1_c_robot2_d_pose_estimator.html#a1f895fcd5cef9be7229088af276a652d">getLatestRobotPose</a> (<a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> &pose) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the latest known robot pose, either from odometry or localization. <a href="#a1f895fcd5cef9be7229088af276a652d"></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="structmrpt_1_1poses_1_1_c_robot2_d_pose_estimator_1_1_t_options.html">TOptions</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#af29382052aa326f1f6e60325dfa9d00c">params</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">parameters of the filter. <a href="#af29382052aa326f1f6e60325dfa9d00c"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pri-static-methods"></a> Static Private Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a4569e35331a82f7f4fbc4fdbc9200a0c">extrapolateRobotPose</a> (const <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> &p, const float v, const float w, const double delta_time, <a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> &new_p)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">An auxiliary method to extrapolate the pose of a robot located at "p" with velocities (v,w) after a time delay "delta_time". <a href="#a4569e35331a82f7f4fbc4fdbc9200a0c"></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="classmrpt_1_1synch_1_1_c_critical_section.html">mrpt::synch::CCriticalSection</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a097c4ab6c95dd917a06da28f1e104724">m_cs</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a23211f9aa6d9186e9c2e585ea745ea68">m_last_loc_time</a></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_1poses_1_1_c_robot2_d_pose_estimator.html#af9f19580ee2749a654646db2bbee6f2c">m_last_loc</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Last pose as estimated by the localization/SLAM subsystem. <a href="#af9f19580ee2749a654646db2bbee6f2c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixDouble33</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a72575b10c516db0a04fccd7e06025503">m_last_loc_cov</a></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_1poses_1_1_c_robot2_d_pose_estimator.html#aec15c3b8ce35b36c95a30c23c1e84b02">m_loc_odo_ref</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The interpolated odometry position for the last "m_robot_pose" (used as "coordinates base" for subsequent odo readings) <a href="#aec15c3b8ce35b36c95a30c23c1e84b02"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a803564a552a383e63813e6fb489688b1">m_last_odo_time</a></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_1poses_1_1_c_robot2_d_pose_estimator.html#ab2a4e23cee46f1a21bf6c25638814fbe">m_last_odo</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a7a9d14b23054dd6db38f371e0ece7fdb">m_robot_v</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">float </td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a3db098bfa296bd96c96ea946921b4562">m_robot_w</a></td></tr> </table> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="ab0cf5743151d4263cdfcdc751e167840"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::CRobot2DPoseEstimator" ref="ab0cf5743151d4263cdfcdc751e167840" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">mrpt::poses::CRobot2DPoseEstimator::CRobot2DPoseEstimator </td> <td>(</td> <td class="paramname"> )</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Default constructor. </p> </div> </div> <a class="anchor" id="a39bf647f534173934317112b61ee7c17"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::~CRobot2DPoseEstimator" ref="a39bf647f534173934317112b61ee7c17" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual mrpt::poses::CRobot2DPoseEstimator::~CRobot2DPoseEstimator </td> <td>(</td> <td class="paramname"> )</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="a4569e35331a82f7f4fbc4fdbc9200a0c"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::extrapolateRobotPose" ref="a4569e35331a82f7f4fbc4fdbc9200a0c" args="(const TPose2D &p, const float v, const float w, const double delta_time, TPose2D &new_p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void mrpt::poses::CRobot2DPoseEstimator::extrapolateRobotPose </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>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const float </td> <td class="paramname"> <em>v</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const float </td> <td class="paramname"> <em>w</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const double </td> <td class="paramname"> <em>delta_time</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> & </td> <td class="paramname"> <em>new_p</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [static, private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>An auxiliary method to extrapolate the pose of a robot located at "p" with velocities (v,w) after a time delay "delta_time". </p> </div> </div> <a class="anchor" id="aef64bfdf0cc75d187dd36f6156fee3c8"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::getCurrentEstimate" ref="aef64bfdf0cc75d187dd36f6156fee3c8" args="(TPose2D &pose, float &v, float &w, TTimeStamp tim_query=mrpt::system::now()) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool mrpt::poses::CRobot2DPoseEstimator::getCurrentEstimate </td> <td>(</td> <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> & </td> <td class="paramname"> <em>pose</em>, </td> </tr> <tr> <td class="paramkey"></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 class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td> <td class="paramname"> <em>tim_query</em> = <code>mrpt::system::now()</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Get the current estimate, obtained as: </p> <p>last_loc (+) [ last_odo (-) odo_ref ] (+) extrapolation_from_vw</p> <dl class="return"><dt><b>Returns:</b></dt><dd>true is the estimate can be trusted. False if the real observed data is too old or there is no valid data yet. </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a9b036f895e9e06fb9b5c28556350a41c" title="Get the latest known robot pose, either from odometry or localization.">getLatestRobotPose</a> </dd></dl> </div> </div> <a class="anchor" id="a7238be4e235f437157f32454f4fc6e83"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::getCurrentEstimate" ref="a7238be4e235f437157f32454f4fc6e83" args="(CPose2D &pose, float &v, float &w, TTimeStamp tim_query=mrpt::system::now()) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool mrpt::poses::CRobot2DPoseEstimator::getCurrentEstimate </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> & </td> <td class="paramname"> <em>pose</em>, </td> </tr> <tr> <td class="paramkey"></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 class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td> <td class="paramname"> <em>tim_query</em> = <code>mrpt::system::now()</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get the current estimate, obtained as: </p> <p>last_loc (+) [ last_odo (-) odo_ref ] (+) extrapolation_from_vw</p> <dl class="return"><dt><b>Returns:</b></dt><dd>true is the estimate can be trusted. False if the real observed data is too old or there is no valid data yet. </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a9b036f895e9e06fb9b5c28556350a41c" title="Get the latest known robot pose, either from odometry or localization.">getLatestRobotPose</a> </dd></dl> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00086">86</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="a1f895fcd5cef9be7229088af276a652d"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::getLatestRobotPose" ref="a1f895fcd5cef9be7229088af276a652d" args="(CPose2D &pose) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool mrpt::poses::CRobot2DPoseEstimator::getLatestRobotPose </td> <td>(</td> <td class="paramtype"><a class="el" href="classmrpt_1_1poses_1_1_c_pose2_d.html">CPose2D</a> & </td> <td class="paramname"> <em>pose</em> )</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get the latest known robot pose, either from odometry or localization. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>false if there is not estimation yet. </dd></dl> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00105">105</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> <p>References <a class="el" href="lightweight__geom__data_8h_source.html#l00206">mrpt::math::TPose2D::phi</a>, <a class="el" href="_c_pose2_d_8h_source.html#l00087">mrpt::poses::CPose2D::phi()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00198">mrpt::math::TPose2D::x</a>, <a class="el" href="_c_pose_or_point_8h_source.html#l00127">mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x()</a>, <a class="el" href="lightweight__geom__data_8h_source.html#l00202">mrpt::math::TPose2D::y</a>, and <a class="el" href="_c_pose_or_point_8h_source.html#l00128">mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y()</a>.</p> </div> </div> <a class="anchor" id="a9b036f895e9e06fb9b5c28556350a41c"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::getLatestRobotPose" ref="a9b036f895e9e06fb9b5c28556350a41c" args="(TPose2D &pose) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool mrpt::poses::CRobot2DPoseEstimator::getLatestRobotPose </td> <td>(</td> <td class="paramtype"><a class="el" href="structmrpt_1_1math_1_1_t_pose2_d.html">TPose2D</a> & </td> <td class="paramname"> <em>pose</em> )</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Get the latest known robot pose, either from odometry or localization. </p> <p>This differs from <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#aef64bfdf0cc75d187dd36f6156fee3c8" title="Get the current estimate, obtained as:">getCurrentEstimate()</a> in that this method does NOT extrapolate as <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#aef64bfdf0cc75d187dd36f6156fee3c8" title="Get the current estimate, obtained as:">getCurrentEstimate()</a> does. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>false if there is not estimation yet. </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#aef64bfdf0cc75d187dd36f6156fee3c8" title="Get the current estimate, obtained as:">getCurrentEstimate</a> </dd></dl> </div> </div> <a class="anchor" id="ad54265ddf1584ce0c29ae5178fb04b37"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::processUpdateNewOdometry" ref="ad54265ddf1584ce0c29ae5178fb04b37" args="(const TPose2D &newGlobalOdometry, TTimeStamp cur_tim, bool hasVelocities=false, float v=0, float w=0)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::poses::CRobot2DPoseEstimator::processUpdateNewOdometry </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>newGlobalOdometry</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td> <td class="paramname"> <em>cur_tim</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 filter so the pose is tracked to the current time. </p> </div> </div> <a class="anchor" id="a7b54366fd0d9f8e7411125a4eb970c6b"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::processUpdateNewPoseLocalization" ref="a7b54366fd0d9f8e7411125a4eb970c6b" args="(const TPose2D &newPose, const CMatrixDouble33 &newPoseCov, TTimeStamp cur_tim)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::poses::CRobot2DPoseEstimator::processUpdateNewPoseLocalization </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>newPose</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixDouble33</a> & </td> <td class="paramname"> <em>newPoseCov</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> </td> <td class="paramname"> <em>cur_tim</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Updates the filter so the pose is tracked to the current time. </p> </div> </div> <a class="anchor" id="abae5f9fc58c9657b71f7f5fdcac91129"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::reset" ref="abae5f9fc58c9657b71f7f5fdcac91129" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mrpt::poses::CRobot2DPoseEstimator::reset </td> <td>(</td> <td class="paramname"> )</td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="a097c4ab6c95dd917a06da28f1e104724"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_cs" ref="a097c4ab6c95dd917a06da28f1e104724" 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">mrpt::synch::CCriticalSection</a> <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a097c4ab6c95dd917a06da28f1e104724">mrpt::poses::CRobot2DPoseEstimator::m_cs</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00133">133</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="af9f19580ee2749a654646db2bbee6f2c"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_last_loc" ref="af9f19580ee2749a654646db2bbee6f2c" 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_1poses_1_1_c_robot2_d_pose_estimator.html#af9f19580ee2749a654646db2bbee6f2c">mrpt::poses::CRobot2DPoseEstimator::m_last_loc</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Last pose as estimated by the localization/SLAM subsystem. </p> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00136">136</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="a72575b10c516db0a04fccd7e06025503"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_last_loc_cov" ref="a72575b10c516db0a04fccd7e06025503" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixDouble33</a> <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a72575b10c516db0a04fccd7e06025503">mrpt::poses::CRobot2DPoseEstimator::m_last_loc_cov</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00137">137</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="a23211f9aa6d9186e9c2e585ea745ea68"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_last_loc_time" ref="a23211f9aa6d9186e9c2e585ea745ea68" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a23211f9aa6d9186e9c2e585ea745ea68">mrpt::poses::CRobot2DPoseEstimator::m_last_loc_time</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00135">135</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="ab2a4e23cee46f1a21bf6c25638814fbe"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_last_odo" ref="ab2a4e23cee46f1a21bf6c25638814fbe" 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_1poses_1_1_c_robot2_d_pose_estimator.html#ab2a4e23cee46f1a21bf6c25638814fbe">mrpt::poses::CRobot2DPoseEstimator::m_last_odo</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00142">142</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="a803564a552a383e63813e6fb489688b1"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_last_odo_time" ref="a803564a552a383e63813e6fb489688b1" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a803564a552a383e63813e6fb489688b1">mrpt::poses::CRobot2DPoseEstimator::m_last_odo_time</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00141">141</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="aec15c3b8ce35b36c95a30c23c1e84b02"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_loc_odo_ref" ref="aec15c3b8ce35b36c95a30c23c1e84b02" 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_1poses_1_1_c_robot2_d_pose_estimator.html#aec15c3b8ce35b36c95a30c23c1e84b02">mrpt::poses::CRobot2DPoseEstimator::m_loc_odo_ref</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>The interpolated odometry position for the last "m_robot_pose" (used as "coordinates base" for subsequent odo readings) </p> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00139">139</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="a7a9d14b23054dd6db38f371e0ece7fdb"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_robot_v" ref="a7a9d14b23054dd6db38f371e0ece7fdb" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">float <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a7a9d14b23054dd6db38f371e0ece7fdb">mrpt::poses::CRobot2DPoseEstimator::m_robot_v</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00143">143</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="a3db098bfa296bd96c96ea946921b4562"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::m_robot_w" ref="a3db098bfa296bd96c96ea946921b4562" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">float <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#a3db098bfa296bd96c96ea946921b4562">mrpt::poses::CRobot2DPoseEstimator::m_robot_w</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00144">144</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.h</a>.</p> </div> </div> <a class="anchor" id="af29382052aa326f1f6e60325dfa9d00c"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::params" ref="af29382052aa326f1f6e60325dfa9d00c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="structmrpt_1_1poses_1_1_c_robot2_d_pose_estimator_1_1_t_options.html">TOptions</a> <a class="el" href="classmrpt_1_1poses_1_1_c_robot2_d_pose_estimator.html#af29382052aa326f1f6e60325dfa9d00c">mrpt::poses::CRobot2DPoseEstimator::params</a></td> </tr> </table> </div> <div class="memdoc"> <p>parameters of the filter. </p> <p>Definition at line <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html#l00130">130</a> of file <a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">CRobot2DPoseEstimator.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.2</a> for MRPT 0.9.4 SVN: at Mon Jan 10 22:30:30 UTC 2011</td><td></td> <td width="100"> </td> <td width="150"> </td></tr> </table> </body></html>