Sophie

Sophie

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

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>CLandmarksMap.h Source File</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><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><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="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div class="header">
  <div class="headertitle">
<div class="title">CLandmarksMap.h</div>  </div>
</div>
<div class="contents">
<a href="_c_landmarks_map_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* +---------------------------------------------------------------------------+</span>
<a name="l00002"></a>00002 <span class="comment">   |          The Mobile Robot Programming Toolkit (MRPT) C++ library          |</span>
<a name="l00003"></a>00003 <span class="comment">   |                                                                           |</span>
<a name="l00004"></a>00004 <span class="comment">   |                       http://www.mrpt.org/                                |</span>
<a name="l00005"></a>00005 <span class="comment">   |                                                                           |</span>
<a name="l00006"></a>00006 <span class="comment">   |   Copyright (C) 2005-2011  University of Malaga                           |</span>
<a name="l00007"></a>00007 <span class="comment">   |                                                                           |</span>
<a name="l00008"></a>00008 <span class="comment">   |    This software was written by the Machine Perception and Intelligent    |</span>
<a name="l00009"></a>00009 <span class="comment">   |      Robotics Lab, University of Malaga (Spain).                          |</span>
<a name="l00010"></a>00010 <span class="comment">   |    Contact: Jose-Luis Blanco  &lt;jlblanco@ctima.uma.es&gt;                     |</span>
<a name="l00011"></a>00011 <span class="comment">   |                                                                           |</span>
<a name="l00012"></a>00012 <span class="comment">   |  This file is part of the MRPT project.                                   |</span>
<a name="l00013"></a>00013 <span class="comment">   |                                                                           |</span>
<a name="l00014"></a>00014 <span class="comment">   |     MRPT is free software: you can redistribute it and/or modify          |</span>
<a name="l00015"></a>00015 <span class="comment">   |     it under the terms of the GNU General Public License as published by  |</span>
<a name="l00016"></a>00016 <span class="comment">   |     the Free Software Foundation, either version 3 of the License, or     |</span>
<a name="l00017"></a>00017 <span class="comment">   |     (at your option) any later version.                                   |</span>
<a name="l00018"></a>00018 <span class="comment">   |                                                                           |</span>
<a name="l00019"></a>00019 <span class="comment">   |   MRPT is distributed in the hope that it will be useful,                 |</span>
<a name="l00020"></a>00020 <span class="comment">   |     but WITHOUT ANY WARRANTY; without even the implied warranty of        |</span>
<a name="l00021"></a>00021 <span class="comment">   |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         |</span>
<a name="l00022"></a>00022 <span class="comment">   |     GNU General Public License for more details.                          |</span>
<a name="l00023"></a>00023 <span class="comment">   |                                                                           |</span>
<a name="l00024"></a>00024 <span class="comment">   |     You should have received a copy of the GNU General Public License     |</span>
<a name="l00025"></a>00025 <span class="comment">   |     along with MRPT.  If not, see &lt;http://www.gnu.org/licenses/&gt;.         |</span>
<a name="l00026"></a>00026 <span class="comment">   |                                                                           |</span>
<a name="l00027"></a>00027 <span class="comment">   +---------------------------------------------------------------------------+ */</span>
<a name="l00028"></a>00028 <span class="preprocessor">#ifndef CLandmarksMap_H</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define CLandmarksMap_H</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;<a class="code" href="_c_feature_extraction_8h.html">mrpt/vision/CFeatureExtraction.h</a>&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="_c_metric_map_8h.html">mrpt/slam/CMetricMap.h</a>&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="_c_landmark_8h.html">mrpt/slam/CLandmark.h</a>&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;<a class="code" href="_c_observation_image_8h.html">mrpt/slam/CObservationImage.h</a>&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;<a class="code" href="_c_observation2_d_range_scan_8h.html">mrpt/slam/CObservation2DRangeScan.h</a>&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;<a class="code" href="_c_observation_g_p_s_8h.html">mrpt/slam/CObservationGPS.h</a>&gt;</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;<a class="code" href="_c_observation_bearing_range_8h.html">mrpt/slam/CObservationBearingRange.h</a>&gt;</span>
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;<a class="code" href="_c_serializable_8h.html">mrpt/utils/CSerializable.h</a>&gt;</span>
<a name="l00039"></a>00039 <span class="preprocessor">#include &lt;<a class="code" href="_c_matrix_8h.html">mrpt/math/CMatrix.h</a>&gt;</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;<a class="code" href="_c_dynamic_grid_8h.html">mrpt/utils/CDynamicGrid.h</a>&gt;</span>
<a name="l00041"></a>00041 <span class="preprocessor">#include &lt;<a class="code" href="_c_loadable_options_8h.html">mrpt/utils/CLoadableOptions.h</a>&gt;</span>
<a name="l00042"></a>00042 
<a name="l00043"></a>00043 <span class="keyword">namespace </span>mrpt
<a name="l00044"></a>00044 {
<a name="l00045"></a>00045 <span class="keyword">namespace </span>slam
<a name="l00046"></a>00046 {
<a name="l00047"></a>00047         <span class="keyword">class </span>CObservationBeaconRanges;
<a name="l00048"></a><a class="code" href="namespacemrpt_1_1slam.html#a932bc93200d4cc0b9884d3d1845d94f2">00048</a>         <span class="keyword">class </span><a class="code" href="classmrpt_1_1slam_1_1_c_observation_stereo_images.html" title="Observation class for either a pair of left+right or left+disparity images from a stereo camera...">CObservationStereoImages</a>;
<a name="l00049"></a>00049 <span class="comment"></span>
<a name="l00050"></a>00050 <span class="comment">        /** Internal use.</span>
<a name="l00051"></a>00051 <span class="comment">          */</span>
<a name="l00052"></a>00052         <span class="keyword">typedef</span> std<a class="code" href="classstd_1_1vector.html">::vector&lt;CLandmark&gt;</a>  <a class="code" href="namespacemrpt_1_1slam.html#a932bc93200d4cc0b9884d3d1845d94f2" title="Internal use.">TSequenceLandmarks</a>;
<a name="l00053"></a>00053 
<a name="l00054"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_ptr.html#aad23f1971c7bbcb388e0bfff11400538">00054</a>         <a class="code" href="_c_serializable_8h.html#a9ef523d787f6cb837a0585b790882588" title="This declaration must be inserted in all CSerializable classes definition, before the class declarati...">DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE</a>( <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">CLandmarksMap</a>, <a class="code" href="classmrpt_1_1slam_1_1_c_metric_map.html" title="Declares a virtual base class for all metric maps storage classes.">CMetricMap</a>, <a class="code" href="vision_2include_2mrpt_2vision_2link__pragmas_8h.html#aa4a17fb846aac61f4e57b17b6f784559">VISION_IMPEXP</a> )
<a name="l00055"></a>00055 
<a name="l00056"></a>00056         <span class="comment">/** A class for storing a map of 3D probabilistic landmarks.</span>
<a name="l00057"></a>00057 <span class="comment">         * &lt;br&gt;</span>
<a name="l00058"></a>00058 <span class="comment">         *  Currently these types of landmarks are defined: (see mrpt::slam::CLandmark)</span>
<a name="l00059"></a>00059 <span class="comment">         *              - For &quot;visual landmarks&quot; from images: features with associated descriptors.</span>
<a name="l00060"></a>00060 <span class="comment">         *              - For laser scanners: each of the range measuremnts, as &quot;occupancy&quot; landmarks.</span>
<a name="l00061"></a>00061 <span class="comment">         *              - For grid maps: &quot;Panoramic descriptor&quot; feature points.</span>
<a name="l00062"></a>00062 <span class="comment">         *              - For range-only localization and SLAM: Beacons. It is also supported the simulation of expected beacon-to-sensor readings, observation likelihood,...</span>
<a name="l00063"></a>00063 <span class="comment">         * &lt;br&gt;</span>
<a name="l00064"></a>00064 <span class="comment">         * &lt;b&gt;How to load landmarks from observations:&lt;/b&gt;&lt;br&gt;</span>
<a name="l00065"></a>00065 <span class="comment">         *  When invoking CLandmarksMap::insertObservation(), the values in CLandmarksMap::insertionOptions will</span>
<a name="l00066"></a>00066 <span class="comment">         *     determinate the kind of landmarks that will be extracted and fused into the map. Supported feature</span>
<a name="l00067"></a>00067 <span class="comment">         *     extraction processes are listed next:</span>
<a name="l00068"></a>00068 <span class="comment">         *</span>
<a name="l00069"></a>00069 <span class="comment">          &lt;table&gt;</span>
<a name="l00070"></a>00070 <span class="comment">          &lt;tr&gt; &lt;td&gt;&lt;b&gt;Observation class:&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Generated Landmarks:&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;Comments:&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt;</span>
<a name="l00071"></a>00071 <span class="comment">          &lt;tr&gt; &lt;td&gt;CObservationImage&lt;/td&gt; &lt;td&gt;vlSIFT&lt;/td&gt; &lt;td&gt;1) A SIFT feature is created for each SIFT detected in the image,</span>
<a name="l00072"></a>00072 <span class="comment">                   &lt;br&gt;2) Correspondences between SIFTs features and existing ones are finded by computeMatchingWith3DLandmarks,</span>
<a name="l00073"></a>00073 <span class="comment">                           &lt;br&gt;3) The corresponding feaures are fused, and the new ones added, with an initial uncertainty according to insertionOptions&lt;/td&gt; &lt;/tr&gt;</span>
<a name="l00074"></a>00074 <span class="comment">          &lt;tr&gt; &lt;td&gt;CObservationStereoImages&lt;/td&gt; &lt;td&gt;vlSIFT&lt;/td&gt; &lt;td&gt; Each image is separately procesed by the method for CObservationImage observations &lt;/td&gt; &lt;/tr&gt;</span>
<a name="l00075"></a>00075 <span class="comment">          &lt;tr&gt; &lt;td&gt;CObservationStereoImages&lt;/td&gt; &lt;td&gt;vlColor&lt;/td&gt; &lt;td&gt; TODO... &lt;/td&gt; &lt;/tr&gt;</span>
<a name="l00076"></a>00076 <span class="comment">          &lt;tr&gt; &lt;td&gt;CObservation2DRangeScan&lt;/td&gt; &lt;td&gt;glOccupancy&lt;/td&gt; &lt;td&gt; A landmark is added for each range in the scan, with its appropiate covariance matrix derived from the jacobians matrixes. &lt;/td&gt; &lt;/tr&gt;</span>
<a name="l00077"></a>00077 <span class="comment">          &lt;/table&gt;</span>
<a name="l00078"></a>00078 <span class="comment">         *</span>
<a name="l00079"></a>00079 <span class="comment">         * \sa CMetricMap</span>
<a name="l00080"></a>00080 <span class="comment">         * \ingroup mrpt_vision_grp</span>
<a name="l00081"></a>00081 <span class="comment">         */</span>
<a name="l00082"></a>00082         class <a class="code" href="vision_2include_2mrpt_2vision_2link__pragmas_8h.html#aa4a17fb846aac61f4e57b17b6f784559">VISION_IMPEXP</a> <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">CLandmarksMap</a> : public <a class="code" href="classmrpt_1_1slam_1_1_c_metric_map.html" title="Declares a virtual base class for all metric maps storage classes.">CMetricMap</a>
<a name="l00083"></a>00083         {
<a name="l00084"></a>00084                 <span class="comment">// This must be added to any CSerializable derived class:</span>
<a name="l00085"></a><a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#a55c53c2f970e1847e6b8b06259869896">00085</a>                 <a class="code" href="_c_serializable_8h.html#a72ab55bf7ae009c89b75715cfa21e84d" title="This declaration must be inserted in all CSerializable classes definition, within the class declarati...">DEFINE_SERIALIZABLE</a>( <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">CLandmarksMap</a> )
<a name="l00086"></a>00086 
<a name="l00087"></a>00087         private:
<a name="l00088"></a>00088 
<a name="l00089"></a>00089                 virtual <span class="keywordtype">void</span>    internal_clear();
<a name="l00090"></a>00090 <span class="comment"></span>
<a name="l00091"></a>00091 <span class="comment">                 /** Insert the observation information into this map. This method must be implemented</span>
<a name="l00092"></a>00092 <span class="comment">                  *    in derived classes.</span>
<a name="l00093"></a>00093 <span class="comment">                  * \param obs The observation</span>
<a name="l00094"></a>00094 <span class="comment">                  * \param robotPose The 3D pose of the robot mobile base in the map reference system, or NULL (default) if you want to use CPose2D(0,0,deg)</span>
<a name="l00095"></a>00095 <span class="comment">                  *</span>
<a name="l00096"></a>00096 <span class="comment">                  * \sa CObservation::insertObservationInto</span>
<a name="l00097"></a>00097 <span class="comment">                  */</span>
<a name="l00098"></a>00098                 virtual <span class="keywordtype">bool</span>  internal_insertObservation( const <a class="code" href="classmrpt_1_1slam_1_1_c_observation.html" title="Declares a class that represents any robot&#39;s observation.">CObservation</a> *obs, const <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a> *robotPose = NULL );
<a name="l00099"></a>00099 
<a name="l00100"></a>00100         public:
<a name="l00101"></a>00101 
<a name="l00102"></a><a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#a8ffcbfa68adf79f56c4d00e4157ebf55">00102</a>                 static mrpt::utils::<a class="code" href="structmrpt_1_1utils_1_1_t_colorf.html" title="A RGB color - floats in the range [0,1].">TColorf</a>             COLOR_LANDMARKS_IN_3DSCENES;  <span class="comment">//!&lt; The color of landmark ellipsoids in CLandmarksMap::getAs3DObject</span>
<a name="l00103"></a>00103 <span class="comment"></span>
<a name="l00104"></a><a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#ab48b1c6e6701a0d5182e17d50248d32d">00104</a>                 typedef mrpt::slam::<a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html" title="The class for storing &quot;landmarks&quot; (visual or laser-scan-extracted features,...)">CLandmark</a>  <a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html" title="The class for storing &quot;landmarks&quot; (visual or laser-scan-extracted features,...)">landmark_type</a>;
<a name="l00105"></a>00105 
<a name="l00106"></a>00106 <span class="comment"></span>
<a name="l00107"></a>00107 <span class="comment">                /** The list of landmarks: the wrapper class is just for maintaining the KD-Tree representation</span>
<a name="l00108"></a>00108 <span class="comment">                  */</span>
<a name="l00109"></a>00109                 struct <a class="code" href="vision_2include_2mrpt_2vision_2link__pragmas_8h.html#aa4a17fb846aac61f4e57b17b6f784559">VISION_IMPEXP</a> <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html" title="The list of landmarks: the wrapper class is just for maintaining the KD-Tree representation.">TCustomSequenceLandmarks</a>
<a name="l00110"></a>00110                 {
<a name="l00111"></a>00111                 <span class="keyword">private</span>:<span class="comment"></span>
<a name="l00112"></a>00112 <span class="comment">                        /** The actual list:</span>
<a name="l00113"></a>00113 <span class="comment">                          */</span>
<a name="l00114"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#af5a9f081a8b49e2ffb4f6e2e9cfb6b0d">00114</a>                         <a class="code" href="classstd_1_1vector.html">TSequenceLandmarks</a>                      <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#af5a9f081a8b49e2ffb4f6e2e9cfb6b0d" title="The actual list:">m_landmarks</a>;
<a name="l00115"></a>00115 <span class="comment"></span>
<a name="l00116"></a>00116 <span class="comment">                        /** A grid-map with the set of landmarks falling into each cell.</span>
<a name="l00117"></a>00117 <span class="comment">                      *  \todo Use the KD-tree instead?</span>
<a name="l00118"></a>00118 <span class="comment">                          */</span>
<a name="l00119"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a9fb501d673b5d959c89b09f3dc895a34">00119</a>                         <a class="code" href="classmrpt_1_1utils_1_1_c_dynamic_grid.html">CDynamicGrid&lt;vector_int&gt;</a>        <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a9fb501d673b5d959c89b09f3dc895a34" title="A grid-map with the set of landmarks falling into each cell.">m_grid</a>;
<a name="l00120"></a>00120 <span class="comment"></span>
<a name="l00121"></a>00121 <span class="comment">                        /** Auxiliary variables used in &quot;getLargestDistanceFromOrigin&quot;</span>
<a name="l00122"></a>00122 <span class="comment">                          * \sa getLargestDistanceFromOrigin</span>
<a name="l00123"></a>00123 <span class="comment">                          */</span>
<a name="l00124"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#ac7962e02a57c659e47c0b819bf0fd29d">00124</a>                         <span class="keyword">mutable</span> <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#ac7962e02a57c659e47c0b819bf0fd29d" title="Auxiliary variables used in &quot;getLargestDistanceFromOrigin&quot;.">m_largestDistanceFromOrigin</a>;
<a name="l00125"></a>00125 <span class="comment"></span>
<a name="l00126"></a>00126 <span class="comment">                        /** Auxiliary variables used in &quot;getLargestDistanceFromOrigin&quot;</span>
<a name="l00127"></a>00127 <span class="comment">                          * \sa getLargestDistanceFromOrigin</span>
<a name="l00128"></a>00128 <span class="comment">                          */</span>
<a name="l00129"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a4b23358409c27c9398b5ac8f7ffc143b">00129</a>                         <span class="keyword">mutable</span> <span class="keywordtype">bool</span>    <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a4b23358409c27c9398b5ac8f7ffc143b" title="Auxiliary variables used in &quot;getLargestDistanceFromOrigin&quot;.">m_largestDistanceFromOriginIsUpdated</a>;
<a name="l00130"></a>00130 
<a name="l00131"></a>00131                 <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00132"></a>00132 <span class="comment">                        /** Default constructor</span>
<a name="l00133"></a>00133 <span class="comment">                          */</span>
<a name="l00134"></a>00134                         TCustomSequenceLandmarks();
<a name="l00135"></a>00135 
<a name="l00136"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a175f71b2b34057c859c5dcb8afcbfca3">00136</a>                         <span class="keyword">typedef</span> <a class="code" href="classstd_1_1vector.html">TSequenceLandmarks</a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a175f71b2b34057c859c5dcb8afcbfca3">::iterator</a>    <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a175f71b2b34057c859c5dcb8afcbfca3">iterator</a>;
<a name="l00137"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a76c32b34a1ab62e26f57611c0c1287cc">00137</a>                         <span class="keyword">inline</span> iterator                         <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a76c32b34a1ab62e26f57611c0c1287cc">begin</a>()                 { <span class="keywordflow">return</span> m_landmarks.begin(); };
<a name="l00138"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a087efa653a2511ea24cd9c934e8aa4fb">00138</a>                         <span class="keyword">inline</span> iterator                         <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a087efa653a2511ea24cd9c934e8aa4fb">end</a>()                   { <span class="keywordflow">return</span> m_landmarks.end(); };
<a name="l00139"></a>00139                         <span class="keywordtype">void</span> clear();
<a name="l00140"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a2add6be5cc6a1fe25ff19946b142633e">00140</a>                         <span class="keyword">inline</span> <span class="keywordtype">size_t</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a2add6be5cc6a1fe25ff19946b142633e">size</a>()<span class="keyword">  const   </span>{ <span class="keywordflow">return</span> m_landmarks.size(); };
<a name="l00141"></a>00141 
<a name="l00142"></a>00142                         <span class="keyword">typedef</span> <a class="code" href="classstd_1_1vector.html">TSequenceLandmarks</a><a class="code" href="eigen__plugins_8h.html#a8dbda719917732693c56cee228465ed9">::const_iterator</a>      <a class="code" href="eigen__plugins_8h.html#a8dbda719917732693c56cee228465ed9">const_iterator</a>;
<a name="l00143"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a39e505c00ebd6521f39d408a5dc7261c">00143</a>                         <span class="keyword">inline</span> const_iterator                   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#a39e505c00ebd6521f39d408a5dc7261c">begin</a>()<span class="keyword"> const   </span>{ <span class="keywordflow">return</span> m_landmarks.begin(); };
<a name="l00144"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#af0c92d824e6dbf28a976860dacf3e79a">00144</a>                         <span class="keyword">inline</span> const_iterator                   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#af0c92d824e6dbf28a976860dacf3e79a">end</a>()<span class="keyword">   const   </span>{ <span class="keywordflow">return</span> m_landmarks.end(); };
<a name="l00145"></a>00145 <span class="comment"></span>
<a name="l00146"></a>00146 <span class="comment">                        /** The object is copied, thus the original copy passed as a parameter can be released.</span>
<a name="l00147"></a>00147 <span class="comment">                          */</span>
<a name="l00148"></a>00148                         <span class="keywordtype">void</span>                    <a class="code" href="eigen__plugins_8h.html#a9d57842d20d6813ae39cc88859d6f3c8" title="Insert an element at the end of the container (for 1D vectors/arrays)">push_back</a>( <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html" title="The class for storing &quot;landmarks&quot; (visual or laser-scan-extracted features,...)">CLandmark</a> &amp;lm);
<a name="l00149"></a>00149                         <a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html" title="The class for storing &quot;landmarks&quot; (visual or laser-scan-extracted features,...)">CLandmark</a>*          <span class="keyword">get</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx);
<a name="l00150"></a>00150                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html" title="The class for storing &quot;landmarks&quot; (visual or laser-scan-extracted features,...)">CLandmark</a>* <span class="keyword">get</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx) <span class="keyword">const</span>;
<a name="l00151"></a>00151                         <span class="keywordtype">void</span>                    isToBeModified(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx);
<a name="l00152"></a>00152                         <span class="keywordtype">void</span>                    hasBeenModified(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx);
<a name="l00153"></a>00153                         <span class="keywordtype">void</span>                    hasBeenModifiedAll();
<a name="l00154"></a>00154                         <span class="keywordtype">void</span>                    erase(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx);
<a name="l00155"></a>00155 
<a name="l00156"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#ad61118d1e1165779b072c40dc1bbd9ad">00156</a>                         <a class="code" href="classmrpt_1_1utils_1_1_c_dynamic_grid.html">CDynamicGrid&lt;vector_int&gt;</a>*  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_custom_sequence_landmarks.html#ad61118d1e1165779b072c40dc1bbd9ad">getGrid</a>() { <span class="keywordflow">return</span> &amp;m_grid; }
<a name="l00157"></a>00157 <span class="comment"></span>
<a name="l00158"></a>00158 <span class="comment">                        /** Returns the landmark with a given landmrk ID, or NULL if not found</span>
<a name="l00159"></a>00159 <span class="comment">                          */</span>
<a name="l00160"></a>00160                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html" title="The class for storing &quot;landmarks&quot; (visual or laser-scan-extracted features,...)">CLandmark</a>*        getByID( <a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html#a7d42fbd58a31278cb344b78ce8af3cf9" title="The type for the IDs of landmarks.">CLandmark::TLandmarkID</a> ID ) <span class="keyword">const</span>;
<a name="l00161"></a>00161 <span class="comment"></span>
<a name="l00162"></a>00162 <span class="comment">                        /** Returns the landmark with a given beacon ID, or NULL if not found</span>
<a name="l00163"></a>00163 <span class="comment">                          */</span>
<a name="l00164"></a>00164                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html" title="The class for storing &quot;landmarks&quot; (visual or laser-scan-extracted features,...)">CLandmark</a>*        getByBeaconID( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ID ) <span class="keyword">const</span>;
<a name="l00165"></a>00165 <span class="comment"></span>
<a name="l00166"></a>00166 <span class="comment">                        /** This method returns the largest distance from the origin to any of the points, such as a sphere centered at the origin with this radius cover ALL the points in the map (the results are buffered, such as, if the map is not modified, the second call will be much faster than the first one).</span>
<a name="l00167"></a>00167 <span class="comment">                          */</span>
<a name="l00168"></a>00168                         <span class="keywordtype">float</span>  getLargestDistanceFromOrigin() <span class="keyword">const</span>;
<a name="l00169"></a>00169 
<a name="l00170"></a>00170                 } landmarks;
<a name="l00171"></a>00171 <span class="comment"></span>
<a name="l00172"></a>00172 <span class="comment">                 /** Constructor</span>
<a name="l00173"></a>00173 <span class="comment">                   */</span>
<a name="l00174"></a>00174                  <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">CLandmarksMap</a>();
<a name="l00175"></a>00175 <span class="comment"></span>
<a name="l00176"></a>00176 <span class="comment">                 /** Virtual destructor.</span>
<a name="l00177"></a>00177 <span class="comment">                   */</span>
<a name="l00178"></a>00178                  <span class="keyword">virtual</span> ~<a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">CLandmarksMap</a>();
<a name="l00179"></a>00179 
<a name="l00180"></a>00180 
<a name="l00181"></a>00181                  <span class="comment">/**** FAMD ***/</span><span class="comment"></span>
<a name="l00182"></a>00182 <span class="comment">                 /** Map of the Euclidean Distance between the descriptors of two SIFT-based landmarks</span>
<a name="l00183"></a>00183 <span class="comment">                  */</span>
<a name="l00184"></a><a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#a2ce793f40b47fae3855a944727eecc6d">00184</a>                  <span class="keyword">static</span> std<a class="code" href="classstd_1_1map.html" title="STL class.">::map&lt;std::pair&lt;mrpt::slam::CLandmark::TLandmarkID, mrpt::slam::CLandmark::TLandmarkID&gt;</a>, <span class="keywordtype">double</span>&gt; <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#a2ce793f40b47fae3855a944727eecc6d" title="Map of the Euclidean Distance between the descriptors of two SIFT-based landmarks.">_mEDD</a>;
<a name="l00185"></a><a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#ae9ac8e48f336e11dae14770b9348c30a">00185</a>                  <span class="keyword">static</span> mrpt<a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html#a7d42fbd58a31278cb344b78ce8af3cf9" title="The type for the IDs of landmarks.">::slam::CLandmark::TLandmarkID</a> <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#ae9ac8e48f336e11dae14770b9348c30a">_mapMaxID</a>;
<a name="l00186"></a><a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#ab7e0c7d75843806aaa90a29d9d372a0f">00186</a>                  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html#ab7e0c7d75843806aaa90a29d9d372a0f">_maxIDUpdated</a>;
<a name="l00187"></a>00187 
<a name="l00188"></a>00188                  mrpt<a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html#a7d42fbd58a31278cb344b78ce8af3cf9" title="The type for the IDs of landmarks.">::slam::CLandmark::TLandmarkID</a>  getMapMaxID();
<a name="l00189"></a>00189                  <span class="comment">/**** END FAMD *****/</span>
<a name="l00190"></a>00190 <span class="comment"></span>
<a name="l00191"></a>00191 <span class="comment">                /** Computes the ratio in [0,1] of correspondences between &quot;this&quot; and the &quot;otherMap&quot; map, whose 6D pose relative to &quot;this&quot; is &quot;otherMapPose&quot;</span>
<a name="l00192"></a>00192 <span class="comment">                 *   In the case of a multi-metric map, this returns the average between the maps. This method always return 0 for grid maps.</span>
<a name="l00193"></a>00193 <span class="comment">                 * \param  otherMap                                       [IN] The other map to compute the matching with.</span>
<a name="l00194"></a>00194 <span class="comment">                 * \param  otherMapPose                           [IN] The 6D pose of the other map as seen from &quot;this&quot;.</span>
<a name="l00195"></a>00195 <span class="comment">                 * \param  minDistForCorr                         [IN] The minimum distance between 2 non-probabilistic map elements for counting them as a correspondence.</span>
<a name="l00196"></a>00196 <span class="comment">                 * \param  minMahaDistForCorr             [IN] The minimum Mahalanobis distance between 2 probabilistic map elements for counting them as a correspondence.</span>
<a name="l00197"></a>00197 <span class="comment">                 *</span>
<a name="l00198"></a>00198 <span class="comment">                 * \return The matching ratio [0,1]</span>
<a name="l00199"></a>00199 <span class="comment">                 * \sa computeMatchingWith2D</span>
<a name="l00200"></a>00200 <span class="comment">                 */</span>
<a name="l00201"></a>00201                 <span class="keywordtype">float</span>  compute3DMatchingRatio(
<a name="l00202"></a>00202                                 <span class="keyword">const</span> CMetricMap                                                *otherMap,
<a name="l00203"></a>00203                                 <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a>                                                   &amp;otherMapPose,
<a name="l00204"></a>00204                                 <span class="keywordtype">float</span>                                                                   minDistForCorr = 0.10f,
<a name="l00205"></a>00205                                 <span class="keywordtype">float</span>                                                                   minMahaDistForCorr = 2.0f
<a name="l00206"></a>00206                                 ) <span class="keyword">const</span>;
<a name="l00207"></a>00207 <span class="comment"></span>
<a name="l00208"></a>00208 <span class="comment">                 /** With this struct options are provided to the observation insertion process.</span>
<a name="l00209"></a>00209 <span class="comment">                  */</span>
<a name="l00210"></a>00210                  <span class="keyword">struct </span><a class="code" href="vision_2include_2mrpt_2vision_2link__pragmas_8h.html#aa4a17fb846aac61f4e57b17b6f784559">VISION_IMPEXP</a> <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html" title="With this struct options are provided to the observation insertion process.">TInsertionOptions</a> : <span class="keyword">public</span> utils::<a class="code" href="classmrpt_1_1utils_1_1_c_loadable_options.html" title="This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...">CLoadableOptions</a>
<a name="l00211"></a>00211                  {
<a name="l00212"></a>00212                  <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00213"></a>00213 <span class="comment">                        /** Initilization of default parameters</span>
<a name="l00214"></a>00214 <span class="comment">                         */</span>
<a name="l00215"></a>00215                         <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html" title="With this struct options are provided to the observation insertion process.">TInsertionOptions</a>(      );
<a name="l00216"></a>00216 <span class="comment"></span>
<a name="l00217"></a>00217 <span class="comment">                        /** See utils::CLoadableOptions</span>
<a name="l00218"></a>00218 <span class="comment">                          */</span>
<a name="l00219"></a>00219                         <span class="keywordtype">void</span>  loadFromConfigFile(
<a name="l00220"></a>00220                                 <span class="keyword">const</span> <a class="code" href="classmrpt_1_1utils_1_1_c_config_file_base.html" title="This class allows loading and storing values and vectors of different types from a configuration text...">mrpt::utils::CConfigFileBase</a>      &amp;source,
<a name="l00221"></a>00221                                 <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;section);
<a name="l00222"></a>00222 <span class="comment"></span>
<a name="l00223"></a>00223 <span class="comment">                        /** See utils::CLoadableOptions</span>
<a name="l00224"></a>00224 <span class="comment">                          */</span>
<a name="l00225"></a>00225                         <span class="keywordtype">void</span>  dumpToTextStream(<a class="code" 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>  &amp;out) <span class="keyword">const</span>;
<a name="l00226"></a>00226 <span class="comment"></span>
<a name="l00227"></a>00227 <span class="comment">                        /** If set to true (default), the insertion of a CObservationImage in the map will insert SIFT 3D features.</span>
<a name="l00228"></a>00228 <span class="comment">                          */</span>
<a name="l00229"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a11e4d45d9b26b49c9b97ad044634ff2b">00229</a>                         <span class="keywordtype">bool</span>    <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a11e4d45d9b26b49c9b97ad044634ff2b" title="If set to true (default), the insertion of a CObservationImage in the map will insert SIFT 3D feature...">insert_SIFTs_from_monocular_images</a>;
<a name="l00230"></a>00230 <span class="comment"></span>
<a name="l00231"></a>00231 <span class="comment">                        /** If set to true (default), the insertion of a CObservationStereoImages in the map will insert SIFT 3D features.</span>
<a name="l00232"></a>00232 <span class="comment">                          */</span>
<a name="l00233"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a7a89051e949d6e531cc296d549f37ed9">00233</a>                         <span class="keywordtype">bool</span>    <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a7a89051e949d6e531cc296d549f37ed9" title="If set to true (default), the insertion of a CObservationStereoImages in the map will insert SIFT 3D ...">insert_SIFTs_from_stereo_images</a>;
<a name="l00234"></a>00234 <span class="comment"></span>
<a name="l00235"></a>00235 <span class="comment">                        /** If set to true (default), inserting a CObservation2DRangeScan in the map will generate landmarks for each range.</span>
<a name="l00236"></a>00236 <span class="comment">                          */</span>
<a name="l00237"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a0c9aad4bafb8dd6ca3bd5a2f5bb58272">00237</a>                         <span class="keywordtype">bool</span>    <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a0c9aad4bafb8dd6ca3bd5a2f5bb58272" title="If set to true (default), inserting a CObservation2DRangeScan in the map will generate landmarks for ...">insert_Landmarks_from_range_scans</a>;
<a name="l00238"></a>00238 <span class="comment"></span>
<a name="l00239"></a>00239 <span class="comment">                        /** [For SIFT landmarks only] The ratio between the best and second best descriptor distances to set as correspondence (Default=0.4)</span>
<a name="l00240"></a>00240 <span class="comment">                          */</span>
<a name="l00241"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a53290e64580a70d8525e714dd47ab024">00241</a>                         <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a53290e64580a70d8525e714dd47ab024" title="[For SIFT landmarks only] The ratio between the best and second best descriptor distances to set as c...">SiftCorrRatioThreshold</a>;
<a name="l00242"></a>00242 <span class="comment"></span>
<a name="l00243"></a>00243 <span class="comment">                        /** [For SIFT landmarks only] The minimum likelihood value of a match to set as correspondence (Default=0.5)</span>
<a name="l00244"></a>00244 <span class="comment">                          */</span>
<a name="l00245"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a3a16802c241daf41d86e6905aed5f66d">00245</a>                         <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a3a16802c241daf41d86e6905aed5f66d" title="[For SIFT landmarks only] The minimum likelihood value of a match to set as correspondence (Default=0...">SiftLikelihoodThreshold</a>;
<a name="l00246"></a>00246 
<a name="l00247"></a>00247                         <span class="comment">/****************************************** FAMD ******************************************/</span><span class="comment"></span>
<a name="l00248"></a>00248 <span class="comment">                        /** [For SIFT landmarks only] The minimum Euclidean Descriptor Distance value of a match to set as correspondence (Default=200)</span>
<a name="l00249"></a>00249 <span class="comment">                          */</span>
<a name="l00250"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a11544465a97c7b9d85130e8b5e8272b2">00250</a>                         <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a11544465a97c7b9d85130e8b5e8272b2" title="[For SIFT landmarks only] The minimum Euclidean Descriptor Distance value of a match to set as corres...">SiftEDDThreshold</a>;
<a name="l00251"></a>00251 <span class="comment"></span>
<a name="l00252"></a>00252 <span class="comment">                        /** [For SIFT landmarks only] Method to compute 3D matching (Default = 0 (Our method))</span>
<a name="l00253"></a>00253 <span class="comment">                          * 0: Our method -&gt; Euclidean Distance between Descriptors and 3D position</span>
<a name="l00254"></a>00254 <span class="comment">                          * 1: Sim, Elinas, Griffin, Little -&gt; Euclidean Distance between Descriptors</span>
<a name="l00255"></a>00255 <span class="comment">                          */</span>
<a name="l00256"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a38d0c419ad64d40acc5fdaafa43b6712">00256</a>                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a38d0c419ad64d40acc5fdaafa43b6712" title="[For SIFT landmarks only] Method to compute 3D matching (Default = 0 (Our method)) 0: Our method -&gt; E...">SIFTMatching3DMethod</a>;
<a name="l00257"></a>00257 <span class="comment"></span>
<a name="l00258"></a>00258 <span class="comment">                        /** [For SIFT landmarks only] Method to compute the likelihood (Default = 0 (Our method))</span>
<a name="l00259"></a>00259 <span class="comment">                          * 0: Our method -&gt; Euclidean Distance between Descriptors and 3D position</span>
<a name="l00260"></a>00260 <span class="comment">                          * 1: Sim, Elinas, Griffin, Little -&gt; 3D position</span>
<a name="l00261"></a>00261 <span class="comment">                          */</span>
<a name="l00262"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a50173297585861f83d18818a6cb5724b">00262</a>                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a50173297585861f83d18818a6cb5724b" title="[For SIFT landmarks only] Method to compute the likelihood (Default = 0 (Our method)) 0: Our method -...">SIFTLikelihoodMethod</a>;
<a name="l00263"></a>00263 
<a name="l00264"></a>00264                         <span class="comment">/****************************************** END FAMD ******************************************/</span>
<a name="l00265"></a>00265 <span class="comment"></span>
<a name="l00266"></a>00266 <span class="comment">                        /** [For SIFT landmarks only] The distance (in meters) of the mean value of landmarks, for the initial position PDF (Default = 3m)</span>
<a name="l00267"></a>00267 <span class="comment">                          */</span>
<a name="l00268"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a4bc995bd88c092efd584cc89d2dcd74f">00268</a>                         <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a4bc995bd88c092efd584cc89d2dcd74f" title="[For SIFT landmarks only] The distance (in meters) of the mean value of landmarks, for the initial position PDF (Default = 3m)">SIFTsLoadDistanceOfTheMean</a>;
<a name="l00269"></a>00269 <span class="comment"></span>
<a name="l00270"></a>00270 <span class="comment">                        /** [For SIFT landmarks only] The width (in meters, standard deviation) of the ellipsoid in the axis perpendicular to the main directiom (Default = 0.05f)</span>
<a name="l00271"></a>00271 <span class="comment">                          */</span>
<a name="l00272"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a2b250998258fbe77950000cd557c8f6c">00272</a>                         <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a2b250998258fbe77950000cd557c8f6c" title="[For SIFT landmarks only] The width (in meters, standard deviation) of the ellipsoid in the axis perp...">SIFTsLoadEllipsoidWidth</a>;
<a name="l00273"></a>00273 <span class="comment"></span>
<a name="l00274"></a>00274 <span class="comment">                        /** [For SIFT landmarks only] The standard deviation (in pixels) for the SIFTs detector (This is used for the Jacobbian to project stereo images to 3D)</span>
<a name="l00275"></a>00275 <span class="comment">                          */</span>
<a name="l00276"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a2b366a5511b0035fb068e923fc957db3">00276</a>                         <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a2b366a5511b0035fb068e923fc957db3" title="[For SIFT landmarks only] The standard deviation (in pixels) for the SIFTs detector (This is used for...">SIFTs_stdXY</a>, SIFTs_stdDisparity;
<a name="l00277"></a>00277 <span class="comment"></span>
<a name="l00278"></a>00278 <span class="comment">                        /** Number of points to extract in the image</span>
<a name="l00279"></a>00279 <span class="comment">                          */</span>
<a name="l00280"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a5b81ad06c8a4f81e5335e879aa3cf38f">00280</a>                         <span class="keywordtype">int</span>             <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a5b81ad06c8a4f81e5335e879aa3cf38f" title="Number of points to extract in the image.">SIFTs_numberOfKLTKeypoints</a>;
<a name="l00281"></a>00281 <span class="comment"></span>
<a name="l00282"></a>00282 <span class="comment">                        /** Maximum depth of 3D landmarks when loading a landmarks map from a stereo image observation.</span>
<a name="l00283"></a>00283 <span class="comment">                          */</span>
<a name="l00284"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a2dfc4ff188768eb2b5f366e2735ac372">00284</a>                         <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a2dfc4ff188768eb2b5f366e2735ac372" title="Maximum depth of 3D landmarks when loading a landmarks map from a stereo image observation.">SIFTs_stereo_maxDepth</a>;
<a name="l00285"></a>00285 <span class="comment"></span>
<a name="l00286"></a>00286 <span class="comment">                        /** Maximum distance (in pixels) from a point to a certain epipolar line to be considered a potential match.</span>
<a name="l00287"></a>00287 <span class="comment">                          */</span>
<a name="l00288"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a83b7e8833aaf43691d86aac9e0f8e0d9">00288</a>                         <span class="keywordtype">float</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a83b7e8833aaf43691d86aac9e0f8e0d9" title="Maximum distance (in pixels) from a point to a certain epipolar line to be considered a potential mat...">SIFTs_epipolar_TH</a>;
<a name="l00289"></a>00289 <span class="comment"></span>
<a name="l00290"></a>00290 <span class="comment">                        /** Indicates if the images (as well as the SIFT detected features) should be shown in a window.</span>
<a name="l00291"></a>00291 <span class="comment">                          */</span>
<a name="l00292"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a417e55531201b11270a9c78a146ac492">00292</a>                         <span class="keywordtype">bool</span>    <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a417e55531201b11270a9c78a146ac492" title="Indicates if the images (as well as the SIFT detected features) should be shown in a window...">PLOT_IMAGES</a>;
<a name="l00293"></a>00293 <span class="comment"></span>
<a name="l00294"></a>00294 <span class="comment">                        /** Parameters of the SIFT feature detector/descriptors while inserting images in the landmark map.</span>
<a name="l00295"></a>00295 <span class="comment">                          *  \note There exists another \a SIFT_feat_options field in the \a likelihoodOptions member.</span>
<a name="l00296"></a>00296 <span class="comment">                          *  \note All parameters of this field can be loaded from a config file. See mrpt::vision::CFeatureExtraction::TOptions for the names of the expected fields.</span>
<a name="l00297"></a>00297 <span class="comment">                          */</span>
<a name="l00298"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a9f9974fcd4fc296a0025e13069c8c6f3">00298</a>                         mrpt<a class="code" href="structmrpt_1_1vision_1_1_c_feature_extraction_1_1_t_options.html" title="The set of parameters for all the detectors &amp; descriptor algorithms.">::vision::CFeatureExtraction::TOptions</a>  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_options.html#a9f9974fcd4fc296a0025e13069c8c6f3" title="Parameters of the SIFT feature detector/descriptors while inserting images in the landmark map...">SIFT_feat_options</a>;
<a name="l00299"></a>00299 
<a name="l00300"></a>00300                  } insertionOptions;
<a name="l00301"></a>00301 <span class="comment"></span>
<a name="l00302"></a>00302 <span class="comment">                 /** With this struct options are provided to the likelihood computations.</span>
<a name="l00303"></a>00303 <span class="comment">                  */</span>
<a name="l00304"></a>00304                  <span class="keyword">struct </span><a class="code" href="vision_2include_2mrpt_2vision_2link__pragmas_8h.html#aa4a17fb846aac61f4e57b17b6f784559">VISION_IMPEXP</a>  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html" title="With this struct options are provided to the likelihood computations.">TLikelihoodOptions</a> : <span class="keyword">public</span> utils::<a class="code" href="classmrpt_1_1utils_1_1_c_loadable_options.html" title="This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...">CLoadableOptions</a>
<a name="l00305"></a>00305                  {
<a name="l00306"></a>00306                  <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00307"></a>00307 <span class="comment">                        /** Initilization of default parameters</span>
<a name="l00308"></a>00308 <span class="comment">                         */</span>
<a name="l00309"></a>00309                          <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html" title="With this struct options are provided to the likelihood computations.">TLikelihoodOptions</a>();
<a name="l00310"></a>00310 <span class="comment"></span>
<a name="l00311"></a>00311 <span class="comment">                        /** See utils::CLoadableOptions</span>
<a name="l00312"></a>00312 <span class="comment">                          */</span>
<a name="l00313"></a>00313                         <span class="keywordtype">void</span>  loadFromConfigFile(
<a name="l00314"></a>00314                                 <span class="keyword">const</span> <a class="code" href="classmrpt_1_1utils_1_1_c_config_file_base.html" title="This class allows loading and storing values and vectors of different types from a configuration text...">mrpt::utils::CConfigFileBase</a>      &amp;source,
<a name="l00315"></a>00315                                 <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;section);
<a name="l00316"></a>00316 <span class="comment"></span>
<a name="l00317"></a>00317 <span class="comment">                        /** See utils::CLoadableOptions</span>
<a name="l00318"></a>00318 <span class="comment">                          */</span>
<a name="l00319"></a>00319                         <span class="keywordtype">void</span>  dumpToTextStream(<a class="code" 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>  &amp;out) <span class="keyword">const</span>;
<a name="l00320"></a>00320 <span class="comment"></span>
<a name="l00321"></a>00321 <span class="comment">                         /** The number of rays from a 2D range scan will be decimated by this factor (default = 1, no decimation)</span>
<a name="l00322"></a>00322 <span class="comment">                           */</span>
<a name="l00323"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a374d65cdb088769e433c5c36f9cbfb68">00323</a>                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a374d65cdb088769e433c5c36f9cbfb68" title="The number of rays from a 2D range scan will be decimated by this factor (default = 1...">rangeScan2D_decimation</a>;
<a name="l00324"></a>00324 
<a name="l00325"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a4d8e5152a4df3b3512061e3879158147">00325</a>                          <span class="keywordtype">double</span>                 <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a4d8e5152a4df3b3512061e3879158147">SIFTs_sigma_euclidean_dist</a>;
<a name="l00326"></a>00326 
<a name="l00327"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#ae953229c67316ceab22efa8a42011c10">00327</a>                          <span class="keywordtype">double</span>                 <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#ae953229c67316ceab22efa8a42011c10">SIFTs_sigma_descriptor_dist</a>;
<a name="l00328"></a>00328 
<a name="l00329"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a6111553f3875f9956cbdc56326d1f42b">00329</a>                          <span class="keywordtype">float</span>                  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a6111553f3875f9956cbdc56326d1f42b">SIFTs_mahaDist_std</a>;
<a name="l00330"></a>00330 
<a name="l00331"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a61900509cc64fdfa975250d79cf2a30d">00331</a>                          <span class="keywordtype">float</span>                  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a61900509cc64fdfa975250d79cf2a30d">SIFTnullCorrespondenceDistance</a>;
<a name="l00332"></a>00332 <span class="comment"></span>
<a name="l00333"></a>00333 <span class="comment">                         /** Considers 1 out of &quot;SIFTs_decimation&quot; visual landmarks in the observation during the likelihood computation.</span>
<a name="l00334"></a>00334 <span class="comment">                           */</span>
<a name="l00335"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a5cd43b32fce96acbe04084188a2601d0">00335</a>                          <span class="keywordtype">int</span>                    <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a5cd43b32fce96acbe04084188a2601d0" title="Considers 1 out of &quot;SIFTs_decimation&quot; visual landmarks in the observation during the likelihood compu...">SIFTs_decimation</a>;
<a name="l00336"></a>00336 <span class="comment"></span>
<a name="l00337"></a>00337 <span class="comment">                         /** The standard deviation used for Beacon ranges likelihood (default=0.08).</span>
<a name="l00338"></a>00338 <span class="comment">                           */</span>
<a name="l00339"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a270b8cb556ee8bf3a0b6538944500fc0">00339</a>                          <span class="keywordtype">float</span>                  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#a270b8cb556ee8bf3a0b6538944500fc0" title="The standard deviation used for Beacon ranges likelihood (default=0.08).">beaconRangesStd</a>;
<a name="l00340"></a>00340 <span class="comment"></span>
<a name="l00341"></a>00341 <span class="comment">                         /** The ratio between gaussian and uniform distribution (default=1).</span>
<a name="l00342"></a>00342 <span class="comment">                           */</span>
<a name="l00343"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#af42a142ea40c0f167905bc9428ac91ff">00343</a>                          <span class="keywordtype">float</span>                  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#af42a142ea40c0f167905bc9428ac91ff" title="The ratio between gaussian and uniform distribution (default=1).">alphaRatio</a>;
<a name="l00344"></a>00344 <span class="comment"></span>
<a name="l00345"></a>00345 <span class="comment">                         /** Maximun reliable beacon range value (default=20)</span>
<a name="l00346"></a>00346 <span class="comment">                           */</span>
<a name="l00347"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#ad963b3f5793b36574acb42ffeb1e1768">00347</a>                          <span class="keywordtype">float</span>                  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#ad963b3f5793b36574acb42ffeb1e1768" title="Maximun reliable beacon range value (default=20)">beaconMaxRange</a>;
<a name="l00348"></a>00348 <span class="comment"></span>
<a name="l00349"></a>00349 <span class="comment">                        /** This struct store de GPS longitude, latitude (in degrees ) and altitude (in meters) for the first GPS observation</span>
<a name="l00350"></a>00350 <span class="comment">                          * compose with de sensor position on the robot.</span>
<a name="l00351"></a>00351 <span class="comment">                         */</span>
<a name="l00352"></a>00352                         <span class="keyword">struct </span><a class="code" href="vision_2include_2mrpt_2vision_2link__pragmas_8h.html#aa4a17fb846aac61f4e57b17b6f784559">VISION_IMPEXP</a> <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html" title="This struct store de GPS longitude, latitude (in degrees ) and altitude (in meters) for the first GPS...">TGPSOrigin</a>
<a name="l00353"></a>00353                         {
<a name="l00354"></a>00354                         <span class="keyword">public</span>:
<a name="l00355"></a>00355                                 <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html" title="This struct store de GPS longitude, latitude (in degrees ) and altitude (in meters) for the first GPS...">TGPSOrigin</a>();
<a name="l00356"></a>00356 <span class="comment"></span>
<a name="l00357"></a>00357 <span class="comment">                                /** Longitud del Origen del GPS (en grados)</span>
<a name="l00358"></a>00358 <span class="comment">                                  */</span>
<a name="l00359"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#a1ab6597e3ba8bd90251384e5684a4d8e">00359</a>                                 <span class="keywordtype">double</span>  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#a1ab6597e3ba8bd90251384e5684a4d8e" title="Longitud del Origen del GPS (en grados)">longitude</a>;
<a name="l00360"></a>00360 <span class="comment"></span>
<a name="l00361"></a>00361 <span class="comment">                                /** Latitud del Origen del GPS (en grados)</span>
<a name="l00362"></a>00362 <span class="comment">                                  */</span>
<a name="l00363"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#af3a3823d6c59d4a67411badd5cad6483">00363</a>                                 <span class="keywordtype">double</span>  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#af3a3823d6c59d4a67411badd5cad6483" title="Latitud del Origen del GPS (en grados)">latitude</a>;
<a name="l00364"></a>00364 <span class="comment"></span>
<a name="l00365"></a>00365 <span class="comment">                                /** Altitud del Origen del GPS (en metros)</span>
<a name="l00366"></a>00366 <span class="comment">                                  */</span>
<a name="l00367"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#ad6eb67431b01d8983d6ea8e9807ff960">00367</a>                                 <span class="keywordtype">double</span>  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#ad6eb67431b01d8983d6ea8e9807ff960" title="Altitud del Origen del GPS (en metros)">altitude</a>;
<a name="l00368"></a>00368 <span class="comment"></span>
<a name="l00369"></a>00369 <span class="comment">                                /** Estas tres opciones sirven para encajar mapas de GPS con posiciones absolutas con</span>
<a name="l00370"></a>00370 <span class="comment">                                  *  mapas de otros sensores (como laser :D) se obtienen facilmente con el programa matlab  map_matching</span>
<a name="l00371"></a>00371 <span class="comment">                                  *   ang : Rotación del mapa del GPS (para encajarlo en grados)</span>
<a name="l00372"></a>00372 <span class="comment">                                  *   x_shift: Desplazamiento en x relativo al robot (en metros)</span>
<a name="l00373"></a>00373 <span class="comment">                                  *   y_shift: Desplazamiento en y relativo al robot (en metros)</span>
<a name="l00374"></a>00374 <span class="comment">                              */</span>
<a name="l00375"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#a1f8dc24a3f12b72a8ffc83d471cf9c75">00375</a>                                 <span class="keywordtype">double</span>  ang,
<a name="l00376"></a>00376                                                 x_shift,
<a name="l00377"></a>00377                                                 <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#a1f8dc24a3f12b72a8ffc83d471cf9c75">y_shift</a>;
<a name="l00378"></a>00378 <span class="comment"></span>
<a name="l00379"></a>00379 <span class="comment">                                /** Número mínimo de satelites para tener en cuenta los datos</span>
<a name="l00380"></a>00380 <span class="comment">                                  */</span>
<a name="l00381"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#a074d8b98ce620a984b86164e49c3dea4">00381</a>                                 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options_1_1_t_g_p_s_origin.html#a074d8b98ce620a984b86164e49c3dea4" title="Número mínimo de satelites para tener en cuenta los datos.">min_sat</a>;
<a name="l00382"></a>00382 
<a name="l00383"></a>00383                         } GPSOrigin;
<a name="l00384"></a>00384 <span class="comment"></span>
<a name="l00385"></a>00385 <span class="comment">                        /** A constant &quot;sigma&quot; for GPS localization data (in meters)</span>
<a name="l00386"></a>00386 <span class="comment">                          */</span>
<a name="l00387"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#ab8119d8682416d219d5ee6200b000c1a">00387</a>                         <span class="keywordtype">float</span>                   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#ab8119d8682416d219d5ee6200b000c1a" title="A constant &quot;sigma&quot; for GPS localization data (in meters)">GPS_sigma</a>;
<a name="l00388"></a>00388 <span class="comment"></span>
<a name="l00389"></a>00389 <span class="comment">                        /** Parameters of the SIFT feature detector/descriptors while inserting images in the landmark map.</span>
<a name="l00390"></a>00390 <span class="comment">                          *  \note There exists another \a SIFT_feat_options field in the \a insertionOptions member.</span>
<a name="l00391"></a>00391 <span class="comment">                          *  \note All parameters of this field can be loaded from a config file. See mrpt::vision::CFeatureExtraction::TOptions for the names of the expected fields.</span>
<a name="l00392"></a>00392 <span class="comment">                          */</span>
<a name="l00393"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#aa37664b1e805a6723bfb649ffcdd7675">00393</a>                         mrpt<a class="code" href="structmrpt_1_1vision_1_1_c_feature_extraction_1_1_t_options.html" title="The set of parameters for all the detectors &amp; descriptor algorithms.">::vision::CFeatureExtraction::TOptions</a>  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_likelihood_options.html#aa37664b1e805a6723bfb649ffcdd7675" title="Parameters of the SIFT feature detector/descriptors while inserting images in the landmark map...">SIFT_feat_options</a>;
<a name="l00394"></a>00394 
<a name="l00395"></a>00395                  } likelihoodOptions;
<a name="l00396"></a>00396 <span class="comment"></span>
<a name="l00397"></a>00397 <span class="comment">                 /** This struct stores extra results from invoking insertObservation</span>
<a name="l00398"></a>00398 <span class="comment">                  */</span>
<a name="l00399"></a>00399                  <span class="keyword">struct </span><a class="code" href="vision_2include_2mrpt_2vision_2link__pragmas_8h.html#aa4a17fb846aac61f4e57b17b6f784559">VISION_IMPEXP</a> <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_results.html" title="This struct stores extra results from invoking insertObservation.">TInsertionResults</a>
<a name="l00400"></a>00400                  {<span class="comment"></span>
<a name="l00401"></a>00401 <span class="comment">                         /** The number of SIFT detected in left and right images respectively</span>
<a name="l00402"></a>00402 <span class="comment">                           */</span>
<a name="l00403"></a>00403 
<a name="l00404"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_results.html#a5a1cfcd5efc8e28d0b9220bf7b787433">00404</a>                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>   nSiftL, <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_insertion_results.html#a5a1cfcd5efc8e28d0b9220bf7b787433">nSiftR</a>;
<a name="l00405"></a>00405 
<a name="l00406"></a>00406 
<a name="l00407"></a>00407                  } insertionResults;
<a name="l00408"></a>00408 <span class="comment"></span>
<a name="l00409"></a>00409 <span class="comment">                 /** With this struct options are provided to the fusion process.</span>
<a name="l00410"></a>00410 <span class="comment">                  */</span>
<a name="l00411"></a>00411                  <span class="keyword">struct </span><a class="code" href="vision_2include_2mrpt_2vision_2link__pragmas_8h.html#aa4a17fb846aac61f4e57b17b6f784559">VISION_IMPEXP</a> <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_fuse_options.html" title="With this struct options are provided to the fusion process.">TFuseOptions</a>
<a name="l00412"></a>00412                  {<span class="comment"></span>
<a name="l00413"></a>00413 <span class="comment">                         /** Initialization</span>
<a name="l00414"></a>00414 <span class="comment">                           */</span>
<a name="l00415"></a>00415                          <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_fuse_options.html" title="With this struct options are provided to the fusion process.">TFuseOptions</a>();
<a name="l00416"></a>00416 <span class="comment"></span>
<a name="l00417"></a>00417 <span class="comment">                         /** Required number of times of a landmark to be seen not to be removed, in &quot;ellapsedTime&quot; seconds.</span>
<a name="l00418"></a>00418 <span class="comment">                           */</span>
<a name="l00419"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_fuse_options.html#ad6708f83ceeb2dd02b66eaa3227e119c">00419</a>                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>   <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_fuse_options.html#ad6708f83ceeb2dd02b66eaa3227e119c" title="Required number of times of a landmark to be seen not to be removed, in &quot;ellapsedTime&quot; seconds...">minTimesSeen</a>;
<a name="l00420"></a>00420 <span class="comment"></span>
<a name="l00421"></a>00421 <span class="comment">                         /** See &quot;minTimesSeen&quot;</span>
<a name="l00422"></a>00422 <span class="comment">                           */</span>
<a name="l00423"></a><a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_fuse_options.html#a53198e1a4eb0ac7585c014e610cff509">00423</a>                          <span class="keywordtype">float</span>                  <a class="code" href="structmrpt_1_1slam_1_1_c_landmarks_map_1_1_t_fuse_options.html#a53198e1a4eb0ac7585c014e610cff509" title="See &quot;minTimesSeen&quot;.">ellapsedTime</a>;
<a name="l00424"></a>00424 
<a name="l00425"></a>00425                  } fuseOptions;
<a name="l00426"></a>00426 
<a name="l00427"></a>00427 <span class="comment"></span>
<a name="l00428"></a>00428 <span class="comment">                /** Save to a text file.</span>
<a name="l00429"></a>00429 <span class="comment">                 *  In line &quot;i&quot; there are the (x,y,z) mean values of the i&#39;th landmark + type of landmark + # times seen + timestamp + RGB/descriptor + ID</span>
<a name="l00430"></a>00430 <span class="comment">                 *</span>
<a name="l00431"></a>00431 <span class="comment">                 *   Returns false if any error occured, true elsewere.</span>
<a name="l00432"></a>00432 <span class="comment">                 */</span>
<a name="l00433"></a>00433                 <span class="keywordtype">bool</span>  <a class="code" href="eigen__plugins_8h.html#abea6659e38ab7a50b625ea1a4af3ec72" title="Save matrix to a text file, compatible with MATLAB text format (see also the methods of matrix classe...">saveToTextFile</a>(<a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> file);
<a name="l00434"></a>00434 <span class="comment"></span>
<a name="l00435"></a>00435 <span class="comment">                /** Save to a MATLAB script which displays 2D error ellipses for the map (top-view, projection on the XY plane).</span>
<a name="l00436"></a>00436 <span class="comment">                 *      \param file             The name of the file to save the script to.</span>
<a name="l00437"></a>00437 <span class="comment">                 *  \param style        The MATLAB-like string for the style of the lines (see &#39;help plot&#39; in MATLAB for posibilities)</span>
<a name="l00438"></a>00438 <span class="comment">                 *  \param stdCount The ellipsoids will be drawn from the center to &quot;stdCount&quot; times the &quot;standard deviations&quot;. (default is 2std = 95% confidence intervals)</span>
<a name="l00439"></a>00439 <span class="comment">                 *</span>
<a name="l00440"></a>00440 <span class="comment">                 *  \return Returns false if any error occured, true elsewere.</span>
<a name="l00441"></a>00441 <span class="comment">                 */</span>
<a name="l00442"></a>00442                 <span class="keywordtype">bool</span>  saveToMATLABScript2D(
<a name="l00443"></a>00443                         <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>             file,
<a name="l00444"></a>00444                         <span class="keyword">const</span> <span class="keywordtype">char</span>                      *style=<span class="stringliteral">&quot;b&quot;</span>,
<a name="l00445"></a>00445                         <span class="keywordtype">float</span>                   stdCount = 2.0f );
<a name="l00446"></a>00446 <span class="comment"></span>
<a name="l00447"></a>00447 <span class="comment">                /** Save to a MATLAB script which displays 3D error ellipses for the map.</span>
<a name="l00448"></a>00448 <span class="comment">                 *      \param file             The name of the file to save the script to.</span>
<a name="l00449"></a>00449 <span class="comment">                 *  \param style        The MATLAB-like string for the style of the lines (see &#39;help plot&#39; in MATLAB for posibilities)</span>
<a name="l00450"></a>00450 <span class="comment">                 *  \param stdCount The ellipsoids will be drawn from the center to a given confidence interval in [0,1], e.g. 2 sigmas=0.95 (default is 2std = 0.95 confidence intervals)</span>
<a name="l00451"></a>00451 <span class="comment">                 *</span>
<a name="l00452"></a>00452 <span class="comment">                 *  \return Returns false if any error occured, true elsewere.</span>
<a name="l00453"></a>00453 <span class="comment">                 */</span>
<a name="l00454"></a>00454                 <span class="keywordtype">bool</span>  saveToMATLABScript3D(
<a name="l00455"></a>00455                         <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>             file,
<a name="l00456"></a>00456                         <span class="keyword">const</span> <span class="keywordtype">char</span>                      *style=<span class="stringliteral">&quot;b&quot;</span>,
<a name="l00457"></a>00457                         <span class="keywordtype">float</span>                   confInterval = 0.95f ) <span class="keyword">const</span> ;
<a name="l00458"></a>00458 <span class="comment"></span>
<a name="l00459"></a>00459 <span class="comment">                /** Returns the stored landmarks count.</span>
<a name="l00460"></a>00460 <span class="comment">                 */</span>
<a name="l00461"></a>00461                 <span class="keywordtype">size_t</span>  <a class="code" href="namespacemrpt_1_1math.html#a632ae0aecf78103f87f18f9ac33f7170">size</a>() <span class="keyword">const</span>;
<a name="l00462"></a>00462 <span class="comment"></span>
<a name="l00463"></a>00463 <span class="comment">                /** Computes the (logarithmic) likelihood function for a sensed observation &quot;o&quot; according to &quot;this&quot; map.</span>
<a name="l00464"></a>00464 <span class="comment">                  *   This is the implementation of the algorithm reported in the paper:</span>
<a name="l00465"></a>00465 <span class="comment">                                &lt;em&gt;J.L. Blanco, J. Gonzalez, and J.A. Fernandez-Madrigal, &quot;A Consensus-based Approach for Estimating the Observation Likelihood of Accurate Range Sensors&quot;, in IEEE International Conference on Robotics and Automation (ICRA), Rome (Italy), Apr 10-14, 2007&lt;/em&gt;</span>
<a name="l00466"></a>00466 <span class="comment">                  */</span>
<a name="l00467"></a>00467                 <span class="keywordtype">double</span>  computeLikelihood_RSLC_2007( <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">CLandmarksMap</a>  *s, <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose2_d.html" title="A class used to store a 2D pose.">CPose2D</a> &amp;sensorPose);
<a name="l00468"></a>00468 <span class="comment"></span>
<a name="l00469"></a>00469 <span class="comment">                /** Loads into this landmarks map the SIFT features extracted from an image observation (Previous contents of map will be erased)</span>
<a name="l00470"></a>00470 <span class="comment">                  *  The robot is assumed to be at the origin of the map.</span>
<a name="l00471"></a>00471 <span class="comment">                  *  Some options may be applicable from &quot;insertionOptions&quot; (insertionOptions.SIFTsLoadDistanceOfTheMean)</span>
<a name="l00472"></a>00472 <span class="comment">                  * </span>
<a name="l00473"></a>00473 <span class="comment">                  *  \param feat_options Optionally, you can pass here parameters for changing the default SIFT detector settings.</span>
<a name="l00474"></a>00474 <span class="comment">                  */</span>
<a name="l00475"></a>00475                 <span class="keywordtype">void</span>  loadSiftFeaturesFromImageObservation( 
<a name="l00476"></a>00476                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_observation_image.html" title="Declares a class derived from &quot;CObservation&quot; that encapsules an image from a camera, whose relative pose to robot is also stored.">CObservationImage</a> &amp;obs,
<a name="l00477"></a>00477                         <span class="keyword">const</span> <a class="code" href="structmrpt_1_1vision_1_1_c_feature_extraction_1_1_t_options.html" title="The set of parameters for all the detectors &amp; descriptor algorithms.">mrpt::vision::CFeatureExtraction::TOptions</a> &amp; feat_options = <a class="code" href="structmrpt_1_1vision_1_1_c_feature_extraction_1_1_t_options.html" title="The set of parameters for all the detectors &amp; descriptor algorithms.">mrpt::vision::CFeatureExtraction::TOptions</a>(<a class="code" href="group__mrpt__vision__grp.html#gga3a5b54ab814bafc8bb108e37bbee4e19a8a50f7cac59b399dec959c764bcedd62" title="Scale Invariant Feature Transform [LOWE&#39;04].">mrpt::vision::featSIFT</a>)
<a name="l00478"></a>00478                         );
<a name="l00479"></a>00479 <span class="comment"></span>
<a name="l00480"></a>00480 <span class="comment">                /** Loads into this landmarks map the SIFT features extracted from an observation consisting of a pair of stereo-image (Previous contents of map will be erased)</span>
<a name="l00481"></a>00481 <span class="comment">                  *  The robot is assumed to be at the origin of the map.</span>
<a name="l00482"></a>00482 <span class="comment">                  *  Some options may be applicable from &quot;insertionOptions&quot;</span>
<a name="l00483"></a>00483 <span class="comment">                  *</span>
<a name="l00484"></a>00484 <span class="comment">                  *  \param feat_options Optionally, you can pass here parameters for changing the default SIFT detector settings.</span>
<a name="l00485"></a>00485 <span class="comment">                  */</span>
<a name="l00486"></a>00486                 <span class="keywordtype">void</span>  loadSiftFeaturesFromStereoImageObservation( 
<a name="l00487"></a>00487                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_observation_stereo_images.html" title="Observation class for either a pair of left+right or left+disparity images from a stereo camera...">CObservationStereoImages</a>  &amp;obs, 
<a name="l00488"></a>00488                         <a class="code" href="classmrpt_1_1slam_1_1_c_landmark.html#a7d42fbd58a31278cb344b78ce8af3cf9" title="The type for the IDs of landmarks.">mrpt::slam::CLandmark::TLandmarkID</a> fID,
<a name="l00489"></a>00489                         <span class="keyword">const</span> <a class="code" href="structmrpt_1_1vision_1_1_c_feature_extraction_1_1_t_options.html" title="The set of parameters for all the detectors &amp; descriptor algorithms.">mrpt::vision::CFeatureExtraction::TOptions</a> &amp; feat_options = <a class="code" href="structmrpt_1_1vision_1_1_c_feature_extraction_1_1_t_options.html" title="The set of parameters for all the detectors &amp; descriptor algorithms.">mrpt::vision::CFeatureExtraction::TOptions</a>(<a class="code" href="group__mrpt__vision__grp.html#gga3a5b54ab814bafc8bb108e37bbee4e19a8a50f7cac59b399dec959c764bcedd62" title="Scale Invariant Feature Transform [LOWE&#39;04].">mrpt::vision::featSIFT</a>)
<a name="l00490"></a>00490                         );
<a name="l00491"></a>00491 <span class="comment"></span>
<a name="l00492"></a>00492 <span class="comment">                /** Loads into this landmarks-map a set of occupancy features according to a 2D range scan (Previous contents of map will be erased)</span>
<a name="l00493"></a>00493 <span class="comment">                  *  \param obs The observation</span>
<a name="l00494"></a>00494 <span class="comment">                  *  \param robotPose   The robot pose in the map (Default = the origin)</span>
<a name="l00495"></a>00495 <span class="comment">                  *  Some options may be applicable from &quot;insertionOptions&quot;</span>
<a name="l00496"></a>00496 <span class="comment">                  */</span>
<a name="l00497"></a>00497                 <span class="keywordtype">void</span>  loadOccupancyFeaturesFrom2DRangeScan(
<a name="l00498"></a>00498                                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_observation2_d_range_scan.html" title="A &quot;CObservation&quot;-derived class that represents a 2D range scan measurement (typically from a laser sc...">CObservation2DRangeScan</a>   &amp;obs,
<a name="l00499"></a>00499                                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a>                                   *robotPose = NULL,
<a name="l00500"></a>00500                                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>                            downSampleFactor = 1);
<a name="l00501"></a>00501 
<a name="l00502"></a>00502 <span class="comment"></span>
<a name="l00503"></a>00503 <span class="comment">                /** Computes the (logarithmic) likelihood that a given observation was taken from a given pose in the world being modeled with this map.</span>
<a name="l00504"></a>00504 <span class="comment">                 *</span>
<a name="l00505"></a>00505 <span class="comment">                 *  In the current implementation, this method behaves in a different way according to the nature of</span>
<a name="l00506"></a>00506 <span class="comment">                 *   the observation&#39;s class:</span>
<a name="l00507"></a>00507 <span class="comment">                 *              - &quot;mrpt::slam::CObservation2DRangeScan&quot;: This calls &quot;computeLikelihood_RSLC_2007&quot;.</span>
<a name="l00508"></a>00508 <span class="comment">                 *              - &quot;mrpt::slam::CObservationStereoImages&quot;: This calls &quot;computeLikelihood_SIFT_LandmarkMap&quot;.</span>
<a name="l00509"></a>00509 <span class="comment">                 *</span>
<a name="l00510"></a>00510 <span class="comment">                 * \param takenFrom The robot&#39;s pose the observation is supposed to be taken from.</span>
<a name="l00511"></a>00511 <span class="comment">                 * \param obs The observation.</span>
<a name="l00512"></a>00512 <span class="comment">                 * \return This method returns a likelihood value &gt; 0.</span>
<a name="l00513"></a>00513 <span class="comment">                 *</span>
<a name="l00514"></a>00514 <span class="comment">                 * \sa Used in particle filter algorithms, see: CMultiMetricMapPDF::update</span>
<a name="l00515"></a>00515 <span class="comment">                 */</span>
<a name="l00516"></a>00516                 <span class="keywordtype">double</span>   computeObservationLikelihood( <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_observation.html" title="Declares a class that represents any robot&#39;s observation.">CObservation</a> *obs, <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a> &amp;takenFrom );
<a name="l00517"></a>00517 
<a name="l00518"></a>00518                 <span class="keywordtype">void</span>  computeMatchingWith2D(
<a name="l00519"></a>00519                                 <span class="keyword">const</span> CMetricMap                                                                *otherMap,
<a name="l00520"></a>00520                                 <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose2_d.html" title="A class used to store a 2D pose.">CPose2D</a>                                                                   &amp;otherMapPose,
<a name="l00521"></a>00521                                 <span class="keywordtype">float</span>                                                                   maxDistForCorrespondence,
<a name="l00522"></a>00522                                 <span class="keywordtype">float</span>                                                                   maxAngularDistForCorrespondence,
<a name="l00523"></a>00523                                 <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose2_d.html" title="A class used to store a 2D pose.">CPose2D</a>                                                                   &amp;angularDistPivotPoint,
<a name="l00524"></a>00524                                 <a class="code" href="classmrpt_1_1utils_1_1_t_matching_pair_list.html" title="A list of TMatchingPair.">TMatchingPairList</a>                                               &amp;correspondences,
<a name="l00525"></a>00525                                 <span class="keywordtype">float</span>                                                                   &amp;correspondencesRatio,
<a name="l00526"></a>00526                                 <span class="keywordtype">float</span>                                                                   *sumSqrDist     = NULL,
<a name="l00527"></a>00527                                 <span class="keywordtype">bool</span>                                                                    onlyKeepTheClosest = <span class="keyword">false</span>,
<a name="l00528"></a>00528                                 <span class="keywordtype">bool</span>                                                                    onlyUniqueRobust = <span class="keyword">false</span> ) <span class="keyword">const</span>;
<a name="l00529"></a>00529 <span class="comment"></span>
<a name="l00530"></a>00530 <span class="comment">                /** Perform a search for correspondences between &quot;this&quot; and another lansmarks map:</span>
<a name="l00531"></a>00531 <span class="comment">                  *  In this class, the matching is established solely based on the landmarks&#39; IDs.</span>
<a name="l00532"></a>00532 <span class="comment">                  * \param otherMap [IN] The other map.</span>
<a name="l00533"></a>00533 <span class="comment">                  * \param correspondences [OUT] The matched pairs between maps.</span>
<a name="l00534"></a>00534 <span class="comment">                  * \param correspondencesRatio [OUT] This is NumberOfMatchings / NumberOfLandmarksInTheAnotherMap</span>
<a name="l00535"></a>00535 <span class="comment">                  * \param otherCorrespondences [OUT] Will be returned with a vector containing &quot;true&quot; for the indexes of the other map&#39;s landmarks with a correspondence.</span>
<a name="l00536"></a>00536 <span class="comment">                  */</span>
<a name="l00537"></a>00537                 <span class="keywordtype">void</span>  computeMatchingWith3DLandmarks(
<a name="l00538"></a>00538                                 <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">mrpt::slam::CLandmarksMap</a>                         *otherMap,
<a name="l00539"></a>00539                                 <a class="code" href="classmrpt_1_1utils_1_1_t_matching_pair_list.html" title="A list of TMatchingPair.">TMatchingPairList</a>                                               &amp;correspondences,
<a name="l00540"></a>00540                                 <span class="keywordtype">float</span>                                                                   &amp;correspondencesRatio,
<a name="l00541"></a>00541                                 <a class="code" href="classstd_1_1vector.html">std::vector&lt;bool&gt;</a>                                               &amp;otherCorrespondences) <span class="keyword">const</span>;
<a name="l00542"></a>00542 <span class="comment"></span>
<a name="l00543"></a>00543 <span class="comment">                /** Changes the reference system of the map to a given 3D pose.</span>
<a name="l00544"></a>00544 <span class="comment">                  */</span>
<a name="l00545"></a>00545                 <span class="keywordtype">void</span>  changeCoordinatesReference( <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a> &amp;newOrg );
<a name="l00546"></a>00546 <span class="comment"></span>
<a name="l00547"></a>00547 <span class="comment">                /** Changes the reference system of the map &quot;otherMap&quot; and save the result in &quot;this&quot; map.</span>
<a name="l00548"></a>00548 <span class="comment">                  */</span>
<a name="l00549"></a>00549                 <span class="keywordtype">void</span>  changeCoordinatesReference( <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a> &amp;newOrg, <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">mrpt::slam::CLandmarksMap</a> *otherMap );
<a name="l00550"></a>00550 <span class="comment"></span>
<a name="l00551"></a>00551 <span class="comment">                /** Fuses the contents of another map with this one, updating &quot;this&quot; object with the result.</span>
<a name="l00552"></a>00552 <span class="comment">                  *  This process involves fusing corresponding landmarks, then adding the new ones.</span>
<a name="l00553"></a>00553 <span class="comment">                  *  \param other The other landmarkmap, whose landmarks will be inserted into &quot;this&quot;</span>
<a name="l00554"></a>00554 <span class="comment">                  *  \param justInsertAllOfThem If set to &quot;true&quot;, all the landmarks in &quot;other&quot; will be inserted into &quot;this&quot; without checking for possible correspondences (may appear duplicates ones, etc...)</span>
<a name="l00555"></a>00555 <span class="comment">                  */</span>
<a name="l00556"></a>00556                 <span class="keywordtype">void</span>  fuseWith( <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">CLandmarksMap</a> &amp;other, <span class="keywordtype">bool</span> justInsertAllOfThem = <span class="keyword">false</span> );
<a name="l00557"></a>00557 <span class="comment"></span>
<a name="l00558"></a>00558 <span class="comment">                /** Returns the (logarithmic) likelihood of a set of landmarks &quot;map&quot; given &quot;this&quot; map.</span>
<a name="l00559"></a>00559 <span class="comment">                  *  See paper: JJAA 2006</span>
<a name="l00560"></a>00560 <span class="comment">                  */</span>
<a name="l00561"></a>00561                 <span class="keywordtype">double</span>   computeLikelihood_SIFT_LandmarkMap( <a class="code" href="classmrpt_1_1slam_1_1_c_landmarks_map.html" title="A class for storing a map of 3D probabilistic landmarks.">CLandmarksMap</a> *<a class="code" href="classstd_1_1map.html" title="STL class.">map</a>,
<a name="l00562"></a>00562                                                                                                                                           <a class="code" href="classmrpt_1_1utils_1_1_t_matching_pair_list.html" title="A list of TMatchingPair.">TMatchingPairList</a>     *correspondences = NULL,
<a name="l00563"></a>00563                                                                                                                                           <a class="code" href="classstd_1_1vector.html">std::vector&lt;bool&gt;</a> *otherCorrespondences = NULL);
<a name="l00564"></a>00564 <span class="comment"></span>
<a name="l00565"></a>00565 <span class="comment">                /** Returns true if the map is empty/no observation has been inserted.</span>
<a name="l00566"></a>00566 <span class="comment">                   */</span>
<a name="l00567"></a>00567                 <span class="keywordtype">bool</span>  isEmpty() <span class="keyword">const</span>;
<a name="l00568"></a>00568 <span class="comment"></span>
<a name="l00569"></a>00569 <span class="comment">                /** Simulates a noisy reading toward each of the beacons in the landmarks map, if any.</span>
<a name="l00570"></a>00570 <span class="comment">                  * \param in_robotPose This robot pose is used to simulate the ranges to each beacon.</span>
<a name="l00571"></a>00571 <span class="comment">                  * \param in_sensorLocationOnRobot The 3D position of the sensor on the robot</span>
<a name="l00572"></a>00572 <span class="comment">                  * \param out_Observations The results will be stored here. NOTICE that the fields &quot;CObservationBeaconRanges::minSensorDistance&quot;,&quot;CObservationBeaconRanges::maxSensorDistance&quot; and &quot;CObservationBeaconRanges::stdError&quot; MUST BE FILLED OUT before calling this function.</span>
<a name="l00573"></a>00573 <span class="comment">                  * An observation will be generated for each beacon in the map, but notice that some of them may be missed if out of the sensor maximum range.</span>
<a name="l00574"></a>00574 <span class="comment">                  */</span>
<a name="l00575"></a>00575                 <span class="keywordtype">void</span>  simulateBeaconReadings(
<a name="l00576"></a>00576                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a>                                   &amp;in_robotPose,
<a name="l00577"></a>00577                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a>                                  &amp;in_sensorLocationOnRobot,
<a name="l00578"></a>00578                         <a class="code" href="classmrpt_1_1slam_1_1_c_observation_beacon_ranges.html" title="Declares a class derived from &quot;CObservation&quot; that represents one (or more) range measurements to labe...">CObservationBeaconRanges</a>                &amp;out_Observations ) <span class="keyword">const</span>;
<a name="l00579"></a>00579 <span class="comment"></span>
<a name="l00580"></a>00580 <span class="comment">                /** Simulates a noisy bearing-range observation of all the beacons (landamrks with type glBeacon) in the landmarks map, if any.</span>
<a name="l00581"></a>00581 <span class="comment">                  * \param[in]  robotPose The robot pose.</span>
<a name="l00582"></a>00582 <span class="comment">                  * \param[in]  sensorLocationOnRobot The 3D position of the sensor on the robot</span>
<a name="l00583"></a>00583 <span class="comment">                  * \param[out] observations The results will be stored here.</span>
<a name="l00584"></a>00584 <span class="comment">                  * \param[in]  sensorDetectsIDs If this is set to false, all the landmarks will be sensed with INVALID_LANDMARK_ID as ID.</span>
<a name="l00585"></a>00585 <span class="comment">                  * \param[in]  stdRange The sigma of the sensor noise in range (meters).</span>
<a name="l00586"></a>00586 <span class="comment">                  * \param[in]  stdYaw The sigma of the sensor noise in yaw (radians).</span>
<a name="l00587"></a>00587 <span class="comment">                  * \param[in]  stdPitch The sigma of the sensor noise in pitch (radians).</span>
<a name="l00588"></a>00588 <span class="comment">                  * \param[out] real_associations If it&#39;s not a NULL pointer, this will contain at the return the real indices of the landmarks in the map in the same order than they appear in out_Observations. Useful when sensorDetectsIDs=false. Spurious readings are assigned a std::string::npos (=-1) index.</span>
<a name="l00589"></a>00589 <span class="comment">                  * \param[in]  spurious_count_mean The mean number of spurious measurements (uniformly distributed in range &amp; angle) to generate. The number of spurious is generated by rounding a random Gaussin number. If both this mean and the std are zero (the default) no spurious readings are generated.</span>
<a name="l00590"></a>00590 <span class="comment">                  * \param[in]  spurious_count_std  Read spurious_count_mean above.</span>
<a name="l00591"></a>00591 <span class="comment">                  *</span>
<a name="l00592"></a>00592 <span class="comment">                  * \note The fields &quot;CObservationBearingRange::fieldOfView_*&quot;,&quot;CObservationBearingRange::maxSensorDistance&quot; and &quot;CObservationBearingRange::minSensorDistance&quot; MUST BE FILLED OUT before calling this function.</span>
<a name="l00593"></a>00593 <span class="comment">                  * \note At output, the observation will have CObservationBearingRange::validCovariances set to &quot;false&quot; and the 3 sensor_std_* members correctly set to their values.</span>
<a name="l00594"></a>00594 <span class="comment">                  * An observation will be generated for each beacon in the map, but notice that some of them may be missed if out of the sensor maximum range or field of view-</span>
<a name="l00595"></a>00595 <span class="comment">                  */</span>
<a name="l00596"></a>00596                 <span class="keywordtype">void</span>  simulateRangeBearingReadings(
<a name="l00597"></a>00597                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a>                                   &amp;robotPose,
<a name="l00598"></a>00598                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d.html" title="A class used to store a 3D pose (a 3D translation + a rotation in 3D).">CPose3D</a>                                   &amp;sensorLocationOnRobot,
<a name="l00599"></a>00599                         <a class="code" href="classmrpt_1_1slam_1_1_c_observation_bearing_range.html" title="This observation represents a number of range-bearing value pairs, each one for a detected landmark...">CObservationBearingRange</a>                &amp;observations,
<a name="l00600"></a>00600                         <span class="keywordtype">bool</span>                            sensorDetectsIDs = <span class="keyword">true</span>,
<a name="l00601"></a>00601                         <span class="keyword">const</span> <span class="keywordtype">float</span>                     stdRange = 0.01f,
<a name="l00602"></a>00602                         <span class="keyword">const</span> <span class="keywordtype">float</span>                     stdYaw = <a class="code" href="namespacemrpt_1_1utils.html#a186dc19748953878f7be5e9b0c345dfd" title="Degrees to radians.">DEG2RAD</a>(0.1f),
<a name="l00603"></a>00603                         <span class="keyword">const</span> <span class="keywordtype">float</span>                     stdPitch = <a class="code" href="namespacemrpt_1_1utils.html#a186dc19748953878f7be5e9b0c345dfd" title="Degrees to radians.">DEG2RAD</a>(0.1f),
<a name="l00604"></a>00604                         <a class="code" href="classstd_1_1vector.html">vector_size_t</a>                                   *real_associations = NULL,
<a name="l00605"></a>00605                         <span class="keyword">const</span> <span class="keywordtype">double</span>                    spurious_count_mean = 0,
<a name="l00606"></a>00606                         <span class="keyword">const</span> <span class="keywordtype">double</span>                    spurious_count_std  = 0
<a name="l00607"></a>00607                          ) <span class="keyword">const</span>;
<a name="l00608"></a>00608 
<a name="l00609"></a>00609 <span class="comment"></span>
<a name="l00610"></a>00610 <span class="comment">                /** This virtual method saves the map to a file &quot;filNamePrefix&quot;+&lt; some_file_extension &gt;, as an image or in any other applicable way (Notice that other methods to save the map may be implemented in classes implementing this virtual interface).</span>
<a name="l00611"></a>00611 <span class="comment">                  *  In the case of this class, these files are generated:</span>
<a name="l00612"></a>00612 <span class="comment">                  *             - &quot;filNamePrefix&quot;+&quot;_3D.m&quot;: A script for MATLAB for drawing landmarks as 3D ellipses.</span>
<a name="l00613"></a>00613 <span class="comment">                  *             - &quot;filNamePrefix&quot;+&quot;_3D.3DScene&quot;: A 3D scene with a &quot;ground plane grid&quot; and the set of ellipsoids in 3D.</span>
<a name="l00614"></a>00614 <span class="comment">                  */</span>
<a name="l00615"></a>00615                 <span class="keywordtype">void</span>  saveMetricMapRepresentationToFile(
<a name="l00616"></a>00616                         <span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a>       &amp;filNamePrefix ) <span class="keyword">const</span>;
<a name="l00617"></a>00617 <span class="comment"></span>
<a name="l00618"></a>00618 <span class="comment">                /** Returns a 3D object representing the map.</span>
<a name="l00619"></a>00619 <span class="comment">                  * \sa COLOR_LANDMARKS_IN_3DSCENES</span>
<a name="l00620"></a>00620 <span class="comment">                  */</span>
<a name="l00621"></a>00621                 <span class="keywordtype">void</span>  getAs3DObject ( <a class="code" href="structmrpt_1_1opengl_1_1_c_set_of_objects_ptr.html">mrpt::opengl::CSetOfObjectsPtr</a>    &amp;outObj ) <span class="keyword">const</span>;
<a name="l00622"></a>00622 <span class="comment"></span>
<a name="l00623"></a>00623 <span class="comment">                /** This method is called at the end of each &quot;prediction-update-map insertion&quot; cycle within &quot;mrpt::slam::CMetricMapBuilderRBPF::processActionObservation&quot;.</span>
<a name="l00624"></a>00624 <span class="comment">                  *  This method should normally do nothing, but in some cases can be used to free auxiliary cached variables.</span>
<a name="l00625"></a>00625 <span class="comment">                  */</span>
<a name="l00626"></a>00626                 <span class="keyword">virtual</span> <span class="keywordtype">void</span>  auxParticleFilterCleanUp();
<a name="l00627"></a>00627 
<a name="l00628"></a>00628         }; <span class="comment">// End of class def.</span>
<a name="l00629"></a>00629 
<a name="l00630"></a>00630 
<a name="l00631"></a>00631         } <span class="comment">// End of namespace</span>
<a name="l00632"></a>00632 } <span class="comment">// End of namespace</span>
<a name="l00633"></a>00633 
<a name="l00634"></a>00634 <span class="preprocessor">#endif</span>
</pre></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>