Sophie

Sophie

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

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>CPose3DInterpolator.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">CPose3DInterpolator.h</div>  </div>
</div>
<div class="contents">
<a href="_c_pose3_d_interpolator_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 CPose3DInterpolator_H</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define CPose3DInterpolator_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_pose_8h.html">mrpt/poses/CPose.h</a>&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="_c_pose3_d_8h.html">mrpt/poses/CPose3D.h</a>&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="_c_point3_d_8h.html">mrpt/poses/CPoint3D.h</a>&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;<a class="code" href="os_8h.html">mrpt/system/os.h</a>&gt;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;<a class="code" href="stl__extensions_8h.html">mrpt/utils/stl_extensions.h</a>&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;<a class="code" href="_t_enum_type_8h.html">mrpt/utils/TEnumType.h</a>&gt;</span>
<a name="l00037"></a>00037 
<a name="l00038"></a>00038 <span class="keyword">namespace </span>mrpt
<a name="l00039"></a>00039 {
<a name="l00040"></a>00040         <span class="keyword">namespace </span>poses
<a name="l00041"></a>00041         {
<a name="l00042"></a><a class="code" href="structmrpt_1_1poses_1_1_c_pose3_d_interpolator_ptr.html#a5399f1aabc68ff4e137f0870e5d6ce5f">00042</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_pose3_d_interpolator.html" title="A trajectory in time and in 6D (CPose3D) that interpolates using splines the intervals between a set ...">CPose3DInterpolator</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="l00043"></a>00043 
<a name="l00044"></a><a class="code" href="namespacemrpt_1_1poses.html#a4a47f8bfb8f6f73ed95bb88a9cb3e0b5">00044</a>                 typedef std::pair&lt;mrpt::system::<a class="code" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a" title="A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...">TTimeStamp</a>, mrpt::poses::<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>&gt; <a class="code" href="namespacemrpt_1_1poses.html#a4a47f8bfb8f6f73ed95bb88a9cb3e0b5">TTimePosePair</a>;
<a name="l00045"></a>00045 <span class="comment"></span>
<a name="l00046"></a>00046 <span class="comment">                /** A trajectory in time and in 6D (CPose3D) that interpolates using splines the intervals between a set of given time-referenced poses.</span>
<a name="l00047"></a>00047 <span class="comment">                  *   To insert new points into the sequence, use the &quot;insert&quot; method, and for getting an interpolated point, use &quot;interpolate&quot; method. For example:</span>
<a name="l00048"></a>00048 <span class="comment">                  * \code</span>
<a name="l00049"></a>00049 <span class="comment">                  * CPose3DInterpolator         path;</span>
<a name="l00050"></a>00050 <span class="comment">                  *</span>
<a name="l00051"></a>00051 <span class="comment">                  * path.setInterpolationMethod( CPose3DInterpolator::imSplineSlerp );</span>
<a name="l00052"></a>00052 <span class="comment">                  *</span>
<a name="l00053"></a>00053 <span class="comment">                  * path.insert( t0, CPose3D(...) );</span>
<a name="l00054"></a>00054 <span class="comment">                  * path.insert( t1, CPose3D(...) );</span>
<a name="l00055"></a>00055 <span class="comment">                  * path.insert( t2, CPose3D(...) );</span>
<a name="l00056"></a>00056 <span class="comment">                  * path.insert( t3, CPose3D(...) );</span>
<a name="l00057"></a>00057 <span class="comment">                  *</span>
<a name="l00058"></a>00058 <span class="comment">                  * CPose3D p;</span>
<a name="l00059"></a>00059 <span class="comment">                  * bool valid;</span>
<a name="l00060"></a>00060 <span class="comment">                  *</span>
<a name="l00061"></a>00061 <span class="comment">                  * cout &lt;&lt; &quot;Pose at t: &quot; &lt;&lt; path.interpolate(t,p,valid) &lt;&lt; endl;</span>
<a name="l00062"></a>00062 <span class="comment">                  * \endcode</span>
<a name="l00063"></a>00063 <span class="comment">                  *</span>
<a name="l00064"></a>00064 <span class="comment">                  *  Time is represented with mrpt::system::TTimeStamp. See mrpt::system for methods and utilities to manage these time references.</span>
<a name="l00065"></a>00065 <span class="comment">                  *</span>
<a name="l00066"></a>00066 <span class="comment">                  *  See TInterpolatorMethod for the list of interpolation methods. The default method at constructor is &quot;imLinearSlerp&quot;.</span>
<a name="l00067"></a>00067 <span class="comment">                  *</span>
<a name="l00068"></a>00068 <span class="comment">                  * \sa CPoseOrPoint</span>
<a name="l00069"></a>00069 <span class="comment">                 * \ingroup interpolation_grp poses_grp</span>
<a name="l00070"></a>00070 <span class="comment">                 */</span>
<a name="l00071"></a>00071                 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_pose3_d_interpolator.html" title="A trajectory in time and in 6D (CPose3D) that interpolates using splines the intervals between a set ...">CPose3DInterpolator</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="l00072"></a>00072                 {
<a name="l00073"></a>00073                         <span class="comment">// This must be added to any CSerializable derived class:</span>
<a name="l00074"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9ba723232f1b298cf6fd1a1a82e78ebc">00074</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_pose3_d_interpolator.html" title="A trajectory in time and in 6D (CPose3D) that interpolates using splines the intervals between a set ...">CPose3DInterpolator</a> )
<a name="l00075"></a>00075 
<a name="l00076"></a>00076                  private:
<a name="l00077"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a559b47480ce53f911abc73b60ce67bbd">00077</a>                          typedef std::<a class="code" href="classstd_1_1map.html" title="STL class.">map</a>&lt; mrpt::system::TTimeStamp, <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> &gt; <a class="code" href="classstd_1_1map.html">TPath</a>;
<a name="l00078"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#af0cac180f1be767ab4a04faf77d18680">00078</a>                          TPath  m_path;         <span class="comment">//!&lt; The sequence of poses</span>
<a name="l00079"></a>00079 <span class="comment"></span>
<a name="l00080"></a>00080                  public:
<a name="l00081"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">00081</a>                          typedef TPath::<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">iterator</a>                <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">iterator</a>;
<a name="l00082"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a56e6af2a96e7e9162ad2de408d239446">00082</a>                          typedef TPath::<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a56e6af2a96e7e9162ad2de408d239446">const_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a56e6af2a96e7e9162ad2de408d239446">const_iterator</a>;
<a name="l00083"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a87e836023fbeb444b8cff1cf4051b34d">00083</a>                          typedef TPath::<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a87e836023fbeb444b8cff1cf4051b34d">reverse_iterator</a>                <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a87e836023fbeb444b8cff1cf4051b34d">reverse_iterator</a>;
<a name="l00084"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9238fc4c1fa5931e6eae624d9ac00d58">00084</a>                          typedef TPath::<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9238fc4c1fa5931e6eae624d9ac00d58">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9238fc4c1fa5931e6eae624d9ac00d58">const_reverse_iterator</a>;
<a name="l00085"></a>00085 <span class="comment"></span>
<a name="l00086"></a>00086 <span class="comment">                         /** Type to select the interpolation method in CPose3DInterpolator::setInterpolationMethod</span>
<a name="l00087"></a>00087 <span class="comment">                           *  - imSpline: Spline interpolation using 4 points (2 before + 2 after the query point).</span>
<a name="l00088"></a>00088 <span class="comment">                           *  - imLinear2Neig: Linear interpolation between the previous and next neightbour.</span>
<a name="l00089"></a>00089 <span class="comment">                           *  - imLinear4Neig: Linear interpolation using the linear fit of the 4 closer points (2 before + 2 after the query point).</span>
<a name="l00090"></a>00090 <span class="comment">                           *  - imSSLLLL : Use Spline for X and Y, and Linear Least squares for Z, yaw, pitch and roll.</span>
<a name="l00091"></a>00091 <span class="comment">                           *  - imSSLSLL : Use Spline for X, Y and yaw, and Linear Lesat squares for Z, pitch and roll.</span>
<a name="l00092"></a>00092 <span class="comment">                           *  - imLinearSlerp: Linear for X,Y,Z, Slerp for 3D angles.</span>
<a name="l00093"></a>00093 <span class="comment">                           *  - imSplineSlerp: Spline for X,Y,Z, Slerp for 3D angles.</span>
<a name="l00094"></a>00094 <span class="comment">                           */</span>
<a name="l00095"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584">00095</a>                          enum <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584" title="Type to select the interpolation method in CPose3DInterpolator::setInterpolationMethod.">TInterpolatorMethod</a>
<a name="l00096"></a>00096                          {
<a name="l00097"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a340b63b49f19c72f4f35c9d9dcfa4672">00097</a>                                 imSpline = 0,
<a name="l00098"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a14fcdfae931785af4fd2638ad0912b65">00098</a>                                 <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a14fcdfae931785af4fd2638ad0912b65">imLinear2Neig</a>,
<a name="l00099"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a90d6629cd5179ca20a7366bb1aac71d2">00099</a>                                 <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a90d6629cd5179ca20a7366bb1aac71d2">imLinear4Neig</a>,
<a name="l00100"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a584d09f07187a1ab0f16bb79913cdaf5">00100</a>                                 <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a584d09f07187a1ab0f16bb79913cdaf5">imSSLLLL</a>,
<a name="l00101"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a737dfcb7039010e1811350fc9ee35812">00101</a>                                 <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a737dfcb7039010e1811350fc9ee35812">imSSLSLL</a>,
<a name="l00102"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a72112a3d8de3fa9da6c2465b7293d31b">00102</a>                                 <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a72112a3d8de3fa9da6c2465b7293d31b">imLinearSlerp</a>,
<a name="l00103"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a86ccc6b8f27dcc2c56d383db4e254c00">00103</a>                                 imSplineSlerp
<a name="l00104"></a>00104                          };
<a name="l00105"></a>00105 
<a name="l00106"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a2fd6481264cbb8f47086297392127dd7">00106</a>                          <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a2fd6481264cbb8f47086297392127dd7">begin</a>() { <span class="keywordflow">return</span> m_path.begin(); }
<a name="l00107"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#afd7fe71ca280f2315eefeef695827a65">00107</a>                          <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a56e6af2a96e7e9162ad2de408d239446">const_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#afd7fe71ca280f2315eefeef695827a65">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_path.begin(); }
<a name="l00108"></a>00108 
<a name="l00109"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#ab8f7536588ae23e34397be2b8c18da64">00109</a>                          <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#ab8f7536588ae23e34397be2b8c18da64">end</a>() { <span class="keywordflow">return</span> m_path.end(); }
<a name="l00110"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#aa2f23455e2e647b16e8cae78f2317d23">00110</a>                          <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a56e6af2a96e7e9162ad2de408d239446">const_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#aa2f23455e2e647b16e8cae78f2317d23">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_path.end(); }
<a name="l00111"></a>00111 
<a name="l00112"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a18d252f0878f9ac1de62127e9a8e146e">00112</a>                          <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a87e836023fbeb444b8cff1cf4051b34d">reverse_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a18d252f0878f9ac1de62127e9a8e146e">rbegin</a>() { <span class="keywordflow">return</span> m_path.rbegin(); }
<a name="l00113"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#ad6900d006d8ab089121a8212560282c4">00113</a>                          <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9238fc4c1fa5931e6eae624d9ac00d58">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#ad6900d006d8ab089121a8212560282c4">rbegin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_path.rbegin(); }
<a name="l00114"></a>00114 
<a name="l00115"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#affcb1d45089b28d399b236032915c904">00115</a>                          <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a87e836023fbeb444b8cff1cf4051b34d">reverse_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#affcb1d45089b28d399b236032915c904">rend</a>() { <span class="keywordflow">return</span> m_path.rend(); }
<a name="l00116"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a6810dfdabd95eff39d148d00ef562062">00116</a>                          <span class="keyword">inline</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9238fc4c1fa5931e6eae624d9ac00d58">const_reverse_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a6810dfdabd95eff39d148d00ef562062">rend</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_path.rend(); }
<a name="l00117"></a>00117 
<a name="l00118"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#aad10a00f10038d9309cddae5835c8558">00118</a>                          <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#aad10a00f10038d9309cddae5835c8558">lower_bound</a>( <span class="keyword">const</span> <a class="code" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a" title="A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...">mrpt::system::TTimeStamp</a> &amp; <a class="code" href="eigen__plugins_8h.html#a7b88b312dc3827120dbfc60da344625d" title="Transpose.">t</a>) { <span class="keywordflow">return</span> m_path.lower_bound(t); }
<a name="l00119"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a68450804a7ff27a9d01b4e265c915b19">00119</a>                          <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a56e6af2a96e7e9162ad2de408d239446">const_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a68450804a7ff27a9d01b4e265c915b19">lower_bound</a>( <span class="keyword">const</span> <a class="code" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a" title="A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...">mrpt::system::TTimeStamp</a> &amp; <a class="code" href="eigen__plugins_8h.html#a7b88b312dc3827120dbfc60da344625d" title="Transpose.">t</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_path.lower_bound(t); }
<a name="l00120"></a>00120 
<a name="l00121"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a369556f43106fe2441a17b819dac6815">00121</a>                          <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a369556f43106fe2441a17b819dac6815">upper_bound</a>( <span class="keyword">const</span> <a class="code" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a" title="A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...">mrpt::system::TTimeStamp</a> &amp; <a class="code" href="eigen__plugins_8h.html#a7b88b312dc3827120dbfc60da344625d" title="Transpose.">t</a>) { <span class="keywordflow">return</span> m_path.upper_bound(t); }
<a name="l00122"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a34051da02a401bf82b9d3a7c773812b4">00122</a>                          <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a56e6af2a96e7e9162ad2de408d239446">const_iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a34051da02a401bf82b9d3a7c773812b4">upper_bound</a>( <span class="keyword">const</span> <a class="code" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a" title="A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...">mrpt::system::TTimeStamp</a> &amp; <a class="code" href="eigen__plugins_8h.html#a7b88b312dc3827120dbfc60da344625d" title="Transpose.">t</a>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_path.upper_bound(t); }
<a name="l00123"></a>00123 
<a name="l00124"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#aa324a25ae9c94658c75357f010aab352">00124</a>                          <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">iterator</a> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#aa324a25ae9c94658c75357f010aab352">erase</a>(<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a9380569d7fb62636eba7137f2eb03b4a">iterator</a> element_to_erase) { m_path.erase(element_to_erase++); <span class="keywordflow">return</span> element_to_erase; }
<a name="l00125"></a>00125 
<a name="l00126"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a66dcf3c769deb8bd13fd34a491734a01">00126</a>                          <span class="keywordtype">size_t</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a66dcf3c769deb8bd13fd34a491734a01">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_path.size(); }
<a name="l00127"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a86348b6c3294a19bcc439cee08fddf12">00127</a>                          <span class="keywordtype">bool</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a86348b6c3294a19bcc439cee08fddf12">empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_path.empty(); }
<a name="l00128"></a>00128 <span class="comment"></span>
<a name="l00129"></a>00129 <span class="comment">                         /** Creates an empty interpolator (with no points).</span>
<a name="l00130"></a>00130 <span class="comment">                          */</span>
<a name="l00131"></a>00131                          <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html" title="A trajectory in time and in 6D (CPose3D) that interpolates using splines the intervals between a set ...">CPose3DInterpolator</a>();
<a name="l00132"></a>00132 <span class="comment"></span>
<a name="l00133"></a>00133 <span class="comment">                         /** Inserts a new pose in the sequence.</span>
<a name="l00134"></a>00134 <span class="comment">                           *  It overwrites any previously existing pose at exactly the same time.</span>
<a name="l00135"></a>00135 <span class="comment">                           */</span>
<a name="l00136"></a>00136                          <span class="keywordtype">void</span> insert( <a class="code" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a" title="A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...">mrpt::system::TTimeStamp</a> <a class="code" href="eigen__plugins_8h.html#a7b88b312dc3827120dbfc60da344625d" title="Transpose.">t</a>, <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;p);
<a name="l00137"></a>00137 <span class="comment"></span>
<a name="l00138"></a>00138 <span class="comment">                         /** Returns the pose at a given time, or interpolates using splines if there is not an exact match.</span>
<a name="l00139"></a>00139 <span class="comment">                           * \param t The time of the point to interpolate.</span>
<a name="l00140"></a>00140 <span class="comment">                           * \param out_interp The output interpolated pose.</span>
<a name="l00141"></a>00141 <span class="comment">                           * \param out_valid_interp Whether there was information enough to compute the interpolation.</span>
<a name="l00142"></a>00142 <span class="comment">                           * \return A reference to out_interp</span>
<a name="l00143"></a>00143 <span class="comment">                           */</span>
<a name="l00144"></a>00144                          <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;<a class="code" href="group__interpolation__grp.html#gaeb1c0badda6737f8362ce902e10961dc" title="Interpolate a data sequence &quot;ys&quot; ranging from &quot;x0&quot; to &quot;x1&quot; (equally spaced), to obtain the approximat...">interpolate</a>( <a class="code" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a" title="A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...">mrpt::system::TTimeStamp</a> <a class="code" href="eigen__plugins_8h.html#a7b88b312dc3827120dbfc60da344625d" title="Transpose.">t</a>, <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;out_interp, <span class="keywordtype">bool</span> &amp;out_valid_interp ) <span class="keyword">const</span>;
<a name="l00145"></a>00145 <span class="comment"></span>
<a name="l00146"></a>00146 <span class="comment">                         /** Clears the current sequence of poses */</span>
<a name="l00147"></a>00147                          <span class="keywordtype">void</span> clear();
<a name="l00148"></a>00148 <span class="comment"></span>
<a name="l00149"></a>00149 <span class="comment">                         /** Set value of the maximum time to consider interpolation.</span>
<a name="l00150"></a>00150 <span class="comment">                           *  If set to a negative value, the check is disabled (default behavior).</span>
<a name="l00151"></a>00151 <span class="comment">                           */</span>
<a name="l00152"></a>00152                          <span class="keywordtype">void</span> setMaxTimeInterpolation( <span class="keywordtype">double</span> time );
<a name="l00153"></a>00153 <span class="comment"></span>
<a name="l00154"></a>00154 <span class="comment">                         /** Set value of the maximum time to consider interpolation */</span>
<a name="l00155"></a>00155                          <span class="keywordtype">double</span> getMaxTimeInterpolation( );
<a name="l00156"></a>00156 <span class="comment"></span>
<a name="l00157"></a>00157 <span class="comment">                         /** Get the previous CPose3D in the map with a minimum defined distance</span>
<a name="l00158"></a>00158 <span class="comment">                           * \return true if pose was found, false otherwise.</span>
<a name="l00159"></a>00159 <span class="comment">                           */</span>
<a name="l00160"></a>00160                          <span class="keywordtype">bool</span> getPreviousPoseWithMinDistance( <span class="keyword">const</span> <a class="code" href="group__time__date.html#ga42674286d8d56afea013b6329bb7327a" title="A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...">mrpt::system::TTimeStamp</a> &amp;<a class="code" href="eigen__plugins_8h.html#a7b88b312dc3827120dbfc60da344625d" title="Transpose.">t</a>, <span class="keywordtype">double</span> <a class="code" href="group__geometry__grp.html#ga8c0a76e906f12560cfa49fcd269c8398" title="Gets the distance between two points in a 2D space.">distance</a>, <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;out_pose );
<a name="l00161"></a>00161 <span class="comment"></span>
<a name="l00162"></a>00162 <span class="comment">                         /** Saves the points in the interpolator to a text file, with this format:</span>
<a name="l00163"></a>00163 <span class="comment">                           *  Each row contains these elements separated by spaces:</span>
<a name="l00164"></a>00164 <span class="comment">                           *    - Timestamp: As a &quot;double time_t&quot; (see mrpt::system::timestampTotime_t).</span>
<a name="l00165"></a>00165 <span class="comment">                           *    - x y z: The 3D position in meters.</span>
<a name="l00166"></a>00166 <span class="comment">                           *    - yaw pitch roll: The angles, in radians</span>
<a name="l00167"></a>00167 <span class="comment">                           * \sa loadFromTextFile</span>
<a name="l00168"></a>00168 <span class="comment">                           * \return true on success, false on any error.</span>
<a name="l00169"></a>00169 <span class="comment">                           */</span>
<a name="l00170"></a>00170                          <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>(<span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;s) <span class="keyword">const</span>;
<a name="l00171"></a>00171 <span class="comment"></span>
<a name="l00172"></a>00172 <span class="comment">                         /** Saves the points in the interpolator to a text file, with the same format that saveToTextFile, but interpolating the path with the given period in seconds.</span>
<a name="l00173"></a>00173 <span class="comment">                           * \sa loadFromTextFile</span>
<a name="l00174"></a>00174 <span class="comment">                           * \return true on success, false on any error.</span>
<a name="l00175"></a>00175 <span class="comment">                           */</span>
<a name="l00176"></a>00176                          <span class="keywordtype">bool</span> saveInterpolatedToTextFile(<span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;s, <span class="keywordtype">double</span> period) <span class="keyword">const</span>;
<a name="l00177"></a>00177 <span class="comment"></span>
<a name="l00178"></a>00178 <span class="comment">                         /** Loads from a text file, in the format described by saveToTextFile.</span>
<a name="l00179"></a>00179 <span class="comment">                           * \return true on success, false on any error.</span>
<a name="l00180"></a>00180 <span class="comment">                           * \exception std::exception On invalid file format</span>
<a name="l00181"></a>00181 <span class="comment">                           */</span>
<a name="l00182"></a>00182                          <span class="keywordtype">bool</span> <a class="code" href="eigen__plugins_8h.html#ad3c68c35368d8a0254192e3c34ea5f61" title="Load matrix from a text file, compatible with MATLAB text format.">loadFromTextFile</a>(<span class="keyword">const</span> <a class="code" href="classstd_1_1string.html" title="STL class.">std::string</a> &amp;s);
<a name="l00183"></a>00183 <span class="comment"></span>
<a name="l00184"></a>00184 <span class="comment">                         /**  Computes the bounding box in X,Y,Z of the whole vehicle path.</span>
<a name="l00185"></a>00185 <span class="comment">                           * \exception std::exception On empty path</span>
<a name="l00186"></a>00186 <span class="comment">                           */</span>
<a name="l00187"></a>00187                          <span class="keywordtype">void</span> getBoundingBox(<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;minCorner, <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;maxCorner) <span class="keyword">const</span>;
<a name="l00188"></a>00188 <span class="comment"></span>
<a name="l00189"></a>00189 <span class="comment">                         /**  Computes the bounding box in X,Y,Z of the whole vehicle path.</span>
<a name="l00190"></a>00190 <span class="comment">                           * \exception std::exception On empty path</span>
<a name="l00191"></a>00191 <span class="comment">                           */</span>
<a name="l00192"></a>00192                          <span class="keywordtype">void</span> getBoundingBox(<a class="code" href="structmrpt_1_1math_1_1_t_point3_d.html" title="Lightweight 3D point.">mrpt::math::TPoint3D</a> &amp;minCorner, <a class="code" href="structmrpt_1_1math_1_1_t_point3_d.html" title="Lightweight 3D point.">mrpt::math::TPoint3D</a> &amp;maxCorner) <span class="keyword">const</span>;
<a name="l00193"></a>00193 <span class="comment"></span>
<a name="l00194"></a>00194 <span class="comment">                         /** Change the method used to interpolate the robot path.</span>
<a name="l00195"></a>00195 <span class="comment">                           *  The default method at construction is &quot;imSpline&quot;.</span>
<a name="l00196"></a>00196 <span class="comment">                           * \sa getInterpolationMethod</span>
<a name="l00197"></a>00197 <span class="comment">                           */</span>
<a name="l00198"></a>00198                          <span class="keywordtype">void</span> setInterpolationMethod( TInterpolatorMethod method);
<a name="l00199"></a>00199 <span class="comment"></span>
<a name="l00200"></a>00200 <span class="comment">                         /** Returns the currently set interpolation method.</span>
<a name="l00201"></a>00201 <span class="comment">                           * \sa setInterpolationMethod</span>
<a name="l00202"></a>00202 <span class="comment">                           */</span>
<a name="l00203"></a>00203                          TInterpolatorMethod getInterpolationMethod() <span class="keyword">const</span>;
<a name="l00204"></a>00204 <span class="comment"></span>
<a name="l00205"></a>00205 <span class="comment">                         /** Filters by averaging one of the components of the CPose3D data within the interpolator. The width of the filter is set by the number of samples.</span>
<a name="l00206"></a>00206 <span class="comment">                           * \param component   [IN]    The index of the component to filter: 0 (x), 1 (y), 2 (z), 3 (yaw), 4 (pitch) or 5 (roll).</span>
<a name="l00207"></a>00207 <span class="comment">                           * \param samples             [IN]    The width of the average filter.</span>
<a name="l00208"></a>00208 <span class="comment">                           */</span>
<a name="l00209"></a>00209                          <span class="keywordtype">void</span> filter( <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> component, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> samples );
<a name="l00210"></a>00210 
<a name="l00211"></a>00211 
<a name="l00212"></a>00212                 <span class="keyword">private</span>:
<a name="l00213"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a6bba0d4735fc2d45d3a8f76d3bb59f4b">00213</a>                          <span class="keywordtype">double</span> <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a6bba0d4735fc2d45d3a8f76d3bb59f4b" title="Maximum time considered to interpolate. If the difference between the desired timestamp where to inte...">maxTimeInterpolation</a>; <span class="comment">//!&lt; Maximum time considered to interpolate. If the difference between the desired timestamp where to interpolate and the next timestamp stored in the map is bigger than this value, the interpolation will not be done.</span>
<a name="l00214"></a>00214 <span class="comment"></span>
<a name="l00215"></a><a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a25f2d7dc2cf49359bd8f2202af9ccd92">00215</a>                          <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584" title="Type to select the interpolation method in CPose3DInterpolator::setInterpolationMethod.">TInterpolatorMethod</a>    <a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a25f2d7dc2cf49359bd8f2202af9ccd92">m_method</a>;
<a name="l00216"></a>00216 
<a name="l00217"></a>00217                 }; <span class="comment">// End of class def.</span>
<a name="l00218"></a>00218 
<a name="l00219"></a>00219         } <span class="comment">// End of namespace</span>
<a name="l00220"></a>00220 
<a name="l00221"></a>00221         <span class="comment">// Specializations MUST occur at the same namespace:</span>
<a name="l00222"></a>00222         <span class="keyword">namespace </span>utils
<a name="l00223"></a>00223         {
<a name="l00224"></a>00224                 <span class="keyword">template</span> &lt;&gt;
<a name="l00225"></a>00225                 <span class="keyword">struct </span>TEnumTypeFiller&lt;poses::CPose3DInterpolator::TInterpolatorMethod&gt;
<a name="l00226"></a>00226                 {
<a name="l00227"></a><a class="code" href="structmrpt_1_1utils_1_1_t_enum_type_filler_3_01poses_1_1_c_pose3_d_interpolator_1_1_t_interpolator_method_01_4.html#a2f39d3fadebf93d65d4035f1dcd22be6">00227</a>                         <span class="keyword">typedef</span> poses<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584" title="Type to select the interpolation method in CPose3DInterpolator::setInterpolationMethod.">::CPose3DInterpolator::TInterpolatorMethod</a> <a class="code" href="structmrpt_1_1utils_1_1_t_enum_type_filler_3_01poses_1_1_c_pose3_d_interpolator_1_1_t_interpolator_method_01_4.html#a2f39d3fadebf93d65d4035f1dcd22be6">enum_t</a>;
<a name="l00228"></a><a class="code" href="structmrpt_1_1utils_1_1_t_enum_type_filler_3_01poses_1_1_c_pose3_d_interpolator_1_1_t_interpolator_method_01_4.html#a288784ac149d4dd9444297dd396e2ef2">00228</a>                         <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structmrpt_1_1utils_1_1_t_enum_type_filler.html#a66cd211d6ec5b3247c2613ef8db8cfd1">fill</a>(<a class="code" href="classmrpt_1_1utils_1_1bimap.html" title="A bidirectional version of std::map, declared as bimap&lt;KEY,VALUE&gt; and which actually contains two std::...">bimap&lt;enum_t,std::string&gt;</a>  &amp;m_map)
<a name="l00229"></a>00229                         {
<a name="l00230"></a>00230                                 m_map.<a class="code" href="classmrpt_1_1utils_1_1bimap.html#af21e6b0fcd4c2046adf6e6a9a9b3c997" title="Insert a new pair KEY&lt;-&gt;VALUE in the bi-map.">insert</a>(<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a340b63b49f19c72f4f35c9d9dcfa4672">poses::CPose3DInterpolator::imSpline</a>,          <span class="stringliteral">&quot;imSpline&quot;</span>);
<a name="l00231"></a>00231                                 m_map.<a class="code" href="classmrpt_1_1utils_1_1bimap.html#af21e6b0fcd4c2046adf6e6a9a9b3c997" title="Insert a new pair KEY&lt;-&gt;VALUE in the bi-map.">insert</a>(<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a14fcdfae931785af4fd2638ad0912b65">poses::CPose3DInterpolator::imLinear2Neig</a>,     <span class="stringliteral">&quot;imLinear2Neig&quot;</span>);
<a name="l00232"></a>00232                                 m_map.<a class="code" href="classmrpt_1_1utils_1_1bimap.html#af21e6b0fcd4c2046adf6e6a9a9b3c997" title="Insert a new pair KEY&lt;-&gt;VALUE in the bi-map.">insert</a>(<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a90d6629cd5179ca20a7366bb1aac71d2">poses::CPose3DInterpolator::imLinear4Neig</a>,     <span class="stringliteral">&quot;imLinear4Neig&quot;</span>);
<a name="l00233"></a>00233                                 m_map.<a class="code" href="classmrpt_1_1utils_1_1bimap.html#af21e6b0fcd4c2046adf6e6a9a9b3c997" title="Insert a new pair KEY&lt;-&gt;VALUE in the bi-map.">insert</a>(<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a584d09f07187a1ab0f16bb79913cdaf5">poses::CPose3DInterpolator::imSSLLLL</a>,          <span class="stringliteral">&quot;imSSLLLL&quot;</span>);
<a name="l00234"></a>00234                                 m_map.<a class="code" href="classmrpt_1_1utils_1_1bimap.html#af21e6b0fcd4c2046adf6e6a9a9b3c997" title="Insert a new pair KEY&lt;-&gt;VALUE in the bi-map.">insert</a>(<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a72112a3d8de3fa9da6c2465b7293d31b">poses::CPose3DInterpolator::imLinearSlerp</a>,     <span class="stringliteral">&quot;imLinearSlerp&quot;</span>);
<a name="l00235"></a>00235                                 m_map.<a class="code" href="classmrpt_1_1utils_1_1bimap.html#af21e6b0fcd4c2046adf6e6a9a9b3c997" title="Insert a new pair KEY&lt;-&gt;VALUE in the bi-map.">insert</a>(<a class="code" href="classmrpt_1_1poses_1_1_c_pose3_d_interpolator.html#a4bd1ccff3a4f0cb047f0e27f8a822584a86ccc6b8f27dcc2c56d383db4e254c00">poses::CPose3DInterpolator::imSplineSlerp</a>,     <span class="stringliteral">&quot;imSplineSlerp&quot;</span>);
<a name="l00236"></a>00236                         }
<a name="l00237"></a>00237                 };
<a name="l00238"></a>00238         } <span class="comment">// End of namespace</span>
<a name="l00239"></a>00239 } <span class="comment">// End of namespace</span>
<a name="l00240"></a>00240 
<a name="l00241"></a>00241 <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>