Sophie

Sophie

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

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>CPointPDFSOG.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">CPointPDFSOG.h</div>  </div>
</div>
<div class="contents">
<a href="_c_point_p_d_f_s_o_g_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 CPointPDFSOG_H</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define CPointPDFSOG_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_point_p_d_f_8h.html">mrpt/poses/CPointPDF.h</a>&gt;</span>
<a name="l00032"></a>00032 <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="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="_c_matrix_8h.html">mrpt/math/CMatrix.h</a>&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;<a class="code" href="_c_matrix_d_8h.html">mrpt/math/CMatrixD.h</a>&gt;</span>
<a name="l00035"></a>00035 
<a name="l00036"></a>00036 <span class="keyword">namespace </span>mrpt
<a name="l00037"></a>00037 {
<a name="l00038"></a>00038         <span class="keyword">namespace </span>poses
<a name="l00039"></a>00039         {
<a name="l00040"></a><a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_ptr.html#a82356dd38a0081a1fa92ed21f1720f0b">00040</a>                 <a class="code" href="_c_serializable_8h.html#ab89b7a3de0a1baf5a5af4454add7d0f8" title="This declaration must be inserted in all CSerializable classes definition, before the class declarati...">DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE</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_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="l00041"></a>00041 
<a name="l00042"></a>00042                 <span class="comment">/** Declares a class that represents a Probability Density function (PDF) of a 3D point \f$ p(\mathbf{x}) = [x ~ y ~ z ]^t \f$.</span>
<a name="l00043"></a>00043 <span class="comment">                 *   This class implements that PDF as the following multi-modal Gaussian distribution:</span>
<a name="l00044"></a>00044 <span class="comment">                 *</span>
<a name="l00045"></a>00045 <span class="comment">                 * \f$ p(\mathbf{x}) = \sum\limits_{i=1}^N \omega^i \mathcal{N}( \mathbf{x} ; \bar{\mathbf{x}}^i, \mathbf{\Sigma}^i )  \f$</span>
<a name="l00046"></a>00046 <span class="comment">                 *</span>
<a name="l00047"></a>00047 <span class="comment">                 *  Where the number of modes N is the size of CPointPDFSOG::m_modes</span>
<a name="l00048"></a>00048 <span class="comment">                 *</span>
<a name="l00049"></a>00049 <span class="comment">                 *  See mrpt::poses::CPointPDF for more details.</span>
<a name="l00050"></a>00050 <span class="comment">                 *</span>
<a name="l00051"></a>00051 <span class="comment">                 * \sa CPointPDF, CPosePDF,</span>
<a name="l00052"></a>00052 <span class="comment">                 * \ingroup poses_pdf_grp</span>
<a name="l00053"></a>00053 <span class="comment">                 */</span>
<a name="l00054"></a>00054                 class <a class="code" href="base_2include_2mrpt_2base_2link__pragmas_8h.html#a6045fa0129b1a3d6c8bf895470e66574">BASE_IMPEXP</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> : 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="l00055"></a>00055                 {
<a name="l00056"></a>00056                         <span class="comment">// This must be added to any CSerializable derived class:</span>
<a name="l00057"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#ab9fd730432334181e062b01033d5d539">00057</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_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 name="l00058"></a>00058 
<a name="l00059"></a>00059                 public:<span class="comment"></span>
<a name="l00060"></a>00060 <span class="comment">                        /** The struct for each mode:</span>
<a name="l00061"></a>00061 <span class="comment">                         */</span>
<a name="l00062"></a>00062                         struct <a class="code" href="base_2include_2mrpt_2base_2link__pragmas_8h.html#a6045fa0129b1a3d6c8bf895470e66574">BASE_IMPEXP</a> <a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html" title="The struct for each mode:">TGaussianMode</a>
<a name="l00063"></a>00063                         {
<a name="l00064"></a><a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html#ae08a3719d82d034d1941319d7ee16730">00064</a>                                 TGaussianMode() : val(), log_w(0)
<a name="l00065"></a>00065                                 {
<a name="l00066"></a>00066                                 }
<a name="l00067"></a>00067 
<a name="l00068"></a><a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html#a0a22205f79d768348160a5d37239de59">00068</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="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html#a0a22205f79d768348160a5d37239de59">val</a>;
<a name="l00069"></a>00069 <span class="comment"></span>
<a name="l00070"></a>00070 <span class="comment">                                /** The log-weight</span>
<a name="l00071"></a>00071 <span class="comment">                                  */</span>
<a name="l00072"></a><a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html#a25fc8a3fa58c41175d404dd3d46a2c21">00072</a>                                 <span class="keywordtype">double</span>          <a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html#a25fc8a3fa58c41175d404dd3d46a2c21" title="The log-weight.">log_w</a>;
<a name="l00073"></a>00073                         };
<a name="l00074"></a>00074 
<a name="l00075"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a192d2e510397288c5e803cc55fd354c0">00075</a>                         <span class="keyword">typedef</span> std<a class="code" href="classstd_1_1deque.html">::deque&lt;TGaussianMode&gt;</a> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a192d2e510397288c5e803cc55fd354c0">CListGaussianModes</a>;
<a name="l00076"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a6017eb7b836c673adab48cad9bbfeeae">00076</a>                         <span class="keyword">typedef</span> std<a class="code" href="classstd_1_1deque_1_1const__iterator.html" title="STL iterator class.">::deque&lt;TGaussianMode&gt;::const_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a6017eb7b836c673adab48cad9bbfeeae">const_iterator</a>;
<a name="l00077"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#ab014817b62859862f9ee5ea9981d571f">00077</a>                         <span class="keyword">typedef</span> std<a class="code" href="classstd_1_1deque_1_1iterator.html" title="STL iterator class.">::deque&lt;TGaussianMode&gt;::iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#ab014817b62859862f9ee5ea9981d571f">iterator</a>;
<a name="l00078"></a>00078 
<a name="l00079"></a>00079                 <span class="keyword">protected</span>:<span class="comment"></span>
<a name="l00080"></a>00080 <span class="comment">                        /** Assures the symmetry of the covariance matrix (eventually certain operations in the math-coprocessor lead to non-symmetric matrixes!)</span>
<a name="l00081"></a>00081 <span class="comment">                          */</span>
<a name="l00082"></a>00082                         <span class="keywordtype">void</span>  assureSymmetry();
<a name="l00083"></a>00083 <span class="comment"></span>
<a name="l00084"></a>00084 <span class="comment">                        /** The list of SOG modes */</span>
<a name="l00085"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a4b8a852a69eacd76bbb639c9469eec60">00085</a>                         CListGaussianModes      <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a4b8a852a69eacd76bbb639c9469eec60" title="The list of SOG modes.">m_modes</a>;
<a name="l00086"></a>00086 
<a name="l00087"></a>00087                  <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00088"></a>00088 <span class="comment">                        /** Default constructor</span>
<a name="l00089"></a>00089 <span class="comment">                          * \param nModes The initial size of CPointPDFSOG::m_modes</span>
<a name="l00090"></a>00090 <span class="comment">                          */</span>
<a name="l00091"></a>00091                         <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>( <span class="keywordtype">size_t</span> nModes = 1 );
<a name="l00092"></a>00092 
<a name="l00093"></a>00093                         <span class="keywordtype">void</span> clear(); <span class="comment">//!&lt; Clear all the gaussian modes</span>
<a name="l00094"></a>00094 <span class="comment"></span><span class="comment"></span>
<a name="l00095"></a>00095 <span class="comment">                        /** Access to individual beacons */</span>
<a name="l00096"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a716592bb84745d4f4d39d9566be21526">00096</a>                         <span class="keyword">const</span> <a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html" title="The struct for each mode:">TGaussianMode</a>&amp; operator [](<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{
<a name="l00097"></a>00097                                 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(i&lt;m_modes.size())
<a name="l00098"></a>00098                                 <span class="keywordflow">return</span>  m_modes[i];
<a name="l00099"></a>00099                         }<span class="comment"></span>
<a name="l00100"></a>00100 <span class="comment">                        /** Access to individual beacons */</span>
<a name="l00101"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#aec1be56bdbef30da707b223690bb827a">00101</a>                         <a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html" title="The struct for each mode:">TGaussianMode</a>&amp; operator [](<span class="keywordtype">size_t</span> i) {
<a name="l00102"></a>00102                                 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(i&lt;m_modes.size())
<a name="l00103"></a>00103                                 <span class="keywordflow">return</span>  m_modes[i];
<a name="l00104"></a>00104                         }
<a name="l00105"></a>00105 <span class="comment"></span>
<a name="l00106"></a>00106 <span class="comment">                        /** Access to individual beacons */</span>
<a name="l00107"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a54d0da52bae0ab34e6bceece82a5a8ec">00107</a>                         <span class="keyword">const</span> <a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html" title="The struct for each mode:">TGaussianMode</a>&amp; <span class="keyword">get</span>(<span class="keywordtype">size_t</span> i) <span class="keyword">const</span> {
<a name="l00108"></a>00108                                 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(i&lt;m_modes.size())
<a name="l00109"></a>00109                                 <span class="keywordflow">return</span>  m_modes[i];
<a name="l00110"></a>00110                         }<span class="comment"></span>
<a name="l00111"></a>00111 <span class="comment">                        /** Access to individual beacons */</span>
<a name="l00112"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#af58d98d80106b00656e465c28671a96a">00112</a>                         <a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html" title="The struct for each mode:">TGaussianMode</a>&amp; <span class="keyword">get</span>(<span class="keywordtype">size_t</span> i) {
<a name="l00113"></a>00113                                 <a class="code" href="mrpt__macros_8h.html#a47eb5a445c2bf3d9190396510ea9683e">ASSERT_</a>(i&lt;m_modes.size())
<a name="l00114"></a>00114                                 <span class="keywordflow">return</span>  m_modes[i];
<a name="l00115"></a>00115                         }
<a name="l00116"></a>00116 <span class="comment"></span>
<a name="l00117"></a>00117 <span class="comment">                        /** Inserts a copy of the given mode into the SOG */</span>
<a name="l00118"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#aa28776806d2afede3bf8a51a526a9814">00118</a>                         <span class="keywordtype">void</span> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#aa28776806d2afede3bf8a51a526a9814" title="Inserts a copy of the given mode into the SOG.">push_back</a>(<span class="keyword">const</span> <a class="code" href="structmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g_1_1_t_gaussian_mode.html" title="The struct for each mode:">TGaussianMode</a>&amp; m) {
<a name="l00119"></a>00119                                 m_modes.push_back(m);
<a name="l00120"></a>00120                         }
<a name="l00121"></a>00121 
<a name="l00122"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#ae6449403a88b76d01781ae1408bf0107">00122</a>                         iterator <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#ae6449403a88b76d01781ae1408bf0107">begin</a>() { <span class="keywordflow">return</span> m_modes.begin(); }
<a name="l00123"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#ab51c3deb263350da6965386e24f4b39d">00123</a>                         iterator <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#ab51c3deb263350da6965386e24f4b39d">end</a>() { <span class="keywordflow">return</span> m_modes.end(); }
<a name="l00124"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a3678ad585c8b28bdd4cc03ab9a79113e">00124</a>                         const_iterator <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a3678ad585c8b28bdd4cc03ab9a79113e">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_modes.begin(); }
<a name="l00125"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a8576ef732e413eb71faa906fb91209ca">00125</a>                         const_iterator <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a8576ef732e413eb71faa906fb91209ca">end</a>()<span class="keyword">const </span>{ <span class="keywordflow">return</span> m_modes.end(); }
<a name="l00126"></a>00126 
<a name="l00127"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a11e7feb1eafde9b018b4a3fb03c210eb">00127</a>                         iterator <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a11e7feb1eafde9b018b4a3fb03c210eb">erase</a>(iterator i) { <span class="keywordflow">return</span> m_modes.erase(i); }
<a name="l00128"></a>00128 
<a name="l00129"></a>00129                         <span class="keywordtype">void</span> resize(<span class="keyword">const</span> <span class="keywordtype">size_t</span> N); <span class="comment">//!&lt; Resize the number of SOG modes</span>
<a name="l00130"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a3de2208a039b27b22371772f68452ce5">00130</a> <span class="comment"></span>                        <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a3de2208a039b27b22371772f68452ce5" title="Return the number of Gaussian modes.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_modes.size(); } <span class="comment">//!&lt; Return the number of Gaussian modes.</span>
<a name="l00131"></a><a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a823136301ea2bd7d627cc1f8076a5848">00131</a> <span class="comment"></span>                        <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1poses_1_1_c_point_p_d_f_s_o_g.html#a823136301ea2bd7d627cc1f8076a5848" title="Return whether there is any Gaussian mode.">empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_modes.empty(); } <span class="comment">//!&lt; Return whether there is any Gaussian mode.</span>
<a name="l00132"></a>00132 <span class="comment"></span><span class="comment"></span>
<a name="l00133"></a>00133 <span class="comment">                         /** Returns an estimate of the point, (the mean, or mathematical expectation of the PDF).</span>
<a name="l00134"></a>00134 <span class="comment">                           * \sa getCovariance</span>
<a name="l00135"></a>00135 <span class="comment">                           */</span>
<a name="l00136"></a>00136                         <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="l00137"></a>00137 <span class="comment"></span>
<a name="l00138"></a>00138 <span class="comment">                        /** Returns an estimate of the point covariance matrix (3x3 cov matrix) and the mean, both at once.</span>
<a name="l00139"></a>00139 <span class="comment">                          * \sa getMean</span>
<a name="l00140"></a>00140 <span class="comment">                          */</span>
<a name="l00141"></a>00141                         <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="l00142"></a>00142 <span class="comment"></span>
<a name="l00143"></a>00143 <span class="comment">                        /** Normalize the weights in m_modes such as the maximum log-weight is 0.</span>
<a name="l00144"></a>00144 <span class="comment">                          */</span>
<a name="l00145"></a>00145                         <span class="keywordtype">void</span>  normalizeWeights();
<a name="l00146"></a>00146 <span class="comment"></span>
<a name="l00147"></a>00147 <span class="comment">                        /** Return the Gaussian mode with the highest likelihood (or an empty Gaussian if there are no modes in this SOG) */</span>
<a name="l00148"></a>00148                         <span class="keywordtype">void</span> getMostLikelyMode( <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>&amp; outVal ) <span class="keyword">const</span>;
<a name="l00149"></a>00149 <span class="comment"></span>
<a name="l00150"></a>00150 <span class="comment">                        /** Computes the &quot;Effective sample size&quot; (typical measure for Particle Filters), applied to the weights of the individual Gaussian modes, as a measure of the equality of the modes (in the range [0,total # of modes]).</span>
<a name="l00151"></a>00151 <span class="comment">                          */</span>
<a name="l00152"></a>00152                         <span class="keywordtype">double</span> ESS() <span class="keyword">const</span>;
<a name="l00153"></a>00153 <span class="comment"></span>
<a name="l00154"></a>00154 <span class="comment">                        /** Copy operator, translating if necesary (for example, between particles and gaussian representations)</span>
<a name="l00155"></a>00155 <span class="comment">                          */</span>
<a name="l00156"></a>00156                         <span class="keywordtype">void</span>  copyFrom(<span class="keyword">const</span> CPointPDF &amp;o);
<a name="l00157"></a>00157 <span class="comment"></span>
<a name="l00158"></a>00158 <span class="comment">                        /** Save the density to a text file, with the following format:</span>
<a name="l00159"></a>00159 <span class="comment">                          *  There is one row per Gaussian &quot;mode&quot;, and each row contains 10 elements:</span>
<a name="l00160"></a>00160 <span class="comment">                          *   - w (The weight)</span>
<a name="l00161"></a>00161 <span class="comment">                          *   - x_mean (gaussian mean value)</span>
<a name="l00162"></a>00162 <span class="comment">                          *   - y_mean (gaussian mean value)</span>
<a name="l00163"></a>00163 <span class="comment">                          *   - x_mean (gaussian mean value)</span>
<a name="l00164"></a>00164 <span class="comment">                          *   - C11 (Covariance elements)</span>
<a name="l00165"></a>00165 <span class="comment">                          *   - C22 (Covariance elements)</span>
<a name="l00166"></a>00166 <span class="comment">                          *   - C33 (Covariance elements)</span>
<a name="l00167"></a>00167 <span class="comment">                          *   - C12 (Covariance elements)</span>
<a name="l00168"></a>00168 <span class="comment">                          *   - C13 (Covariance elements)</span>
<a name="l00169"></a>00169 <span class="comment">                          *   - C23 (Covariance elements)</span>
<a name="l00170"></a>00170 <span class="comment">                          *</span>
<a name="l00171"></a>00171 <span class="comment">                         */</span>
<a name="l00172"></a>00172                         <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="l00173"></a>00173 <span class="comment"></span>
<a name="l00174"></a>00174 <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="l00175"></a>00175 <span class="comment">                          *   &quot;to project&quot; the current pdf. Result PDF substituted the currently stored one in the object.</span>
<a name="l00176"></a>00176 <span class="comment">                          */</span>
<a name="l00177"></a>00177                         <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="l00178"></a>00178 <span class="comment"></span>
<a name="l00179"></a>00179 <span class="comment">                        /** Draw a sample from the pdf.</span>
<a name="l00180"></a>00180 <span class="comment">                          */</span>
<a name="l00181"></a>00181                         <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="l00182"></a>00182 <span class="comment"></span>
<a name="l00183"></a>00183 <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="l00184"></a>00184 <span class="comment">                          * \param p1 The first distribution to fuse</span>
<a name="l00185"></a>00185 <span class="comment">                          * \param p2 The second distribution to fuse</span>
<a name="l00186"></a>00186 <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="l00187"></a>00187 <span class="comment">                          */</span>
<a name="l00188"></a>00188                         <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="l00189"></a>00189 
<a name="l00190"></a>00190 <span class="comment"></span>
<a name="l00191"></a>00191 <span class="comment">                        /** Evaluates the PDF within a rectangular grid and saves the result in a matrix (each row contains values for a fixed y-coordinate value).</span>
<a name="l00192"></a>00192 <span class="comment">                          */</span>
<a name="l00193"></a>00193                         <span class="keywordtype">void</span>  evaluatePDFInArea(
<a name="l00194"></a>00194                                 <span class="keywordtype">float</span>           x_min,
<a name="l00195"></a>00195                                 <span class="keywordtype">float</span>           x_max,
<a name="l00196"></a>00196                                 <span class="keywordtype">float</span>           y_min,
<a name="l00197"></a>00197                                 <span class="keywordtype">float</span>           y_max,
<a name="l00198"></a>00198                                 <span class="keywordtype">float</span>           resolutionXY,
<a name="l00199"></a>00199                                 <span class="keywordtype">float</span>           z,
<a name="l00200"></a>00200                                 <a class="code" href="classmrpt_1_1math_1_1_c_matrix_d.html" title="This class is a &quot;CSerializable&quot; wrapper for &quot;CMatrixTemplateNumeric&lt;double&gt;&quot;.">CMatrixD</a>        &amp;outMatrix,
<a name="l00201"></a>00201                                 <span class="keywordtype">bool</span>            sumOverAllZs = <span class="keyword">false</span> );
<a name="l00202"></a>00202 <span class="comment"></span>
<a name="l00203"></a>00203 <span class="comment">                        /** Evaluates the PDF at a given point.</span>
<a name="l00204"></a>00204 <span class="comment">                          */</span>
<a name="l00205"></a>00205                         <span class="keywordtype">double</span>  evaluatePDF(
<a name="l00206"></a>00206                                 <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;x,
<a name="l00207"></a>00207                                 <span class="keywordtype">bool</span>    sumOverAllZs ) <span class="keyword">const</span>;
<a name="l00208"></a>00208 
<a name="l00209"></a>00209 
<a name="l00210"></a>00210                 }; <span class="comment">// End of class def.</span>
<a name="l00211"></a>00211 
<a name="l00212"></a>00212 
<a name="l00213"></a>00213         } <span class="comment">// End of namespace</span>
<a name="l00214"></a>00214 } <span class="comment">// End of namespace</span>
<a name="l00215"></a>00215 
<a name="l00216"></a>00216 <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>