Sophie

Sophie

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

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>CPoses2DSequence.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">CPoses2DSequence.h</div>  </div>
</div>
<div class="contents">
<a href="_c_poses2_d_sequence_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 CPoses2DSequence_H</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define CPoses2DSequence_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_pose2_d_8h.html">mrpt/poses/CPose2D.h</a>&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="_c_serializable_8h.html">mrpt/utils/CSerializable.h</a>&gt;</span>
<a name="l00033"></a>00033 
<a name="l00034"></a>00034 <span class="keyword">namespace </span>mrpt
<a name="l00035"></a>00035 {
<a name="l00036"></a>00036 <span class="keyword">namespace </span>poses
<a name="l00037"></a>00037 {
<a name="l00038"></a>00038 
<a name="l00039"></a>00039         <span class="comment">// This must be added to any CSerializable derived class:</span>
<a name="l00040"></a><a class="code" href="structmrpt_1_1poses_1_1_c_poses2_d_sequence_ptr.html#a86a559a0de30fda3923df3bd936ac2f7">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_poses2_d_sequence.html" title="This class stores a sequence of relative, incremental 2D poses.">CPoses2DSequence</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 name="l00041"></a>00041 
<a name="l00042"></a>00042         <span class="comment">/** This class stores a sequence of relative, incremental 2D poses. It is useful as the bases storing unit for more complex probability particles and for computing the absolute pose of any intermediate pose.</span>
<a name="l00043"></a>00043 <span class="comment">         *</span>
<a name="l00044"></a>00044 <span class="comment">         * \sa CPose2D, CMultiMetricMap</span>
<a name="l00045"></a>00045 <span class="comment">         * \ingroup poses_grp</span>
<a name="l00046"></a>00046 <span class="comment">         */</span>
<a name="l00047"></a>00047         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_poses2_d_sequence.html" title="This class stores a sequence of relative, incremental 2D poses.">CPoses2DSequence</a> : public mrpt::utils::<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...">CSerializable</a>
<a name="l00048"></a>00048         {
<a name="l00049"></a>00049                 <span class="comment">// This must be added to any CSerializable derived class:</span>
<a name="l00050"></a><a class="code" href="classmrpt_1_1poses_1_1_c_poses2_d_sequence.html#a8b9521c588dec39d5ec7bf0db99a5b84">00050</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_poses2_d_sequence.html" title="This class stores a sequence of relative, incremental 2D poses.">CPoses2DSequence</a> )
<a name="l00051"></a>00051         public:<span class="comment"></span>
<a name="l00052"></a>00052 <span class="comment">                /** Default constructor</span>
<a name="l00053"></a>00053 <span class="comment">                 */</span>
<a name="l00054"></a>00054                 <a class="code" href="classmrpt_1_1poses_1_1_c_poses2_d_sequence.html" title="This class stores a sequence of relative, incremental 2D poses.">CPoses2DSequence</a>();
<a name="l00055"></a>00055 <span class="comment"></span>
<a name="l00056"></a>00056 <span class="comment">                /** Returns the poses count in the sequence:</span>
<a name="l00057"></a>00057 <span class="comment">                 */</span>
<a name="l00058"></a>00058                 <span class="keywordtype">size_t</span>   posesCount();
<a name="l00059"></a>00059 <span class="comment"></span>
<a name="l00060"></a>00060 <span class="comment">                /** Reads the stored pose at index &quot;ind&quot;, where the first one is 0, the last &quot;posesCount() - 1&quot;</span>
<a name="l00061"></a>00061 <span class="comment">                 * \exception std::exception On invalid index value</span>
<a name="l00062"></a>00062 <span class="comment">                 */</span>
<a name="l00063"></a>00063                 <span class="keywordtype">void</span>  getPose(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ind, <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;outPose);
<a name="l00064"></a>00064 <span class="comment"></span>
<a name="l00065"></a>00065 <span class="comment">                /** Changes the stored pose at index &quot;ind&quot;, where the first one is 0, the last &quot;posesCount() - 1&quot;</span>
<a name="l00066"></a>00066 <span class="comment">                 * \exception std::exception On invalid index value</span>
<a name="l00067"></a>00067 <span class="comment">                 */</span>
<a name="l00068"></a>00068                 <span class="keywordtype">void</span>  changePose(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ind, <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;inPose);
<a name="l00069"></a>00069 <span class="comment"></span>
<a name="l00070"></a>00070 <span class="comment">                /** Appends a new pose at the end of sequence. Remember that poses are relative, incremental to the last one.</span>
<a name="l00071"></a>00071 <span class="comment">                 */</span>
<a name="l00072"></a>00072                 <span class="keywordtype">void</span>  appendPose(<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;newPose);
<a name="l00073"></a>00073 <span class="comment"></span>
<a name="l00074"></a>00074 <span class="comment">                /** Clears the sequence.</span>
<a name="l00075"></a>00075 <span class="comment">                 */</span>
<a name="l00076"></a>00076                 <span class="keywordtype">void</span>  clear();
<a name="l00077"></a>00077 <span class="comment"></span>
<a name="l00078"></a>00078 <span class="comment">                /** Returns the absolute pose of a robot after moving &quot;n&quot; poses, so for &quot;n=0&quot; the origin pose (0,0,0deg) is returned, for &quot;n=1&quot; the first pose is returned, and for &quot;n=posesCount()&quot;, the pose</span>
<a name="l00079"></a>00079 <span class="comment">                 *  of robot after moving ALL poses is returned, all of them relative to the starting pose.</span>
<a name="l00080"></a>00080 <span class="comment">                 * \exception std::exception On invalid index value</span>
<a name="l00081"></a>00081 <span class="comment">                 * \sa absolutePoseAfterAll</span>
<a name="l00082"></a>00082 <span class="comment">                 */</span>
<a name="l00083"></a>00083                 <a class="code" href="classmrpt_1_1poses_1_1_c_pose2_d.html" title="A class used to store a 2D pose.">CPose2D</a>  absolutePoseOf(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
<a name="l00084"></a>00084 <span class="comment"></span>
<a name="l00085"></a>00085 <span class="comment">                /** A shortcut for &quot;absolutePoseOf( posesCount() )&quot;.</span>
<a name="l00086"></a>00086 <span class="comment">                 * \sa absolutePoseOf, posesCount</span>
<a name="l00087"></a>00087 <span class="comment">                 */</span>
<a name="l00088"></a>00088                 <a class="code" href="classmrpt_1_1poses_1_1_c_pose2_d.html" title="A class used to store a 2D pose.">CPose2D</a>  absolutePoseAfterAll();
<a name="l00089"></a>00089 <span class="comment"></span>
<a name="l00090"></a>00090 <span class="comment">                /** Returns the traveled distance after moving &quot;n&quot; poses, so for &quot;n=0&quot; it returns 0, for &quot;n=1&quot; the first traveled distance, and for &quot;n=posesCount()&quot;, the total</span>
<a name="l00091"></a>00091 <span class="comment">                 *  distance after ALL movements.</span>
<a name="l00092"></a>00092 <span class="comment">                 * \exception std::exception On invalid index value</span>
<a name="l00093"></a>00093 <span class="comment">                 * \sa computeTraveledDistanceAfterAll</span>
<a name="l00094"></a>00094 <span class="comment">                 */</span>
<a name="l00095"></a>00095                 <span class="keywordtype">float</span>  computeTraveledDistanceAfter(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n);
<a name="l00096"></a>00096 <span class="comment"></span>
<a name="l00097"></a>00097 <span class="comment">                /** Returns the traveled distance after ALL movements.</span>
<a name="l00098"></a>00098 <span class="comment">                 *   A shortcut for &quot;computeTraveledDistanceAfter( posesCount() )&quot;.</span>
<a name="l00099"></a>00099 <span class="comment">                 * \sa computeTraveledDistanceAfter</span>
<a name="l00100"></a>00100 <span class="comment">                 */</span>
<a name="l00101"></a>00101                 <span class="keywordtype">float</span>  computeTraveledDistanceAfterAll();
<a name="l00102"></a>00102 
<a name="l00103"></a>00103         private:<span class="comment"></span>
<a name="l00104"></a>00104 <span class="comment">                /** The internal sequence of poses, stored as relative, incremental poses, thus each one is situated just at the end point of last one, where the first one is referenced to (0,0,0deg)</span>
<a name="l00105"></a>00105 <span class="comment">                 */</span>
<a name="l00106"></a><a class="code" href="classmrpt_1_1poses_1_1_c_poses2_d_sequence.html#ac5445b16d1b5af70fac05b1f518f4e38">00106</a>                 mrpt::<a class="code" href="structmrpt_1_1aligned__containers.html" title="Helper types for STL containers with Eigen memory allocators.">aligned_containers</a>&lt;<a class="code" href="classmrpt_1_1poses_1_1_c_pose2_d.html" title="A class used to store a 2D pose.">CPose2D</a>&gt;::vector_t     poses;
<a name="l00107"></a>00107 
<a name="l00108"></a>00108         }; <span class="comment">// End of class def.</span>
<a name="l00109"></a>00109 
<a name="l00110"></a>00110 
<a name="l00111"></a>00111         } <span class="comment">// End of namespace</span>
<a name="l00112"></a>00112 } <span class="comment">// End of namespace</span>
<a name="l00113"></a>00113 
<a name="l00114"></a>00114 <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>