Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 4bc66056a634db26a1f4d0845dc41ca6 > files > 3975

mrpt-doc-0.9.5-0.1.20110925svn2670.fc16.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>mrpt::hmtslam::CHMTSLAM 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.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&#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>
        <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&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;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_1hmtslam.html">hmtslam</a>      </li>
      <li class="navelem"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</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-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pro-static-attribs">Static Protected Attributes</a> &#124;
<a href="#friends">Friends</a>  </div>
  <div class="headertitle">
<div class="title">mrpt::hmtslam::CHMTSLAM Class Reference<div class="ingroups"><a class="el" href="group__mrpt__hmtslam__grp.html">[mrpt-hmtslam]</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="mrpt::hmtslam::CHMTSLAM" --><!-- doxytag: inherits="mrpt::utils::CDebugOutputCapable,mrpt::utils::CSerializable" --><hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>An implementation of Hybrid Metric Topological SLAM (HMT-SLAM). </p>
<p>The main entry points for a user are <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4950c71a464925f03099644911c49e5e" title="Here the user can enter an action into the system (will go to the SLAM process).">pushAction()</a> and <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#acc3acc158eb8a254eb7af1ccc70716c3" title="Here the user can enter observations into the system (will go to the SLAM process).">pushObservations()</a>. Several parameters can be modified through m_options.</p>
<p>The mathematical models of this approach have been reported in:</p>
<ul>
<li>Blanco J.L., Fernandez-Madrigal J.A., and Gonzalez J., "Towards a Unified Bayesian Approach to Hybrid Metric-Topological SLAM", in IEEE Transactions on Robotics (TRO), Vol. 24, No. 2, April 2008.</li>
<li>...</li>
</ul>
<p>More information in the wiki page: <a href="http://www.mrpt.org/HMT-SLAM">http://www.mrpt.org/HMT-SLAM</a> . A complete working application can be found in "MRPT/apps/hmt-slam".</p>
<p>The complete state of the SLAM framework is serializable, so it can be saved and restore to/from a binary dump. This class implements <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT...">mrpt::utils::CSerializable</a>, so it can be saved with "stream &lt;&lt; slam_object;" and restored with "stream &gt;&gt; slam_object;". Alternatively, the methods <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac3045022527b748ed37a59180ff6752b" title="Save the state of the whole HMT-SLAM framework to some binary stream (e.g.">CHMTSLAM::saveState</a> and <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aeb8a86148732f35de46b521fa3a62f10" title="Load the state of the whole HMT-SLAM framework from some binary stream (e.g.">CHMTSLAM::loadState</a> can be invoked, which in turn call internally to the CSerializable interface.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1hmtslam_1_1_c_hierarchical_m_h_map.html" title="The most high level class for storing hybrid, multi-hypothesis maps in a graph-based model...">CHierarchicalMHMap</a> </dd></dl>
</div>
<p><code>#include &lt;<a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">mrpt/hmtslam/CHMTSLAM.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for mrpt::hmtslam::CHMTSLAM:</div>
<div class="dyncontent">
<div class="center"><img src="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m__inherit__graph.png" border="0" usemap="#mrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_inherit__map" alt="Inheritance graph"/></div>
<map name="mrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_inherit__map" id="mrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_inherit__map">
<area shape="rect" id="node2" href="classmrpt_1_1utils_1_1_c_debug_output_capable.html" title="This base class provides a common printf&#45;like method to send debug information to std::cout..." alt="" coords="5,80,227,107"/><area shape="rect" id="node4" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT..." alt="" coords="251,80,415,107"/><area shape="rect" id="node6" href="classmrpt_1_1utils_1_1_c_object.html" title="The virtual base class of all MRPT classes with a unified RTTI system." alt="" coords="265,5,400,32"/></map>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m-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_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_a_a.html">TMessageLSLAMfromAA</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Message definition:  <a href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_a_a.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_t_b_i.html">TMessageLSLAMfromTBI</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Message definition:  <a href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_t_b_i.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mto_t_b_i.html">TMessageLSLAMtoTBI</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Message definition:  <a href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mto_t_b_i.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_options.html">TOptions</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">A variety of options and configuration params (private, use loadOptions).  <a href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_options.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">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a75676d69bc6f708505dc35124cf5f322">CHMTSLAM</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor.  <a href="#a75676d69bc6f708505dc35124cf5f322"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac12b228b43d9e78e0f8dfca140bd578a">CHMTSLAM</a> (const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> &amp;o)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a0f70d93371407fc1f09e05c701f47842">operator=</a> (const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> &amp;o)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a48c65f0c1a3e388831c1d221fde2a004">~CHMTSLAM</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#a48c65f0c1a3e388831c1d221fde2a004"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a7e0392d7fc3b5d5d9b95edfe0557b7a6">abortedDueToErrors</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if an exception has been caught in any thread leading to the end of the mapping application: no more actions/observations will be processed from now on.  <a href="#a7e0392d7fc3b5d5d9b95edfe0557b7a6"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a1ead4893c95bc354fbd979dbc80972da">generateLogFiles</a> (unsigned int nIteration)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Called from LSLAM thread when log files must be created.  <a href="#a1ead4893c95bc354fbd979dbc80972da"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#af7fcc20daf08e7ef8bf9d7f558db9244">getAs3DScene</a> (<a class="el" href="classmrpt_1_1opengl_1_1_c_open_g_l_scene.html">COpenGLScene</a> &amp;outScene)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets a 3D representation of the current state of the whole mapping framework.  <a href="#af7fcc20daf08e7ef8bf9d7f558db9244"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_object_ptr.html">mrpt::utils::CObjectPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html#a534695890364f4b916bba07dad311bcf">duplicateGetSmartPtr</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer).  <a href="#a534695890364f4b916bba07dad311bcf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html">CObject</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html#a9ef7857a0b36059c078e195a0a65ac00">clone</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Cloning interface for smart pointers.  <a href="#a9ef7857a0b36059c078e195a0a65ac00"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">High-level map management</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a9216b76d42507725d335d7beb5465a2b">loadOptions</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;configFile)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads the options from a config file.  <a href="#a9216b76d42507725d335d7beb5465a2b"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a1beda27386ab460fc527026caaef18a8">loadOptions</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_config_file_base.html">mrpt::utils::CConfigFileBase</a> &amp;cfgSource)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads the options from a config source.  <a href="#a1beda27386ab460fc527026caaef18a8"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aac95ac9dea5e08359b513a6eea6e3e28">initializeEmptyMap</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the whole HMT-SLAM framework, reseting to an empty map (It also clears the logs directory) - this must be called AFTER loading the options with <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a9216b76d42507725d335d7beb5465a2b" title="Loads the options from a config file.">CHMTSLAM::loadOptions</a>.  <a href="#aac95ac9dea5e08359b513a6eea6e3e28"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac3045022527b748ed37a59180ff6752b">saveState</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &amp;out) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Save the state of the whole HMT-SLAM framework to some binary stream (e.g.  <a href="#ac3045022527b748ed37a59180ff6752b"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aeb8a86148732f35de46b521fa3a62f10">loadState</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &amp;in)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Load the state of the whole HMT-SLAM framework from some binary stream (e.g.  <a href="#aeb8a86148732f35de46b521fa3a62f10"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public 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_1utils_1_1_c_debug_output_capable.html#ab78281b5d70d6e295a8527a10fea66de">printf_debug</a> (const char *frmt,...)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends a formated text to "debugOut" if not NULL, or to cout otherwise.  <a href="#ab78281b5d70d6e295a8527a10fea66de"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">The important data.</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_hierarchical_m_h_map.html">CHierarchicalMHMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4860a0aa51cf1cd638f6a1357b0b718e">m_map</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The hiearchical, multi-hypothesis graph-based map.  <a href="#a4860a0aa51cf1cd638f6a1357b0b718e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1aligned__containers.html">aligned_containers</a><br class="typebreak"/>
&lt; <a class="el" href="namespacemrpt_1_1hmtslam.html#a6a8c7a5cb874400f4df9d1fd6b6ff9ee">THypothesisID</a>, <br class="typebreak"/>
<a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a> &gt;<br class="typebreak"/>
::map_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a5b1d7b688f8e7a326a32fd38494cc670">m_LMHs</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of LMHs at each instant.  <a href="#a5b1d7b688f8e7a326a32fd38494cc670"></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 <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html#acb51e4dd811d62c2696aee449d0a4715">classCObject</a></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a0b6b801e67bca3d8e0d355e7035f8013">writeToStream</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;out, int *getVersion) const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Introduces a pure virtual method responsible for writing to a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a>.  <a href="#a0b6b801e67bca3d8e0d355e7035f8013"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a73ba83035a64939cdc3aa1c0dfed23ec">readFromStream</a> (<a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;in, int version)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Introduces a pure virtual method responsible for loading from a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a> This can not be used directly be users, instead use "stream &gt;&gt; object;" for reading it from a stream or "stream &gt;&gt; object_ptr;" if the class is unknown apriori.  <a href="#a73ba83035a64939cdc3aa1c0dfed23ec"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">HMT-SLAM sub-processes.</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a798305bff92df3dbead2f71815836320">LSLAM_process_message</a> (const <a class="el" href="classmrpt_1_1utils_1_1_c_message.html">CMessage</a> &amp;msg)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Auxiliary method within thread_LSLAM.  <a href="#a798305bff92df3dbead2f71815836320"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a162ff392270839bc8c37a771308ac820">LSLAM_process_message_from_AA</a> (const <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_a_a.html">TMessageLSLAMfromAA</a> &amp;myMsg)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">No critical section locks are assumed at the entrance of this method.  <a href="#a162ff392270839bc8c37a771308ac820"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a97f7dd1a3491efc684935869d12b586b">LSLAM_process_message_from_TBI</a> (const <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_t_b_i.html">TMessageLSLAMfromTBI</a> &amp;myMsg)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">No critical section locks are assumed at the entrance of this method.  <a href="#a97f7dd1a3491efc684935869d12b586b"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a5eedd133a816b7850b5ebe464552e215">perform_TLC</a> (<a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a> &amp;LMH, const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_h_map_node.html#a4320fd5748b07f6fdb6dd1bdc5b3920e">CHMHMapNode::TNodeID</a> areaInLMH, const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_h_map_node.html#a4320fd5748b07f6fdb6dd1bdc5b3920e">CHMHMapNode::TNodeID</a> areaLoopClosure, const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_p_d_f_gaussian.html">mrpt::poses::CPose3DPDFGaussian</a> &amp;pose1wrt2)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Topological Loop Closure: Performs all the required operations to close a loop between two areas which have been determined to be the same.  <a href="#a5eedd133a816b7850b5ebe464552e215"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac8344118485e6fef7e018bb0b763daa5">TMessageLSLAMfromAAPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a01f80f8b34b7a377204e91837ded51fc">areaAbstraction</a> (<a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a> *LMH, const <a class="el" href="namespacemrpt_1_1hmtslam.html#aab03d6a98830912eb1b9397f12a1adbc">TPoseIDList</a> &amp;newPoseIDs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The Area Abstraction (AA) method, invoked from LSLAM.  <a href="#a01f80f8b34b7a377204e91837ded51fc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a97eaa1271ebb09ff6c677a2d723c5d96">TMessageLSLAMfromTBIPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a9adca3bd6eefc26686a0afd36e30d63d">TBI_main_method</a> (<a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a> *LMH, const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_h_map_node.html#a4320fd5748b07f6fdb6dd1bdc5b3920e">CHMHMapNode::TNodeID</a> &amp;areaID)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The entry point for Topological Bayesian Inference (TBI) engines, invoked from LSLAM.  <a href="#a9adca3bd6eefc26686a0afd36e30d63d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classstd_1_1string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a988574e361c7b45ec41bdc2b2a170e50">generateUniqueAreaLabel</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a new and unique area textual label (currently this generates "0","1",...)  <a href="#a988574e361c7b45ec41bdc2b2a170e50"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacemrpt_1_1hmtslam.html#afc45e3c745da87655acd25af131343bf">TPoseID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a81f2c34f2933f07782261900ec4a08d2">generatePoseID</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a new and unique pose ID.  <a href="#a81f2c34f2933f07782261900ec4a08d2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacemrpt_1_1hmtslam.html#a6a8c7a5cb874400f4df9d1fd6b6ff9ee">THypothesisID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a59a6981dce01f2fc1be68fda1bd6894c">generateHypothesisID</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a new and unique hypothesis ID.  <a href="#a59a6981dce01f2fc1be68fda1bd6894c"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a54a36658fe03241c62878116b9df8882">m_terminateThreads</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Termination flag for signaling all threads to terminate.  <a href="#a54a36658fe03241c62878116b9df8882"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a25296e87ed7a70bae3096e3ff32de5a5">m_terminationFlag_LSLAM</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Threads termination flags:  <a href="#a25296e87ed7a70bae3096e3ff32de5a5"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aa71659b791b366e56e036e18757ed2f9">m_terminationFlag_TBI</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ab3978e1cf6cccb21d6dc657264fd2bf9">m_terminationFlag_3D_viewer</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_options.html">mrpt::hmtslam::CHMTSLAM::TOptions</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a70970c759ab6c7ec47536d1b2929d957">m_options</a></td></tr>
<tr><td colspan="2"><div class="groupHeader">The different SLAM algorithms that can be invoked from the LSLAM thread.</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_l_s_l_a_m_algorithm_base.html">CLSLAMAlgorithmBase</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aaa1d9d8fb3aed15b172266748b77daaa">m_LSLAM_method</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">An instance of a local SLAM method, to be applied to each LMH - initialized by "initializeEmptyMap" or "loadState".  <a href="#aaa1d9d8fb3aed15b172266748b77daaa"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-static-attribs"></a>
Static Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a9d96799cd6393660b8b81e499cbe33a1">m_nextAreaLabel</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacemrpt_1_1hmtslam.html#afc45e3c745da87655acd25af131343bf">TPoseID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aa37861d1d56396b7237fdb0bc4b71623">m_nextPoseID</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="namespacemrpt_1_1hmtslam.html#a6a8c7a5cb874400f4df9d1fd6b6ff9ee">THypothesisID</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a09465c59c8a8d4dea1d63c68407ec805">m_nextHypID</a></td></tr>
<tr><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class HMTSLAM_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a8be947851baa9c04c2c4d71eae9b76cf">CLocalMetricHypothesis</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class HMTSLAM_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac34a721ee598515baa4048b339f41013">CLSLAM_RBPF_2DLASER</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class HMTSLAM_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aa647b0a9918cd02818f22bd36612525c">CTopLCDetector_GridMatching</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class HMTSLAM_IMPEXP&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a6e91da2aba7ae0b86e5175f02a6bd63e">CTopLCDetector_FabMap</a></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
RTTI stuff</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::utils::CStream</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a28ec2a03d277a8469b8ecfc81892afdf">classCSerializable</a></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
RTTI stuff</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_ptr.html">CHMTSLAMPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac8c606527dadd61eb16c219fcc54a30c">SmartPtr</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmrpt_1_1utils_1_1_c_l_a_s_s_i_n_i_t.html">mrpt::utils::CLASSINIT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a35a482444a1cd7e95bbbff84b54c5957">_init_CHMTSLAM</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a63540bbb6cc810abf99aaebd03c546f6">classCHMTSLAM</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a5b006fc53939dc9783bcbb5e55cc5086">classinfo</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a3bea2dda07ef8287e95e2b0cfb24b48e">_GetBaseClass</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <br class="typebreak"/>
<a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ae969d09145db614f9ae04d57bd81d461">GetRuntimeClass</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns information about the class of an object in runtime.  <a href="#ae969d09145db614f9ae04d57bd81d461"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aaf8fcfb1dc4c86b88c86aec138a11072">duplicate</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a copy of the object, indepently of its class.  <a href="#aaf8fcfb1dc4c86b88c86aec138a11072"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a1dc37beca50f6e792282947a9aa7d359">CreateObject</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_ptr.html">CHMTSLAMPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a8b4f4cbcc883539ce3670c303fbe83d5">Create</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Inter-thread communication queues:</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classstlplus_1_1smart__ptr.html">stlplus::smart_ptr</a><br class="typebreak"/>
&lt; <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_a_a.html">TMessageLSLAMfromAA</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac8344118485e6fef7e018bb0b763daa5">TMessageLSLAMfromAAPtr</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classstlplus_1_1smart__ptr.html">stlplus::smart_ptr</a><br class="typebreak"/>
&lt; <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mto_t_b_i.html">TMessageLSLAMtoTBI</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a974f9abe66a702c460e8b68a1938b067">TMessageLSLAMtoTBIPtr</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classstlplus_1_1smart__ptr.html">stlplus::smart_ptr</a><br class="typebreak"/>
&lt; <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_t_b_i.html">TMessageLSLAMfromTBI</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a97eaa1271ebb09ff6c677a2d723c5d96">TMessageLSLAMfromTBIPtr</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__mrpt__base__grp.html#gac9ce1b1023816c8f0cdba36331748601">utils::CMessageQueue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a056fc216e56be906f96d1c24359e091b">m_LSLAM_queue</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">LSLAM thread input queue, messages of type <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_a_a.html" title="Message definition:">CHMTSLAM::TMessageLSLAMfromAA</a>.  <a href="#a056fc216e56be906f96d1c24359e091b"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Related to the input queue:</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ae37ec467ad380c1a1cf84fea9fb246eb">TLSlamMethod</a> { <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ae37ec467ad380c1a1cf84fea9fb246eba5f8cdb91f23d959f87e94c4ef2294716">lsmRBPF_2DLASER</a> =  1
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1queue.html">std::queue</a>&lt; <a class="el" href="structmrpt_1_1utils_1_1_c_serializable_ptr.html">CSerializablePtr</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ae7564a6ff2b7b799ec76e336c4f9d423">m_inputQueue</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The queue of pending actions/observations supplied by the user waiting for being processed.  <a href="#ae7564a6ff2b7b799ec76e336c4f9d423"></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">synch::CCriticalSection</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a6c5a096f713893fa2de3ac1feeef643e">m_inputQueue_cs</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Critical section for accessing m_inputQueue.  <a href="#a6c5a096f713893fa2de3ac1feeef643e"></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">synch::CCriticalSection</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a5eb6a0c528cdce1f7c44c825a1d5fd4d">m_map_cs</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Critical section for accessing m_map.  <a href="#a5eb6a0c528cdce1f7c44c825a1d5fd4d"></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">synch::CCriticalSection</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a8331094fe703797867b9b425f12088d9">m_LMHs_cs</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Critical section for accessing m_LMHs.  <a href="#a8331094fe703797867b9b425f12088d9"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4c2de4ec4cc599ff965a8754a1cc76e8">clearInputQueue</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty the input queue.  <a href="#a4c2de4ec4cc599ff965a8754a1cc76e8"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a6930ab089b18528b65d3c505783137f7">isInputQueueEmpty</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the input queue is empty (Note that the queue must not be empty to the user to enqueue more actions/observaitions)  <a href="#a6930ab089b18528b65d3c505783137f7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a1abdf2f16de48f973a9767e402468bb5">inputQueueSize</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of objects waiting for processing in the input queue.  <a href="#a1abdf2f16de48f973a9767e402468bb5"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4950c71a464925f03099644911c49e5e">pushAction</a> (const <a class="el" href="structmrpt_1_1slam_1_1_c_action_collection_ptr.html">CActionCollectionPtr</a> &amp;acts)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Here the user can enter an action into the system (will go to the SLAM process).  <a href="#a4950c71a464925f03099644911c49e5e"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#acc3acc158eb8a254eb7af1ccc70716c3">pushObservations</a> (const <a class="el" href="structmrpt_1_1slam_1_1_c_sensory_frame_ptr.html">CSensoryFramePtr</a> &amp;sf)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Here the user can enter observations into the system (will go to the SLAM process).  <a href="#acc3acc158eb8a254eb7af1ccc70716c3"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a110f23132389c28c965aa6322bad43e8">pushObservation</a> (const <a class="el" href="structmrpt_1_1slam_1_1_c_observation_ptr.html">CObservationPtr</a> &amp;obs)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Here the user can enter an observation into the system (will go to the SLAM process).  <a href="#a110f23132389c28c965aa6322bad43e8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmrpt_1_1utils_1_1_c_serializable_ptr.html">CSerializablePtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac28593976be2e4fe77baeea8316d6f11">getNextObjectFromInputQueue</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Used from the LSLAM thread to retrieve the next object from the queue.  <a href="#ac28593976be2e4fe77baeea8316d6f11"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Threads stuff</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>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a98b53f066d98645363de0e557fade84f">m_hThread_LSLAM</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Threads handles.  <a href="#a98b53f066d98645363de0e557fade84f"></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>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a9905e2b2527921ff1ffd14549796691b">m_hThread_TBI</a></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>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4a771969da79109d5cbfa2e3c59e9750">m_hThread_3D_viewer</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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#afbdb65f91ed0d58ab842126412cd1661">thread_LSLAM</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The function for the "Local SLAM" thread.  <a href="#afbdb65f91ed0d58ab842126412cd1661"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a6b9722596e7ea59209b3bd3916a7f737">thread_TBI</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The function for the "TBI" thread.  <a href="#a6b9722596e7ea59209b3bd3916a7f737"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a1164a5aaf47810de1fd6e4eae6405dc8">thread_3D_viewer</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The function for the "3D viewer" thread.  <a href="#a1164a5aaf47810de1fd6e4eae6405dc8"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
The different Loop-Closure modules that are to be executed in the TBI thread.</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector_base.html">CTopLCDetectorBase</a> *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a945fdcf6479d807ef8f62ffe93952193">TLopLCDetectorFactory</a> )(<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> *)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1map.html">std::map</a>&lt; <a class="el" href="classstd_1_1string.html">std::string</a>, <br class="typebreak"/>
<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a945fdcf6479d807ef8f62ffe93952193">TLopLCDetectorFactory</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a94399c637a1a7e6652fe80c3d0677a70">m_registeredLCDetectors</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classstd_1_1deque.html">std::deque</a>&lt; <a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector_base.html">CTopLCDetectorBase</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aff9c8cc362037756cae63204f763f5bf">m_topLCdets</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of LC modules in operation - initialized by "initializeEmptyMap" or "loadState".  <a href="#aff9c8cc362037756cae63204f763f5bf"></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">synch::CCriticalSection</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#adc298facbafa529c20803cf33eb5f3e8">m_topLCdets_cs</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The critical section for accessing m_topLCdets.  <a href="#adc298facbafa529c20803cf33eb5f3e8"></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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a0749e84742d01cf5778273c0e8a8db6e">registerLoopClosureDetector</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;name, <a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector_base.html">CTopLCDetectorBase</a> *(*ptrCreateObject)(<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> *))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Must be invoked before calling initializeEmptyMap, so LC objects can be created.  <a href="#a0749e84742d01cf5778273c0e8a8db6e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector_base.html">CTopLCDetectorBase</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a6e877aaf2719a29b699e371562a7ff97">loopClosureDetector_factory</a> (const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;name)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The class factory for topological loop closure detectors.  <a href="#a6e877aaf2719a29b699e371562a7ff97"></a><br/></td></tr>
</table>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="ac8c606527dadd61eb16c219fcc54a30c"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::SmartPtr" ref="ac8c606527dadd61eb16c219fcc54a30c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_ptr.html">CHMTSLAMPtr</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac8c606527dadd61eb16c219fcc54a30c">mrpt::hmtslam::CHMTSLAM::SmartPtr</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>A typedef for the associated smart pointer </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00100">100</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a945fdcf6479d807ef8f62ffe93952193"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::TLopLCDetectorFactory" ref="a945fdcf6479d807ef8f62ffe93952193" args=")(CHMTSLAM *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector_base.html">CTopLCDetectorBase</a>*(* <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a945fdcf6479d807ef8f62ffe93952193">mrpt::hmtslam::CHMTSLAM::TLopLCDetectorFactory</a>)(<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> *)<code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00318">318</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac8344118485e6fef7e018bb0b763daa5"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAAPtr" ref="ac8344118485e6fef7e018bb0b763daa5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classstlplus_1_1smart__ptr.html">stlplus::smart_ptr</a>&lt;<a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_a_a.html">TMessageLSLAMfromAA</a>&gt; <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac8344118485e6fef7e018bb0b763daa5">mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromAAPtr</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00130">130</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a97eaa1271ebb09ff6c677a2d723c5d96"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBIPtr" ref="a97eaa1271ebb09ff6c677a2d723c5d96" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classstlplus_1_1smart__ptr.html">stlplus::smart_ptr</a>&lt;<a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_t_b_i.html">TMessageLSLAMfromTBI</a>&gt; <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a97eaa1271ebb09ff6c677a2d723c5d96">mrpt::hmtslam::CHMTSLAM::TMessageLSLAMfromTBIPtr</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00174">174</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a974f9abe66a702c460e8b68a1938b067"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::TMessageLSLAMtoTBIPtr" ref="a974f9abe66a702c460e8b68a1938b067" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="classstlplus_1_1smart__ptr.html">stlplus::smart_ptr</a>&lt;<a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mto_t_b_i.html">TMessageLSLAMtoTBI</a>&gt; <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a974f9abe66a702c460e8b68a1938b067">mrpt::hmtslam::CHMTSLAM::TMessageLSLAMtoTBIPtr</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00142">142</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="ae37ec467ad380c1a1cf84fea9fb246eb"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::TLSlamMethod" ref="ae37ec467ad380c1a1cf84fea9fb246eb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ae37ec467ad380c1a1cf84fea9fb246eb">mrpt::hmtslam::CHMTSLAM::TLSlamMethod</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ae37ec467ad380c1a1cf84fea9fb246eba5f8cdb91f23d959f87e94c4ef2294716"></a><!-- doxytag: member="lsmRBPF_2DLASER" ref="ae37ec467ad380c1a1cf84fea9fb246eba5f8cdb91f23d959f87e94c4ef2294716" args="" -->lsmRBPF_2DLASER</em>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00236">236</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a75676d69bc6f708505dc35124cf5f322"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::CHMTSLAM" ref="a75676d69bc6f708505dc35124cf5f322" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::hmtslam::CHMTSLAM::CHMTSLAM </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Default constructor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">debug_out_stream</td><td>If debug output messages should be redirected to any other stream apart from std::cout </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac12b228b43d9e78e0f8dfca140bd578a"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::CHMTSLAM" ref="ac12b228b43d9e78e0f8dfca140bd578a" args="(const CHMTSLAM &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">mrpt::hmtslam::CHMTSLAM::CHMTSLAM </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00376">376</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00131">THROW_EXCEPTION</a>.</p>

</div>
</div>
<a class="anchor" id="a48c65f0c1a3e388831c1d221fde2a004"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::~CHMTSLAM" ref="a48c65f0c1a3e388831c1d221fde2a004" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual mrpt::hmtslam::CHMTSLAM::~CHMTSLAM </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="a3bea2dda07ef8287e95e2b0cfb24b48e"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::_GetBaseClass" ref="a3bea2dda07ef8287e95e2b0cfb24b48e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>* mrpt::hmtslam::CHMTSLAM::_GetBaseClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented from <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a471a2d4e8bf14cdc749d43ffb8066a12">mrpt::utils::CSerializable</a>.</p>

</div>
</div>
<a class="anchor" id="a7e0392d7fc3b5d5d9b95edfe0557b7a6"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::abortedDueToErrors" ref="a7e0392d7fc3b5d5d9b95edfe0557b7a6" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::hmtslam::CHMTSLAM::abortedDueToErrors </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return true if an exception has been caught in any thread leading to the end of the mapping application: no more actions/observations will be processed from now on. </p>

</div>
</div>
<a class="anchor" id="a01f80f8b34b7a377204e91837ded51fc"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::areaAbstraction" ref="a01f80f8b34b7a377204e91837ded51fc" args="(CLocalMetricHypothesis *LMH, const TPoseIDList &amp;newPoseIDs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac8344118485e6fef7e018bb0b763daa5">TMessageLSLAMfromAAPtr</a> mrpt::hmtslam::CHMTSLAM::areaAbstraction </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a> *&#160;</td>
          <td class="paramname"><em>LMH</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacemrpt_1_1hmtslam.html#aab03d6a98830912eb1b9397f12a1adbc">TPoseIDList</a> &amp;&#160;</td>
          <td class="paramname"><em>newPoseIDs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The Area Abstraction (AA) method, invoked from LSLAM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">LMH</td><td>(IN) The LMH which to this query applies. </td></tr>
    <tr><td class="paramname">newPoseIDs</td><td>(IN) The new poseIDs to be added to the graph partitioner. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A structure with all return data. Memory to be freed by user. </dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>The critical section for LMH must be locked BEFORE calling this method (it does NOT lock any critical section). </dd></dl>

</div>
</div>
<a class="anchor" id="a4c2de4ec4cc599ff965a8754a1cc76e8"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::clearInputQueue" ref="a4c2de4ec4cc599ff965a8754a1cc76e8" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::clearInputQueue </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Empty the input queue. </p>

</div>
</div>
<a class="anchor" id="a9ef7857a0b36059c078e195a0a65ac00"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::clone" ref="a9ef7857a0b36059c078e195a0a65ac00" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_object.html">CObject</a>* mrpt::utils::CObject::clone </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Cloning interface for smart pointers. </p>

<p>Reimplemented in <a class="el" href="classmrpt_1_1opengl_1_1_c_renderizable.html#acb2597d6d93b406501d9f3530eb56adf">mrpt::opengl::CRenderizable</a>, and <a class="el" href="classmrpt_1_1opengl_1_1_c_renderizable_display_list.html#ac164cb1d2cf682778ce52967cbd56469">mrpt::opengl::CRenderizableDisplayList</a>.</p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00154">154</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8b4f4cbcc883539ce3670c303fbe83d5"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::Create" ref="a8b4f4cbcc883539ce3670c303fbe83d5" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_ptr.html">CHMTSLAMPtr</a> mrpt::hmtslam::CHMTSLAM::Create </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a1dc37beca50f6e792282947a9aa7d359"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::CreateObject" ref="a1dc37beca50f6e792282947a9aa7d359" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a>* mrpt::hmtslam::CHMTSLAM::CreateObject </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="aaf8fcfb1dc4c86b88c86aec138a11072"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::duplicate" ref="aaf8fcfb1dc4c86b88c86aec138a11072" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classmrpt_1_1utils_1_1_c_object.html">mrpt::utils::CObject</a>* mrpt::hmtslam::CHMTSLAM::duplicate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a copy of the object, indepently of its class. </p>

<p>Implements <a class="el" href="classmrpt_1_1utils_1_1_c_object.html#aa1070e173c5f7e307b09c53f1fd256e2">mrpt::utils::CObject</a>.</p>

</div>
</div>
<a class="anchor" id="a534695890364f4b916bba07dad311bcf"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::duplicateGetSmartPtr" ref="a534695890364f4b916bba07dad311bcf" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1utils_1_1_c_object_ptr.html">mrpt::utils::CObjectPtr</a> mrpt::utils::CObject::duplicateGetSmartPtr </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer). </p>

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00151">151</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a59a6981dce01f2fc1be68fda1bd6894c"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::generateHypothesisID" ref="a59a6981dce01f2fc1be68fda1bd6894c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="namespacemrpt_1_1hmtslam.html#a6a8c7a5cb874400f4df9d1fd6b6ff9ee">THypothesisID</a> mrpt::hmtslam::CHMTSLAM::generateHypothesisID </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generates a new and unique hypothesis ID. </p>

</div>
</div>
<a class="anchor" id="a1ead4893c95bc354fbd979dbc80972da"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::generateLogFiles" ref="a1ead4893c95bc354fbd979dbc80972da" args="(unsigned int nIteration)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::generateLogFiles </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>nIteration</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Called from LSLAM thread when log files must be created. </p>

</div>
</div>
<a class="anchor" id="a81f2c34f2933f07782261900ec4a08d2"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::generatePoseID" ref="a81f2c34f2933f07782261900ec4a08d2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="namespacemrpt_1_1hmtslam.html#afc45e3c745da87655acd25af131343bf">TPoseID</a> mrpt::hmtslam::CHMTSLAM::generatePoseID </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generates a new and unique pose ID. </p>

</div>
</div>
<a class="anchor" id="a988574e361c7b45ec41bdc2b2a170e50"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::generateUniqueAreaLabel" ref="a988574e361c7b45ec41bdc2b2a170e50" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classstd_1_1string.html">std::string</a> mrpt::hmtslam::CHMTSLAM::generateUniqueAreaLabel </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Generates a new and unique area textual label (currently this generates "0","1",...) </p>

</div>
</div>
<a class="anchor" id="af7fcc20daf08e7ef8bf9d7f558db9244"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::getAs3DScene" ref="af7fcc20daf08e7ef8bf9d7f558db9244" args="(COpenGLScene &amp;outScene)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::getAs3DScene </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1opengl_1_1_c_open_g_l_scene.html">COpenGLScene</a> &amp;&#160;</td>
          <td class="paramname"><em>outScene</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Gets a 3D representation of the current state of the whole mapping framework. </p>

</div>
</div>
<a class="anchor" id="ac28593976be2e4fe77baeea8316d6f11"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::getNextObjectFromInputQueue" ref="ac28593976be2e4fe77baeea8316d6f11" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1utils_1_1_c_serializable_ptr.html">CSerializablePtr</a> mrpt::hmtslam::CHMTSLAM::getNextObjectFromInputQueue </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Used from the LSLAM thread to retrieve the next object from the queue. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>The object, or NULL if empty. </dd></dl>

</div>
</div>
<a class="anchor" id="ae969d09145db614f9ae04d57bd81d461"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::GetRuntimeClass" ref="ae969d09145db614f9ae04d57bd81d461" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>* mrpt::hmtslam::CHMTSLAM::GetRuntimeClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns information about the class of an object in runtime. </p>

<p>Reimplemented from <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a6861b16159daafd1651d6e0d27f39c58">mrpt::utils::CSerializable</a>.</p>

</div>
</div>
<a class="anchor" id="aac95ac9dea5e08359b513a6eea6e3e28"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::initializeEmptyMap" ref="aac95ac9dea5e08359b513a6eea6e3e28" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::initializeEmptyMap </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initializes the whole HMT-SLAM framework, reseting to an empty map (It also clears the logs directory) - this must be called AFTER loading the options with <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a9216b76d42507725d335d7beb5465a2b" title="Loads the options from a config file.">CHMTSLAM::loadOptions</a>. </p>

</div>
</div>
<a class="anchor" id="a1abdf2f16de48f973a9767e402468bb5"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::inputQueueSize" ref="a1abdf2f16de48f973a9767e402468bb5" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t mrpt::hmtslam::CHMTSLAM::inputQueueSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the number of objects waiting for processing in the input queue. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4950c71a464925f03099644911c49e5e" title="Here the user can enter an action into the system (will go to the SLAM process).">pushAction</a>,<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#acc3acc158eb8a254eb7af1ccc70716c3" title="Here the user can enter observations into the system (will go to the SLAM process).">pushObservations</a>, <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a6930ab089b18528b65d3c505783137f7" title="Returns true if the input queue is empty (Note that the queue must not be empty to the user to enqueu...">isInputQueueEmpty</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a6930ab089b18528b65d3c505783137f7"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::isInputQueueEmpty" ref="a6930ab089b18528b65d3c505783137f7" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::hmtslam::CHMTSLAM::isInputQueueEmpty </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns true if the input queue is empty (Note that the queue must not be empty to the user to enqueue more actions/observaitions) </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4950c71a464925f03099644911c49e5e" title="Here the user can enter an action into the system (will go to the SLAM process).">pushAction</a>,<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#acc3acc158eb8a254eb7af1ccc70716c3" title="Here the user can enter observations into the system (will go to the SLAM process).">pushObservations</a>, <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a1abdf2f16de48f973a9767e402468bb5" title="Returns the number of objects waiting for processing in the input queue.">inputQueueSize</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a9216b76d42507725d335d7beb5465a2b"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::loadOptions" ref="a9216b76d42507725d335d7beb5465a2b" args="(const std::string &amp;configFile)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::loadOptions </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;&#160;</td>
          <td class="paramname"><em>configFile</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Loads the options from a config file. </p>

</div>
</div>
<a class="anchor" id="a1beda27386ab460fc527026caaef18a8"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::loadOptions" ref="a1beda27386ab460fc527026caaef18a8" args="(const mrpt::utils::CConfigFileBase &amp;cfgSource)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::loadOptions </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_config_file_base.html">mrpt::utils::CConfigFileBase</a> &amp;&#160;</td>
          <td class="paramname"><em>cfgSource</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Loads the options from a config source. </p>

</div>
</div>
<a class="anchor" id="aeb8a86148732f35de46b521fa3a62f10"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::loadState" ref="aeb8a86148732f35de46b521fa3a62f10" args="(CStream &amp;in)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::hmtslam::CHMTSLAM::loadState </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Load the state of the whole HMT-SLAM framework from some binary stream (e.g. </p>
<p>a file). </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if everything goes OK. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ac3045022527b748ed37a59180ff6752b" title="Save the state of the whole HMT-SLAM framework to some binary stream (e.g.">saveState</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a6e877aaf2719a29b699e371562a7ff97"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::loopClosureDetector_factory" ref="a6e877aaf2719a29b699e371562a7ff97" args="(const std::string &amp;name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector_base.html">CTopLCDetectorBase</a>* mrpt::hmtslam::CHMTSLAM::loopClosureDetector_factory </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The class factory for topological loop closure detectors. </p>
<p>Possible values are enumerated in <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_options.html#ab5b31cc789677887c8a244c3e0c9f948" title="A list of topological loop-closure detectors to use: can be one or more from this list: &#39;gridmaps&#39;: O...">TOptions::TLC_detectors</a></p>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>On unknown name. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a798305bff92df3dbead2f71815836320"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::LSLAM_process_message" ref="a798305bff92df3dbead2f71815836320" args="(const CMessage &amp;msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::LSLAM_process_message </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1utils_1_1_c_message.html">CMessage</a> &amp;&#160;</td>
          <td class="paramname"><em>msg</em></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Auxiliary method within thread_LSLAM. </p>

</div>
</div>
<a class="anchor" id="a162ff392270839bc8c37a771308ac820"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::LSLAM_process_message_from_AA" ref="a162ff392270839bc8c37a771308ac820" args="(const TMessageLSLAMfromAA &amp;myMsg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::LSLAM_process_message_from_AA </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_a_a.html">TMessageLSLAMfromAA</a> &amp;&#160;</td>
          <td class="paramname"><em>myMsg</em></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>No critical section locks are assumed at the entrance of this method. </p>

</div>
</div>
<a class="anchor" id="a97f7dd1a3491efc684935869d12b586b"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::LSLAM_process_message_from_TBI" ref="a97f7dd1a3491efc684935869d12b586b" args="(const TMessageLSLAMfromTBI &amp;myMsg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::LSLAM_process_message_from_TBI </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_t_b_i.html">TMessageLSLAMfromTBI</a> &amp;&#160;</td>
          <td class="paramname"><em>myMsg</em></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>No critical section locks are assumed at the entrance of this method. </p>

</div>
</div>
<a class="anchor" id="a0f70d93371407fc1f09e05c701f47842"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::operator=" ref="a0f70d93371407fc1f09e05c701f47842" args="(const CHMTSLAM &amp;o)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a>&amp; mrpt::hmtslam::CHMTSLAM::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> &amp;&#160;</td>
          <td class="paramname"><em>o</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00377">377</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

<p>References <a class="el" href="mrpt__macros_8h_source.html#l00131">THROW_EXCEPTION</a>.</p>

</div>
</div>
<a class="anchor" id="a5eedd133a816b7850b5ebe464552e215"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::perform_TLC" ref="a5eedd133a816b7850b5ebe464552e215" args="(CLocalMetricHypothesis &amp;LMH, const CHMHMapNode::TNodeID areaInLMH, const CHMHMapNode::TNodeID areaLoopClosure, const mrpt::poses::CPose3DPDFGaussian &amp;pose1wrt2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::perform_TLC </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a> &amp;&#160;</td>
          <td class="paramname"><em>LMH</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_h_map_node.html#a4320fd5748b07f6fdb6dd1bdc5b3920e">CHMHMapNode::TNodeID</a>&#160;</td>
          <td class="paramname"><em>areaInLMH</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_h_map_node.html#a4320fd5748b07f6fdb6dd1bdc5b3920e">CHMHMapNode::TNodeID</a>&#160;</td>
          <td class="paramname"><em>areaLoopClosure</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_p_d_f_gaussian.html">mrpt::poses::CPose3DPDFGaussian</a> &amp;&#160;</td>
          <td class="paramname"><em>pose1wrt2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Topological Loop Closure: Performs all the required operations to close a loop between two areas which have been determined to be the same. </p>

</div>
</div>
<a class="anchor" id="ab78281b5d70d6e295a8527a10fea66de"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::printf_debug" ref="ab78281b5d70d6e295a8527a10fea66de" args="(const char *frmt,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void mrpt::utils::CDebugOutputCapable::printf_debug </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>frmt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Sends a formated text to "debugOut" if not NULL, or to cout otherwise. </p>

<p>Referenced by <a class="el" href="_c_levenberg_marquardt_8h_source.html#l00098">mrpt::math::CLevenbergMarquardtTempl::execute()</a>.</p>

</div>
</div>
<a class="anchor" id="a4950c71a464925f03099644911c49e5e"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::pushAction" ref="a4950c71a464925f03099644911c49e5e" args="(const CActionCollectionPtr &amp;acts)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::pushAction </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1slam_1_1_c_action_collection_ptr.html">CActionCollectionPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>acts</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Here the user can enter an action into the system (will go to the SLAM process). </p>
<p>This class will delete the passed object when required, so DO NOT DELETE the passed object after calling this. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#acc3acc158eb8a254eb7af1ccc70716c3" title="Here the user can enter observations into the system (will go to the SLAM process).">pushObservations</a>,<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a110f23132389c28c965aa6322bad43e8" title="Here the user can enter an observation into the system (will go to the SLAM process).">pushObservation</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a110f23132389c28c965aa6322bad43e8"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::pushObservation" ref="a110f23132389c28c965aa6322bad43e8" args="(const CObservationPtr &amp;obs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::pushObservation </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1slam_1_1_c_observation_ptr.html">CObservationPtr</a> &amp;&#160;</td>
          <td class="paramname"><em>obs</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Here the user can enter an observation into the system (will go to the SLAM process). </p>
<p>This class will delete the passed object when required, so DO NOT DELETE the passed object after calling this. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4950c71a464925f03099644911c49e5e" title="Here the user can enter an action into the system (will go to the SLAM process).">pushAction</a>,<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a110f23132389c28c965aa6322bad43e8" title="Here the user can enter an observation into the system (will go to the SLAM process).">pushObservation</a> </dd></dl>

</div>
</div>
<a class="anchor" id="acc3acc158eb8a254eb7af1ccc70716c3"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::pushObservations" ref="acc3acc158eb8a254eb7af1ccc70716c3" args="(const CSensoryFramePtr &amp;sf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::pushObservations </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structmrpt_1_1slam_1_1_c_sensory_frame_ptr.html">CSensoryFramePtr</a> &amp;&#160;</td>
          <td class="paramname"><em>sf</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Here the user can enter observations into the system (will go to the SLAM process). </p>
<p>This class will delete the passed object when required, so DO NOT DELETE the passed object after calling this. </p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4950c71a464925f03099644911c49e5e" title="Here the user can enter an action into the system (will go to the SLAM process).">pushAction</a>,<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a110f23132389c28c965aa6322bad43e8" title="Here the user can enter an observation into the system (will go to the SLAM process).">pushObservation</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a73ba83035a64939cdc3aa1c0dfed23ec"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::readFromStream" ref="a73ba83035a64939cdc3aa1c0dfed23ec" args="(mrpt::utils::CStream &amp;in, int version)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void mrpt::utils::CSerializable::readFromStream </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>version</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [protected, pure virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Introduces a pure virtual method responsible for loading from a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a> This can not be used directly be users, instead use "stream &gt;&gt; object;" for reading it from a stream or "stream &gt;&gt; object_ptr;" if the class is unknown apriori. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">in</td><td>The input binary stream where the object data must read from. </td></tr>
    <tr><td class="paramname">version</td><td>The version of the object stored in the stream: use this version number in your code to know how to read the incoming data. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>On any error, see <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html#a1b8cd3d084b5a95a3f65c6eed6e7cc6d" title="Reads a block of bytes from the stream into Buffer On any error, or if ZERO bytes are read...">CStream::ReadBuffer</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a> </dd></dl>

<p>Implemented in <a class="el" href="classmrpt_1_1math_1_1_c_matrix_d.html#a0194e57ec48c1dfc6aa00c23d3409143">mrpt::math::CMatrixD</a>, and <a class="el" href="classmrpt_1_1math_1_1_c_matrix.html#a12db95e8c32d48d2d2483936dec516a7">mrpt::math::CMatrix</a>.</p>

</div>
</div>
<a class="anchor" id="a0749e84742d01cf5778273c0e8a8db6e"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::registerLoopClosureDetector" ref="a0749e84742d01cf5778273c0e8a8db6e" args="(const std::string &amp;name, CTopLCDetectorBase *(*ptrCreateObject)(CHMTSLAM *))" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::registerLoopClosureDetector </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classstd_1_1string.html">std::string</a> &amp;&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector_base.html">CTopLCDetectorBase</a> *(*)(<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html">CHMTSLAM</a> *)&#160;</td>
          <td class="paramname"><em>ptrCreateObject</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Must be invoked before calling initializeEmptyMap, so LC objects can be created. </p>

</div>
</div>
<a class="anchor" id="ac3045022527b748ed37a59180ff6752b"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::saveState" ref="ac3045022527b748ed37a59180ff6752b" args="(CStream &amp;out) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool mrpt::hmtslam::CHMTSLAM::saveState </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Save the state of the whole HMT-SLAM framework to some binary stream (e.g. </p>
<p>a file). </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if everything goes OK. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aeb8a86148732f35de46b521fa3a62f10" title="Load the state of the whole HMT-SLAM framework from some binary stream (e.g.">loadState</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a9adca3bd6eefc26686a0afd36e30d63d"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::TBI_main_method" ref="a9adca3bd6eefc26686a0afd36e30d63d" args="(CLocalMetricHypothesis *LMH, const CHMHMapNode::TNodeID &amp;areaID)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a97eaa1271ebb09ff6c677a2d723c5d96">TMessageLSLAMfromTBIPtr</a> mrpt::hmtslam::CHMTSLAM::TBI_main_method </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a> *&#160;</td>
          <td class="paramname"><em>LMH</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_h_map_node.html#a4320fd5748b07f6fdb6dd1bdc5b3920e">CHMHMapNode::TNodeID</a> &amp;&#160;</td>
          <td class="paramname"><em>areaID</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The entry point for Topological Bayesian Inference (TBI) engines, invoked from LSLAM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">LMH</td><td>(IN) The LMH which to this query applies. </td></tr>
    <tr><td class="paramname">areaID</td><td>(IN) The area ID to consider for potential loop-closures. </td></tr>
  </table>
  </dd>
</dl>
<dl class="note"><dt><b>Note:</b></dt><dd>The critical section for LMH must be locked BEFORE calling this method (it does NOT lock any critical section). </dd></dl>

</div>
</div>
<a class="anchor" id="a1164a5aaf47810de1fd6e4eae6405dc8"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::thread_3D_viewer" ref="a1164a5aaf47810de1fd6e4eae6405dc8" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::thread_3D_viewer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The function for the "3D viewer" thread. </p>

</div>
</div>
<a class="anchor" id="afbdb65f91ed0d58ab842126412cd1661"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::thread_LSLAM" ref="afbdb65f91ed0d58ab842126412cd1661" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::thread_LSLAM </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The function for the "Local SLAM" thread. </p>

</div>
</div>
<a class="anchor" id="a6b9722596e7ea59209b3bd3916a7f737"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::thread_TBI" ref="a6b9722596e7ea59209b3bd3916a7f737" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void mrpt::hmtslam::CHMTSLAM::thread_TBI </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The function for the "TBI" thread. </p>

</div>
</div>
<a class="anchor" id="a0b6b801e67bca3d8e0d355e7035f8013"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::writeToStream" ref="a0b6b801e67bca3d8e0d355e7035f8013" args="(mrpt::utils::CStream &amp;out, int *getVersion) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void mrpt::utils::CSerializable::writeToStream </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a> &amp;&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>getVersion</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [protected, pure virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Introduces a pure virtual method responsible for writing to a <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a>. </p>
<p>This can not be used directly be users, instead use "stream &lt;&lt; object;" for writing it to a stream. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">out</td><td>The output binary stream where object must be dumped. </td></tr>
    <tr><td class="paramname">getVersion</td><td>If NULL, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data. </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classstd_1_1exception.html" title="STL class.">std::exception</a></td><td>On any error, see <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html#a276005e7110c9de74ff3277b3f7bf621" title="Writes a block of bytes to the stream from Buffer.">CStream::WriteBuffer</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classmrpt_1_1utils_1_1_c_stream.html" title="This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...">CStream</a> </dd></dl>

<p>Implemented in <a class="el" href="classmrpt_1_1math_1_1_c_matrix_d.html#a767e787b52208ab4dd46ba7f5e2fd224">mrpt::math::CMatrixD</a>, and <a class="el" href="classmrpt_1_1math_1_1_c_matrix.html#a059d7eaf80dab9c7435154146d2b7dbf">mrpt::math::CMatrix</a>.</p>

</div>
</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a8be947851baa9c04c2c4d71eae9b76cf"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::CLocalMetricHypothesis" ref="a8be947851baa9c04c2c4d71eae9b76cf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class HMTSLAM_IMPEXP <a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00094">94</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac34a721ee598515baa4048b339f41013"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::CLSLAM_RBPF_2DLASER" ref="ac34a721ee598515baa4048b339f41013" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class HMTSLAM_IMPEXP <a class="el" href="classmrpt_1_1hmtslam_1_1_c_l_s_l_a_m___r_b_p_f__2_d_l_a_s_e_r.html">CLSLAM_RBPF_2DLASER</a><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00095">95</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6e91da2aba7ae0b86e5175f02a6bd63e"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::CTopLCDetector_FabMap" ref="a6e91da2aba7ae0b86e5175f02a6bd63e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class HMTSLAM_IMPEXP <a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector___fab_map.html">CTopLCDetector_FabMap</a><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00097">97</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa647b0a9918cd02818f22bd36612525c"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::CTopLCDetector_GridMatching" ref="aa647b0a9918cd02818f22bd36612525c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class HMTSLAM_IMPEXP <a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector___grid_matching.html">CTopLCDetector_GridMatching</a><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00096">96</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6fec28a53e20dfc1c4d046c26f9f7b48"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::mrpt::utils::CStream" ref="a6fec28a53e20dfc1c4d046c26f9f7b48" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="classmrpt_1_1utils_1_1_c_stream.html">mrpt::utils::CStream</a><code> [friend, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reimplemented in <a class="el" href="classmrpt_1_1slam_1_1_c_random_field_grid_map2_d.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CRandomFieldGridMap2D</a>, <a class="el" href="classmrpt_1_1slam_1_1_c_points_map.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CPointsMap</a>, <a class="el" href="classmrpt_1_1slam_1_1_c_observation.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CObservation</a>, <a class="el" href="classmrpt_1_1slam_1_1_c_metric_map.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CMetricMap</a>, <a class="el" href="classmrpt_1_1opengl_1_1_c_renderizable.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::opengl::CRenderizable</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_quat_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPose3DQuatPDF</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPointPDF</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose3_d_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPose3DPDF</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_pose_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPosePDF</a>, <a class="el" href="classmrpt_1_1poses_1_1_c_point2_d_p_d_f.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::poses::CPoint2DPDF</a>, <a class="el" href="classmrpt_1_1opengl_1_1_c_renderizable_display_list.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::opengl::CRenderizableDisplayList</a>, <a class="el" href="classmrpt_1_1slam_1_1_c_action.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::slam::CAction</a>, <a class="el" href="classmrpt_1_1detectors_1_1_c_detectable_object.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::detectors::CDetectableObject</a>, <a class="el" href="classmrpt_1_1opengl_1_1_c_textured_object.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::opengl::CTexturedObject</a>, and <a class="el" href="classmrpt_1_1reactivenav_1_1_c_holonomic_log_file_record.html#a6fec28a53e20dfc1c4d046c26f9f7b48">mrpt::reactivenav::CHolonomicLogFileRecord</a>.</p>

<p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00056">56</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a35a482444a1cd7e95bbbff84b54c5957"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::_init_CHMTSLAM" ref="a35a482444a1cd7e95bbbff84b54c5957" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1utils_1_1_c_l_a_s_s_i_n_i_t.html">mrpt::utils::CLASSINIT</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a35a482444a1cd7e95bbbff84b54c5957">mrpt::hmtslam::CHMTSLAM::_init_CHMTSLAM</a><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00100">100</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a63540bbb6cc810abf99aaebd03c546f6"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::classCHMTSLAM" ref="a63540bbb6cc810abf99aaebd03c546f6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a63540bbb6cc810abf99aaebd03c546f6">mrpt::hmtslam::CHMTSLAM::classCHMTSLAM</a><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00100">100</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="acb51e4dd811d62c2696aee449d0a4715"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::classCObject" ref="acb51e4dd811d62c2696aee449d0a4715" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> <a class="el" href="classmrpt_1_1utils_1_1_c_object.html#acb51e4dd811d62c2696aee449d0a4715">mrpt::utils::CObject::classCObject</a><code> [static, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_object_8h_source.html#l00139">139</a> of file <a class="el" href="_c_object_8h_source.html">CObject.h</a>.</p>

</div>
</div>
<a class="anchor" id="a28ec2a03d277a8469b8ecfc81892afdf"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::classCSerializable" ref="a28ec2a03d277a8469b8ecfc81892afdf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a> <a class="el" href="classmrpt_1_1utils_1_1_c_serializable.html#a28ec2a03d277a8469b8ecfc81892afdf">mrpt::utils::CSerializable::classCSerializable</a><code> [static, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_serializable_8h_source.html#l00056">56</a> of file <a class="el" href="_c_serializable_8h_source.html">CSerializable.h</a>.</p>

</div>
</div>
<a class="anchor" id="a5b006fc53939dc9783bcbb5e55cc5086"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::classinfo" ref="a5b006fc53939dc9783bcbb5e55cc5086" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structmrpt_1_1utils_1_1_t_runtime_class_id.html">mrpt::utils::TRuntimeClassId</a>* <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a5b006fc53939dc9783bcbb5e55cc5086">mrpt::hmtslam::CHMTSLAM::classinfo</a><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00100">100</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4a771969da79109d5cbfa2e3c59e9750"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_hThread_3D_viewer" ref="a4a771969da79109d5cbfa2e3c59e9750" 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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4a771969da79109d5cbfa2e3c59e9750">mrpt::hmtslam::CHMTSLAM::m_hThread_3D_viewer</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00273">273</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a98b53f066d98645363de0e557fade84f"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_hThread_LSLAM" ref="a98b53f066d98645363de0e557fade84f" 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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a98b53f066d98645363de0e557fade84f">mrpt::hmtslam::CHMTSLAM::m_hThread_LSLAM</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Threads handles. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00273">273</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9905e2b2527921ff1ffd14549796691b"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_hThread_TBI" ref="a9905e2b2527921ff1ffd14549796691b" 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_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a9905e2b2527921ff1ffd14549796691b">mrpt::hmtslam::CHMTSLAM::m_hThread_TBI</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00273">273</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="ae7564a6ff2b7b799ec76e336c4f9d423"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_inputQueue" ref="ae7564a6ff2b7b799ec76e336c4f9d423" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1queue.html">std::queue</a>&lt;<a class="el" href="structmrpt_1_1utils_1_1_c_serializable_ptr.html">CSerializablePtr</a>&gt; <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ae7564a6ff2b7b799ec76e336c4f9d423">mrpt::hmtslam::CHMTSLAM::m_inputQueue</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The queue of pending actions/observations supplied by the user waiting for being processed. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00248">248</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6c5a096f713893fa2de3ac1feeef643e"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_inputQueue_cs" ref="a6c5a096f713893fa2de3ac1feeef643e" 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">synch::CCriticalSection</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a6c5a096f713893fa2de3ac1feeef643e">mrpt::hmtslam::CHMTSLAM::m_inputQueue_cs</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Critical section for accessing m_inputQueue. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00251">251</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a5b1d7b688f8e7a326a32fd38494cc670"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_LMHs" ref="a5b1d7b688f8e7a326a32fd38494cc670" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmrpt_1_1aligned__containers.html">aligned_containers</a>&lt;<a class="el" href="namespacemrpt_1_1hmtslam.html#a6a8c7a5cb874400f4df9d1fd6b6ff9ee">THypothesisID</a>, <a class="el" href="classmrpt_1_1hmtslam_1_1_c_local_metric_hypothesis.html">CLocalMetricHypothesis</a>&gt;::map_t <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a5b1d7b688f8e7a326a32fd38494cc670">mrpt::hmtslam::CHMTSLAM::m_LMHs</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The list of LMHs at each instant. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00415">415</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8331094fe703797867b9b425f12088d9"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_LMHs_cs" ref="a8331094fe703797867b9b425f12088d9" 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">synch::CCriticalSection</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a8331094fe703797867b9b425f12088d9">mrpt::hmtslam::CHMTSLAM::m_LMHs_cs</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Critical section for accessing m_LMHs. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00256">256</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="aaa1d9d8fb3aed15b172266748b77daaa"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_LSLAM_method" ref="aaa1d9d8fb3aed15b172266748b77daaa" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_l_s_l_a_m_algorithm_base.html">CLSLAMAlgorithmBase</a>* <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aaa1d9d8fb3aed15b172266748b77daaa">mrpt::hmtslam::CHMTSLAM::m_LSLAM_method</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>An instance of a local SLAM method, to be applied to each LMH - initialized by "initializeEmptyMap" or "loadState". </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00310">310</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a056fc216e56be906f96d1c24359e091b"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_LSLAM_queue" ref="a056fc216e56be906f96d1c24359e091b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__mrpt__base__grp.html#gac9ce1b1023816c8f0cdba36331748601">utils::CMessageQueue</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a056fc216e56be906f96d1c24359e091b">mrpt::hmtslam::CHMTSLAM::m_LSLAM_queue</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>LSLAM thread input queue, messages of type <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_message_l_s_l_a_mfrom_a_a.html" title="Message definition:">CHMTSLAM::TMessageLSLAMfromAA</a>. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00177">177</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4860a0aa51cf1cd638f6a1357b0b718e"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_map" ref="a4860a0aa51cf1cd638f6a1357b0b718e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classmrpt_1_1hmtslam_1_1_c_hierarchical_m_h_map.html">CHierarchicalMHMap</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a4860a0aa51cf1cd638f6a1357b0b718e">mrpt::hmtslam::CHMTSLAM::m_map</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The hiearchical, multi-hypothesis graph-based map. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00414">414</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a5eb6a0c528cdce1f7c44c825a1d5fd4d"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_map_cs" ref="a5eb6a0c528cdce1f7c44c825a1d5fd4d" 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">synch::CCriticalSection</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a5eb6a0c528cdce1f7c44c825a1d5fd4d">mrpt::hmtslam::CHMTSLAM::m_map_cs</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Critical section for accessing m_map. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00254">254</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9d96799cd6393660b8b81e499cbe33a1"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_nextAreaLabel" ref="a9d96799cd6393660b8b81e499cbe33a1" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int64_t <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a9d96799cd6393660b8b81e499cbe33a1">mrpt::hmtslam::CHMTSLAM::m_nextAreaLabel</a><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00365">365</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a09465c59c8a8d4dea1d63c68407ec805"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_nextHypID" ref="a09465c59c8a8d4dea1d63c68407ec805" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemrpt_1_1hmtslam.html#a6a8c7a5cb874400f4df9d1fd6b6ff9ee">THypothesisID</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a09465c59c8a8d4dea1d63c68407ec805">mrpt::hmtslam::CHMTSLAM::m_nextHypID</a><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00367">367</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa37861d1d56396b7237fdb0bc4b71623"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_nextPoseID" ref="aa37861d1d56396b7237fdb0bc4b71623" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacemrpt_1_1hmtslam.html#afc45e3c745da87655acd25af131343bf">TPoseID</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aa37861d1d56396b7237fdb0bc4b71623">mrpt::hmtslam::CHMTSLAM::m_nextPoseID</a><code> [static, protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00366">366</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a70970c759ab6c7ec47536d1b2929d957"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_options" ref="a70970c759ab6c7ec47536d1b2929d957" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"> <a class="el" href="structmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m_1_1_t_options.html">mrpt::hmtslam::CHMTSLAM::TOptions</a>  <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a70970c759ab6c7ec47536d1b2929d957">mrpt::hmtslam::CHMTSLAM::m_options</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a94399c637a1a7e6652fe80c3d0677a70"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_registeredLCDetectors" ref="a94399c637a1a7e6652fe80c3d0677a70" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1map.html">std::map</a>&lt;<a class="el" href="classstd_1_1string.html">std::string</a>,<a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a945fdcf6479d807ef8f62ffe93952193">TLopLCDetectorFactory</a>&gt; <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a94399c637a1a7e6652fe80c3d0677a70">mrpt::hmtslam::CHMTSLAM::m_registeredLCDetectors</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00320">320</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a54a36658fe03241c62878116b9df8882"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_terminateThreads" ref="a54a36658fe03241c62878116b9df8882" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a54a36658fe03241c62878116b9df8882">mrpt::hmtslam::CHMTSLAM::m_terminateThreads</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Termination flag for signaling all threads to terminate. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00348">348</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="ab3978e1cf6cccb21d6dc657264fd2bf9"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_terminationFlag_3D_viewer" ref="ab3978e1cf6cccb21d6dc657264fd2bf9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#ab3978e1cf6cccb21d6dc657264fd2bf9">mrpt::hmtslam::CHMTSLAM::m_terminationFlag_3D_viewer</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00352">352</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="a25296e87ed7a70bae3096e3ff32de5a5"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_terminationFlag_LSLAM" ref="a25296e87ed7a70bae3096e3ff32de5a5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#a25296e87ed7a70bae3096e3ff32de5a5">mrpt::hmtslam::CHMTSLAM::m_terminationFlag_LSLAM</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Threads termination flags: </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00352">352</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa71659b791b366e56e036e18757ed2f9"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_terminationFlag_TBI" ref="aa71659b791b366e56e036e18757ed2f9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aa71659b791b366e56e036e18757ed2f9">mrpt::hmtslam::CHMTSLAM::m_terminationFlag_TBI</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00352">352</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="aff9c8cc362037756cae63204f763f5bf"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_topLCdets" ref="aff9c8cc362037756cae63204f763f5bf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classstd_1_1deque.html">std::deque</a>&lt;<a class="el" href="classmrpt_1_1hmtslam_1_1_c_top_l_c_detector_base.html">CTopLCDetectorBase</a>*&gt; <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#aff9c8cc362037756cae63204f763f5bf">mrpt::hmtslam::CHMTSLAM::m_topLCdets</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The list of LC modules in operation - initialized by "initializeEmptyMap" or "loadState". </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00323">323</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.h</a>.</p>

</div>
</div>
<a class="anchor" id="adc298facbafa529c20803cf33eb5f3e8"></a><!-- doxytag: member="mrpt::hmtslam::CHMTSLAM::m_topLCdets_cs" ref="adc298facbafa529c20803cf33eb5f3e8" 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">synch::CCriticalSection</a> <a class="el" href="classmrpt_1_1hmtslam_1_1_c_h_m_t_s_l_a_m.html#adc298facbafa529c20803cf33eb5f3e8">mrpt::hmtslam::CHMTSLAM::m_topLCdets_cs</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>The critical section for accessing m_topLCdets. </p>

<p>Definition at line <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html#l00326">326</a> of file <a class="el" href="_c_h_m_t_s_l_a_m_8h_source.html">CHMTSLAM.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>