Sophie

Sophie

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

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>CBeacon.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">CBeacon.h</div>  </div>
</div>
<div class="contents">
<a href="_c_beacon_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 CBeacon_H</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define CBeacon_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_serializable_8h.html">mrpt/utils/CSerializable.h</a>&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="_c_matrix_8h.html">mrpt/math/CMatrix.h</a>&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="os_8h.html">mrpt/system/os.h</a>&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;<a class="code" href="_c_string_list_8h.html">mrpt/utils/CStringList.h</a>&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;<a class="code" href="_c_point3_d_8h.html">mrpt/poses/CPoint3D.h</a>&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;<a class="code" href="_c_point_p_d_f_particles_8h.html">mrpt/poses/CPointPDFParticles.h</a>&gt;</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;<a class="code" href="_c_point_p_d_f_gaussian_8h.html">mrpt/poses/CPointPDFGaussian.h</a>&gt;</span>
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;<a class="code" href="_c_point_p_d_f_s_o_g_8h.html">mrpt/poses/CPointPDFSOG.h</a>&gt;</span>
<a name="l00039"></a>00039 
<a name="l00040"></a>00040 <span class="preprocessor">#include &lt;<a class="code" href="_c_set_of_objects_8h.html">mrpt/opengl/CSetOfObjects.h</a>&gt;</span>
<a name="l00041"></a>00041 
<a name="l00042"></a>00042 <span class="preprocessor">#include &lt;<a class="code" href="maps_2include_2mrpt_2maps_2link__pragmas_8h.html">mrpt/maps/link_pragmas.h</a>&gt;</span>
<a name="l00043"></a>00043 
<a name="l00044"></a>00044 
<a name="l00045"></a>00045 <span class="keyword">namespace </span>mrpt
<a name="l00046"></a>00046 {
<a name="l00047"></a>00047 <span class="keyword">namespace </span>slam
<a name="l00048"></a>00048 {
<a name="l00049"></a>00049         <span class="keyword">using namespace </span>mrpt::poses;
<a name="l00050"></a>00050         <span class="keyword">using namespace </span>mrpt::utils;
<a name="l00051"></a>00051 
<a name="l00052"></a>00052         <span class="keyword">class </span>CBeaconMap;
<a name="l00053"></a><a class="code" href="structmrpt_1_1slam_1_1_c_beacon_ptr.html#a1711588c3bdac488d09f743495c478a6">00053</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_beacon.html" title="The class for storing individual &quot;beacon landmarks&quot; under a variety of 3D position PDF distributions...">CBeacon</a>, <a class="code" href="classmrpt_1_1utils_1_1_c_serializable.html" title="The virtual base class which provides a unified interface for all persistent objects in MRPT...">mrpt::utils::CSerializable</a>, <a class="code" href="maps_2include_2mrpt_2maps_2link__pragmas_8h.html#ad401479c152d92658375c646837e33ed">MAPS_IMPEXP</a> )
<a name="l00054"></a>00054 
<a name="l00055"></a>00055         <span class="comment">/** The class for storing individual &quot;beacon landmarks&quot; under a variety of 3D position PDF distributions.</span>
<a name="l00056"></a>00056 <span class="comment">          *  This class is used for storage within the class CBeaconMap.</span>
<a name="l00057"></a>00057 <span class="comment">          *  The class implements the same methods than the interface &quot;CPointPDF&quot;, and invoking them actually becomes</span>
<a name="l00058"></a>00058 <span class="comment">          *   a mapping into the methods of the current PDF representation of the beacon, selectable by means of &quot;m_typePDF&quot;</span>
<a name="l00059"></a>00059 <span class="comment">          * \sa CBeaconMap, CPointPDFSOG</span>
<a name="l00060"></a>00060 <span class="comment">          * \ingroup mrpt_maps_grp</span>
<a name="l00061"></a>00061 <span class="comment">          */</span>
<a name="l00062"></a>00062         class <a class="code" href="maps_2include_2mrpt_2maps_2link__pragmas_8h.html#ad401479c152d92658375c646837e33ed">MAPS_IMPEXP</a> <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html" title="The class for storing individual &quot;beacon landmarks&quot; under a variety of 3D position PDF distributions...">CBeacon</a> : public <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f.html" title="Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x...">CPointPDF</a>
<a name="l00063"></a>00063         {
<a name="l00064"></a>00064                 <span class="comment">// This must be added to any CSerializable derived class:</span>
<a name="l00065"></a><a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#ad0501bb134aede5779a8ff0ac0bac2e5">00065</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_beacon.html" title="The class for storing individual &quot;beacon landmarks&quot; under a variety of 3D position PDF distributions...">CBeacon</a> )
<a name="l00066"></a>00066 
<a name="l00067"></a>00067         public:<span class="comment"></span>
<a name="l00068"></a>00068 <span class="comment">                /** The type for the IDs of landmarks.</span>
<a name="l00069"></a>00069 <span class="comment">                  */</span>
<a name="l00070"></a><a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a8ee2d42606200f1c4cece3520a60cbe7">00070</a>                 typedef int64_t <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a8ee2d42606200f1c4cece3520a60cbe7" title="The type for the IDs of landmarks.">TBeaconID</a>;
<a name="l00071"></a>00071 <span class="comment"></span>
<a name="l00072"></a>00072 <span class="comment">                /** See m_typePDF</span>
<a name="l00073"></a>00073 <span class="comment">                  */</span>
<a name="l00074"></a><a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a7c3e15ab411676512c646686b37ec4d1">00074</a>                 enum <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a7c3e15ab411676512c646686b37ec4d1" title="See m_typePDF.">TTypePDF</a> { pdfMonteCarlo = 0, pdfGauss, pdfSOG };
<a name="l00075"></a>00075 <span class="comment"></span>
<a name="l00076"></a>00076 <span class="comment">                /** Which one of the different 3D point PDF is currently used in this object: montecarlo, gaussian, or a sum of gaussians.</span>
<a name="l00077"></a>00077 <span class="comment">                  * \sa m_location</span>
<a name="l00078"></a>00078 <span class="comment">                  */</span>
<a name="l00079"></a><a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#ae711dc8659aeeb30163570435225f194">00079</a>                 <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a7c3e15ab411676512c646686b37ec4d1" title="See m_typePDF.">TTypePDF</a>        <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#ae711dc8659aeeb30163570435225f194" title="Which one of the different 3D point PDF is currently used in this object: montecarlo, gaussian, or a sum of gaussians.">m_typePDF</a>;
<a name="l00080"></a>00080 <span class="comment"></span>
<a name="l00081"></a>00081 <span class="comment">                /** The individual PDF, if m_typePDF=pdfMonteCarlo (publicly accesible for ease of use, but the CPointPDF interface is also implemented in CBeacon).</span>
<a name="l00082"></a>00082 <span class="comment">                  */</span>
<a name="l00083"></a><a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a873c6f2a1713cbfc0cd2a1e23497950a">00083</a>                 <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_particles.html" title="A probability distribution of a 2D/3D point, represented as a set of random samples (particles)...">CPointPDFParticles</a>      <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a873c6f2a1713cbfc0cd2a1e23497950a" title="The individual PDF, if m_typePDF=pdfMonteCarlo (publicly accesible for ease of use, but the CPointPDF interface is also implemented in CBeacon).">m_locationMC</a>;
<a name="l00084"></a>00084 <span class="comment"></span>
<a name="l00085"></a>00085 <span class="comment">                /** The individual PDF, if m_typePDF=pdfGauss (publicly accesible for ease of use, but the CPointPDF interface is also implemented in CBeacon).</span>
<a name="l00086"></a>00086 <span class="comment">                  */</span>
<a name="l00087"></a><a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a915013d91c5b571e2233a000092684ff">00087</a>                 <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_gaussian.html" title="A gaussian distribution for 3D points.">CPointPDFGaussian</a>       <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a915013d91c5b571e2233a000092684ff" title="The individual PDF, if m_typePDF=pdfGauss (publicly accesible for ease of use, but the CPointPDF inte...">m_locationGauss</a>;
<a name="l00088"></a>00088 <span class="comment"></span>
<a name="l00089"></a>00089 <span class="comment">                /** The individual PDF, if m_typePDF=pdfSOG (publicly accesible for ease of use, but the CPointPDF interface is also implemented in CBeacon).</span>
<a name="l00090"></a>00090 <span class="comment">                  */</span>
<a name="l00091"></a><a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#ac531d156b61242ad29d5c1c70bf17aae">00091</a>                 <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html" title="Declares a class that represents a Probability Density function (PDF) of a 3D point ...">CPointPDFSOG</a>            <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#ac531d156b61242ad29d5c1c70bf17aae" title="The individual PDF, if m_typePDF=pdfSOG (publicly accesible for ease of use, but the CPointPDF interf...">m_locationSOG</a>;
<a name="l00092"></a>00092 <span class="comment"></span>
<a name="l00093"></a>00093 <span class="comment">                /** An ID for the landmark (see details next...)</span>
<a name="l00094"></a>00094 <span class="comment">                  *  This ID was introduced in the version 3 of this class (21/NOV/2006), and its aim is</span>
<a name="l00095"></a>00095 <span class="comment">                  *  to provide a way for easily establishing correspondences between landmarks detected</span>
<a name="l00096"></a>00096 <span class="comment">                  *  in sequential image frames. Thus, the management of this field should be:</span>
<a name="l00097"></a>00097 <span class="comment">                  *             - In &#39;servers&#39; (classes/modules/... that detect landmarks from images): A different ID must be assigned to every landmark (e.g. a sequential counter), BUT only in the case of being sure of the correspondence of one landmark with another one in the past (e.g. tracking).</span>
<a name="l00098"></a>00098 <span class="comment">                  *             - In &#39;clients&#39;: This field can be ignored, but if it is used, the advantage is solving the correspondence between landmarks detected in consequentive instants of time: Two landmarks with the same ID &lt;b&gt;correspond&lt;/b&gt; to the same physical feature, BUT it should not be expected the inverse to be always true.</span>
<a name="l00099"></a>00099 <span class="comment">                  *</span>
<a name="l00100"></a>00100 <span class="comment">                  * Note that this field is never fill out automatically, it must be set by the programmer if used.</span>
<a name="l00101"></a>00101 <span class="comment">                  */</span>
<a name="l00102"></a><a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a80783de1fbb24b0fabf32ec4a9adf399">00102</a>                 <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a8ee2d42606200f1c4cece3520a60cbe7" title="The type for the IDs of landmarks.">TBeaconID</a>                       <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html#a80783de1fbb24b0fabf32ec4a9adf399" title="An ID for the landmark (see details next...) This ID was introduced in the version 3 of this class (2...">m_ID</a>;
<a name="l00103"></a>00103 <span class="comment"></span>
<a name="l00104"></a>00104 <span class="comment">                /** Default constructor</span>
<a name="l00105"></a>00105 <span class="comment">                  */</span>
<a name="l00106"></a>00106                 <a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html" title="The class for storing individual &quot;beacon landmarks&quot; under a variety of 3D position PDF distributions...">CBeacon</a>();
<a name="l00107"></a>00107 <span class="comment"></span>
<a name="l00108"></a>00108 <span class="comment">                /** Virtual destructor</span>
<a name="l00109"></a>00109 <span class="comment">                  */</span>
<a name="l00110"></a>00110                 <span class="keyword">virtual</span> ~<a class="code" href="classmrpt_1_1slam_1_1_c_beacon.html" title="The class for storing individual &quot;beacon landmarks&quot; under a variety of 3D position PDF distributions...">CBeacon</a>();
<a name="l00111"></a>00111 <span class="comment"></span>
<a name="l00112"></a>00112 <span class="comment">                 /** Returns an estimate of the point, (the mean, or mathematical expectation of the PDF).</span>
<a name="l00113"></a>00113 <span class="comment">                   * \sa getCovariance</span>
<a name="l00114"></a>00114 <span class="comment">                   */</span>
<a name="l00115"></a>00115                 <span class="keywordtype">void</span> getMean(<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;mean_point) <span class="keyword">const</span>;
<a name="l00116"></a>00116 <span class="comment"></span>
<a name="l00117"></a>00117 <span class="comment">                /** Returns an estimate of the point covariance matrix (3x3 cov matrix) and the mean, both at once.</span>
<a name="l00118"></a>00118 <span class="comment">                  * \sa getMean</span>
<a name="l00119"></a>00119 <span class="comment">                  */</span>
<a name="l00120"></a>00120                 <span class="keywordtype">void</span> getCovarianceAndMean(<a class="code" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixDouble33</a> &amp;<a class="code" href="namespacemrpt_1_1math.html#a43f4e051fc574fd75b6800ad4fb25037" title="Computes the covariance matrix from a list of samples in an NxM matrix, where each row is a sample...">cov</a>,<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;mean_point) <span class="keyword">const</span>;
<a name="l00121"></a>00121 <span class="comment"></span>
<a name="l00122"></a>00122 <span class="comment">                /** Copy operator, translating if necesary (for example, between particles and gaussian representations)</span>
<a name="l00123"></a>00123 <span class="comment">                  */</span>
<a name="l00124"></a>00124                 <span class="keywordtype">void</span>  copyFrom(<span class="keyword">const</span> CPointPDF &amp;o);
<a name="l00125"></a>00125 <span class="comment"></span>
<a name="l00126"></a>00126 <span class="comment">                /** Save PDF&#39;s particles to a text file. See derived classes for more information about the format of generated files.</span>
<a name="l00127"></a>00127 <span class="comment">                 */</span>
<a name="l00128"></a>00128                 <span class="keywordtype">void</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>(<span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;file) <span class="keyword">const</span>;
<a name="l00129"></a>00129 <span class="comment"></span>
<a name="l00130"></a>00130 <span class="comment">                /** This can be used to convert a PDF from local coordinates to global, providing the point (newReferenceBase) from which</span>
<a name="l00131"></a>00131 <span class="comment">                  *   &quot;to project&quot; the current pdf. Result PDF substituted the currently stored one in the object.</span>
<a name="l00132"></a>00132 <span class="comment">                  */</span>
<a name="l00133"></a>00133                 <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;newReferenceBase );
<a name="l00134"></a>00134 <span class="comment"></span>
<a name="l00135"></a>00135 <span class="comment">                /** Saves a 3D representation of the beacon into a given OpenGL scene</span>
<a name="l00136"></a>00136 <span class="comment">                  */</span>
<a name="l00137"></a>00137                 <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="l00138"></a>00138 <span class="comment"></span>
<a name="l00139"></a>00139 <span class="comment">                /** Gets a set of MATLAB commands which draw the current state of the beacon:</span>
<a name="l00140"></a>00140 <span class="comment">                  */</span>
<a name="l00141"></a>00141                 <span class="keywordtype">void</span> getAsMatlabDrawCommands( <a class="code" href="classmrpt_1_1utils_1_1_c_string_list.html" title="A class for storing a list of text lines.">utils::CStringList</a> &amp;out_Str ) <span class="keyword">const</span>;
<a name="l00142"></a>00142 <span class="comment"></span>
<a name="l00143"></a>00143 <span class="comment">                /** Draw a sample from the pdf.</span>
<a name="l00144"></a>00144 <span class="comment">                  */</span>
<a name="l00145"></a>00145                 <span class="keywordtype">void</span> drawSingleSample(<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;outSample) <span class="keyword">const</span>;
<a name="l00146"></a>00146 <span class="comment"></span>
<a name="l00147"></a>00147 <span class="comment">                /** Bayesian fusion of two point distributions (product of two distributions-&gt;new distribution), then save the result in this object (WARNING: See implementing classes to see classes that can and cannot be mixtured!)</span>
<a name="l00148"></a>00148 <span class="comment">                  * \param p1 The first distribution to fuse</span>
<a name="l00149"></a>00149 <span class="comment">                  * \param p2 The second distribution to fuse</span>
<a name="l00150"></a>00150 <span class="comment">                  * \param minMahalanobisDistToDrop If set to different of 0, the result of very separate Gaussian modes (that will result in negligible components) in SOGs will be dropped to reduce the number of modes in the output.</span>
<a name="l00151"></a>00151 <span class="comment">                  */</span>
<a name="l00152"></a>00152                 <span class="keywordtype">void</span>  bayesianFusion(<span class="keyword">const</span>  CPointPDF &amp;p1,<span class="keyword">const</span>  CPointPDF &amp;p2, <span class="keyword">const</span> <span class="keywordtype">double</span> &amp;minMahalanobisDistToDrop = 0);
<a name="l00153"></a>00153 
<a name="l00154"></a>00154 <span class="comment"></span>
<a name="l00155"></a>00155 <span class="comment">                /** Compute the observation model p(z_t|x_t) for a given observation (range value), and return it as an approximate SOG.</span>
<a name="l00156"></a>00156 <span class="comment">                  *  Note that if the beacon is a SOG itself, the number of gaussian modes will be square.</span>
<a name="l00157"></a>00157 <span class="comment">                  *  As a speed-up, if a &quot;center point&quot;+&quot;maxDistanceFromCenter&quot; is supplied (maxDistanceFromCenter!=0), those modes farther than this sphere will be discarded.</span>
<a name="l00158"></a>00158 <span class="comment">                  *  Parameters such as the stdSigma of the sensor are gathered from &quot;myBeaconMap&quot;</span>
<a name="l00159"></a>00159 <span class="comment">                  *  The result is one &quot;ring&quot; for each Gaussian mode that represent the beacon position in this object.</span>
<a name="l00160"></a>00160 <span class="comment">                  *  The position of the sensor on the robot is used to shift the resulting densities such as they represent the position of the robot, not the sensor.</span>
<a name="l00161"></a>00161 <span class="comment">                  *  \sa CBeaconMap::insertionOptions, generateRingSOG</span>
<a name="l00162"></a>00162 <span class="comment">                  */</span>
<a name="l00163"></a>00163                 <span class="keywordtype">void</span> generateObservationModelDistribution(
<a name="l00164"></a>00164                         <span class="keyword">const</span> <span class="keywordtype">float</span> &amp;sensedRange,
<a name="l00165"></a>00165                         <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html" title="Declares a class that represents a Probability Density function (PDF) of a 3D point ...">CPointPDFSOG</a>    &amp;outPDF,
<a name="l00166"></a>00166                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_beacon_map.html" title="A class for storing a map of 3D probabilistic beacons, using a Montecarlo, Gaussian, or Sum of Gaussians (SOG) representation (for range-only SLAM).">CBeaconMap</a> *myBeaconMap,
<a name="l00167"></a>00167                         <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;sensorPntOnRobot,
<a name="l00168"></a>00168                         <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;centerPoint = <a class="code" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a>(0,0,0),
<a name="l00169"></a>00169                         <span class="keyword">const</span> <span class="keywordtype">float</span> &amp;maxDistanceFromCenter = 0
<a name="l00170"></a>00170                         ) <span class="keyword">const</span>;
<a name="l00171"></a>00171 <span class="comment"></span>
<a name="l00172"></a>00172 <span class="comment">                /** This static method returns a SOG with ring-shape (or as a 3D sphere) that can be used to initialize a beacon if observed the first time.</span>
<a name="l00173"></a>00173 <span class="comment">                  *  sensorPnt is the center of the ring/sphere, i.e. the absolute position of the range sensor.</span>
<a name="l00174"></a>00174 <span class="comment">                  *  If clearPreviousContentsOutPDF=false, the SOG modes will be added to the current contents of outPDF</span>
<a name="l00175"></a>00175 <span class="comment">                  *  If the 3x3 matrix covarianceCompositionToAdd is provided, it will be add to every Gaussian (to model the composition of uncertainty).</span>
<a name="l00176"></a>00176 <span class="comment">                  * \sa generateObservationModelDistribution</span>
<a name="l00177"></a>00177 <span class="comment">                  */</span>
<a name="l00178"></a>00178                 <span class="keyword">static</span> <span class="keywordtype">void</span> generateRingSOG(
<a name="l00179"></a>00179                         <span class="keyword">const</span> <span class="keywordtype">float</span> &amp;sensedRange,
<a name="l00180"></a>00180                         <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html" title="Declares a class that represents a Probability Density function (PDF) of a 3D point ...">CPointPDFSOG</a>    &amp;outPDF,
<a name="l00181"></a>00181                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1slam_1_1_c_beacon_map.html" title="A class for storing a map of 3D probabilistic beacons, using a Montecarlo, Gaussian, or Sum of Gaussians (SOG) representation (for range-only SLAM).">CBeaconMap</a> *myBeaconMap,
<a name="l00182"></a>00182                         <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;sensorPnt,
<a name="l00183"></a>00183                         <span class="keyword">const</span> <a class="code" href="classmrpt_1_1math_1_1_c_matrix_fixed_numeric.html">CMatrixDouble33</a>   *covarianceCompositionToAdd = NULL,
<a name="l00184"></a>00184                         <span class="keywordtype">bool</span>  clearPreviousContentsOutPDF = <span class="keyword">true</span>,
<a name="l00185"></a>00185                         <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;centerPoint = <a class="code" href="classmrpt_1_1poses_1_1_c_point3_d.html" title="A class used to store a 3D point.">CPoint3D</a>(0,0,0),
<a name="l00186"></a>00186                         <span class="keyword">const</span> <span class="keywordtype">float</span> &amp;maxDistanceFromCenter = 0
<a name="l00187"></a>00187                         );
<a name="l00188"></a>00188 
<a name="l00189"></a>00189 
<a name="l00190"></a>00190         }; <span class="comment">// End of class definition</span>
<a name="l00191"></a>00191 
<a name="l00192"></a>00192 
<a name="l00193"></a>00193         } <span class="comment">// End of namespace</span>
<a name="l00194"></a>00194 } <span class="comment">// End of namespace</span>
<a name="l00195"></a>00195 
<a name="l00196"></a>00196 <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>