Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 2f6559b7006594cad03af173263c219e > files > 3977

mrpt-doc-0.9.4-0.1.20110110svn2383.fc15.i686.rpm

<!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> &gt; <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&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;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&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;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> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<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 &lt;<a class="el" href="_c_robot2_d_pose_estimator_8h_source.html">mrpt/poses/CRobot2DPoseEstimator.h</a>&gt;</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 &#160;</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">&#160;</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">&#160;</td><td class="mdescRight">Default constructor.  <a href="#ab0cf5743151d4263cdfcdc751e167840"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</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">&#160;</td><td class="mdescRight">Destructor.  <a href="#a39bf647f534173934317112b61ee7c17"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</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&#160;</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> &amp;newPose, const <a class="el" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixDouble33</a> &amp;newPoseCov, <a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> cur_tim)</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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> &amp;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">&#160;</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&#160;</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> &amp;pose, float &amp;v, float &amp;w, <a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> tim_query=mrpt::system::now()) const </td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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> &amp;pose, float &amp;v, float &amp;w, <a class="el" href="namespacemrpt_1_1system.html#a42674286d8d56afea013b6329bb7327a">TTimeStamp</a> tim_query=mrpt::system::now()) const </td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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> &amp;pose) const </td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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> &amp;pose) const </td></tr>
<tr><td class="mdescLeft">&#160;</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>&#160;</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">&#160;</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&#160;</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> &amp;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> &amp;new_p)</td></tr>
<tr><td class="mdescLeft">&#160;</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>&#160;</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>&#160;</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>&#160;</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">&#160;</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>&#160;</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>&#160;</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">&#160;</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>&#160;</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>&#160;</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&#160;</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&#160;</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 &amp; 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">&#160;)</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">&#160;)</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 &amp;p, const float v, const float w, const double delta_time, TPose2D &amp;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> &amp;&#160;</td>
          <td class="paramname"> <em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"> <em>w</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</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> &amp;&#160;</td>
          <td class="paramname"> <em>new_p</em>&#160;</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 &amp;pose, float &amp;v, float &amp;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> &amp;&#160;</td>
          <td class="paramname"> <em>pose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</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>&#160;</td>
          <td class="paramname"> <em>tim_query</em> = <code>mrpt::system::now()</code>&#160;</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 &amp;pose, float &amp;v, float &amp;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> &amp;&#160;</td>
          <td class="paramname"> <em>pose</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</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>&#160;</td>
          <td class="paramname"> <em>tim_query</em> = <code>mrpt::system::now()</code>&#160;</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 &amp;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> &amp;&#160;</td>
          <td class="paramname"> <em>pose</em>&#160;)</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&lt; DERIVEDCLASS &gt;::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&lt; DERIVEDCLASS &gt;::y()</a>.</p>

</div>
</div>
<a class="anchor" id="a9b036f895e9e06fb9b5c28556350a41c"></a><!-- doxytag: member="mrpt::poses::CRobot2DPoseEstimator::getLatestRobotPose" ref="a9b036f895e9e06fb9b5c28556350a41c" args="(TPose2D &amp;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> &amp;&#160;</td>
          <td class="paramname"> <em>pose</em>&#160;)</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 &amp;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> &amp;&#160;</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>&#160;</td>
          <td class="paramname"> <em>cur_tim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"> <em>hasVelocities</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"> <em>v</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"> <em>w</em> = <code>0</code>&#160;</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 &amp;newPose, const CMatrixDouble33 &amp;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> &amp;&#160;</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> &amp;&#160;</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>&#160;</td>
          <td class="paramname"> <em>cur_tim</em>&#160;</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">&#160;)</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>