Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 2f6559b7006594cad03af173263c219e > files > 2417

mrpt-doc-0.9.4-0.1.20110110svn2383.fc15.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>The MRPT project: changeLog_doc.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.2 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div 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 id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
          <span 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>
          </span><span class="right"></span>
        </div>
      </li>
    </ul>
  </div>
  <div 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">
<h1>changeLog_doc.h</h1>  </div>
</div>
<div class="contents">
<a href="change_log__doc_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://mrpt.sourceforge.net/                            |</span>
<a name="l00005"></a>00005 <span class="comment">   |                                                                           |</span>
<a name="l00006"></a>00006 <span class="comment">   |   Copyright (C) 2004-2010  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 Perception and Robotics               |</span>
<a name="l00009"></a>00009 <span class="comment">   |      research group, 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="comment"></span>
<a name="l00029"></a>00029 <span class="comment">/** \page changelog Change Log</span>
<a name="l00030"></a>00030 <span class="comment"> *</span>
<a name="l00031"></a>00031 <span class="comment"></span>
<a name="l00032"></a>00032 <span class="comment">&lt;p&gt; &lt;b&gt;Note:&lt;/b&gt; &lt;i&gt;If you are displaying a local version of this page and you have not built the whole HTML documentation, the links above will be broken. Either build the documentation invoking &lt;code&gt;make documentation_html&lt;/code&gt; or browse it on-line &lt;a href=&quot;http://www.mrpt.org/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;</span>
<a name="l00033"></a>00033 <span class="comment"></span>
<a name="l00034"></a>00034 <span class="comment">  &lt;a name=&quot;0.9.4&quot;&gt;</span>
<a name="l00035"></a>00035 <span class="comment">  &lt;h2&gt;Version 0.9.4 - (Version 1.0.0-Release_Candidate_2): UNDER DEVELOPMENT &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00036"></a>00036 <span class="comment">        - Changes in applications:</span>
<a name="l00037"></a>00037 <span class="comment">                - &lt;a href=&quot;http://www.mrpt.org/Application:rawlog-grabber&quot; &gt;rawlog-grabber&lt;/a&gt;: Added &quot;hokuyo_UXM.ini&quot; to support HOKUYO UXM laser series.</span>
<a name="l00038"></a>00038 <span class="comment">        - New classes:</span>
<a name="l00039"></a>00039 <span class="comment">                - mrpt::math::ModelSearch: A RANSAC + Genetic model fitter (by Zoltan Gaal)</span>
<a name="l00040"></a>00040 <span class="comment">        - Build system:</span>
<a name="l00041"></a>00041 <span class="comment">                - Linux/Mac: Don&#39;t enable BUILD_KINECT by default if libusb1-dev is not present. </span>
<a name="l00042"></a>00042 <span class="comment">                - Win64: Fixed building warnings and errors with MSVC9</span>
<a name="l00043"></a>00043 <span class="comment">                - Fixed compiling with MSVC 2005 (Patch by Z.P.Gaal)</span>
<a name="l00044"></a>00044 <span class="comment">                - Fixed compiling under MIPS/SPARC/S930/... due to a bug in Eigen3-beta (patch sent upstream and fixed in local copy).</span>
<a name="l00045"></a>00045 <span class="comment">                - Fixed build errors against latest changes in eigen3 (before their release version).</span>
<a name="l00046"></a>00046 <span class="comment">        - Changes in classes:</span>
<a name="l00047"></a>00047 <span class="comment">                - mrpt::opengl::COpenGLViewport now has a special &quot;image mode&quot; which makes very easy to render images to opengl windows efficiently. See the example &quot;opengl_video_viewport_demo&quot;.</span>
<a name="l00048"></a>00048 <span class="comment">                - Improvement in Kinect Linux driver (libfreenect), avoiding intensive usage of critical sections (Thanks, &quot;Gonzales&quot; - see: http://www.mrpt.org/node/491 )</span>
<a name="l00049"></a>00049 <span class="comment">                - Kinect: Embedded libfreenect library updated to latest GIT revision (12/DEC/2010).</span>
<a name="l00050"></a>00050 <span class="comment">                - mrpt::hwdrivers::CHokuyoURG now support ethernet connection (tested in HOKUYO UXM series)[JRRS].</span>
<a name="l00051"></a>00051 <span class="comment">                - mrpt::slam::CICP has a new option: skip_cov_calculation that can save some time in some cases.</span>
<a name="l00052"></a>00052 <span class="comment">                - mrpt::poses::CPose3D was too strict in checking that the rotation matrix is orthogonal: admisible threshold is now 1 (plus/minus)3e-3.</span>
<a name="l00053"></a>00053 <span class="comment">        - Changes in examples:</span>
<a name="l00054"></a>00054 <span class="comment">                - hokuyo_laser_test. Now it&#39;s possible to choose between USB and Ethernet connection.</span>
<a name="l00055"></a>00055 <span class="comment">        - New examples:</span>
<a name="l00056"></a>00056 <span class="comment">                - opengl_video_demo: A demo of opengl textures from a video stream.</span>
<a name="l00057"></a>00057 <span class="comment">                - opengl_video_viewport_demo: A demonstration of the new viewport &quot;image mode&quot;.</span>
<a name="l00058"></a>00058 <span class="comment">        - BUG FIXES:</span>
<a name="l00059"></a>00059 <span class="comment">                - Octree-based rendering of point cloud didn&#39;t discard all invisible nodes, not doing an optimal rendering.</span>
<a name="l00060"></a>00060 <span class="comment">                - Fixed situations were RTTI registrations were not updated before usage, leading to &quot;uregistered class?&quot; exceptions.</span>
<a name="l00061"></a>00061 <span class="comment">                - Fixed a kind of memory-leak in OpenGL due to the particular way of reserving texture names (seem to only affect some OpenGL implementations, but it&#39;s fixed now).</span>
<a name="l00062"></a>00062 <span class="comment"></span>
<a name="l00063"></a>00063 <span class="comment"></span>
<a name="l00064"></a>00064 <span class="comment"></span>
<a name="l00065"></a>00065 <span class="comment">&lt;br&gt; &lt;hr&gt;</span>
<a name="l00066"></a>00066 <span class="comment">  &lt;a name=&quot;0.9.3&quot;&gt;</span>
<a name="l00067"></a>00067 <span class="comment">  &lt;h2&gt;Version 0.9.3 - (Version 1.0.0-Release_Candidate_1): Released 18-DEC-2010 (SVN 2338) &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00068"></a>00068 <span class="comment">        - &lt;b&gt;Most important changes:&lt;/b&gt;</span>
<a name="l00069"></a>00069 <span class="comment">                - MRPT now relies entirely on Eigen (version 3) for matrix and vector classes.</span>
<a name="l00070"></a>00070 <span class="comment">                - Support for Microsoft Xbox Kinect. See mrpt::hwdrivers::CKinect and this page: http://www.mrpt.org/Kinect_and_MRPT</span>
<a name="l00071"></a>00071 <span class="comment">                - Many new functions in mrpt::vision (by F.A. Moreno).</span>
<a name="l00072"></a>00072 <span class="comment">                - More efficient rendering of all mrpt::opengl classes thru automatic caching of OpenGL display lists.</span>
<a name="l00073"></a>00073 <span class="comment">        - &lt;b&gt;Detailed list of changes:&lt;/b&gt;</span>
<a name="l00074"></a>00074 <span class="comment">                - Changes related to mathematics, matrices and containers and the port to Eigen:</span>
<a name="l00075"></a>00075 <span class="comment">                        - All is now based on the Eigen library, v3. See &lt;a href=&quot;http://www.mrpt.org/Matrices_vectors_arrays_and_Linear_Algebra_MRPT_and_Eigen_classes&quot; &gt;this page&lt;/a&gt; for a more complete description of all the changes and the reasons of this big change.</span>
<a name="l00076"></a>00076 <span class="comment">                        - Matrices constructors from poses (TPose2D,...) now are explicit. Example: Previous code &quot;CMatrixDouble31 m = myPose2D;&quot; won&#39;t build now, should be: &quot;CMatrixDouble31 m = CMatrixDouble31(myPose2D);&quot;</span>
<a name="l00077"></a>00077 <span class="comment">                        - CVectorFloat and CVectorDouble are not synonymous with mrpt::vector_float and mrpt::vector_double.</span>
<a name="l00078"></a>00078 <span class="comment">                        - mrpt::math::meanAndCov() overloads have been separated into: meanAndCovVec() and meanAndCovMat()</span>
<a name="l00079"></a>00079 <span class="comment">                        - method unit() in matrices was inconsistent between fixed and dynamic sized matrices. It&#39;s now unified (see Eigen::Matrix::unit)</span>
<a name="l00080"></a>00080 <span class="comment">                        - Types mrpt::vector_float  and std::vector&lt;float&gt; (or the &quot;double&quot; versions) are not interchangeable any more. Read more on this in the link above.</span>
<a name="l00081"></a>00081 <span class="comment">                        - These examples have been removed: benchmark-matrix, math_iterators_test, matrix_views</span>
<a name="l00082"></a>00082 <span class="comment">                - New application:</span>
<a name="l00083"></a>00083 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:kinect-3d-slam&quot; &gt;kinect-3d-slam&lt;/a&gt;.</span>
<a name="l00084"></a>00084 <span class="comment">                - Changes in applications:</span>
<a name="l00085"></a>00085 <span class="comment">                        - SceneViewer3D: Now has new options to visualize and tune the octree structures of point clouds.</span>
<a name="l00086"></a>00086 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:GridmapNavSimul&quot; &gt;GridmapNavSimul&lt;/a&gt;: Now can load a custom grid map and save rawlogs in the two existing formats.</span>
<a name="l00087"></a>00087 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:pf-localization&quot; &gt;pf-localization&lt;/a&gt;: Now can also handle observations-only rawlogs.</span>
<a name="l00088"></a>00088 <span class="comment">                - Deleted classes:</span>
<a name="l00089"></a>00089 <span class="comment">                        - mrpt::slam::CConsistentObservationAlignment: It implemented the Lu &amp; Milios algorithm, now superseded by graph-slam methods. See the mrpt::graphslam namespace.</span>
<a name="l00090"></a>00090 <span class="comment">                        - mrpt::utils::CImageFloat: For real images with float pixels, it&#39;s better to directly use OpenCV. For matrices, there&#39;re many other matrix classes better suited for that. There is now also a new explicit constructor in mrpt::utils::CImage able of converting matrices into images, covering the possibly unique utility of the deleted class.</span>
<a name="l00091"></a>00091 <span class="comment">                - Changes in classes:</span>
<a name="l00092"></a>00092 <span class="comment">                        - mrpt::gui::CDisplayWindow::showImageAndPoints() now also displays the index of the feature (if required).</span>
<a name="l00093"></a>00093 <span class="comment">                        - mrpt::vision::CFeature now has new members:</span>
<a name="l00094"></a>00094 <span class="comment">                                - nTimesSeen, nTimesNotSeen, nTimesLastSeen. Counters for performing tracking of the feature visibility.</span>
<a name="l00095"></a>00095 <span class="comment">                                - initialDepth. The computed 3D distance from the camera to the 3D real feature the first time it was seen.</span>
<a name="l00096"></a>00096 <span class="comment">                                - detph. The computed 3D distance from the camera to the 3D real feature.</span>
<a name="l00097"></a>00097 <span class="comment">                                - p3D. The 3D coordinates of this feature when projected into 3D space.</span>
<a name="l00098"></a>00098 <span class="comment">                                - multiScales. A vector containing the set of different scales at which the SIFT-like descriptor must be computed.</span>
<a name="l00099"></a>00099 <span class="comment">                                - multiOrientations. For each scale in multiScales there is a vector containing the main orientations of the feature.</span>
<a name="l00100"></a>00100 <span class="comment">                                - descriptors.multiSIFTDescriptors. For each scale and orientation there is a SIFT-like descriptor.</span>
<a name="l00101"></a>00101 <span class="comment">                                - multiHashCoeffs. For each descriptor, a 3-d vector containing its Hash coefficients computed through the Haar wavelets. </span>
<a name="l00102"></a>00102 <span class="comment">                                - hasDescriptorMultiSIFT(). Indicates if the multi-resolution SIFT-like descriptor has been computed for this feature.</span>
<a name="l00103"></a>00103 <span class="comment">                        - New method mrpt::gui::CDisplayWindow3D::getRenderingFPS()</span>
<a name="l00104"></a>00104 <span class="comment">                        - Both mrpt::opengl::CPointCloud and mrpt::opengl::CPointCloudColoured are now much more optimized to render huge point clouds:</span>
<a name="l00105"></a>00105 <span class="comment">                                - Smart rendering based on Octrees to determine which volumes are within the frustum.</span>
<a name="l00106"></a>00106 <span class="comment">                                - For each octree volume, smart decimation of the points from the points-to-eye distance: why rendering 1e6 points that will all be seen in a 10x10 pixel area?</span>
<a name="l00107"></a>00107 <span class="comment">                        - New method mrpt::utils::CClientTCPSocket::getReadPendingBytes()</span>
<a name="l00108"></a>00108 <span class="comment">                        - New method mrpt::opengl::COpenGLScene::visitAllObjects()</span>
<a name="l00109"></a>00109 <span class="comment">                        - Many mrpt::opengl classes now are derived from a display-list-cached base class (mrpt::opengl::CRenderizableDisplayList)</span>
<a name="l00110"></a>00110 <span class="comment">                        - mrpt::utils::CStream now has two new methods (mrpt::utils::CStream::ReadBufferFixEndianness &amp; mrpt::utils::CStream::WriteBufferFixEndianness) to correctly handle arrays of elemental data types so they are saved in MRPT endianness standard (see http://www.mrpt.org/Serialization).</span>
<a name="l00111"></a>00111 <span class="comment">                - Changes in functions:</span>
<a name="l00112"></a>00112 <span class="comment">                        - mrpt::vision::matchFeatures(). Implemented a new method for managing ambiguous matches, now taking into account which of the conflicting matches is the most probable.                        </span>
<a name="l00113"></a>00113 <span class="comment">                - New structures/classes:</span>
<a name="l00114"></a>00114 <span class="comment">                        - mrpt::hwdrivers::CKinect: Support for grabbing XBox Kinect. Read the class documentation for more details.</span>
<a name="l00115"></a>00115 <span class="comment">                        - TMultiResDescMatchOptions. Struct containing the options when matching multi-resolution SIFT-like descriptors.</span>
<a name="l00116"></a>00116 <span class="comment">                        - TMultiResDescOptions. Struct containing the options when computing the multi-resolution SIFT-like descriptors.</span>
<a name="l00117"></a>00117 <span class="comment">                        - mrpt::aligned_containers: A helper template to ease the declaration of STL containers with the correct Eigen aligned allocators.</span>
<a name="l00118"></a>00118 <span class="comment">                        - mrpt::opengl::CRenderizable::TRenderInfo: Helper struct to help OpenGL objects to render more efficiently by predicting their rendering conditions</span>
<a name="l00119"></a>00119 <span class="comment">                        - mrpt::opengl::CRenderizableDisplayList, a class to automate the caching of OpenGL objects via Display Lists.</span>
<a name="l00120"></a>00120 <span class="comment">                - New functions:</span>
<a name="l00121"></a>00121 <span class="comment">                        - mrpt::vision::computeGradient(). Computes the gradient of certain pixel within the image.</span>
<a name="l00122"></a>00122 <span class="comment">                        - mrpt::vision::computeMainOrientations(). Computes the main orientations (within 80% of the peak value of orientation histogram) of a certain point within an image (for using in SIFT-based algorithms)</span>
<a name="l00123"></a>00123 <span class="comment">                        - mrpt::vision::computeHistogramOfOrientations(). Computes the SIFT-like descriptor of a certain point within an image at the base scale, i.e. its rotated orientation histogram.</span>
<a name="l00124"></a>00124 <span class="comment">                        - mrpt::vision::interpolateHistEntry(). Inserts the orientation value of a certain pixel within the keypoint neighbourhood into the histogram of orientations.</span>
<a name="l00125"></a>00125 <span class="comment">                        - mrpt::vision::computeMultiResolutionDescriptors(). Computes the multi-resolution SIFT-like descriptor of a set of matched features</span>
<a name="l00126"></a>00126 <span class="comment">                        - mrpt::vision::matchMultiResolutionFeatures(). Matches two CFeatureList containing mulit-resolution descriptors.</span>
<a name="l00127"></a>00127 <span class="comment">                        - mrpt::vision::setProperScales(). Computes the initial and final scales where to look when finding a match between multi-resolution features.</span>
<a name="l00128"></a>00128 <span class="comment">                        - mrpt::vision::computeSAD(). Calculates the Sum of Absolutes Differences (range [0,1]) between two patches.</span>
<a name="l00129"></a>00129 <span class="comment">                        - mrpt::vision::computeMoreDescriptors(). Computes and adds more multi-resolution descriptor to certain feature at lower or upper scales.</span>
<a name="l00130"></a>00130 <span class="comment">                        - mrpt::vision::setProperScales(). Determines the range of scales where to look according to the depth of the involved features.</span>
<a name="l00131"></a>00131 <span class="comment">                        - mrpt::system::createThread now also has overloaded versions for the thread functions having arguments passed by reference.</span>
<a name="l00132"></a>00132 <span class="comment">                - New examples:</span>
<a name="l00133"></a>00133 <span class="comment">                        - keypoint_matching. It contains three different methods:</span>
<a name="l00134"></a>00134 <span class="comment">                                - Feature extraction and stereo matching process from a pair of images. It show stadistics about the number of detected and matched features for each method.</span>
<a name="l00135"></a>00135 <span class="comment">                                - Feature extraction, stereo matching and re-projection to 3D from a pair of images.</span>
<a name="l00136"></a>00136 <span class="comment">                                - Feature extraction and computation of the matching score for each feature in list1 and for each in list2 with four different methods: FAST, NCC, SIFT and SURF. Graphical results are shown.</span>
<a name="l00137"></a>00137 <span class="comment">                        - octree_render_huge_pointcloud</span>
<a name="l00138"></a>00138 <span class="comment">                - &lt;b&gt;BUG FIXES:&lt;/b&gt;</span>
<a name="l00139"></a>00139 <span class="comment">                        - Serialization dumps of many objects (observations, maps,...) should be now compatible between big and little endian architectures.</span>
<a name="l00140"></a>00140 <span class="comment">                        - Doing a clear() on mrpt::slam::CColouredPointsMap didn&#39;t actually clear the internal vectors for RGB+Distance values.</span>
<a name="l00141"></a>00141 <span class="comment">                        - mrpt::utils::net::DNS_resolve_async didn&#39;t work properly.</span>
<a name="l00142"></a>00142 <span class="comment">                        - RawlogViewer, module &quot;Raw-map&quot;: It didn&#39;t display or save the robot path for observations-only rawlogs.</span>
<a name="l00143"></a>00143 <span class="comment">                        - Fixed exception when rendering a mrpt::opengl::CPointCloud with no points in it.</span>
<a name="l00144"></a>00144 <span class="comment">                        - Fixed bad computation of SAD in mrpt::vision::matchFeatures() because bad usage of IplImage fields &lt;i&gt;width&lt;/i&gt; and &lt;i&gt;widthstep&lt;/i&gt;.</span>
<a name="l00145"></a>00145 <span class="comment">                        - Fixed vision::CImage::update_patch(). Row and column checkings of the patch position were wrongly related to image width and height, respectively.</span>
<a name="l00146"></a>00146 <span class="comment">                        - Fixed CVE-2010-0280: Array index error in Jan Eric Kyprianidis lib3ds 1.x, as used in Google SketchUp 7.x before 7.1 M2, allows remote attackers to cause a denial of service (memory corruption) or possibly execute arbitrary code via crafted structures in a 3DS file, probably related to mesh.c. (Thanks to Silvio Cesare for reporting here: https://bugzilla.redhat.com/show_bug.cgi?id=650786 ).</span>
<a name="l00147"></a>00147 <span class="comment"></span>
<a name="l00148"></a>00148 <span class="comment">  &lt;br&gt; &lt;hr&gt; &lt;br&gt;</span>
<a name="l00149"></a>00149 <span class="comment"></span>
<a name="l00150"></a>00150 <span class="comment">  &lt;a name=&quot;0.9.2&quot;&gt;</span>
<a name="l00151"></a>00151 <span class="comment">  &lt;h2&gt;Version 0.9.2: 27-OCT-2010 &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00152"></a>00152 <span class="comment">        - &lt;b&gt;Most important changes:&lt;/b&gt;</span>
<a name="l00153"></a>00153 <span class="comment">                - Basic support for Graph-SLAM. Among others, see mrpt::poses::CNetworkOfPoses, the new namespace mrpt::graphslam and the program &lt;a href=&quot;http://www.mrpt.org/Application:graph-slam&quot; &gt;graph-slam&lt;/a&gt;</span>
<a name="l00154"></a>00154 <span class="comment">                - First working version of Sparse Bundle-Adjustment (see mrpt::vision::bundle_adj_full).</span>
<a name="l00155"></a>00155 <span class="comment">                - New hardware supported: Phidget kits &amp; Fiber Optic Gyro KVH DSP3000 (both contributed by Adrien Barral, Robopec).</span>
<a name="l00156"></a>00156 <span class="comment">                - Tons of performance optimizations, mostly in geometry classes.</span>
<a name="l00157"></a>00157 <span class="comment">                - &lt;b&gt;Backward incompatible changes:&lt;/b&gt;</span>
<a name="l00158"></a>00158 <span class="comment">                        - In &lt;=0.9.1, mrpt::poses::CPose2D for (x,y,phi) also contained a &quot;z&quot; field, which has been removed now. It didn&#39;t make sense at all but was there for implementation convenience. In the new implementation of poses there&#39;s no need anymore for that dummy &quot;z&quot; coordinate.</span>
<a name="l00159"></a>00159 <span class="comment">        - &lt;b&gt;Detailed list of changes:&lt;/b&gt;</span>
<a name="l00160"></a>00160 <span class="comment">                - New applications:</span>
<a name="l00161"></a>00161 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:carmen2rawlog&quot; &gt;carmen2rawlog&lt;/a&gt;: A converter from CARMEN robotics logs to binary Rawlog dataset files.</span>
<a name="l00162"></a>00162 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:carmen2simplemap&quot; &gt;carmen2simplemap&lt;/a&gt;: A converter from CARMEN robotics logs to binary &quot;simplemap&quot; files.</span>
<a name="l00163"></a>00163 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:graph-slam&quot; &gt;graph-slam&lt;/a&gt;: A central application for all Graph-SLAM methods and tools.</span>
<a name="l00164"></a>00164 <span class="comment">                - Changes in applications:</span>
<a name="l00165"></a>00165 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:rawlog-edit&quot; &gt;rawlog-edit&lt;/a&gt;: More operations supported.</span>
<a name="l00166"></a>00166 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:mrpt-performance&quot; &gt;mrpt-performance&lt;/a&gt;: Added command-line arguments to filter what tests to run, and more tests added.</span>
<a name="l00167"></a>00167 <span class="comment">                        - RawLogViewer: Can now build &quot;raw maps&quot; from datasets in the &quot;observations-only&quot; format.</span>
<a name="l00168"></a>00168 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:icp-slam&quot; &gt;icp-slam&lt;/a&gt; and &lt;a href=&quot;http://www.mrpt.org/Application:rbpf-slam&quot; &gt;rbpf-slam&lt;/a&gt; now accept a second command-line argument for the dataset (rawlog) to load.</span>
<a name="l00169"></a>00169 <span class="comment">                        - &lt;a href=&quot;http://www.mrpt.org/Application:map-partition&quot;&gt;map-partition&lt;/a&gt;: Fixed generation of a valid MATLAB script to easily visualize the results (Thanks Ricardo Vazquez Martin for reporting!).</span>
<a name="l00170"></a>00170 <span class="comment">                - Changes in build system / compiling:</span>
<a name="l00171"></a>00171 <span class="comment">                        - By default, MRPT_ALWAYS_CHECKS_DEBUG_MATRICES is OFF. This allow programs to run faster in non Debug builds.</span>
<a name="l00172"></a>00172 <span class="comment">                        - Doxygen documentation: More macros expanded while generating docs: now docs are also generated for smart pointers and for RTTI &amp; serialization stuff.</span>
<a name="l00173"></a>00173 <span class="comment">                        - Previous header &lt;mrpt/math_mrpt.h&gt; renamed &lt;mrpt/math.h&gt;. The old one still remains (probably until MRPT 1.0.0), but raises a warning on usage.</span>
<a name="l00174"></a>00174 <span class="comment">                - New classes:</span>
<a name="l00175"></a>00175 <span class="comment">                        - New sensor driver for Phidget kit (see mrpt::hwdrivers::CPhidgetInterfaceKitProximitySensors), contributed by Adrien Barral (Robopec).</span>
<a name="l00176"></a>00176 <span class="comment">                        - New sensor driver for Fiber Optic Gyro KVH DSP3000 (see mrpt::hwdrivers::CGyroKVHDSP3000),  contributed by Adrien Barral (Robopec).</span>
<a name="l00177"></a>00177 <span class="comment">                        - mrpt::math::CDirectedTree template for directed tree-like graphs. Includes generic depth-first &amp; breath-first visitors.</span>
<a name="l00178"></a>00178 <span class="comment">                        - mrpt::vision::CUndistortMap, a class for efficiently undistorting sequences of images with the same camera parameters.</span>
<a name="l00179"></a>00179 <span class="comment">                        - New PDF classes for &quot;information&quot; (inverse covariance) forms:</span>
<a name="l00180"></a>00180 <span class="comment">                                - mrpt::poses::CPosePDFGaussianInf</span>
<a name="l00181"></a>00181 <span class="comment">                                - mrpt::poses::CPose3DPDFGaussianInf</span>
<a name="l00182"></a>00182 <span class="comment">                        - Data types for graph SLAM (only two of them existed before, and now they are all classes and support serialization):</span>
<a name="l00183"></a>00183 <span class="comment">                                - mrpt::poses::CNetworkOfPoses2D</span>
<a name="l00184"></a>00184 <span class="comment">                                - mrpt::poses::CNetworkOfPoses3D</span>
<a name="l00185"></a>00185 <span class="comment">                                - mrpt::poses::CNetworkOfPoses2DInf</span>
<a name="l00186"></a>00186 <span class="comment">                                - mrpt::poses::CNetworkOfPoses3DInf</span>
<a name="l00187"></a>00187 <span class="comment">                                - mrpt::poses::CNetworkOfPoses2DCov</span>
<a name="l00188"></a>00188 <span class="comment">                                - mrpt::poses::CNetworkOfPoses3DCov</span>
<a name="l00189"></a>00189 <span class="comment">                        - mrpt::utils::map_as_vector a vector-based implementation of a std::map-like container. It can be used as a map implementation optionally in the template mrpt::poses::CNetworkOfPoses&lt;&gt;</span>
<a name="l00190"></a>00190 <span class="comment">                        - mrpt::utils::CTextFileLinesParser</span>
<a name="l00191"></a>00191 <span class="comment">                        - New event for GUI windows: mrpt::gui::mrptEventMouseDown</span>
<a name="l00192"></a>00192 <span class="comment">                        - New metaprogramming class: mrpt::utils::TEnumType, allows converting between numerical and symbolic text values for enum types.</span>
<a name="l00193"></a>00193 <span class="comment">                        - New SE(2) and SE(3) geometry helper classes. See mrpt::poses::SE_traits</span>
<a name="l00194"></a>00194 <span class="comment">                        - Helper templates to handle poses and pose PDFs at build time. See &lt;mrpt/poses/helper_templates.h&gt;</span>
<a name="l00195"></a>00195 <span class="comment">                - Changes in classes:</span>
<a name="l00196"></a>00196 <span class="comment">                        - mrpt::hwdrivers::CHokuyoURG has new configuration variable &quot;HOKUYO_HS_mode&quot; to enable the high sensitivity mode.</span>
<a name="l00197"></a>00197 <span class="comment">                        - removeObservationsByTimestamp() removed from mrpt::slam::CheightGridMap2D, which now doesn&#39;t have the &quot;sliding window&quot; insertion method. It was too memory intensive for large maps.</span>
<a name="l00198"></a>00198 <span class="comment">                        - mrpt::poses::CPoseOrPoint, mrpt::poses::CPose and mrpt::poses::CPoint are now templates and use the CRTP pattern instead of virtual functions, increasing the performance of all the derived classes.</span>
<a name="l00199"></a>00199 <span class="comment">                        - mrpt::poses::CNetworkOfPoses has many improvements and new methods (see its documentation).</span>
<a name="l00200"></a>00200 <span class="comment">                        - mrpt::math::CDijkstra:</span>
<a name="l00201"></a>00201 <span class="comment">                                - Algorithm is now much faster (eg: 70x times faster for graphs of 4K nodes &amp; 60K arcs).</span>
<a name="l00202"></a>00202 <span class="comment">                                - Many changes in its interface, including new feedback functors, support for returning the built tree and many handy typedef&#39;s.</span>
<a name="l00203"></a>00203 <span class="comment">                        - Added a new type mrpt::utils::TNodeID, used in graph-related classes: mrpt::math::CDirectedGraph, mrpt::math::CDijkstra</span>
<a name="l00204"></a>00204 <span class="comment">                        - mrpt::opengl::CPointCloud &amp; mrpt::opengl::CPointCloudColoured now have an option to draw smoothed points (see mrpt::opengl::CPointCloud::enablePointSmooth).</span>
<a name="l00205"></a>00205 <span class="comment">                        - mrpt::utils::TColorf: New explicit copy constructor from a mrpt::utils::TColor</span>
<a name="l00206"></a>00206 <span class="comment">                        - mrpt::opengl::CRenderizable: Many &quot;set&quot; methods that returned &quot;void&quot; now return a reference to &quot;this&quot; so several calls can be chained (e.g. obj.setColor(...).setScale(1.0) )</span>
<a name="l00207"></a>00207 <span class="comment">                        - mrpt::gui::CDisplayWindow3D doesn&#39;t report ALT+Enter as a keystroke event anymore.</span>
<a name="l00208"></a>00208 <span class="comment">                        - mrpt::gui::CBaseGUIWindow has new methods (implemented in all derived classes):</span>
<a name="l00209"></a>00209 <span class="comment">                                - getLastMousePosition()</span>
<a name="l00210"></a>00210 <span class="comment">                                - setCursorCross()</span>
<a name="l00211"></a>00211 <span class="comment">                        - New method mrpt::utils::CTimeLogger::getMeanTime</span>
<a name="l00212"></a>00212 <span class="comment">                        - mrpt::vision::TSequenceFeatureObservations has load/save methods to text files.</span>
<a name="l00213"></a>00213 <span class="comment">                        - mrpt::utils::TCamera now has setter methods.</span>
<a name="l00214"></a>00214 <span class="comment">                        - New method: mrpt::math::CSparseMatrixTemplate::insertMatrix()</span>
<a name="l00215"></a>00215 <span class="comment">                        - New method: mrpt::math::CArrayNumeric::slice()</span>
<a name="l00216"></a>00216 <span class="comment">                        - New method: mrpt::utils::CImage::copyFromForceLoad()</span>
<a name="l00217"></a>00217 <span class="comment">                        - mrpt::poses::CPose3D:</span>
<a name="l00218"></a>00218 <span class="comment">                                - Much faster operations, as long as yaw(), pitch() &amp; roll() are not explicitly called. These 3 angles are now not computed until really requested by the user, then cached.</span>
<a name="l00219"></a>00219 <span class="comment">                                - New SE3 Lie algebra methods: mrpt::poses::CPose3D::exp(), mrpt::poses::CPose3D::ln(), ...</span>
<a name="l00220"></a>00220 <span class="comment">                                - mrpt::poses::CPose3D::composePoint() now has an optional flag to compute faster, approximate Jacobians (for small rotations only!).</span>
<a name="l00221"></a>00221 <span class="comment">                                - Methods composePoint() and inverseComposePoint() now can also compute the Jacobian with respect to se3 (the tangent space of SE(3) at a given pose).</span>
<a name="l00222"></a>00222 <span class="comment">                                - New methods: setFrom12Vector(), getAs12Vector()</span>
<a name="l00223"></a>00223 <span class="comment">                        - New method: mrpt::hwdrivers::CSerialPort::ReadString</span>
<a name="l00224"></a>00224 <span class="comment">                        - All matrices: New methods:</span>
<a name="l00225"></a>00225 <span class="comment">                                - t() (for transpose, apart of the old ~ operator)</span>
<a name="l00226"></a>00226 <span class="comment">                                - multiply_A_skew3().</span>
<a name="l00227"></a>00227 <span class="comment">                        - mrpt::slam::CGasConcentrationGridMap2D now implements correctly the Kernel DM &amp; DM+V methods as explained in the IROS 2009 paper (see class for refs).</span>
<a name="l00228"></a>00228 <span class="comment">                        - mrpt::utils::CDynamicGrid has new template method getAsMatrix().</span>
<a name="l00229"></a>00229 <span class="comment">                - New functions:</span>
<a name="l00230"></a>00230 <span class="comment">                        - mrpt::graphslam::optimize_graph_spa_levmarq , a graph-slam implementation in the new namespace mrpt::graphslam</span>
<a name="l00231"></a>00231 <span class="comment">                        - mrpt::math::slerp</span>
<a name="l00232"></a>00232 <span class="comment">                        - mrpt::math::skew_symmetric3 &amp; mrpt::math::skew_symmetric3_neg</span>
<a name="l00233"></a>00233 <span class="comment">                        - mrpt::math::rodrigues_so3_exp</span>
<a name="l00234"></a>00234 <span class="comment">                        - mrpt::vision::pinhole::undistort_point</span>
<a name="l00235"></a>00235 <span class="comment">                        - ostream text print &lt;&lt; operators for mrpt::utils::TPixelCoordf and mrpt::utils::TPixelCoordf.</span>
<a name="l00236"></a>00236 <span class="comment">                        - New ASSERT macros: ASSERT_EQUAL_, ASSERT_NOT_EQUAL_, ASSERT_BELOW_, ASSERT_ABOVE_.</span>
<a name="l00237"></a>00237 <span class="comment">                        - mrpt::slam::carmen_log_parse_line() a tool for parsing CARMEN logs.</span>
<a name="l00238"></a>00238 <span class="comment">                        - mrpt::opengl::graph_tools::graph_visualize(), a visualizer of graphs of pose constraints.</span>
<a name="l00239"></a>00239 <span class="comment">                        - mrpt::opengl::stock_objects::CornerXYSimple() for 2D corners.</span>
<a name="l00240"></a>00240 <span class="comment">                        - mrpt::system::strCmp, mrpt::system::strCmpI, mrpt::system::strStarts, mrpt::system::strStartsI.</span>
<a name="l00241"></a>00241 <span class="comment">                        - mrpt::system::os::_strncmp, mrpt::system::os::_strnicmp.</span>
<a name="l00242"></a>00242 <span class="comment">                - New examples:</span>
<a name="l00243"></a>00243 <span class="comment">                        - opengl_objects_demo</span>
<a name="l00244"></a>00244 <span class="comment">                        - phidgetProximitySensor</span>
<a name="l00245"></a>00245 <span class="comment">                        - bundle_adj_full_demo</span>
<a name="l00246"></a>00246 <span class="comment">                        - se3</span>
<a name="l00247"></a>00247 <span class="comment">                        - slerp_demo</span>
<a name="l00248"></a>00248 <span class="comment">                        - voronoi_demo</span>
<a name="l00249"></a>00249 <span class="comment">                - Others:</span>
<a name="l00250"></a>00250 <span class="comment">                        - Change in interface of function mrpt::scanmatching::HornMethod()</span>
<a name="l00251"></a>00251 <span class="comment">                        - Change in behavior upon an std::bad_alloc exception in MRPT_START / MRPT_END blocks: instead of dumping an error message to cerr and exit the program, just propragate the exception with throw() so the user can decide what to do in those cases.</span>
<a name="l00252"></a>00252 <span class="comment">                - BUG FIXES:</span>
<a name="l00253"></a>00253 <span class="comment">                        - Fixed wrong size of 2D ellipsoids in mrpt::opengl::CEllipsoid when &quot;quantiles&quot; != 1.</span>
<a name="l00254"></a>00254 <span class="comment">                        - Fixed crash in mrpt::math::maximum() and minimum() for empty vectors. This also solves Debian FTBFS bug &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=599989&quot; &gt; #599989&lt;/a&gt;.</span>
<a name="l00255"></a>00255 <span class="comment">                        - Fixed crash in particle filters (both localization and RBPF-SLAM) when using the &quot;optimal particle filter algorithm&quot;.</span>
<a name="l00256"></a>00256 <span class="comment">                        - mrpt::opengl::CPointCloud::enableColorFromX() didn&#39;t work for disabling the coloring of points.</span>
<a name="l00257"></a>00257 <span class="comment">                        - Fixed build missing finite() function with GCC in some platforms (thanks Mike Davies for reporting!).</span>
<a name="l00258"></a>00258 <span class="comment">                        - Fixed build without zlib in GNU/Linux.</span>
<a name="l00259"></a>00259 <span class="comment">                        - Fixed minimal build, without OpenCV, wxWidgets and GL/GLUT.</span>
<a name="l00260"></a>00260 <span class="comment">                        - Fixed wrong saving/loading to/from text files for mrpt::vision::CFeatureList (thanks &quot;me138&quot; for noticing!)</span>
<a name="l00261"></a>00261 <span class="comment">                        - Fixed (aparently compiler/config-dependent) error when deserializing classes with an old deprecated name, i.e. registered with registerClassCustomName() (Thanks &quot;ricardo&quot; for reporting!)</span>
<a name="l00262"></a>00262 <span class="comment">                        - Fixed exception in mrpt::math::CLevenbergMarquardtTempl when saving the optimization path.</span>
<a name="l00263"></a>00263 <span class="comment">                        - Iterators in mrpt::slam::CRawlog only had the post-increment form, but actually implemented a pre-increment. Both, correct, versions now exist.</span>
<a name="l00264"></a>00264 <span class="comment">                        - mrpt::gui::CBaseGUIWindow::setWindowTitle() didn&#39;t work (for some versions of wxWidgets only?).</span>
<a name="l00265"></a>00265 <span class="comment">                        - mrpt::gui::CDisplayWindowPlots::plot(y) asserted on empty input vector (actually a bug in mrpt::math::linspace for len=0)</span>
<a name="l00266"></a>00266 <span class="comment">                        - mrpt::gui::CDisplayWindowPlots did ignore the construction-time width x height.</span>
<a name="l00267"></a>00267 <span class="comment">                        - Fixed bug in mrpt::utils::CImage::KLT_response: due to wrong signed numbers usage, responses were high in textureless parts of images.</span>
<a name="l00268"></a>00268 <span class="comment">                        - FIXED: mrpt::gui::CDisplayWindow3D crashes when hitting ALT+Enter for fullscreen when user is waiting for a key to close the window.</span>
<a name="l00269"></a>00269 <span class="comment">                        - icp-slam: Fixed potential wrong processing of datasets in observations-only format where the odometry initial value is not (0,0,0).</span>
<a name="l00270"></a>00270 <span class="comment">                        - Build errors with some OpenCV versions (&lt;a href=&quot;http://www.mrpt.org/node/369&quot; &gt;Bug report &amp; patch&lt;/a&gt; by &quot;iXce&quot;); fixed link errors against opencv 2.0 (thanks Rudan Janos).</span>
<a name="l00271"></a>00271 <span class="comment">                        - FIXED: Text labels of CRenderizable classes inherited the color from the objects; now they&#39;re always white.</span>
<a name="l00272"></a>00272 <span class="comment">                        - mrpt::poses::CPosePDFGaussianInf &amp; mrpt::poses::CPose3DPDFGaussianInf were not registered at startup with registerClass().</span>
<a name="l00273"></a>00273 <span class="comment"></span>
<a name="l00274"></a>00274 <span class="comment"></span>
<a name="l00275"></a>00275 <span class="comment">  &lt;br&gt; &lt;hr&gt; &lt;br&gt;</span>
<a name="l00276"></a>00276 <span class="comment"></span>
<a name="l00277"></a>00277 <span class="comment">  &lt;a name=&quot;0.9.1&quot;&gt;</span>
<a name="l00278"></a>00278 <span class="comment">  &lt;h2&gt;Version 0.9.1: Released 1-AUG-2010 (SVN 2076) &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00279"></a>00279 <span class="comment">        - &lt;b&gt;Most important changes:&lt;/b&gt;</span>
<a name="l00280"></a>00280 <span class="comment">                - CRITICAL REGRESION FIXED: The program rbpf-slam did always crash at start-up in MRPT 0.9.0.</span>
<a name="l00281"></a>00281 <span class="comment">                - Changes in &lt;a href=&quot;index.html#libs&quot; &gt;libraries&lt;/a&gt;:</span>
<a name="l00282"></a>00282 <span class="comment">                        - Further factorization: New libraries: &lt;a href=&quot;mrpt-detectors.html&quot; &gt; mrpt-detectors&lt;/a&gt;, &lt;a href=&quot;mrpt-bayes.html&quot; &gt; mrpt-bayes&lt;/a&gt; and &lt;a href=&quot;mrpt-scanmatching.html&quot; &gt;mrpt-scanmatching &lt;/a&gt;.</span>
<a name="l00283"></a>00283 <span class="comment">                        - Dependencies simplified - most notably, mrpt-gui is now not included by many libraries that did in previous versions (check the &lt;a href=&quot;index.html#libs&quot; &gt; deps graph &lt;/a&gt; ).</span>
<a name="l00284"></a>00284 <span class="comment">                        - &lt;b&gt;Important:&lt;/b&gt; Due to this last change, you &lt;b&gt;may need&lt;/b&gt; to add a &lt;code&gt;#include &lt;mrpt/gui.h&gt;&lt;/code&gt; when using mrpt::gui classes in places where formerly a &lt;code&gt;#include &lt;mrpt/slam.h&gt;&lt;/code&gt; was enough.</span>
<a name="l00285"></a>00285 <span class="comment">                - Many new stuff and improvements in mrpt-vision, e.g. mrpt::vision::CGenericFeatureTracker, mrpt::vision::CFeatureList, etc.</span>
<a name="l00286"></a>00286 <span class="comment">                - Support for Videre Stereo cameras (By Cyril Gerber, thanks!)</span>
<a name="l00287"></a>00287 <span class="comment">                - New command-line dataset manipulation tool: rawlog-edit.</span>
<a name="l00288"></a>00288 <span class="comment">                - Fixed support for pkg-config with a new set of libmrpt-*.pc files (see new example MRPT/doc/mrpt_example1-with-Makefile and &lt;a href=&quot;http://www.mrpt.org/Compiling_custom_applications_in_Linux_with_a_Makefile_and_pkg-config&quot; &gt;this page&lt;/a&gt;).</span>
<a name="l00289"></a>00289 <span class="comment">        - &lt;b&gt;Detailed list of changes:&lt;/b&gt;</span>
<a name="l00290"></a>00290 <span class="comment">                - Changes in build system:</span>
<a name="l00291"></a>00291 <span class="comment">                        - Fixed support for pkg-config with a new set of libmrpt-*.pc files (see new example MRPT/doc/mrpt_example1-with-Makefile and &lt;a href=&quot;http://www.mrpt.org/Compiling_custom_applications_in_Linux_with_a_Makefile_and_pkg-config&quot; &gt;this page&lt;/a&gt;).</span>
<a name="l00292"></a>00292 <span class="comment">                        - Further factorization: New libraries: &lt;a href=&quot;mrpt-detectors.html&quot; &gt; mrpt-detectors&lt;/a&gt;, &lt;a href=&quot;mrpt-bayes.html&quot; &gt; mrpt-bayes&lt;/a&gt; and &lt;a href=&quot;mrpt-scanmatching.html&quot; &gt;mrpt-scanmatching &lt;/a&gt;.</span>
<a name="l00293"></a>00293 <span class="comment">                        - Dependencies simplified - most notably, mrpt-gui is now not included by many libraries that did in previous versions (check the &lt;a href=&quot;index.html#libs&quot; &gt; deps graph &lt;/a&gt; ).</span>
<a name="l00294"></a>00294 <span class="comment">                        - New CMake switch: &quot;MRPT_BACKCOMPATIB_08X&quot;: Enabled by default; if disabled, some backward compatibility definitions are not declared. Useful to prepare code for future MRPT versions where deprecated definitions and names will be removed.</span>
<a name="l00295"></a>00295 <span class="comment">                - Changes in applications:</span>
<a name="l00296"></a>00296 <span class="comment">                        - camera-calib can now open SwissRangers 3D cameras as well for real-time calibration.</span>
<a name="l00297"></a>00297 <span class="comment">                        - rawlog-grabber: New config file optional argument: &quot;rawlog_GZ_compress_level&quot; to settle the desired GZ-compression level of rawlogs.</span>
<a name="l00298"></a>00298 <span class="comment">                - Changes in classes:</span>
<a name="l00299"></a>00299 <span class="comment">                        - mrpt::utils::CImage:</span>
<a name="l00300"></a>00300 <span class="comment">                                - It now has a new method (setFromImageReadOnly) and a new constructor as UNINITIALIZED_IMAGE.</span>
<a name="l00301"></a>00301 <span class="comment">                                - New alternative checkerboard detector algorithm (by Scaramuzza et al.). See mrpt::utils::CImage::findChessboardCorners for references and more details.</span>
<a name="l00302"></a>00302 <span class="comment">                                - findChessboardCorners() is no longer a method of CImage, but a function in mrpt::vision (see mrpt::vision::findChessboardCorners).</span>
<a name="l00303"></a>00303 <span class="comment">                                - New method to compute KLT response at any given position: mrpt::utils::CImage::KLT_response</span>
<a name="l00304"></a>00304 <span class="comment">                                - New efficient constructor to build a grayscale version of another image, or a fast &quot;link&quot; if it was already grayscale. See CImage::CImage( img, FAST_REF_OR_CONVERT_TO_GRAY )</span>
<a name="l00305"></a>00305 <span class="comment">                        - Many classes: UNINITIALIZED_* which were #defines have been transformed into enums to keep all that stuff into MRPT namespaces.</span>
<a name="l00306"></a>00306 <span class="comment">                        - mrpt::reactivenav::CReactiveNavigationSystem does not have any longer the &quot;debugWindows&quot; option. This is done to remove the dependecy of mrpt-reactivenav on mrpt-gui.</span>
<a name="l00307"></a>00307 <span class="comment">                        - mrpt::vision::CFeatureExtraction has a new option FASTOptions.use_KLT_response.</span>
<a name="l00308"></a>00308 <span class="comment">                        - mrpt::slam::CObservation now has virtual load() and unload() method to manually invoke delayed-load (actually only needed by 3D camera observations).</span>
<a name="l00309"></a>00309 <span class="comment">                        - stlplus::smart_ptr templates now have an extra template argument &quot;COUNTER&quot; which defaults to an thread-safe atomic counter but can be set to a plain &quot;unsigned int&quot; in time-critical apps which are known to work in a single thread.</span>
<a name="l00310"></a>00310 <span class="comment">                        - mrpt::utils::CStream now handles sizes as uint64_t instead of size_t, to allow files larger than 4Gb in 32bit systems.</span>
<a name="l00311"></a>00311 <span class="comment">                        - mrpt::hwdrivers::prepareVideoSourceFromUserSelection() now also displays as an option to grab images from SwissRanger 3D cameras.</span>
<a name="l00312"></a>00312 <span class="comment">                        - mrpt::hwdrivers::CCameraSensor can now open SwissRanger 3D cameras.</span>
<a name="l00313"></a>00313 <span class="comment">                        - mrpt::vision::CFeatureList now has KD-tree-based search.</span>
<a name="l00314"></a>00314 <span class="comment">                        - mrpt::slam::CColouredPointsMap:</span>
<a name="l00315"></a>00315 <span class="comment">                                - Added a few new methods to modify and retrieve the color of points already in the map.</span>
<a name="l00316"></a>00316 <span class="comment">                        - mrpt::hwdrivers::CGenericSensor:</span>
<a name="l00317"></a>00317 <span class="comment">                                - Now has a generic interface for external image directories (it was only in CCameraSensor before), so more sensors can use this feature.</span>
<a name="l00318"></a>00318 <span class="comment">                                - The sensor label member is now &quot;m_sensorLabel&quot; in this base class, instead of replicating it in all children classes.</span>
<a name="l00319"></a>00319 <span class="comment">                        - mrpt::slam::CObservation3DRangeScan:</span>
<a name="l00320"></a>00320 <span class="comment">                                - The confidence channel is stored as an image instead of a matrix to optimize memory and disk space.</span>
<a name="l00321"></a>00321 <span class="comment">                                - New &quot;auto-calibration&quot; method: CObservation3DRangeScan::recoverCameraCalibrationParameters</span>
<a name="l00322"></a>00322 <span class="comment">                        - mrpt::hwdrivers::CSwissRanger3DCamera is now prepared to store intensity &amp; confidence channels to external image files to save rawlog storage size.</span>
<a name="l00323"></a>00323 <span class="comment">                        - mrpt::utils::CStream now has methods for sending/receiving messages in a predefined frame format. See mrpt::utils::CStream::receiveMessage,  mrpt::utils::CStream::sendMessage.</span>
<a name="l00324"></a>00324 <span class="comment">                        - mrpt::utils::CConfigFileMemory has a new method getContent().</span>
<a name="l00325"></a>00325 <span class="comment">                        - Template mrpt::utils::TParameters now has typedefs mrpt::utils::TParametersDouble, mrpt::utils::TParametersString and many new methods. See the example params-by-name.</span>
<a name="l00326"></a>00326 <span class="comment">                        - New method TCamera::scaleToResolution() for scale camera calibration params for different resolutions.</span>
<a name="l00327"></a>00327 <span class="comment">                        - In mrpt::slam::CMetricMap</span>
<a name="l00328"></a>00328 <span class="comment">                                - New method loadFromSimpleMap() (fast inline call to loadFromProbabilisticPosesAndObservations, with a better name!).</span>
<a name="l00329"></a>00329 <span class="comment">                                - The method alignBylikelihoodHillClimbing() has been removed, since it didn&#39;t make sense there and was a pretty old and unefficient implementation.</span>
<a name="l00330"></a>00330 <span class="comment">                        - In mrpt::slam::CSimpleMap:</span>
<a name="l00331"></a>00331 <span class="comment">                                - New methods loadFromFile() and saveToFile().</span>
<a name="l00332"></a>00332 <span class="comment">                                - Added STL-like iterators and such.</span>
<a name="l00333"></a>00333 <span class="comment">                        - mrpt::slam::CObservationGPS: Fixed const&#39;ness of the getAsStruct&lt;&gt;() methods.</span>
<a name="l00334"></a>00334 <span class="comment">                        - Absolute pixel coordinates are now permited where previously there were only factors over width/height. See:</span>
<a name="l00335"></a>00335 <span class="comment">                                - mrpt::opengl::COpenGLViewport::setViewportPosition and mrpt::opengl::COpenGLViewport::getViewportPosition.</span>
<a name="l00336"></a>00336 <span class="comment">                                - mrpt::gui::CDisplayWindow3D::addTextMessage.</span>
<a name="l00337"></a>00337 <span class="comment">                                - CMyGLCanvasBase::renderTextBitmap (now accepts negative pixel coords as well, meaning to wrap).</span>
<a name="l00338"></a>00338 <span class="comment">                        - mrpt::hwdrivers::CGenericSensor::registerClass is now public.</span>
<a name="l00339"></a>00339 <span class="comment">                        - All MRPT containers (mrpt::vector_double, all kind of matrices, arrays, etc) now have two new methods for saving to and loading from text files &quot;as vectors&quot;, i.e. even for matrices, all the elements are saved/loaded as a simple sequence:</span>
<a name="l00340"></a>00340 <span class="comment">                                - loadFromTextFileAsVector</span>
<a name="l00341"></a>00341 <span class="comment">                                - saveToTextFileAsVector</span>
<a name="l00342"></a>00342 <span class="comment">                        - mrpt::hwdrivers::CActivMediaRobotBase can now transparently open serial ports &gt;COM4 in Windows without the prefix &quot;\\.\&quot; (it&#39;s added automatically if needed).</span>
<a name="l00343"></a>00343 <span class="comment">                        - The ANN library has been moved from mrpt-maps to mrpt-base (still can be reached at the same path under &lt;mrpt/otherlibs/ann/...&gt;. This is to allow more code to use KD-trees without depending on mrpt-maps.</span>
<a name="l00344"></a>00344 <span class="comment">                        - mrpt::vision::TPixelCoordf now holds &quot;float&quot; coordinates instead of &quot;double&quot; since: it&#39;s enough for pixels, to save memory, and for consistency in name suffixes &quot;f&quot;.</span>
<a name="l00345"></a>00345 <span class="comment">                        - mrpt::utils::CCanvas now uses TColor as color data type, instead of &quot;int&quot;s (finally!).</span>
<a name="l00346"></a>00346 <span class="comment">                - New functions:</span>
<a name="l00347"></a>00347 <span class="comment">                        - mrpt::math::kmeans, mrpt::math::kmeanspp: Efficient implementations of k-means and k-means++ algorithms. By David Arthur (Standford, USA) (See http://www.stanford.edu/~darthur/kmpp.zip ).</span>
<a name="l00348"></a>00348 <span class="comment">                        - mrpt::vision::findMultipleChessboardsCorners</span>
<a name="l00349"></a>00349 <span class="comment">                        - mrpt::vision::camera_calib_ba is a new method based on Bundle-Adjustment to calibrate a camera from the tracking of a set of random points.</span>
<a name="l00350"></a>00350 <span class="comment">                        - Added &lt;&lt; and &gt;&gt; operators to mrpt::math::CArrayNumeric&lt;&gt; classes to dump/read them with MRPT&#39;s mrpt::utils::CStream streams.</span>
<a name="l00351"></a>00351 <span class="comment">                        - mrpt::topography::ENUToGeocentric</span>
<a name="l00352"></a>00352 <span class="comment">                        - mrpt::gui::CMyGLCanvasBase::textBitmapWidth, a new function to compute the width of a bitmap string.</span>
<a name="l00353"></a>00353 <span class="comment">                - New classes:</span>
<a name="l00354"></a>00354 <span class="comment">                        - mrpt::hwdrivers::CStereoGrabber_SVS: New class to grab from a Videre Stereo camera (By Cyril Gerber, thanks!). Support has been also built into mrpt::hwdrivers::CCameraSensor.</span>
<a name="l00355"></a>00355 <span class="comment">                        - New hierarchy of computer vision detectors/detectable objects. See new namespace mrpt::detectors for the new library mrpt-detectors.</span>
<a name="l00356"></a>00356 <span class="comment">                        - mrpt::math::CSparseMatrix for efficient sparse matrix computations (based on code from robotvision &amp; the CSparse library - see the class doc for more details and credits).</span>
<a name="l00357"></a>00357 <span class="comment">                        - New generalized KD-tree pattern class: mrpt::math::KDTreeCapable, previously used only for points of maps, now used in more places.</span>
<a name="l00358"></a>00358 <span class="comment">                        - Feature tracking for images now has a set of different implementations. See mrpt::vision::CGenericFeatureTracker</span>
<a name="l00359"></a>00359 <span class="comment">                        - mrpt::slam::CObservationStereoImagesFeatures to hold the minimum information needed by a stereo SLAM back-end algorithm.</span>
<a name="l00360"></a>00360 <span class="comment">                - New applications:</span>
<a name="l00361"></a>00361 <span class="comment">                        - track-video-features: A demonstration of robust feature detection and tracking on a video/live camera stream. See http://www.mrpt.org/Application:track-video-features</span>
<a name="l00362"></a>00362 <span class="comment">                - New examples:</span>
<a name="l00363"></a>00363 <span class="comment">                        - kmeans</span>
<a name="l00364"></a>00364 <span class="comment">                        - params-by-name</span>
<a name="l00365"></a>00365 <span class="comment">                        - checkerboardDetectors</span>
<a name="l00366"></a>00366 <span class="comment">                        - multipleCheckerboards</span>
<a name="l00367"></a>00367 <span class="comment">                        - face-detector</span>
<a name="l00368"></a>00368 <span class="comment">                - Global settings:</span>
<a name="l00369"></a>00369 <span class="comment">                        - New global variable mrpt::global_settings::POINTSMAPS_3DOBJECT_POINTSIZE</span>
<a name="l00370"></a>00370 <span class="comment">                - BUGFIXES:</span>
<a name="l00371"></a>00371 <span class="comment">                        - &lt;b&gt;CRITICAL REGRESION FIXED&lt;/b&gt;: The program rbpf-slam did always crash at start-up in MRPT 0.9.0.</span>
<a name="l00372"></a>00372 <span class="comment">                        - Fixed annoying JavaScript error in CHM documentation.</span>
<a name="l00373"></a>00373 <span class="comment">                        - Fixed bug when accessing matrixes in CKalmanFilterCapable.h if the OBS_SIZE and the FEAT_SIZE parameters are different.</span>
<a name="l00374"></a>00374 <span class="comment">                        - Fixed crash (on non Win32) when calling mrpt::system::joinThread on an empty thread handle.</span>
<a name="l00375"></a>00375 <span class="comment">                        - Error in CStream-classes handling files larger than 4Gb.</span>
<a name="l00376"></a>00376 <span class="comment">                        - Fixed build with BUILD_SHARED_LIBS=OFF under Visual Studio.</span>
<a name="l00377"></a>00377 <span class="comment">                        - Fixed: RANSAC won&#39;t use the last input data point (Thanks &quot;Stephane&quot; for reporting!)</span>
<a name="l00378"></a>00378 <span class="comment">                        - mrpt::slam::COccupancyGridMap2D::TLikelihoodOptions::loadFromConfigFile ignored the &quot;section&quot; name for loading &quot;likelihoodMethod&quot; (reported by Thomas Ciarfuglia, Università di Perugia).</span>
<a name="l00379"></a>00379 <span class="comment">                        - Fixed build error when compiling without OpenGL/GLUT support.</span>
<a name="l00380"></a>00380 <span class="comment">                        - The method mrpt::slam::CColouredPointsMap::insertPoint( float x, float y, float z, float R, float G, float B ) was declared but not defined.</span>
<a name="l00381"></a>00381 <span class="comment">                        - Fixed ignoring the first time ALT+ENTER is pressed in mrpt::gui::CDisplayWindow3D</span>
<a name="l00382"></a>00382 <span class="comment">                        - Fixed compilation against older OpenCV versions 1.1.0 and 2.0.0.</span>
<a name="l00383"></a>00383 <span class="comment"></span>
<a name="l00384"></a>00384 <span class="comment"></span>
<a name="l00385"></a>00385 <span class="comment">  &lt;br&gt; &lt;hr&gt; &lt;br&gt;</span>
<a name="l00386"></a>00386 <span class="comment"></span>
<a name="l00387"></a>00387 <span class="comment">  &lt;a name=&quot;0.9.0&quot;&gt;</span>
<a name="l00388"></a>00388 <span class="comment">  &lt;h2&gt;Version 0.9.0: Released 3-JUN-2010 (SVN 1880) &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00389"></a>00389 <span class="comment">        - &lt;b&gt;Most relevant changes:&lt;/b&gt;</span>
<a name="l00390"></a>00390 <span class="comment">                - New minor version number started (0.9.0) due to incompatible changes in the ABI and in some parts of the API (read below for &quot;Important changes in the API&quot;).</span>
<a name="l00391"></a>00391 <span class="comment">                - The previous &quot;mrpt-core&quot; library has been split into several smaller libs for better modularity, less dependencies of user programs and faster recompiling.</span>
<a name="l00392"></a>00392 <span class="comment">                - Compile/build: Support for MSVC 2010.</span>
<a name="l00393"></a>00393 <span class="comment">                - Support for the 3D cameras SR3000/SR4000. See mrpt::hwdrivers::CSwissRanger3DCamera and &lt;a href=&quot;http://www.mrpt.org/Example:SwissRanger_SR4000_3D_camera&quot; &gt;this example&lt;/a&gt;.</span>
<a name="l00394"></a>00394 <span class="comment">                - The library mrpt-htmslam is now part of public MRPT releases (I tried to also release hmt-slam-gui but it would delay for too long... still in SVN only for now).</span>
<a name="l00395"></a>00395 <span class="comment">                - The program &#39;icp-slam&#39;, and mrpt::slam::CMetricMapBuilderICP, are now capable of handling two kinds of rawlogs: based on CSensoryFrame&#39;s (as usual), and the newest only containing CObservation&#39;s. Note however that ICP-SLAM now requires all odometry actions/observations to have a valid timestamp (very old datasets &lt;=2007 would need to be fixed in RawlogViewer).</span>
<a name="l00396"></a>00396 <span class="comment">                - An important conceptual milestone: New base class mrpt::utils::CObject created to unify the MRPT RTTI system, instead of loading everything on CSerializable (which is now a derived class of CObject). This allows taking advantage of MRPT&#39;s smart pointers without forcing to implement serialization. Existing user code should be not affected at all.</span>
<a name="l00397"></a>00397 <span class="comment">                - Fixed critical bugs in rawlog-grabber and in 6D KF-SLAM (read below).</span>
<a name="l00398"></a>00398 <span class="comment">                - MRPT now uses Google&#39;s unit test framework (gtest). Dozens of automated tests already exist to provide a robust, continuous checking of the health of MRPT core functionality.</span>
<a name="l00399"></a>00399 <span class="comment"></span>
<a name="l00400"></a>00400 <span class="comment">  &lt;a name=&quot;0.9.0.API&quot;&gt;</span>
<a name="l00401"></a>00401 <span class="comment">        - &lt;b&gt;Important changes in the API:&lt;/b&gt; Changes that *may* break existing user code.</span>
<a name="l00402"></a>00402 <span class="comment">                - Calls to buildAuxPointsMap() in some CObservation-derived classes must be replaced by buildAuxPointsMap&lt;CPointsMap&gt;().</span>
<a name="l00403"></a>00403 <span class="comment">                - Localization with particle filters is now implemented in mrpt::slam::CMonteCarloLocalization2D, and mrpt::poses::CPosePDFParticles is now just a data storage class, used as a base class. If you used this class in your code, an option is to employ macros like &quot;#if MRPT_VERSION&gt;=0x090&quot;, etc. to handle different versions of MRPT.</span>
<a name="l00404"></a>00404 <span class="comment">                - mrpt::slam::CObservationImage and mrpt::slam::CObservationStereoImages now use a structure mrpt::utils::TCamera instead of separate fields for focal length, intrinsic and distortion parameters.</span>
<a name="l00405"></a>00405 <span class="comment">                - color functions moved from mrpt::vision to mrpt::utils (See mrpt::utils::colormap, ...).</span>
<a name="l00406"></a>00406 <span class="comment">                - mrpt::utils::CImage: The method cross_correlation() is now what was previously called openCV_cross_correlation().</span>
<a name="l00407"></a>00407 <span class="comment">                - mrpt::vision::openCV_cross_correlation() function deleted, since it&#39;s already in CImage.</span>
<a name="l00408"></a>00408 <span class="comment">                - mrpt::slam::CObservation::likelihoodWith() has been removed. It&#39;s somehow replaced by mrpt:::slam::observationsOverlap().</span>
<a name="l00409"></a>00409 <span class="comment">                - COccupancyGridMap2D::extractFeatures(), COccupancyGridMap2D::extractFeatures(), ... have been moved out of the map itself to a new class: mrpt::slam::COccupancyGridMapFeatureExtractor.</span>
<a name="l00410"></a>00410 <span class="comment">                - CImageGrabber_OpenCV, CImageGrabber_dc1394 and CStereoGrabber_Bumblebee: Have been moved from mrpt::vision to mrpt::hwdrivers, its natural place. Users using these classes thru CCameraSensor will not realize of the difference.</span>
<a name="l00411"></a>00411 <span class="comment">                - mrpt::utils::TMatchingPair and mrpt::utils::TMatchingPairList have been moved from been member classes of mrpt::slam::CMetricMap to be independent structures, now sited in mrpt-base for a more spread usage. Note that for compatibility there are still typedefs within CMetricMap, but it&#39;s recommended to use the new names of the structs.</span>
<a name="l00412"></a>00412 <span class="comment">                - The member mrpt::slam::CPointsMap::TInsertionOptions::matchStaticPointsOnly has been removed, since it had little practical utility and broke independence between sub-libraries.</span>
<a name="l00413"></a>00413 <span class="comment">                - The header &lt;mrpt/slam/pose_graph_optimizers.h&gt; has been renamed &lt;mrpt/slam/graph_slam.h&gt;.</span>
<a name="l00414"></a>00414 <span class="comment">                - The class CRobotSimulator has been moved from mrpt::slam to mrpt::utils, since it had nothing to do with SLAM.</span>
<a name="l00415"></a>00415 <span class="comment">                - The function mrpt::hwdrivers::registerAllSensors() has been removed, since it&#39;s now not needed (registration is now done reliably at startup).</span>
<a name="l00416"></a>00416 <span class="comment"></span>
<a name="l00417"></a>00417 <span class="comment"></span>
<a name="l00418"></a>00418 <span class="comment">        - &lt;b&gt;Detailed list of changes:&lt;/b&gt;</span>
<a name="l00419"></a>00419 <span class="comment">                - Applications:</span>
<a name="l00420"></a>00420 <span class="comment">                        - simul-landmarks:</span>
<a name="l00421"></a>00421 <span class="comment">                                - New parameter &quot;show_in_3d&quot; to display a 3D view with the complete simulated robot path and landmarks.</span>
<a name="l00422"></a>00422 <span class="comment">                                - It can now simulate random walks of a robot in 6D, not only over a 2D plane as in previous versions.</span>
<a name="l00423"></a>00423 <span class="comment">                                - Generated rawlogs are gz-compressed.</span>
<a name="l00424"></a>00424 <span class="comment">                        - RawlogViewer:</span>
<a name="l00425"></a>00425 <span class="comment">                                - Much more efficient operations of cutting a rawlog (removing a part, keeping a part only), via a new method mrpt::CRawlog::remove() for ranges of indices.</span>
<a name="l00426"></a>00426 <span class="comment">                                - The program can now export all the images from a given camera as an AVI file (or two, for stereo cameras).</span>
<a name="l00427"></a>00427 <span class="comment">                                - New menu option to regenerate the odometry timestamps of very old datasets (&lt;=2007).</span>
<a name="l00428"></a>00428 <span class="comment">                        - icp-slam:</span>
<a name="l00429"></a>00429 <span class="comment">                                - The program &#39;icp-slam&#39;, and mrpt::slam::CMetricMapBuilderICP, are now capable of handling two kinds of rawlogs: based on CSensoryFrame&#39;s (as usual), and the newest only containing CObservation&#39;s.</span>
<a name="l00430"></a>00430 <span class="comment">                                - New parameters to set a minimum distance between pose correction with ICP, for faster execution.</span>
<a name="l00431"></a>00431 <span class="comment">                        - kf-slam:</span>
<a name="l00432"></a>00432 <span class="comment">                                - Now has a much more rich live visualization as a 3D view. See http://www.mrpt.org/Application:kf-slam</span>
<a name="l00433"></a>00433 <span class="comment">                        - ICP and RBPF SLAM now have a new option to always insert any kind of CObservation-derived class. See mrpt::slam::CMetricMapBuilder::TOptions::alwaysInsertByClass</span>
<a name="l00434"></a>00434 <span class="comment">                        - rawlog-grabber: Now supports extra sensors defined by the user by means of compile-time &quot;plug ins&quot;. See http://www.mrpt.org/Application:rawlog-grabber</span>
<a name="l00435"></a>00435 <span class="comment">                - New namespaces:</span>
<a name="l00436"></a>00436 <span class="comment">                        - mrpt::global_settings for global switches to tune MRPT behavior at runtime.</span>
<a name="l00437"></a>00437 <span class="comment">                        - mrpt::math::jacobians that unifies Jacobian-related functions.</span>
<a name="l00438"></a>00438 <span class="comment">                - New classes:</span>
<a name="l00439"></a>00439 <span class="comment">                        - Support for the SwissRanger 3D cameras SR3000/SR4000. See the C++ class mrpt::hwdrivers::CSwissRanger3DCamera and &lt;a href=&quot;http://www.mrpt.org/Example:SwissRanger_SR4000_3D_camera&quot; &gt;this example&lt;/a&gt;.</span>
<a name="l00440"></a>00440 <span class="comment">                        - Implementation of the observer/observable design pattern in the classes: mrpt::utils::CObservable &amp; mrpt::utils::CObserver . See also the example &quot;observer_pattern&quot;.</span>
<a name="l00441"></a>00441 <span class="comment">                        - Usage of the observer/observable design to dispatch events in GUI windows. See mrpt::gui::CBaseGUIWindow.</span>
<a name="l00442"></a>00442 <span class="comment">                        - Usage of the observer/observable design to enable anyone to subscribe to changes in metric maps. See mrpt::slam::mrptEventMetricMapInsert,                    - New set of classes to represent 6D poses using 3D translation + a quaternion for rotation:</span>
<a name="l00443"></a>00443 <span class="comment">                                - mrpt::poses::CPose3DQuat  - which can be transparently converted to/from mrpt::poses::CPose3D</span>
<a name="l00444"></a>00444 <span class="comment">                                - mrpt::poses::CPose3DQuatPDF</span>
<a name="l00445"></a>00445 <span class="comment">                                - mrpt::poses::CPose3DQuatPDFGaussian</span>
<a name="l00446"></a>00446 <span class="comment">                        - New class mrpt::utils::CStartUpClassesRegister useful to automatically register CObject-derived classes from user code (and all the MRPT libs).</span>
<a name="l00447"></a>00447 <span class="comment">                        - New OpenGL class: mrpt::opengl::CBox, for representing rectangular solid or wireframed boxes.</span>
<a name="l00448"></a>00448 <span class="comment">                        - New class: mrpt::utils::CListOfClasses</span>
<a name="l00449"></a>00449 <span class="comment">                        - New class mrpt::poses::CRobot2DPoseEstimator: A simple filter to estimate and extrapolate the robot 2D (x,y,phi) pose from asynchronous odometry and localization data.</span>
<a name="l00450"></a>00450 <span class="comment">                        - New thread-safe template queue: mrpt::utils::CThreadSafeQueue, which is a generalization of the previous mrpt::utils::CMessageQueue.</span>
<a name="l00451"></a>00451 <span class="comment">                        - New hardware driver: mrpt::hwdriver::CBoardIR for a MAPIR custom I/O board for infrared sensors.</span>
<a name="l00452"></a>00452 <span class="comment">                - Improved classes:</span>
<a name="l00453"></a>00453 <span class="comment">                        - mrpt::bayes::CKalmanFilterCapable now has a new parameter (debug_verify_analytic_jacobians) to automatically verify the user-providen Jacobians vs. numerical ones.</span>
<a name="l00454"></a>00454 <span class="comment">                        - mrpt::slam::CMetricMap (all metric maps) now have a hook method to be called after successful observation insertion.</span>
<a name="l00455"></a>00455 <span class="comment">                        - mrpt::hwdrivers::CRovio has been cleaned and redesigned for offering an easier interface.</span>
<a name="l00456"></a>00456 <span class="comment">                        - mrpt::gui::CDisplayWindow3D now switches full-screen pressing Alt+Enter.</span>
<a name="l00457"></a>00457 <span class="comment">                        - mrpt::vision::CFeatureExtraction now supports the FAST feature detector.</span>
<a name="l00458"></a>00458 <span class="comment">                        - Many mrpt::poses classes now have a more complete support for composition/inverse composition of poses/poses, poses/points, etc. including their uncertainties and Jacobians for the PDF classes.</span>
<a name="l00459"></a>00459 <span class="comment">                        - mrpt::slam::CHeightGridMap2D now has a method to compute the intersection of 3D rays with its cells.</span>
<a name="l00460"></a>00460 <span class="comment">                        - New serialization format of CPose3D, which saves about a 5% in (uncompressed) rawlog file sizes.</span>
<a name="l00461"></a>00461 <span class="comment">                        - Pose composition operator += added to mrpt::poses::CPosePDFGaussian, since it was missing there, but existing in the 3D version mrpt::poses::CPose3DPDFGaussian.</span>
<a name="l00462"></a>00462 <span class="comment">                        - Lightweight geometry structs TPose* &amp; TPoint* now also have method asString() and fromString().</span>
<a name="l00463"></a>00463 <span class="comment">                        - mrpt::poses::CPose3D now has a constructor from a quaternion + a (x,y,z) displacement.</span>
<a name="l00464"></a>00464 <span class="comment">                        - mrpt::opengl::CSetOfObjects and mrpt::opengl::COpenGLViewport now have begin() end() and iterators.</span>
<a name="l00465"></a>00465 <span class="comment">                        - mrpt::slam::COccupancyGridMap2D now accepts inserting IR and sonar observations (by rhn - mrhemali.rhn at porcupinefactory dot org)</span>
<a name="l00466"></a>00466 <span class="comment">                        - Added event &quot;file accessed&quot; to mrpt::system::CFileSystemWatcher:</span>
<a name="l00467"></a>00467 <span class="comment">                - Build system:</span>
<a name="l00468"></a>00468 <span class="comment">                        - Support for MSVC 2010.</span>
<a name="l00469"></a>00469 <span class="comment">                - New or improved functions:</span>
<a name="l00470"></a>00470 <span class="comment">                        - In mrpt::topography:</span>
<a name="l00471"></a>00471 <span class="comment">                                - Introduction of the structure mrpt::topography::TGeodeticCoords</span>
<a name="l00472"></a>00472 <span class="comment">                                - New functions implementing more conversions.</span>
<a name="l00473"></a>00473 <span class="comment">                        - Set of new functions for propagating a Gaussian PDF trough an arbitrary function (see also example &#39;unscented_transformation_test&#39;)</span>
<a name="l00474"></a>00474 <span class="comment">                                - mrpt::math::transform_gaussian_montecarlo : Monte Carlo approximation</span>
<a name="l00475"></a>00475 <span class="comment">                                - mrpt::math::transform_gaussian_linear     : First order approximation (as in EKF)</span>
<a name="l00476"></a>00476 <span class="comment">                                - mrpt::math::transform_gaussian_unscented  : Scaled Unscented Transformation (as in UKF).</span>
<a name="l00477"></a>00477 <span class="comment">                        - mrpt::slam::CLandmarksMap::saveToTextFile() now generates a text header in each file explaining the format of the file (compatible with MATLAB comments).</span>
<a name="l00478"></a>00478 <span class="comment">                        - mrpt::opengl::COpenGLViewport::get3DRayForPixelCoord now also works with orthogonal projections.</span>
<a name="l00479"></a>00479 <span class="comment">                        - 3D windows can display an arbitrary number of 2D text messages. See mrpt::gui::CDisplayWindow3D::add2DTextMessage().</span>
<a name="l00480"></a>00480 <span class="comment">                        - mrpt::utils::TTypeName now also supports matrix and CArray-derived classes.</span>
<a name="l00481"></a>00481 <span class="comment">                        - Functions that have been &quot;templatized&quot;:</span>
<a name="l00482"></a>00482 <span class="comment">                                - mrpt::math::normalPDF</span>
<a name="l00483"></a>00483 <span class="comment">                                - mrpt::math::covariancesAndMean</span>
<a name="l00484"></a>00484 <span class="comment">                        - New methods in all kind of matrices (some were only in CMatrixTemplate).</span>
<a name="l00485"></a>00485 <span class="comment">                                - insertMatrix, insertTransposeMatrix</span>
<a name="l00486"></a>00486 <span class="comment">                                - extractCol, extractRow</span>
<a name="l00487"></a>00487 <span class="comment">                        - New functions:</span>
<a name="l00488"></a>00488 <span class="comment">                                - mrpt::system::terminateThread.</span>
<a name="l00489"></a>00489 <span class="comment">                                - mrpt::math::unscented_transform_gaussian</span>
<a name="l00490"></a>00490 <span class="comment">                                - mrpt::math::montecarlo_transform_gaussian</span>
<a name="l00491"></a>00491 <span class="comment">                                - mrpt::math::covariancesAndMeanWeighted</span>
<a name="l00492"></a>00492 <span class="comment">                                - mrpt::math::extractColumnFromVectorOfVectors</span>
<a name="l00493"></a>00493 <span class="comment">                - New examples:</span>
<a name="l00494"></a>00494 <span class="comment">                        - observer_pattern</span>
<a name="l00495"></a>00495 <span class="comment">                        - quaternions</span>
<a name="l00496"></a>00496 <span class="comment">                        - unscented_transformation_test</span>
<a name="l00497"></a>00497 <span class="comment">                        - grab3Dvideo</span>
<a name="l00498"></a>00498 <span class="comment">        - &lt;b&gt;BUG FIXES:&lt;/b&gt;</span>
<a name="l00499"></a>00499 <span class="comment">                - mrpt::utils::CConfigFileBase didn&#39;t always remove extra leading and trailing whitespaces in read_string().</span>
<a name="l00500"></a>00500 <span class="comment">                - Initial size of the window was ignored in mrpt::gui::CDisplayWindow3D.</span>
<a name="l00501"></a>00501 <span class="comment">                - Error returning 2x1 size() in dynamic matrices, since there was only one static member shared by all matrices.</span>
<a name="l00502"></a>00502 <span class="comment">                - Swapped red-blue channels in mrpt::gui::wxImage2MRPTImage (Closes &lt;a href=&quot;http://www.mrpt.org/node/70&quot; &gt;this issue&lt;/a&gt;).</span>
<a name="l00503"></a>00503 <span class="comment">                - mrpt::poses::CPose3D undefined values when initializing from a &quot;-&quot; operator, due to bug in mrpt::math::homogeneousMatrixInverse().</span>
<a name="l00504"></a>00504 <span class="comment">                - mrpt::math::CHistogram::getBinRatio() and hence mrpt::math::histogram when do_normalization=true, always returned zero.</span>
<a name="l00505"></a>00505 <span class="comment">                - Fixed crash in rawlog-grabber when grabbing from a (non-stereo) camera and enabling preview (Closes &lt;a href=&quot;https://sourceforge.net/tracker/?func=detail&amp;aid=2988657&amp;group_id=205280&amp;atid=993006&quot; &gt;SF #2988657 &lt;/a&gt;).</span>
<a name="l00506"></a>00506 <span class="comment">                - When grabbing images with mrpt::hwdrivers::CCameraSensor and decimation is enabled in mrpt::hwdrivers::CGenericSensor, all the images were saved to disk. It&#39;s been fixed so only the decimated ones are saved.</span>
<a name="l00507"></a>00507 <span class="comment">                - Fixed direction errors in the computation of 3D rays of OpenGL viewports for perspective projection. See mrpt::opengl::COpenGLViewport::get3DRayForPixelCoord()</span>
<a name="l00508"></a>00508 <span class="comment">                - RawLogViewer: When loading gz-compressed rawlogs, the &quot;Loading&quot; dialog may close too early.</span>
<a name="l00509"></a>00509 <span class="comment">                - fixed compilation with GCC &lt; 4.4.1 - thanks to zhangbo (å¼ æ³¢) for testing.</span>
<a name="l00510"></a>00510 <span class="comment">                - mrpt::opengl::CPointCloud: When color_from_Z is enabled, sometimes the colors switched when the range in Z was very close to 0.</span>
<a name="l00511"></a>00511 <span class="comment">                - rawlog-grabber: Parameter SF_max_time_span is now observed BEFORE inserting observations in sensory frames, thus the time span limit is strictly respected now.</span>
<a name="l00512"></a>00512 <span class="comment">                - More robust handling of strings with \ r \ n chars in matrixes fromMatlabFormat().</span>
<a name="l00513"></a>00513 <span class="comment">                - Fixed wrong results with mrpt::math::mean() and other functions when applied to vectors of integers (By Edu).</span>
<a name="l00514"></a>00514 <span class="comment">                - Fixed mrpt::system::tokenize&#39;s wrong behavior with GCC.</span>
<a name="l00515"></a>00515 <span class="comment"></span>
<a name="l00516"></a>00516 <span class="comment"></span>
<a name="l00517"></a>00517 <span class="comment">  &lt;hr&gt;</span>
<a name="l00518"></a>00518 <span class="comment"></span>
<a name="l00519"></a>00519 <span class="comment">  &lt;a name=&quot;0.8.1&quot;&gt;</span>
<a name="l00520"></a>00520 <span class="comment">  &lt;h2&gt;Version 0.8.1: Released 6-MAR-2010 (svn 1590). &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00521"></a>00521 <span class="comment">        - A very large reorganization and improvement of &quot;mrpt::math&quot;. Thanks to Pablo Moreno for his big work here.</span>
<a name="l00522"></a>00522 <span class="comment">                - Added a forward declarations header &lt;mrpt/math/math_fwrds.h&gt;</span>
<a name="l00523"></a>00523 <span class="comment">                - New header &lt;mrpt/math/ops_containers.h&gt; with general arithmetic operations applicable to vectors, arrays and matrices of any kind.</span>
<a name="l00524"></a>00524 <span class="comment">                - Most matrix template implementations moved to &lt;mrpt/math/ops_matrices.h&gt;. User code that already included &lt;mrpt/slam.h&gt; will need no change to keep compiling OK.</span>
<a name="l00525"></a>00525 <span class="comment">                - More small functions marked as inline.</span>
<a name="l00526"></a>00526 <span class="comment">                - Fixed some specializations that weren&#39;t actually called due to issues with forward declarations.</span>
<a name="l00527"></a>00527 <span class="comment">                - Clean up of the mrpt::math namespace by moving auxiliary functions to mrpt::math::detail.</span>
<a name="l00528"></a>00528 <span class="comment">                - All kind of matrices now have dozens of common methods (multiply, leftDivide, rightDivide, inverse, det, eigenValues,...); this includes matrix views.</span>
<a name="l00529"></a>00529 <span class="comment">        - Added md5 cryptographic hash function to utils.</span>
<a name="l00530"></a>00530 <span class="comment">        - MRPT can be now built in Win64.</span>
<a name="l00531"></a>00531 <span class="comment">        - Sonar observations are now processed in point maps. See CSimplePointsMap::insertObservation for arguments of type mrpt::slam::CObservationRange.</span>
<a name="l00532"></a>00532 <span class="comment">        - More robust wxSubsystem in mrpt::gui classes.</span>
<a name="l00533"></a>00533 <span class="comment">        - Occupancy grid maps now have a method to simulate sonar sensors. See COccupancyGridMap2D::sonarSimulator.</span>
<a name="l00534"></a>00534 <span class="comment">        - All 3D objects in mrpt::opengl now have a visible/invisible property. See mrpt::opengl::CRenderizable::setVisibility</span>
<a name="l00535"></a>00535 <span class="comment">        - 3D views (mrpt::gui::CDisplayWindow3D and mrpt::gui::CMyGLCanvasBase) now have:</span>
<a name="l00536"></a>00536 <span class="comment">                - Functions to determine the 3D rays for coordinates picked by the user with the mouse. See the example &quot;display3D&quot;.</span>
<a name="l00537"></a>00537 <span class="comment">                - A way to obtain the camera pose as a CPose3D object (see COpenGLViewport::getCurrentCameraPose).</span>
<a name="l00538"></a>00538 <span class="comment">        - New application: navlog-viewer. A GUI tool to reproduce and examine navigation logs. See the applications wiki for more details.</span>
<a name="l00539"></a>00539 <span class="comment">        - mrpt::opengl::CTexturedObject, a new base class to factor code for all mrpt::opengl classes loading/unloading texture images.</span>
<a name="l00540"></a>00540 <span class="comment">        - Particle filters now have new options: verbose, pfAuxFilterOptimal_MLE.</span>
<a name="l00541"></a>00541 <span class="comment">        - read_bool() for INI-like files now accepts &quot;yes/no&quot; and &quot;true/false&quot; apart from &quot;1/0&quot;.</span>
<a name="l00542"></a>00542 <span class="comment">        - mrpt::utils::CTimeLogger now can export all the timing data to a CSV file.</span>
<a name="l00543"></a>00543 <span class="comment">        - mrpt::math::CQuaternion has been &quot;modernized&quot;: it now inherits from CArray&lt;T,4&gt; and many methods are inline and templates.</span>
<a name="l00544"></a>00544 <span class="comment">        - An important refactoring of code in all Particle Filters, both for localization and RBPF-mapping. As a result, with thousands lines of code less, many more algorithms and applications are now supported:</span>
<a name="l00545"></a>00545 <span class="comment">                - The following classes: mrpt::poses::CPosePDFParticles, mrpt::slam::CMultiMetricMapPDF  now support any combination of these algorithms:</span>
<a name="l00546"></a>00546 <span class="comment">                        - pfStandardProposal (SIR), sample size: fixed OR KLD-based dynamic size, different resampling strategies (mrpt::bayes::CParticleFilter::TParticleResamplingAlgorithm).</span>
<a name="l00547"></a>00547 <span class="comment">                        - pfAuxiliaryPFStandard (APF), sample size: fixed OR KLD-based dynamic size.</span>
<a name="l00548"></a>00548 <span class="comment">                        - pfAuxiliaryPFOptimal (Blanco et al.), sample size: fixed OR KLD-based dynamic size.</span>
<a name="l00549"></a>00549 <span class="comment">        - mrpt::system::aligned_malloc and family now work on all OS&#39;s and are used to align the memory of rows in dynamic matrices.</span>
<a name="l00550"></a>00550 <span class="comment">        - Due to many enhancements in the &quot;template-fication&quot; of MRPT, it&#39;s no longer equivalent to use std::vector&lt;double&gt; or vector_double, etc... The later form is the only one supported.</span>
<a name="l00551"></a>00551 <span class="comment">        - New set of classes to allow operating on a transformation of a matrix without building the auxiliary matrix, e.g. transpose, submatrices, etc... See mrpt::math::CMatrixView</span>
<a name="l00552"></a>00552 <span class="comment">        - The following classes have fully STL-like iterators, reverse_iterators and container-like methods (begin(),end(),...):</span>
<a name="l00553"></a>00553 <span class="comment">                - mrpt::math::CMatrixFixedNumeric (and derived classes)</span>
<a name="l00554"></a>00554 <span class="comment">                - mrpt::math::CMatrixTemplate (and derived classes)</span>
<a name="l00555"></a>00555 <span class="comment">                - mrpt::math::CArray (and derived classes)</span>
<a name="l00556"></a>00556 <span class="comment">        - Application 2d-slam-demo:</span>
<a name="l00557"></a>00557 <span class="comment">                - It now supports command-line arguments. Try &quot;2d-slam-demo --help&quot;</span>
<a name="l00558"></a>00558 <span class="comment">                - Several improvements in the GUI.</span>
<a name="l00559"></a>00559 <span class="comment">        - Functions modified as templates to allow its usage with a wider variety of parameter types:</span>
<a name="l00560"></a>00560 <span class="comment">                - mrpt::math::estimateJacobian, mrpt::math::homogeneousMatrixInverse</span>
<a name="l00561"></a>00561 <span class="comment">        - New &quot;STL extension&quot; class: mrpt::utils::bimap&lt;KEY,VAL&gt;, a bidirectional equivalent of std::map.</span>
<a name="l00562"></a>00562 <span class="comment">        - Reorganization of header &lt;mrpt/utils/stl_extensions.h&gt;: it now actually includes a few new headers, one for each important class.</span>
<a name="l00563"></a>00563 <span class="comment">        - News in Kalman Filter implementation:</span>
<a name="l00564"></a>00564 <span class="comment">                - New option to compute custom &quot;new landmark&quot;&#39;s covariance, which is needed by, eg. MonoSLAM. The old version of &quot;OnInverseObservationModel&quot; still exists for backward-compatibility. See the new mrpt::bayes::OnInverseObservationModel.</span>
<a name="l00565"></a>00565 <span class="comment">                - Implementing the Jacobians is now optional. If the corresponding virtual methods are not implemented, it will be automatically detected and numeric approximation of the Jacobians will be estimated.</span>
<a name="l00566"></a>00566 <span class="comment">        - All plots based on wxMathPlot now has a new entry in the popup menu for printing the plot to PS/PDF.</span>
<a name="l00567"></a>00567 <span class="comment">        - wxMathPlot updated to version 0.1.2 (Dec-2009).</span>
<a name="l00568"></a>00568 <span class="comment">        - Poses and point classes in mrpt::poses now have the operator[], usable in the new template constructor of mrpt::math::CArrayNumeric</span>
<a name="l00569"></a>00569 <span class="comment">        - mrpt::utils::CLoadableOptions now also allows writting the configuration to files, not only reading.</span>
<a name="l00570"></a>00570 <span class="comment">        - Build system:</span>
<a name="l00571"></a>00571 <span class="comment">                - Fixed the detection of some standard functions (erfc,lrint,...) under GCC for defining the HAVE_XXX&#39;s in config.h</span>
<a name="l00572"></a>00572 <span class="comment">        - New small functions:</span>
<a name="l00573"></a>00573 <span class="comment">                - mrpt::math::chi2PDF, mrpt::math::chi2CDF, mrpt::math::noncentralChi2CDF  (adapted from code in the Vigra project).</span>
<a name="l00574"></a>00574 <span class="comment">                - trace() (in all matrices), mrpt::math::KLD_Gaussians, mrpt::math::condidenceIntervals</span>
<a name="l00575"></a>00575 <span class="comment">                - mrpt::random::random_generator_for_STL</span>
<a name="l00576"></a>00576 <span class="comment">        - New examples:</span>
<a name="l00577"></a>00577 <span class="comment">                - math_iterators_test</span>
<a name="l00578"></a>00578 <span class="comment">        - BUGFIXES:</span>
<a name="l00579"></a>00579 <span class="comment">                - mrpt::hwdrivers::CBoardSonars was not automatically registered as CGenericSensor.</span>
<a name="l00580"></a>00580 <span class="comment">                - Fixed compiling with ARIA disabled.</span>
<a name="l00581"></a>00581 <span class="comment">                - mrpt::utils::CSimpleDataBase: fixed crash when loading a record with an empty string in any field.</span>
<a name="l00582"></a>00582 <span class="comment">                - Linux only: Fixed errors compiling with glut.h instead of freeglut.h (Thanks rhn for reporting).</span>
<a name="l00583"></a>00583 <span class="comment">                - Fixed crash if mrpt::gui windows are created, all destroyed, then some created again.</span>
<a name="l00584"></a>00584 <span class="comment">                - Linux only: Fixed ignored argument in CSemaphore::release()</span>
<a name="l00585"></a>00585 <span class="comment">                - Fixed wrong serialization of CSetOfTexturedTriangles.</span>
<a name="l00586"></a>00586 <span class="comment">                - Fixed compile errors for latest OpenCV versions due to need to include &lt;cvaux.h&gt; (By Vicente Arevalo).</span>
<a name="l00587"></a>00587 <span class="comment">                - CStream::printf would crash on very large strings. It now supports arbitrarily long strings, just like mrpt::format.</span>
<a name="l00588"></a>00588 <span class="comment">                - Fixed an error compiling against OpenCV 1.1 (mainly for Fedora repositories).</span>
<a name="l00589"></a>00589 <span class="comment">                - Fixed crash if serializing a CObservation2DRangeScan or a CObservation3DRangeScan with zero scan points (will not happen in real situations, but it&#39;s safer now).</span>
<a name="l00590"></a>00590 <span class="comment">                - fixed a conceptual error in mrpt::slam::data_association: The observations do NOT have a covariance matrix! Formulas corrected accordingly.</span>
<a name="l00591"></a>00591 <span class="comment">                - data_association with JCBB only worked with Mahalanobis distance. Fixed for ML.</span>
<a name="l00592"></a>00592 <span class="comment">                - Error loading some parameters from a config file in mrpt::hwdrivers::CSickLaserSerial</span>
<a name="l00593"></a>00593 <span class="comment"></span>
<a name="l00594"></a>00594 <span class="comment">  &lt;br&gt;</span>
<a name="l00595"></a>00595 <span class="comment">  &lt;hr&gt;</span>
<a name="l00596"></a>00596 <span class="comment"></span>
<a name="l00597"></a>00597 <span class="comment">  &lt;a name=&quot;0.8.0&quot;&gt;</span>
<a name="l00598"></a>00598 <span class="comment">  &lt;h2&gt;Version 0.8.0: Released 30-Dec-2009 (SVN 1398). &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00599"></a>00599 <span class="comment">        - &lt;b&gt;Important changes:&lt;/b&gt;</span>
<a name="l00600"></a>00600 <span class="comment">                - New minor version number due to a few incompatible changes in the API. The affected classes are:</span>
<a name="l00601"></a>00601 <span class="comment">                        - mrpt::bayes::CKalmanFilterCapable</span>
<a name="l00602"></a>00602 <span class="comment">                        - mrpt::reactivenav::CReactiveInterfaceImplementation</span>
<a name="l00603"></a>00603 <span class="comment">                        - Headers for namespace mrpt::system have been factored in a number of smaller files.</span>
<a name="l00604"></a>00604 <span class="comment">                - rbpf-slam now builds maps of points.</span>
<a name="l00605"></a>00605 <span class="comment">                - Data association implemented as a generic algorithm and demonstrated in the program 2d-slam-demo.</span>
<a name="l00606"></a>00606 <span class="comment">                - The interface of Kalman filters has been greatly redesigned for a better factoring of code and to explote fixed-size matrices.</span>
<a name="l00607"></a>00607 <span class="comment">                - Hardware and sensors:</span>
<a name="l00608"></a>00608 <span class="comment">                        - PointGrey Research (PGR) Bumblebee &amp; Bumblebee2 cameras: Better support in Win32 and supported for the first time in Linux as well. See mrpt::vision::CStereoGrabber_Bumblebee and mrpt::hwdrivers::CCameraSensor.</span>
<a name="l00609"></a>00609 <span class="comment">                        - New interface to SICK LMS100 via ethernet. Contributed by Adrien Barral (Robopec). See mrpt::hwdrivers::CLMS100Eth and new example &quot;SICK_lms100eth_test&quot;.</span>
<a name="l00610"></a>00610 <span class="comment">                        - Support for advanced GPS devices: NTRIP client + emitter, RTK GPS, etc.</span>
<a name="l00611"></a>00611 <span class="comment">                        - New class for accessing SICK LMS laser scanners with a standard serial port or USB-to-serial RS-232 or RS-424, working for Windows and Linux, up to 75 scans/sec.</span>
<a name="l00612"></a>00612 <span class="comment">                - New algorithms (e.g. A*), many new methods in existing classes and several bug fixes.</span>
<a name="l00613"></a>00613 <span class="comment"></span>
<a name="l00614"></a>00614 <span class="comment">        - &lt;b&gt;Detailed list of all changes.&lt;/b&gt; New stuff and enhancements:</span>
<a name="l00615"></a>00615 <span class="comment">                - MRPT can be now completely built under MinGW (GCC) if wxWidgets and OpenCV are also built with that compiler first. See the instructions in the Wiki.</span>
<a name="l00616"></a>00616 <span class="comment">                - Fixed size matrices can be declared with one or both of the dimensions equal to zero and that wouldn&#39;t lead to an error - until an element is tried to be accessed.</span>
<a name="l00617"></a>00617 <span class="comment">                - The observation mrpt::slam::CRangeBearingKFSLAM now has independent covariance matrices for each sensor point and also the field-of-view have been separated for yaw and pitch.</span>
<a name="l00618"></a>00618 <span class="comment">                - Added a simple profiler class mrpt::utils::CTimeLogger.</span>
<a name="l00619"></a>00619 <span class="comment">                - Added a new option in CMake: MRPT_ENABLE_EMBEDDED_GLOBAL_PROFILER that transform all MRPT_START/MRPT_END macros into calls to the embedded profiler, dumping the results to std::cout (and MSVC output tab) at the end of each execution.</span>
<a name="l00620"></a>00620 <span class="comment">                - mrpt::gui windows now have a method CBaseGUIWindow::getPushedKey, which also returns the key modifiers (shift, alt, etc...).</span>
<a name="l00621"></a>00621 <span class="comment">                - CCameraSensor can now display a preview of the captured images with a &quot;preview_reduction&quot; factor to make them smaller.</span>
<a name="l00622"></a>00622 <span class="comment">                - Great improvements in creating threads by allowing arbitrary function parameters and non-static member methods. See the different signatures of mrpt::system::createThread and mrpt::system::createThreadFromObjectMethod (By Pablo Moreno, small adds by JLBC).</span>
<a name="l00623"></a>00623 <span class="comment">                - mrpt::utils::CImage::saveToFile now has a parameter to select the desired quality of JPEG files.</span>
<a name="l00624"></a>00624 <span class="comment">                - mrpt::hwdrivers::CCameraSensor can now span several worker threads to save the grabbed images to disk, avoiding the CPU bottleneck when capturing high rate video.</span>
<a name="l00625"></a>00625 <span class="comment">                - mrpt::math::CArray: A STL-like container for C fixed-size arrays.</span>
<a name="l00626"></a>00626 <span class="comment">                - New method in CImageGrabber_dc1394 to enumerate all existing Firewire classes. See mrpt::vision::CImageGrabber_dc1394::enumerateCameras.</span>
<a name="l00627"></a>00627 <span class="comment">                - mrpt::hwdrivers::CGPSInterface now can send initialization commands to Javad/TopCon GPS units to setup RTK sources.</span>
<a name="l00628"></a>00628 <span class="comment">                - mrpt::gui window classes now have a static class factory &quot;::Create(...)&quot; similar to their constructor but returning smart pointers.</span>
<a name="l00629"></a>00629 <span class="comment">                - CPointsMap now has a proper observation likelihood method, similar to Sebastian Thrun&#39;s &quot;Likelihood Field&quot; for grids, but using points and KD-trees for the look-ups. See CPointsMap::TLikelihoodOptions</span>
<a name="l00630"></a>00630 <span class="comment">                - rbpf-slam:</span>
<a name="l00631"></a>00631 <span class="comment">                        - Many improvements to rbpf-slam, especially it now supports map building with maps of points.</span>
<a name="l00632"></a>00632 <span class="comment">                        - ICP parameters of rbpf-slam can be now configured via the .ini file.</span>
<a name="l00633"></a>00633 <span class="comment">                        - See the example file shared/mrpt/config_files/rbpf-slam/gridmapping_ICPbased.ini</span>
<a name="l00634"></a>00634 <span class="comment">                - The application 2d-slam-demo now shows and computes stats on data association.</span>
<a name="l00635"></a>00635 <span class="comment">                - mrpt::hwdrivers::CHokuyoURG:</span>
<a name="l00636"></a>00636 <span class="comment">                        - Now has methods setSerialPort/getSerialPort instead of the public-access variable &quot;m_serial_port&quot;.</span>
<a name="l00637"></a>00637 <span class="comment">                        - Added  mrpt::hwdrivers::CHokuyoURG::setReducedFOV.</span>
<a name="l00638"></a>00638 <span class="comment">                - ReactiveNavigation: All functors are finally replaced by the new virtual class mrpt::reactivenav::CReactiveInterfaceImplementation.</span>
<a name="l00639"></a>00639 <span class="comment">                - Data association is now correctly implemented and integrated into mrpt::slam::CRangeBearingKFSLAM2D.</span>
<a name="l00640"></a>00640 <span class="comment">                - mrpt::slam::CColouredPointsMap: It can be now selected different schemes for coloring (new: cmFromHeightRelativeToSensorGray).</span>
<a name="l00641"></a>00641 <span class="comment">                - Added missing loadFromTextFile method to fixed-size matrices.</span>
<a name="l00642"></a>00642 <span class="comment">                - Poses and points have new methods: asString, fromString. See mrpt::poses::CPoseOrPoint</span>
<a name="l00643"></a>00643 <span class="comment">                - getByName in mrpt::opengl classes now is recursive when there are CSetOfObjects objects.</span>
<a name="l00644"></a>00644 <span class="comment">                - New class mrpt::utils::CLog, by Vicente Arevalo.</span>
<a name="l00645"></a>00645 <span class="comment">                - mrpt::utils::CClientTCPSocket: Connect and DNS look-up now have a configurable timeout.</span>
<a name="l00646"></a>00646 <span class="comment">                - For all classes that inherit from mrpt::utils::CDebugOutputCapable, calling printf_debug now also sends the strings to the Visual Studio output window.</span>
<a name="l00647"></a>00647 <span class="comment">                - mrpt::hwdrivers::CGenericSensor:</span>
<a name="l00648"></a>00648 <span class="comment">                        - The class now implements &quot;loadConfig&quot; and the old virtual &quot;loadConfig&quot; has been renamed to &quot;loadConfig_sensorSpecific&quot;. The former calls the latter automatically.</span>
<a name="l00649"></a>00649 <span class="comment">                        - New generic parameter &quot;grab_decimation&quot; that enable decimating any source of observations.</span>
<a name="l00650"></a>00650 <span class="comment">                - New class: mrpt::utils::circular_buffer. Used to enhance the reception buffers of these hardware drivers:</span>
<a name="l00651"></a>00651 <span class="comment">                        - mrpt::hwdrivers::CHokuyoURG</span>
<a name="l00652"></a>00652 <span class="comment">                        - mrpt::hwdrivers::CInterfaceFTDI</span>
<a name="l00653"></a>00653 <span class="comment">                - Utilities for multithread programming (See mrpt::synch)</span>
<a name="l00654"></a>00654 <span class="comment">                        - Added a pattern class for creating thread-safe variables protected by a critical section. See mrpt::synch::CThreadSafeVariable.</span>
<a name="l00655"></a>00655 <span class="comment">                        - Macro THREADSAFE_OPERATION(critsect, operation).</span>
<a name="l00656"></a>00656 <span class="comment">                - Added serialization of missing std::vector&lt;T&gt; for T=std::string, int8_t, int16_t.</span>
<a name="l00657"></a>00657 <span class="comment">                - New methods to read &amp; write the settings of a generic CCameraSensor object from/to a MRPT-provided wxPanel for GUI applications. See mrpt::hwdrivers::writeConfigFromVideoSourcePanel, mrpt::hwdrivers::readConfigIntoVideoSourcePanel</span>
<a name="l00658"></a>00658 <span class="comment">                - COpenGLViewport now has settable min/max clipping values. See mrpt::opengl::COpenGLViewport::setViewportClipDistances.</span>
<a name="l00659"></a>00659 <span class="comment">                - mrpt::utils::CConfigFile now can be created without specifying the associated file and do the association later with a new method.</span>
<a name="l00660"></a>00660 <span class="comment">                - Apart from 2D exclusion areas in laser scanners, 3D prism zones are now supported as well. C2DRangeFinderAbstract::loadExclusionAreas</span>
<a name="l00661"></a>00661 <span class="comment">                - A* algorithm implemented in mrpt::math::CAStarAlgorithm. (By Pablo Moreno)</span>
<a name="l00662"></a>00662 <span class="comment">                - The central registry of MRPT classes (derived from CSerializable) rewritten as a proper Singleton.</span>
<a name="l00663"></a>00663 <span class="comment">                - New interface to SICK LMS100 via ethernet. Contributed by Adrien Barral (Robopec). See mrpt::hwdrivers::CLMS100Eth and new example &quot;SICK_lms100eth_test&quot;.</span>
<a name="l00664"></a>00664 <span class="comment">                - mrpt::utils::CClientTCPSocket now gives a textual description of the error reasons (win32).</span>
<a name="l00665"></a>00665 <span class="comment">                - New namespace with small utilities for networking. See mrpt::utils::net.</span>
<a name="l00666"></a>00666 <span class="comment">                - New class for downloading differential GPS corrections from a NTRIP server. See mrpt::hwdrivers::CNTRIPClient and the example &quot;ntrip-client&quot;.</span>
<a name="l00667"></a>00667 <span class="comment">                - Change in mrpt::bayes::CKalmanFilterCapable: The functionality to be implemented in the virtual method OnInverseObservationModel has been splitted in two parts: the same method, and the new OnNewLandmarkAddedToMap. This factorization allows more code reutilization.</span>
<a name="l00668"></a>00668 <span class="comment">                - Data association is now fully implemented in mrpt::slam::data_association_full_covariance and related methods.</span>
<a name="l00669"></a>00669 <span class="comment">                - New class for accessing SICK LMS laser scanners with a standard serial port or USB-to-serial RS-232 or RS-424, working for Windows and Linux, up to 75 scans/sec. See mrpt::hwdrivers::CSickLaserSerial, or the program rawlog-grabber. See also the new example configuration file &quot;SICK_LMS_serial.ini&quot;.</span>
<a name="l00670"></a>00670 <span class="comment">                - New generic function for CRC16 computation. See mrpt::utils::compute_CRC16</span>
<a name="l00671"></a>00671 <span class="comment">                - mrpt::math::CQuaternion now has methods for fixed size matrices.</span>
<a name="l00672"></a>00672 <span class="comment">                - Assembler optimized versions of small functions (mrpt::utils::round,...).</span>
<a name="l00673"></a>00673 <span class="comment">        - Changes in the build process:</span>
<a name="l00674"></a>00674 <span class="comment">                - Clean up of options in cmake-gui. Many options are now &quot;advanced&quot; so they are hidden in the &quot;simple view&quot;.</span>
<a name="l00675"></a>00675 <span class="comment">                - Better detection of wxWidgets libraries (static/dynamic libs), through a patch submitted to CMake. You&#39;ll need to update CMake to enjoy this feature.</span>
<a name="l00676"></a>00676 <span class="comment">                - Fixed building errors with wxWidgets 2.9.0</span>
<a name="l00677"></a>00677 <span class="comment">                - Fixed compilation of MRPT without opencv (in MSVC it reported an error: library &#39;mrpt-sifthess&#39; missing).</span>
<a name="l00678"></a>00678 <span class="comment">                - Boost is not required anymore. boost-program-options has been replaced by the STL-based TCLAP library.</span>
<a name="l00679"></a>00679 <span class="comment">        - New small functions:</span>
<a name="l00680"></a>00680 <span class="comment">                - mrpt::system::getNumberOfProcessors</span>
<a name="l00681"></a>00681 <span class="comment">                - mrpt::poses::CPose3D::isHorizontal</span>
<a name="l00682"></a>00682 <span class="comment">                - mrpt::math::meanAndCov and mrpt::math::cov now also accept matrices as inputs (just like in MATLAB).</span>
<a name="l00683"></a>00683 <span class="comment">                - mrpt::utils::ObjectToRawString and mrpt::utils::RawStringToObject</span>
<a name="l00684"></a>00684 <span class="comment">                - mrpt::topography::ENU_axes_from_WGS84</span>
<a name="l00685"></a>00685 <span class="comment">                - mrpt::system::os::timegm</span>
<a name="l00686"></a>00686 <span class="comment">                - mrpt::math::CMatrixTemplate::extractSubmatrixSymmetricalBlocks</span>
<a name="l00687"></a>00687 <span class="comment">                - mrpt::utils::keep_max and mrpt::utils::keep_min</span>
<a name="l00688"></a>00688 <span class="comment">                - mrpt::math::make_vector</span>
<a name="l00689"></a>00689 <span class="comment">        - New examples:</span>
<a name="l00690"></a>00690 <span class="comment">                - SICK_laser_serial_test</span>
<a name="l00691"></a>00691 <span class="comment">                - setOfTexturedTrianglesTest</span>
<a name="l00692"></a>00692 <span class="comment">                - ntrip-client</span>
<a name="l00693"></a>00693 <span class="comment">                - http_tests</span>
<a name="l00694"></a>00694 <span class="comment">                - SICK_lms100eth_test</span>
<a name="l00695"></a>00695 <span class="comment">                - a_starAlgorithm</span>
<a name="l00696"></a>00696 <span class="comment">                - cameraCampureAskDialog</span>
<a name="l00697"></a>00697 <span class="comment">        - BUG FIXES:</span>
<a name="l00698"></a>00698 <span class="comment">                - CDisplayWindow3D won&#39;t process char key events (Thanks to Miyamoto Musashi for reporting a tested fix).</span>
<a name="l00699"></a>00699 <span class="comment">                - Linking errors due to missing template instantiations of some mrpt::math functions (Thanks to Diego for reporting).</span>
<a name="l00700"></a>00700 <span class="comment">                - Fixed data association routines.</span>
<a name="l00701"></a>00701 <span class="comment">                - Fixed error when deserializing objects of type mrpt::opengl::CPointCloudColoured</span>
<a name="l00702"></a>00702 <span class="comment">                - Fixed potential crash in mrpt::system::dateTimeLocalToString and other time functions when passed an invalid timestamp value.</span>
<a name="l00703"></a>00703 <span class="comment">                - mrpt::system::formatTimeInterval won&#39;t show the decimal part of seconds.</span>
<a name="l00704"></a>00704 <span class="comment">                - Win32-MSVC only: Removed the &quot;-D_SECURE_SCL=0&quot; flag in user code that uses MRPT through CMake, since it may lead to increadibly-hard-to-debug crashes.</span>
<a name="l00705"></a>00705 <span class="comment">                - Duplicated landmarkIDs in range-bearing observations are now detected as errors.</span>
<a name="l00706"></a>00706 <span class="comment">                - mrpt::opengl::CTexturedPlane didn&#39;t reflect the change of texture after the first time it was rendered.</span>
<a name="l00707"></a>00707 <span class="comment">                - CCameraSensor::setPathForExternalImages didn&#39;t work for saving; it was neccesary to also set CImage::IMAGES_PATH_BASE, which is NOT the expected behavior by the user.</span>
<a name="l00708"></a>00708 <span class="comment">                - Fixed linking errors in user programs linked to MRPT thru CMake, when MRPT is compiled as static libs and ffmpeg support is enabled.</span>
<a name="l00709"></a>00709 <span class="comment">                - mrpt::utils::CConfigFileMemory::write may raise an exception even if there was no error.</span>
<a name="l00710"></a>00710 <span class="comment">                - Linux: Fixed mrpt::hwdrivers::CSerialPort won&#39;t write the whole data block on Write().</span>
<a name="l00711"></a>00711 <span class="comment">                - Fixed OpenGLCanvas not creating a depth buffer in some platforms/systems.</span>
<a name="l00712"></a>00712 <span class="comment">                - (Win32 only) mrpt::hwdrivers::CInterfaceFTDI won&#39;t neither close the USB link or unload the FT2XX.DLL at destruction.</span>
<a name="l00713"></a>00713 <span class="comment">                - C locales changed by default in wxWidgets &gt;=2.9.0 will mess up reading from config files. Fixed by forcing &quot;C&quot; numerics locale in all GUI applications.</span>
<a name="l00714"></a>00714 <span class="comment">                - Fixed potential random crash in mrpt::system::buildTimestampFromParts when used in multi-threaded applications.</span>
<a name="l00715"></a>00715 <span class="comment">                - lib3ds: Won&#39;t render scenes with small scales (LIB3DS_EPSILON has been reduced).</span>
<a name="l00716"></a>00716 <span class="comment">                - GUI apps: Many errors in wxWidgets wxFlexSizers fixed, as detected by the recent wx2.9.0 in Debug mode.</span>
<a name="l00717"></a>00717 <span class="comment">                - The following functions (in mrpt::system) did crash when a malformed TTimeStamp was passed as argument: timestampToParts, dateTimeToString, extractDayTimeFromTimestamp, timeToString, dateToString.</span>
<a name="l00718"></a>00718 <span class="comment">                - mrpt::utils::CClientTCPSocket::connect won&#39;t resolve server names.</span>
<a name="l00719"></a>00719 <span class="comment">                - Fixed hardcoded type &quot;double&quot; in a method of the generic template mrpt::utils::TParameters.</span>
<a name="l00720"></a>00720 <span class="comment">                - Fixed random crashes when opening several CDisplayWindow*&#39;s at the same time.</span>
<a name="l00721"></a>00721 <span class="comment">                - Fixed infinite recursion (stack overflow) when deleting an arc in a mrpt::hmtslam::CHierarchicalMHMap.</span>
<a name="l00722"></a>00722 <span class="comment">                - Potential crash when freeing OpenGL textures from CTexturedPlane due to incorrect call to &quot;glDeleteTextures&quot;.</span>
<a name="l00723"></a>00723 <span class="comment">                - Potential error in mrpt::system::getCurrentThreadTimes with modern MSVC compilers.</span>
<a name="l00724"></a>00724 <span class="comment">                - Fixed Debian bug &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543621&quot; &gt;#543621&lt;/a&gt;.</span>
<a name="l00725"></a>00725 <span class="comment">                - Fixed a minor error in mrpt::math::computeAverageLogLik, giving a constant offset.</span>
<a name="l00726"></a>00726 <span class="comment"></span>
<a name="l00727"></a>00727 <span class="comment"></span>
<a name="l00728"></a>00728 <span class="comment">  &lt;a name=&quot;0.7.1&quot;&gt;</span>
<a name="l00729"></a>00729 <span class="comment">  &lt;h2&gt;Version 0.7.1: Released 17-Aug-2009 (SVN 1144). &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00730"></a>00730 <span class="comment">        - New methods in mrpt::math to compute the covariance from a list of samples (See mrpt::math::cov,...)</span>
<a name="l00731"></a>00731 <span class="comment">        - Small optimizations to random generation of samples from multivariate Gaussians.</span>
<a name="l00732"></a>00732 <span class="comment">        - RBPF-SLAM: all observations are not processed now, but only those after a given minimum increment in odometry (like in GMapping). See mrpt::slam::CMetricMapBuilderRBPF</span>
<a name="l00733"></a>00733 <span class="comment">        - New efficient operators &quot;+=&quot; to compose CPose2D and CPose3D objects.</span>
<a name="l00734"></a>00734 <span class="comment">        - New methods in matrix classes:</span>
<a name="l00735"></a>00735 <span class="comment">                - add_Ac</span>
<a name="l00736"></a>00736 <span class="comment">                - substract_Ac</span>
<a name="l00737"></a>00737 <span class="comment">        - Slightly more efficient and more correct computation of covariance matrix in mrpt::scanmatching::leastSquareErrorRigidTransformation.</span>
<a name="l00738"></a>00738 <span class="comment">        - Fixed the internal detection of OpenCV version according to the newest convention used in OpenCV SVN. This should fix compiling errors in some Linux distributions.</span>
<a name="l00739"></a>00739 <span class="comment">        - Reduction in the number of MRPT libraries: &quot;mrpt-ann&quot; and &quot;mrpt-3ds&quot; have disappeared (for all platforms), since their code is now integrated in &quot;mrpt-core&quot;.</span>
<a name="l00740"></a>00740 <span class="comment">        - &lt;b&gt;The following classes have been renamed&lt;/b&gt; (and their corresponding header files as well). Note that typedefs with the old names will be maintained, but they are now deprecated and will disappear in future releases.</span>
<a name="l00741"></a>00741 <span class="comment">                - CMRPTImage --&gt; CImage</span>
<a name="l00742"></a>00742 <span class="comment">                - CMRPTImageFloat --&gt; CImageFloat</span>
<a name="l00743"></a>00743 <span class="comment">                - CMRPTCanvas --&gt; CCanvas</span>
<a name="l00744"></a>00744 <span class="comment">                - CMRPTMessage --&gt; CMessage</span>
<a name="l00745"></a>00745 <span class="comment">        - New wrapper class added for rendering a scene off-screen using framebuffer object extension (see mrpt::opengl::CFBORender class and example fbo_render_test) (By Vicente Arevalo).</span>
<a name="l00746"></a>00746 <span class="comment">        - Embedded lib3ds 1.3 (Library Author: Jan Eric Kyprianidis), for use in all platforms.</span>
<a name="l00747"></a>00747 <span class="comment">        - PTGs can be created through a class factory. See mrpt::reactivenav::CParameterizedTrajectoryGenerator::CreatePTG.</span>
<a name="l00748"></a>00748 <span class="comment">        - PTG classes rewritten and greatly simplified by using standard STL containers.</span>
<a name="l00749"></a>00749 <span class="comment">        - New utility mrpt::utils::TParameters.</span>
<a name="l00750"></a>00750 <span class="comment">        - mrpt::math::CPolygon is now a wrapper around a mrpt::math::TPolygon2D, implementing serialization, backwards compatible with old code.</span>
<a name="l00751"></a>00751 <span class="comment">        - Added new header &quot;mrpt/reactivenav/motion_planning_utils.h&quot; with global utility functions for reactive navigation and motion planning. See mrpt::reactivenav.</span>
<a name="l00752"></a>00752 <span class="comment">        - New methods in mrpt::slam::CPointsMap classes to set all the points at once (setAllPoints).</span>
<a name="l00753"></a>00753 <span class="comment">        - (UNCOMPLETED!!) New robot navigation algorithm in the mrpt-reactivenav library: PTG-based Rapidly-exploring Random Tree (PRRT) method. See mrpt::reactivenav::CPRRTNavigator</span>
<a name="l00754"></a>00754 <span class="comment">        - Smart pointers are now thread safe through atomic increment/decrement operations.</span>
<a name="l00755"></a>00755 <span class="comment">        - New class for atomic operations. See mrpt::synch::CAtomicCounter</span>
<a name="l00756"></a>00756 <span class="comment">        - Support for custom menu entries in the popup menu of mrpt::gui::CDisplayWindowPlots. See example displayPlots and class CDisplayWindowPlots.</span>
<a name="l00757"></a>00757 <span class="comment">        - Compilation under MinGW completely fixed and tested, including OpenCV and wxWidgets.</span>
<a name="l00758"></a>00758 <span class="comment">        - Added == operator to fixed-size matrices and some CPosePDF* classes.</span>
<a name="l00759"></a>00759 <span class="comment">        - Added STL containers utility &quot;erase_return_next&quot; to stl_extensions.h</span>
<a name="l00760"></a>00760 <span class="comment">        - Implemented missing converter from SOG PDFs in CPose3DPDF::createFrom2D.</span>
<a name="l00761"></a>00761 <span class="comment">        - Windows Installer: Added missing links for some GUI applications.</span>
<a name="l00762"></a>00762 <span class="comment">        - Added several insertion-related methods in some mrpt::opengl classes.</span>
<a name="l00763"></a>00763 <span class="comment">        - (UNCOMPLETED!!): Recovered &quot;mono-slam&quot; as a GUI application for both off-line and real-time monocular camera SLAM. Algorithm recovered by Mohammad Ali Amiri Atashgah (University of Sharif Technology, Tehran, Iran), GUI implementation by Jose Luis Blanco.</span>
<a name="l00764"></a>00764 <span class="comment">        - New examples:</span>
<a name="l00765"></a>00765 <span class="comment">                - fbo_render_test</span>
<a name="l00766"></a>00766 <span class="comment">        - New programs:</span>
<a name="l00767"></a>00767 <span class="comment">                - mono-slam: Monocular SLAM (experimental state, UNCOMPLETED!).</span>
<a name="l00768"></a>00768 <span class="comment">                - prrt-navigator-demo: A GUI to experiment with the new PTG-based Rapidly-exploring Random Tree (PRRT) method (UNCOMPLETED!).</span>
<a name="l00769"></a>00769 <span class="comment">        - BUG FIXES:</span>
<a name="l00770"></a>00770 <span class="comment">                - 2D ellipses won&#39;t render properly in mrpt::opengl::CEllipsoid.</span>
<a name="l00771"></a>00771 <span class="comment">                - Potential static/dynamic library errors when linking against Boost. (Thanks Philipp Robbel for noticing!)</span>
<a name="l00772"></a>00772 <span class="comment">                - CColouredPointsMap will contain inconsistent data after calling insertPoint() or many other methods.</span>
<a name="l00773"></a>00773 <span class="comment">                - CPose3D might accept angle values out of the range ]-pi,pi]. Thanks to Philipp Robbel for noticing!</span>
<a name="l00774"></a>00774 <span class="comment">                - COccupancyGridMap2D::laserScanSimulator: Simulation of scan rays ending in free space were not marked as invalid.</span>
<a name="l00775"></a>00775 <span class="comment">                - Only the header files for mrpt-core were installed in Linux with &quot;make install&quot; (this also affected each Linux distribution packages!). (Closes &lt;a href=&quot;http://sourceforge.net/tracker/?func=detail&amp;atid=993006&amp;aid=2807979&amp;group_id=205280&quot; &gt; SF #2807979 &lt;/a&gt;, thanks Joel).</span>
<a name="l00776"></a>00776 <span class="comment">                - ransac_detect_2D_lines (and probably all RANSAC methods) may raise exceptions for some degenerate cases. Thanks to Joel Mckay for reporting and debugging.</span>
<a name="l00777"></a>00777 <span class="comment">                - Compile errors when using automatic serialization of the STL containers &quot;set&quot; and &quot;multiset&quot;.</span>
<a name="l00778"></a>00778 <span class="comment">                - NULL pointer access when de-serializing an object of a non-registered class.</span>
<a name="l00779"></a>00779 <span class="comment">                - rbpf-slam: The program did get stuck when used in &quot;fixed number of samples&quot; and one particle has a likelihood &gt;20 orders of magnitud than the others. Thanks to Philipp Robbel for detecting and helping to isolate the issue.</span>
<a name="l00780"></a>00780 <span class="comment">                - rbpf-slam: Images &quot;mapping_%05i.png&quot; files were vertically flipped.</span>
<a name="l00781"></a>00781 <span class="comment">                - Won&#39;t fuse two point maps due to an error in CSimplePointsMap::fuseWith. Thanks to Wilian França Costa for the patch.</span>
<a name="l00782"></a>00782 <span class="comment">                - Fixed a little bug in mrpt::opengl::CEllipsoid ray tracing.</span>
<a name="l00783"></a>00783 <span class="comment">                - Wrong computation of ICP covariance. Thanks to Wilian França Costa for the patch.</span>
<a name="l00784"></a>00784 <span class="comment"></span>
<a name="l00785"></a>00785 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l00786"></a>00786 <span class="comment"></span>
<a name="l00787"></a>00787 <span class="comment">  &lt;a name=&quot;0.7.0&quot;&gt;</span>
<a name="l00788"></a>00788 <span class="comment">  &lt;h2&gt;Version 0.7.0: Released 27-May-2009 (SVN 1042). &lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00789"></a>00789 <span class="comment">        - &lt;b&gt;IMPORTANT CHANGES&lt;/b&gt;:</span>
<a name="l00790"></a>00790 <span class="comment">                - Old deprecated methods removed.</span>
<a name="l00791"></a>00791 <span class="comment">                - Changes which may require modifications in user&#39;s code:</span>
<a name="l00792"></a>00792 <span class="comment">                        - Interface of all probability density functions (PDF) changed for efficiency: getEstimatedMean -&gt; getMean, getEstimatedCov -&gt; getCovarianceAndMean or getCovariance ; and objects returned by referenced instead of returning a copy. Old PDF interface methods marked as deprecated (and will dissapear in future releases).</span>
<a name="l00793"></a>00793 <span class="comment">                        - Members x y z (and phi yaw pitch roll where applicable) from mrpt::poses::CPoseOrPoint and derived classes are not public anymore. They must be read out with inline members x(), y() and so on, and written with x(newval), y(newval), etc... This change is needed to assure that the internal state, e.g. in mrpt::poses::CPose3D, is always consistent.</span>
<a name="l00794"></a>00794 <span class="comment">                        - A few matrix arithmetic methods renamed for consistency: Now all start with &quot;multiply_XXX&quot;, &quot;add_XXX&quot;, etc...</span>
<a name="l00795"></a>00795 <span class="comment">                        - Some constructors in poses,points &amp; matrices marked as &quot;explicit&quot; to avoid unintended conversions.</span>
<a name="l00796"></a>00796 <span class="comment">                        - Random number generators marked as deprecated. New programs should use the new object mrpt::random::randomGenerator or instance objects of the class mrpt::random::CRandomGenerator for thread-safety.</span>
<a name="l00797"></a>00797 <span class="comment">                - All covariance matrices passed to a new matrix class with compile time fixed-size, with dramatic speed ups.</span>
<a name="l00798"></a>00798 <span class="comment">                - Data declarations in geometry.h have been moved to lightweight_geom_data, although TPolygons and TObjects are not really lightweight (Pablo).</span>
<a name="l00799"></a>00799 <span class="comment">                - mrpt::vision now integrates SURF features (Requires OpenCV 1.1.0, integrated by Francisco-Angel Moreno), and new interest point descriptors.</span>
<a name="l00800"></a>00800 <span class="comment">                - New hardware supported:</span>
<a name="l00801"></a>00801 <span class="comment">                        - IP cameras via rtsp:// protocol (due to support of FFmpeg libraries).</span>
<a name="l00802"></a>00802 <span class="comment">                        - xSens IMU, MTi devices (Built-in version of XSens library).</span>
<a name="l00803"></a>00803 <span class="comment">                - Win32 only: .lib and .dll files now have a postfix with the MRPT version, that is, &quot;libmrpt-core070.lib&quot; instead of &quot;libmrpt-core.lib&quot;, etc...</span>
<a name="l00804"></a>00804 <span class="comment">                - New algorithms: A generic and applied RANSAC, Dijkstra for graphs, an optimizer for networks of relative poses and data association algorithms. See the list of changes below.</span>
<a name="l00805"></a>00805 <span class="comment">                - Efficient geometry structures and dozens of new geomtry methods (mainly by Pablo Moreno).</span>
<a name="l00806"></a>00806 <span class="comment">                - Geometry methods improved, corrected and expanded in mrpt::math (by Pablo Moreno). See the list of changes below.</span>
<a name="l00807"></a>00807 <span class="comment">                - A more powerful serialization engine capable of handling arbitrarily complex data types built with STL containers and MRPT classes. See the &lt;a href=&quot;http://www.mrpt.org/Serialization&quot; &gt; wiki page&lt;/a&gt;.</span>
<a name="l00808"></a>00808 <span class="comment">                - Several bug fixes.</span>
<a name="l00809"></a>00809 <span class="comment">                - New programs:</span>
<a name="l00810"></a>00810 <span class="comment">                        - camera-calib: A new GUI program (fused of old &quot;camera-calib&quot; &amp; &quot;camera-calib-gui&quot;) for camera calibration with live camera capture.</span>
<a name="l00811"></a>00811 <span class="comment">                        - features-matching: A new computer vision demo application.</span>
<a name="l00812"></a>00812 <span class="comment">                        - 2d-slam-demo: A GUI application which allows the user to run a Extended Kalman Filter (EKF) implementation of range-bearing 2D SLAM in step-by-step or continuous mode.</span>
<a name="l00813"></a>00813 <span class="comment">                - Many new examples:</span>
<a name="l00814"></a>00814 <span class="comment">                        - createVideoFile.</span>
<a name="l00815"></a>00815 <span class="comment">                        - data-association-demo</span>
<a name="l00816"></a>00816 <span class="comment">                        - dijkstra-example</span>
<a name="l00817"></a>00817 <span class="comment">                        - gauss_img_filtering</span>
<a name="l00818"></a>00818 <span class="comment">                        - grab_camera_ffmpeg</span>
<a name="l00819"></a>00819 <span class="comment">                        - optimize_pose_network</span>
<a name="l00820"></a>00820 <span class="comment">                        - polyhedronIntersection: Demonstration of the capabilities of polygon intersection in 3D (Pablo).</span>
<a name="l00821"></a>00821 <span class="comment">                        - polygonSplit: Polygon split (Pablo).</span>
<a name="l00822"></a>00822 <span class="comment">                        - ransac-demo-applications</span>
<a name="l00823"></a>00823 <span class="comment">                        - ransac-demo-plane3D</span>
<a name="l00824"></a>00824 <span class="comment">                        - smart_pointers_test</span>
<a name="l00825"></a>00825 <span class="comment">                        - stl_containers_serialize</span>
<a name="l00826"></a>00826 <span class="comment">                        - tuMicos</span>
<a name="l00827"></a>00827 <span class="comment">                        - type_name</span>
<a name="l00828"></a>00828 <span class="comment"></span>
<a name="l00829"></a>00829 <span class="comment">        - Detailed list of changes:</span>
<a name="l00830"></a>00830 <span class="comment">                - New methods in CPolyhedron to apply common operations to polyhedra. As a corollary, a lot of new polyhedra are now available. polyhedronIntersection demo now includes four times more polyhedra.</span>
<a name="l00831"></a>00831 <span class="comment">                - New powerful method in CPolyhedron to create different types of polyhedra using a regular base. Many existing methods have been adapted to this interface.</span>
<a name="l00832"></a>00832 <span class="comment">                - Added support for base64 encoding &amp; decoding. See mrpt::system::decodeBase64, mrpt::system::encodeBase64</span>
<a name="l00833"></a>00833 <span class="comment">                - Polyhedra intersection demo improved with twelve additional pairs of polyhedra, including a random one (Pablo).</span>
<a name="l00834"></a>00834 <span class="comment">                - Ray tracing now works with CEllipsoid (Pablo).</span>
<a name="l00835"></a>00835 <span class="comment">                - Ray tracing now works with CCylinder (Pablo).</span>
<a name="l00836"></a>00836 <span class="comment">                - mrpt::utils::CSimpleDatabase interface converted to smart pointers.</span>
<a name="l00837"></a>00837 <span class="comment">                - Added &quot;hold_on&quot; and &quot;hold_off&quot; to mrpt::gui::CDisplayWindowPlots.</span>
<a name="l00838"></a>00838 <span class="comment">                - New class for 2D range-bearing SLAM. See mrpt::slam::CRangeBearingKFSLAM2D</span>
<a name="l00839"></a>00839 <span class="comment">                - CGeneralizedCylinder now works internally using CPose3D instead of TPoint3D.</span>
<a name="l00840"></a>00840 <span class="comment">                - Fixed a bug in the calculation of the distance between TPoints3D.</span>
<a name="l00841"></a>00841 <span class="comment">                - XSens Technology has granted us permission to ship the Xsens CMT library along MRPT, thus MRPT now has out-of-the-box support for XSENS MTi devices. See rawlog-grabber and mrpt::hwdrivers::CIMUXSens</span>
<a name="l00842"></a>00842 <span class="comment">                - rawlog-grabber can now save odometry and sonar data from an ARIA-compatible robot (Pioneers 3-DX, AT, etc...). See the new configuration file &quot;share/config_files/rawlog-grabber/activmedia_robot.ini&quot;.</span>
<a name="l00843"></a>00843 <span class="comment">                - rawlog-grabber can record video from IP-cameras thru FFMpeg via the common camera class mrpt::hwdrivers::CCameraSensor.</span>
<a name="l00844"></a>00844 <span class="comment">                - (paco) Bumblebee stereo camera interface mrpt::vision::CStereoGrabber_Bumblebee updates to the lattest vendor&#39;s API for Win32 (Francisco Angel Moreno).</span>
<a name="l00845"></a>00845 <span class="comment">                - mrpt::hwdrivers::CActivMediaRobotBase extended to read sonar data, bumpers and enable the guidance of the robot through a joystick attached to the computer.</span>
<a name="l00846"></a>00846 <span class="comment">                - Ray tracing has been considerably sped up.</span>
<a name="l00847"></a>00847 <span class="comment">                - New methods to mrpt::math::CHistogram to ease the computation of PDFs.</span>
<a name="l00848"></a>00848 <span class="comment">                - New methods to control section visibility in mrpt::opengl::CGeneralizedCylinder.</span>
<a name="l00849"></a>00849 <span class="comment">                - CDisplayWindowPlots now have templatized methods.</span>
<a name="l00850"></a>00850 <span class="comment">                - Added missing 2D point PDF. See mrpt::poses::CPoint2DPDF.</span>
<a name="l00851"></a>00851 <span class="comment">                - Fixed-size matrices (see mrpt::math::CMatrixFixedNumeric) used in many places now where the size can be known at compile-time, representing a dramatic sped up.</span>
<a name="l00852"></a>00852 <span class="comment">                - CGeneralizedCylinder now supports ray tracing (Pablo).</span>
<a name="l00853"></a>00853 <span class="comment">                - Added a non-optimal method to split polygons in theirs convex components, including a simple demo (Pablo).</span>
<a name="l00854"></a>00854 <span class="comment">                - Matrices now have hard-coded optimized implementations for some 2x2 and 3x3 operations (eg. determinant, inverse)</span>
<a name="l00855"></a>00855 <span class="comment">                - (experimental!!) A new generic method, mrpt::slam::data_association, which implements NN (nearest neightbor) and JCBB (Joint Compatibility Branch &amp; Bound).</span>
<a name="l00856"></a>00856 <span class="comment">                - Additional methods to retrieve data from mrpt::opengl::CGeneralizedCylinder (Pablo).</span>
<a name="l00857"></a>00857 <span class="comment">                - Added some methods to mrpt::math::CMatrixTemplate (Pablo).</span>
<a name="l00858"></a>00858 <span class="comment">                - New methods in the geometric classes and in mrpt::opengl::CPolyhedron (Pablo).</span>
<a name="l00859"></a>00859 <span class="comment">                - New methods in mrpt::utils::CImage: scaleImage, rotateImage, ...</span>
<a name="l00860"></a>00860 <span class="comment">                - Added new malloc/realloc/free equivalents for aligned memory. See mrpt::system::os::aligned_malloc</span>
<a name="l00861"></a>00861 <span class="comment">                - New application: &lt;i&gt;features-matching&lt;/i&gt;, for demonstrating and evaluating the performance of several image feature detectors &amp; descriptors. See &lt;a href=&quot;http://www.mrpt.org/Application:features-matching&quot; &gt;its wiki page&lt;/a&gt;.</span>
<a name="l00862"></a>00862 <span class="comment">                - mrpt::registerAllClasses mustn&#39;t be called manually anymore: it&#39;s always automatically executed at startup.</span>
<a name="l00863"></a>00863 <span class="comment">                - Added a generic mechanism to obtain the (compiler independant, unlike typeid) name of a type. See mrpt::utils::TTypeName, and the &lt;a href=&quot;http://www.mrpt.org/Metaprogramming:Type_name_to_string&quot; &gt;documentation on the wiki&lt;/a&gt;.</span>
<a name="l00864"></a>00864 <span class="comment">                - Now all STL containers are serialized automatically via template &lt;&lt; and &gt;&gt; operators, thus the old classes vector_serializable, etc.. are not needed anymore and has been removed. See utils/stl_extensions.h</span>
<a name="l00865"></a>00865 <span class="comment">                - Small changes in polyhedron intersection demo (Pablo).</span>
<a name="l00866"></a>00866 <span class="comment">                - Added methods to agglutinate vectors of mrpt::math::TSegment3D into vectors of (probably skew) mrpt::math::TPolygon3D. Due to their similarities, this code may evolve into a template in the future, so that it&#39;s suitable for both 2D and 3D objects (Pablo).</span>
<a name="l00867"></a>00867 <span class="comment">                - Added methods to extract vectors of mrpt::math::TObject2D and mrpt::math::TObject3D by type (Pablo).</span>
<a name="l00868"></a>00868 <span class="comment">                - More mrpt::opengl classes adapted to mrpt::math::TPoint3D and other geometric lightweight types (Pablo).</span>
<a name="l00869"></a>00869 <span class="comment">                - Maps of landmarks now reuse the feature descriptors defined in mrpt::vision::CFeature. See mrpt::slam::CLandmarksMap</span>
<a name="l00870"></a>00870 <span class="comment">                - Geometric lightweight types have been serialized (JL/Pablo).</span>
<a name="l00871"></a>00871 <span class="comment">                - CSetOfLines class has been almost completely redone, although mantaining its former interface (Pablo).</span>
<a name="l00872"></a>00872 <span class="comment">                - mrpt::opengl::CPolyhedron::rayTrace now works properly (Pablo).</span>
<a name="l00873"></a>00873 <span class="comment">                - mrpt::vision::CFeatureExtraction now has a more uniform interface which separates interest point detectors and descriptors (Francisco-Angel Moreno &amp; Jose Luis)</span>
<a name="l00874"></a>00874 <span class="comment">                - New feature detector: Intensity-domain spin images (SpinImage). See mrpt::vision::CFeatureExtractor</span>
<a name="l00875"></a>00875 <span class="comment">                - Safer constructors of smart pointers from base to derived classes since classes are now always checked at runtime (unless ASSERT_&#39;s are disabled from CMake).</span>
<a name="l00876"></a>00876 <span class="comment">                - Added a CSparseMatrix template, which relies on std::map (Pablo).</span>
<a name="l00877"></a>00877 <span class="comment">                - Added support for intersections in vectors and generic objects (Pablo).</span>
<a name="l00878"></a>00878 <span class="comment">                - Minor change in mrpt::poses::CPose3D::composePoint for efficiency purposes (Pablo).</span>
<a name="l00879"></a>00879 <span class="comment">                - Added methods to estimate lines and planes using linear regression (Pablo).</span>
<a name="l00880"></a>00880 <span class="comment">                - Added method mrpt::math::covariancesAndMean to get covariances and mean of any set of points in N-dimensions (Pablo).</span>
<a name="l00881"></a>00881 <span class="comment">                - The Levenberg-Marquardt implementation now has a second template parameter for the type of the &quot;user parameter&quot; passed to the evaluation functor. Instead of forcing it being a numeric vector, it can now be any arbitrary object. See mrpt::math::CLevenbergMarquardtTempl</span>
<a name="l00882"></a>00882 <span class="comment">                - New consistent pose-network optimizers (Experimental!):</span>
<a name="l00883"></a>00883 <span class="comment">                        - Based on Levenberg-Marquardt. See mrpt::slam::optimizePoseGraph_levmarq</span>
<a name="l00884"></a>00884 <span class="comment">                - A new generic implementation of Dijkstra algorithm for shortest paths on a directed, possibly weighted, graph. See mrpt::math::CDijkstra</span>
<a name="l00885"></a>00885 <span class="comment">                - New centralized class for random number generators: mrpt::random::CRandomGenerator . Old methods marked as deprecated.</span>
<a name="l00886"></a>00886 <span class="comment">                - Random Generators rewritten as a class for thread-safety: Each object has its own internal state for the PRNG.</span>
<a name="l00887"></a>00887 <span class="comment">                - New base class mrpt::utils::CProbabilityDensityFunction for all PDF classes.</span>
<a name="l00888"></a>00888 <span class="comment">                - Added bi-directional conversions between 3D poses and quaternion. See mrpt::math::CQuaternion and  mrpt::poses::CPose3D::getAsQuaternion</span>
<a name="l00889"></a>00889 <span class="comment">                - A new common base class for all GUI windows. See mrpt::gui::CBaseGUIWindow</span>
<a name="l00890"></a>00890 <span class="comment">                - Matrix constructors from poses and points moved from CMatrix &amp; CMatrixD to CMatrixTemplateNumeric for greater utility.</span>
<a name="l00891"></a>00891 <span class="comment">                - Added unary &quot;-&quot; operators to mrpt::poses::CPose3D and mrpt::poses::CPose2D for obtaining the inverse poses quickly.</span>
<a name="l00892"></a>00892 <span class="comment">                - Removed deprecated methods:</span>
<a name="l00893"></a>00893 <span class="comment">                        - From mrpt::utils::CImage: loadFromBMP, loadFromJPEG, saveToBMP, saveToJPEG. Replaced by saveToFile and loadFromFile.</span>
<a name="l00894"></a>00894 <span class="comment">                        - From mrpt::slam::CRawlog and its iterators: isAction. Replace by getType</span>
<a name="l00895"></a>00895 <span class="comment">                - Integration of ffmpeg libraries for frame-by-frame access to any kind of video or streams, like IP cameras via rtsp:// protocol. See mrpt::hwdrivers::CFFMPEG_InputStream</span>
<a name="l00896"></a>00896 <span class="comment">                - 3D windows has a method to obtain the rendered image for user processing as desired. See mrpt::gui::CDisplayWindow3D::captureImagesStart</span>
<a name="l00897"></a>00897 <span class="comment">                - Added copy constructors for mrpt::math::TObject2D and mrpt::math::TObject3D to allow use in containers (Pablo).</span>
<a name="l00898"></a>00898 <span class="comment">                - mrpt::opengl::CPolyhedron and mrpt::opengl::CGeneralizedCylinder classes accustomed to the new geometric methods (Pablo).</span>
<a name="l00899"></a>00899 <span class="comment">                - Added non-secure methods to access geometric object&#39;s coordinates (like in mrpt::math::TPoint2D) as an array (Pablo).</span>
<a name="l00900"></a>00900 <span class="comment">                - Intersections in mrpt::math now work properly in almost every case (Pablo).</span>
<a name="l00901"></a>00901 <span class="comment">                - Added a signWithZero function in utils_defs (Pablo).</span>
<a name="l00902"></a>00902 <span class="comment">                - Added methods in mrpt::opengl::CPolyhedron to work with sets of mrpt::math::TPolygon3D (Pablo).</span>
<a name="l00903"></a>00903 <span class="comment">                - Added a new test for pragma pack (Pablo).</span>
<a name="l00904"></a>00904 <span class="comment">                - Added a video file writer from a sequence of images. See mrpt::vision::CVideoFileWriter</span>
<a name="l00905"></a>00905 <span class="comment">                - Deleted old obsolete classes from mrpt::vision: CGaussianConvolutionKernel, CImageConvolution</span>
<a name="l00906"></a>00906 <span class="comment">                - New utilities added to mrpt::utils::metaprogramming</span>
<a name="l00907"></a>00907 <span class="comment">                - Applied uses of RANSAC added in ransac_applications.h. See mrpt::math::ransac_detect_3D_planes, mrpt::math::ransac_detect_2D_lines and &lt;a href=&quot;http://www.mrpt.org/RANSAC_C++_examples&quot; &gt; examples&lt;/a&gt;.</span>
<a name="l00908"></a>00908 <span class="comment">                - Fonts used in mrpt::utils::CCanvas are now internally saved as gz-compressed data streams, automatically decompressed on first use. This saves ~1Mb in the .DLL/.so file for mrpt-core when compiled with Asian fonts.</span>
<a name="l00909"></a>00909 <span class="comment">                - Two new gz-compression methods: mrpt::compress::zip::compress_gz_data_block and mrpt::compress::zip::decompress_gz_data_block</span>
<a name="l00910"></a>00910 <span class="comment">                - Load/Save of matrices as text files moved from mrpt::math::CMatrixTemplateNumeric to mrpt::math::CMatrixTemplate.</span>
<a name="l00911"></a>00911 <span class="comment">                - mrpt::scanmatching::robustRigidTransformation (and the program grid-matching) dynamically determine the number of RANSAC iterations by default.</span>
<a name="l00912"></a>00912 <span class="comment">                - Exceptions now show a more detailed stack trace. See mrpt::system::stack_trace (requires wxWidgets and building in &quot;Debug&quot;).</span>
<a name="l00913"></a>00913 <span class="comment">                - Added methods to retrieve polygons (as defined in geometry.h) for some graphical classes.</span>
<a name="l00914"></a>00914 <span class="comment">                - Added constructors to transparently swap between heavy and lightweight pose classes (heavy poses are intended to stop being used in some classes in the near future).</span>
<a name="l00915"></a>00915 <span class="comment">                - Geometry methods improved, although still not fully functional.</span>
<a name="l00916"></a>00916 <span class="comment">                - Added generic RANSAC implementation. See mrpt::math::RANSAC_Template, and &lt;a href=&quot;http://www.mrpt.org/RANSAC_C++_examples&quot; &gt; examples&lt;/a&gt;.</span>
<a name="l00917"></a>00917 <span class="comment">                - Edit CPtuHokuyo rawlog-grabber profile to work with CTuMicos.</span>
<a name="l00918"></a>00918 <span class="comment">                - New classes for Micos Tu DT-80. See class mrpt::hwdrivers::CTuMicos.</span>
<a name="l00919"></a>00919 <span class="comment">                - mrpt::system::deleteFilesInDirectory now has a uniform behavior in all platforms, and do not raise &quot;consoles&quot; in Windows GUI applications.</span>
<a name="l00920"></a>00920 <span class="comment">                - lightweight_geom_data (.h and .cpp) added to store some 3D types which require little storage (Pablo Moreno).</span>
<a name="l00921"></a>00921 <span class="comment">                - mrpt::math::geometry methods heavily improved (not fully implemented) (Pablo Moreno).</span>
<a name="l00922"></a>00922 <span class="comment">                - COpenGLStandardObject now includes some new methods (Pablo Moreno).</span>
<a name="l00923"></a>00923 <span class="comment">                - Minor changes in other OpenGL classes (Pablo Moreno).</span>
<a name="l00924"></a>00924 <span class="comment">                - Fixed a bug which caused CMyOpenGLCanvasBase to crash in some cases.</span>
<a name="l00925"></a>00925 <span class="comment">        - BUG FIXES:</span>
<a name="l00926"></a>00926 <span class="comment">                - RawLogViewer didn&#39;t change the label of sensors when multiple observations of the same name were in one Sensory Frame.</span>
<a name="l00927"></a>00927 <span class="comment">                - Visual Leak Detector didn&#39;t work for multi-threaded applications.</span>
<a name="l00928"></a>00928 <span class="comment">                - Fixed failing mrpt::system::directoryExists when using a trailing &quot;/&quot;</span>
<a name="l00929"></a>00929 <span class="comment">                - Fixed dealing with image assignments when the source is externally stored in mrpt::utils::CImage.</span>
<a name="l00930"></a>00930 <span class="comment">                - CMetricMapBuilder::loadCurrentMapFromFile won&#39;t load a GZ-compressed .simplemap file (Reported by Zoltan Tuza).</span>
<a name="l00931"></a>00931 <span class="comment">                - Bad serialization of grayscale image origin (Francisco Moreno).</span>
<a name="l00932"></a>00932 <span class="comment">                - rbpf-slam won&#39;t show the live 3D view (Thanks Yuan Fang for reporting).</span>
<a name="l00933"></a>00933 <span class="comment">                - There was no way to retrieve the main viewport&#39;s camera parameters for CDisplayWindow3D (Thanks Vijay Somers).</span>
<a name="l00934"></a>00934 <span class="comment">                - mrpt::utils::CImage::getAsMatrix didn&#39;t return intensity values in the normalized range [0,1] as documented.</span>
<a name="l00935"></a>00935 <span class="comment">                - mrpt::utils::CMemoryStream: won&#39;t read the last byte of the memory block; won&#39;t assign an external memory block with assignMemoryNotOwn</span>
<a name="l00936"></a>00936 <span class="comment">                - Compile error in Linux with libdc1394 &gt;=2.0.0 but &lt;2.2.0 (Thanks Allemant David for reporting).</span>
<a name="l00937"></a>00937 <span class="comment">                - Compile errors when compiling in Linux without OpenGL (Thanks Michael Lisowski for reporting).</span>
<a name="l00938"></a>00938 <span class="comment">                - Linking error with Visual Studio when building as DLLs: missing implementation of CAngularObservationMesh::TFloatRange::XXX. (Closes SF &lt;a href=&quot;https://sourceforge.net/tracker/index.php?func=detail&amp;aid=2693938&amp;group_id=205280&amp;atid=993006&quot; &gt;2693938&lt;/a&gt;).</span>
<a name="l00939"></a>00939 <span class="comment">                - SceneViewer3D does not save the menu image when saving a snapshot from the menu.</span>
<a name="l00940"></a>00940 <span class="comment">                - mrpt::gui::CDisplayWindow now correctly detects key-strokes.</span>
<a name="l00941"></a>00941 <span class="comment">                - mrpt::gui::CDisplayWindow now does not flick (on Win32) anymore when updating the image.</span>
<a name="l00942"></a>00942 <span class="comment">                - mrpt::system::vectorToBinaryFile crashes for vectors of zero-length.</span>
<a name="l00943"></a>00943 <span class="comment">                - Errors when compiling with ASSERTs off (Thanks Scott! Closes SF &lt;a href=&quot;https://sourceforge.net/tracker2/?func=detail&amp;aid=2616902&amp;group_id=205280&amp;atid=993006&quot; &gt;2616902&lt;/a&gt;).</span>
<a name="l00944"></a>00944 <span class="comment">                - mrpt::poses::CPose3DInterpolator::getPreviousPoseWithMinDistance won&#39;t return the first pose in the path as a valid result.</span>
<a name="l00945"></a>00945 <span class="comment">                - mrpt::system::joinThread could block in Windows if the thread was already closed.</span>
<a name="l00946"></a>00946 <span class="comment">                - Fixed pragmas in mrpt-hwdrivers headers, which may lead to undefined functins while linking against hwdrivers in Visual Studio, non CMake-based projects.</span>
<a name="l00947"></a>00947 <span class="comment">                - Solved wrong name of .lib for mrpt-xsens under Windows, for Debug build (Thanks Vicente Arevalo!).</span>
<a name="l00948"></a>00948 <span class="comment">                - mrpt::utils::CSimpleDatabase::loadFromXML won&#39;t load any valid XML file.</span>
<a name="l00949"></a>00949 <span class="comment">                - Fixed two extremely unusual cases where a mrpt::poses::CPose3D could not be properly created from its homogeneous matrix.</span>
<a name="l00950"></a>00950 <span class="comment"></span>
<a name="l00951"></a>00951 <span class="comment"></span>
<a name="l00952"></a>00952 <span class="comment"></span>
<a name="l00953"></a>00953 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l00954"></a>00954 <span class="comment">        &lt;a name=&quot;0.6.5&quot;&gt;</span>
<a name="l00955"></a>00955 <span class="comment">  &lt;h2&gt;Version 0.6.5: Released 8-Feb-2009.&lt;/h2&gt;&lt;/a&gt;</span>
<a name="l00956"></a>00956 <span class="comment">        - New method for 3D-ICP, aligning pairs of 3D point clouds using a KD-tree for looking for correspondences and Horn&#39;s equation for each iteration. See the class mrpt::slam::CICP, mrpt::slam::CMetricMapsAlignmentAlgorithm::Align3D, and the &lt;a href=&quot;http://www.mrpt.org/3D-ICP_Example&quot; &gt;tutorial page&lt;/a&gt;.</span>
<a name="l00957"></a>00957 <span class="comment">        - Added class COpenGLStandardObject to render custom objects using OpenGL primitives like GL_TRIANGLES or GL_QUAD_STRIP (Pablo Moreno).</span>
<a name="l00958"></a>00958 <span class="comment">        - CText now accepts color changes (Pablo Moreno).</span>
<a name="l00959"></a>00959 <span class="comment">        - Added &quot;contains&quot; method for CSetOfObjects (Pablo Moreno).</span>
<a name="l00960"></a>00960 <span class="comment">        - Added methods for loading matrices from MATLAB-like strings. See  mrpt::math::CMatrixTemplate&lt;T&gt;::fromMatlabStringFormat  and mrpt::utils::CConfigFileBase::read_matrix.</span>
<a name="l00961"></a>00961 <span class="comment">        - New method for computing the mahalanobis distance. See mrpt::math::mahalanobisDistance</span>
<a name="l00962"></a>00962 <span class="comment">        - Levenberg-Marquardt and many other functions in mrpt::random converted into templates.</span>
<a name="l00963"></a>00963 <span class="comment">        - Added some minor methods to graphic classes, especially CSetOfLines (Pablo Moreno).</span>
<a name="l00964"></a>00964 <span class="comment">        - Matrix&#39;s method to save as plain text has been extended with the possibility of adding user comments and selecting the output format. See  mrpt::math::TMatrixTextFileFormat.</span>
<a name="l00965"></a>00965 <span class="comment">        - Added ray trace simulation methods to CRenderizable and every children class except for C3DSScene, CEllipsoid, CCylinder, CGeneralizedCylinder, CPolyhedron and some classes which don&#39;t represent any surfaced object (Pablo Moreno).</span>
<a name="l00966"></a>00966 <span class="comment">        - Added some classes to mrpt::opengl namespace (Pablo Moreno):</span>
<a name="l00967"></a>00967 <span class="comment">                - CAngularObservationMesh to represent a 3D world obtained from a set of traced rays.</span>
<a name="l00968"></a>00968 <span class="comment">                - CCylinder to represent a cylinder, cone or truncated cylinder.</span>
<a name="l00969"></a>00969 <span class="comment">                - CGeneralizedCylinder to represent a generalized cylinder with an axis roughly perpendicular to the Z coordinate.</span>
<a name="l00970"></a>00970 <span class="comment">                - CPolyhedron to represent any object without curves. Includes methods to create common polyhedron, although still lacks some geometric methods.</span>
<a name="l00971"></a>00971 <span class="comment">        - CRenderizable::setColor method now works properly (affecting every child) when used in a CSetOfObjects or CSetOfTriangles (Pablo Moreno).</span>
<a name="l00972"></a>00972 <span class="comment">        - Added method mrpt::CMatrixTemplateNumeric::rank to calculate the rank of a matrix (Pablo Moreno).</span>
<a name="l00973"></a>00973 <span class="comment">        - mrpt::gui windows now correctly detect key-strokes on both the console and the windows themselves. Key codes can be obtained from the method mrpt::gui::CDisplayWindow::waitForKey</span>
<a name="l00974"></a>00974 <span class="comment">        - Header files defining the mrpt fonts (used in mrpt::utils::CCanvas) have been removed from the external headers and are internal now.</span>
<a name="l00975"></a>00975 <span class="comment">        - OpenGL objects now have a scale factor. See mrpt::opengl::CRenderizable::setScale</span>
<a name="l00976"></a>00976 <span class="comment">        - Added type mrpt::math::CMatrixLongDouble for matrices of &quot;long double&quot; (becomes &quot;double&quot; if the compiler does not suppor them).</span>
<a name="l00977"></a>00977 <span class="comment">        - New namespaces:</span>
<a name="l00978"></a>00978 <span class="comment">                - mrpt::vision::pinhole with functions related to camera projection models.</span>
<a name="l00979"></a>00979 <span class="comment">                - mrpt::utils::metaprogramming for grouping the metaprogramming classes.</span>
<a name="l00980"></a>00980 <span class="comment">        - Points and poses constructors from other classes that imply a loss of information are defined as explicit, e.g. CPose3D -&gt; CPose2D, etc...</span>
<a name="l00981"></a>00981 <span class="comment">        - Fixed unnecessary link dependencies on 3ds,zlib &amp; ann libs when linking as DLL in Windows.</span>
<a name="l00982"></a>00982 <span class="comment">        - Quick method mrpt::opengl::COpenGLScene::saveToFile to save 3D scenes.</span>
<a name="l00983"></a>00983 <span class="comment">        - New method for automated camera calibration: mrpt::vision::checkerBoardCameraCalibration</span>
<a name="l00984"></a>00984 <span class="comment">        - Important changes to improve the design of mrpt::opengl classes: &quot;render&quot; method is &quot;const&quot;, more set/get methods instead of public members, etc.</span>
<a name="l00985"></a>00985 <span class="comment">        - New exception class mrpt::utils::CExceptionEOF, used to distinguish between normal and erroneous EOFs found while de-serializing objects from a stream.</span>
<a name="l00986"></a>00986 <span class="comment">        - Added method for RTK GPS path reconstruction: mrpt::topography::path_from_rtk_gps</span>
<a name="l00987"></a>00987 <span class="comment">        - New math methods:  mrpt::math::unwrap2PiSequence, mrpt::math::averageWrap2Pi</span>
<a name="l00988"></a>00988 <span class="comment">        - Added template function mrpt::utils::find_in_vector for searching an element in any std::vector container (like &quot;find&quot; in other containers).</span>
<a name="l00989"></a>00989 <span class="comment">        - New interpolation methods for 1D functions: mrpt::math::interpolate2points, mrpt::math::leastSquareLinearFit.</span>
<a name="l00990"></a>00990 <span class="comment">        - CStream::printf now correctly returns an &quot;int&quot; instead of &quot;void&quot;.</span>
<a name="l00991"></a>00991 <span class="comment">        - Types vector_XXX moved from global to &quot;mrpt&quot; namespace.</span>
<a name="l00992"></a>00992 <span class="comment">        - New color types mrpt::utils::TColor &amp; mrpt::utils::TColorf.</span>
<a name="l00993"></a>00993 <span class="comment">        - Added support for exclusion areas to mark sensed point as invalid in laser scanners. See C2DRangeFinderAbstract::loadExclusionAreas</span>
<a name="l00994"></a>00994 <span class="comment">        - New method CPose3D::composePoint for more efficient 3D pose+point composition.</span>
<a name="l00995"></a>00995 <span class="comment">        - New examples:</span>
<a name="l00996"></a>00996 <span class="comment">                - icp3D: Demonstration of usage for 3D-ICP.</span>
<a name="l00997"></a>00997 <span class="comment">                - rayTrace: Demo of 3D ray tracing (Pablo Moreno).</span>
<a name="l00998"></a>00998 <span class="comment">                - leastSquares: Demonstration of linear least squares interpolation.</span>
<a name="l00999"></a>00999 <span class="comment">        - SceneViewer3D:</span>
<a name="l01000"></a>01000 <span class="comment">                - New menu action &quot;Take snapshot&quot; (F2).</span>
<a name="l01001"></a>01001 <span class="comment">        - RawLogViewer:</span>
<a name="l01002"></a>01002 <span class="comment">                - New combo-box for selecting among different, automatically detected paths for external images. For example, this allows quickly changing between rectified and original images.</span>
<a name="l01003"></a>01003 <span class="comment">                - All I/O file operations now support the gz-compressed format.</span>
<a name="l01004"></a>01004 <span class="comment">                - Edit dialog: Support for multiple selections instead of the old combos.</span>
<a name="l01005"></a>01005 <span class="comment">                - Menu &quot;regenerate GPS&quot; timestamps now allows operating over several sensor labels at once.</span>
<a name="l01006"></a>01006 <span class="comment">                - &quot;Raw Map&quot; module: Now builds 3D maps from sequences with 3 RTK GPS.</span>
<a name="l01007"></a>01007 <span class="comment">        - Support for configuration blocks in rawlogs. See mrpt::slam::CRawlog::getCommentTextAsConfigFile</span>
<a name="l01008"></a>01008 <span class="comment">        - Many improvements in the CMake build system for Linux systems, as part of the Fedora package review process (Thanks to Mamoru Tasaka).</span>
<a name="l01009"></a>01009 <span class="comment">        - BUG FIXES:</span>
<a name="l01010"></a>01010 <span class="comment">                - Error when compiling without GL/GLUT under Linux (Thanks to Chun-Wei for reporting).</span>
<a name="l01011"></a>01011 <span class="comment">                - Wrong computation of the likelihood in COccupancyGridMap2D::computeObservationLikelihood_CellsDifference (Thanks to Fabian Menges, SF &lt;a href=&quot;https://sourceforge.net/tracker2/?func=detail&amp;atid=993006&amp;aid=2570053&amp;group_id=205280&quot; &gt;2570053&lt;/a&gt;).</span>
<a name="l01012"></a>01012 <span class="comment">                - mrpt::utils::ObjectToString won&#39;t really save the object as a string.</span>
<a name="l01013"></a>01013 <span class="comment">                - mrpt::utils::format now works for strings of arbitrarily large lengths.</span>
<a name="l01014"></a>01014 <span class="comment">                - Visual Studio: Exception when mrpt::utils::format tries to generate a too long string.</span>
<a name="l01015"></a>01015 <span class="comment">                - Wrong name of mrpt-zlib libs when compiling without wxWidgets and as DLL.</span>
<a name="l01016"></a>01016 <span class="comment">                - Compilation of app grid-matching fails (SF &lt;a href=&quot;https://sourceforge.net/tracker2/?func=detail&amp;aid=2490011&amp;group_id=205280&amp;atid=993006&quot; &gt;2490011&lt;/a&gt;, Fabian Menges).</span>
<a name="l01017"></a>01017 <span class="comment">                - CPose3DInterpolator: Solved spureous transitions when &quot;yaw&quot; crosses the +-PI threshold.</span>
<a name="l01018"></a>01018 <span class="comment">                - RawLogViewer: Comments text block was lost after some edit operations.</span>
<a name="l01019"></a>01019 <span class="comment">                - Fixed all the warnings: &quot;dpkg-shlibdeps: warning: dependency on ... could be avoided if ... were not uselessly linked against it (they use none of its symbols)&quot;.</span>
<a name="l01020"></a>01020 <span class="comment">                - Fixed an issue with architectures with big endiannes. Fixed Debian bug &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=509366&quot; &gt; #509366 &lt;/a&gt;.</span>
<a name="l01021"></a>01021 <span class="comment"></span>
<a name="l01022"></a>01022 <span class="comment"></span>
<a name="l01023"></a>01023 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l01024"></a>01024 <span class="comment">  &lt;a name=&quot;0.6.4&quot;&gt;</span>
<a name="l01025"></a>01025 <span class="comment">  &lt;h2&gt;Version 0.6.4: Released 20-Dec-2008 (SVN: 696).&lt;/h2&gt;&lt;/a&gt;</span>
<a name="l01026"></a>01026 <span class="comment">        - Full support for compiling all the libraries as DLLs under Windows.</span>
<a name="l01027"></a>01027 <span class="comment">        - Topography helper methods are now grouped in a new namespace: mrpt::topography</span>
<a name="l01028"></a>01028 <span class="comment">        - New class mrpt::utils::CConsoleRedirector for redirecting all the output from std::cout / std::cerr to a log file.</span>
<a name="l01029"></a>01029 <span class="comment">        - New methods in mrpt::utils::CDebugOutputCapable for making easy reporting messages to both the console and a log file.</span>
<a name="l01030"></a>01030 <span class="comment">        - New boolean matrix classes: mrpt::math::CMatrixBool and mrpt::math::CMatrixB</span>
<a name="l01031"></a>01031 <span class="comment">        - mrpt::opengl container classes now have a templatized getByClass&lt;&gt;() method.</span>
<a name="l01032"></a>01032 <span class="comment">        - New interface class for generic PTU called CPtuBase. (Jose Raul Ruiz Sarmiento)</span>
<a name="l01033"></a>01033 <span class="comment">        - New classes for Directed Perception PTU-46-17.5 and PTU Hokuyo interfacing. See class mrpt::hwdrivers::CPtu and mrpt::hwdrivers::CPtuHokuyo. (Jose Raul Ruiz Sarmiento)</span>
<a name="l01034"></a>01034 <span class="comment">        - Fixed the destination of MRPTConfig.cmake in &quot;make install&quot; (and debian packages) such CMake can now automatically find MRPT without asking the user.</span>
<a name="l01035"></a>01035 <span class="comment">        - Added the target &quot;make uninstall&quot; for Linux/Unix systems.</span>
<a name="l01036"></a>01036 <span class="comment">        - New predefined 3D objects (By Miguel Angel Espada Bernal). See http://www.mrpt.org/Predefined_3D_Objects</span>
<a name="l01037"></a>01037 <span class="comment">        - Added mime type files for installation in Linux systems (FreeDesktop-compatible, e.g. KDE, Gnome).</span>
<a name="l01038"></a>01038 <span class="comment">        - Created test targets. Use: &quot;make&quot;, &quot;make test&quot;</span>
<a name="l01039"></a>01039 <span class="comment">        - Better portability with new HAVE_XXX entries in the &quot;config.h&quot; file.</span>
<a name="l01040"></a>01040 <span class="comment">        - Compilation with MinGW/GCC under Windows now supported. Refer to the &lt;a href=&quot;http://www.mrpt.org/Guide:Installing_MinGW_(GCC_for_Windows)&quot; &gt; guide on the wiki &lt;/a&gt;.</span>
<a name="l01041"></a>01041 <span class="comment">        - Occupancy grids now have an alternative method to insert laser scans (now set by default), which takes into account the &quot;widening&quot; of the laser beams with distance. See the insertionOptions member of mrpt::slam::COccupancyGridMap, and also &lt;a href=&quot;http://www.mrpt.org/Occupancy_Grids&quot; &gt;the gridmaps tutorial&lt;/a&gt;.</span>
<a name="l01042"></a>01042 <span class="comment">        - New configuration pragma MRPT_ALWAYS_CHECKS_DEBUG_MATRICES, enabled by default. The old MRPT_ALWAYS_CHECKS_DEBUG is not disabled by default for speed up in a number of classes under Release compilation.</span>
<a name="l01043"></a>01043 <span class="comment">        - New class for pixel color retrieval with sub-pixel accuracy from images with transformed coordinates. See mrpt::utils::CMappedImage</span>
<a name="l01044"></a>01044 <span class="comment">        - New image processing operations: rectify, Median and Gaussian filter, etc... In mrpt::utils::CImage.</span>
<a name="l01045"></a>01045 <span class="comment">        - New method to merge several multivariate Gaussians in a Gaussian mixture (SOG) by minimizing the KL-divergence. See mrpt::poses::CPosePDFSOG::mergeModes.</span>
<a name="l01046"></a>01046 <span class="comment">        - Application SceneViewer renamed to SceneViewer3D to solve the Debian bug &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505272&quot; &gt; #505272 &lt;/a&gt;.</span>
<a name="l01047"></a>01047 <span class="comment">        - New class mrpt::opengl::CSetOfTexturedTriangles for arbitrary shapes in 3D scenes with textures (by Vicente Arevalo).</span>
<a name="l01048"></a>01048 <span class="comment">        - Preview of image capture is posible in rawlog-grabber, thru new option in mrpt::hwdrivers::CCameraSensor.</span>
<a name="l01049"></a>01049 <span class="comment">        - Added support for grabbing FireWire cameras using the library dc1394-2 (The Windows port of dc1394-2 is not released yet). See the new class mrpt::vision::CImageGrabber_dc1394.</span>
<a name="l01050"></a>01050 <span class="comment">        - New methods in matrix classes (and for vectors in mrpt::math::loadVector) for initializing directly from const C arrays.</span>
<a name="l01051"></a>01051 <span class="comment">        - RawlogViewer:</span>
<a name="l01052"></a>01052 <span class="comment">                - Many small improvements in laser &amp; image animations.</span>
<a name="l01053"></a>01053 <span class="comment">                - New menu commands for transforming rawlogs, manipulating gps data, etc...</span>
<a name="l01054"></a>01054 <span class="comment">        - rawlog-grabber:</span>
<a name="l01055"></a>01055 <span class="comment">                - Camera sensors now save images to a external directory. This format is also supported by RawlogViewer and dramatically reduces the cost of visualizing and loading large rawlogs.</span>
<a name="l01056"></a>01056 <span class="comment">                - Support for high-speed &amp; high-resolution IEEE1394 cameras through the class mrpt::hwdrivers::CCameraSensor -&gt; grabber_type = dc1394.</span>
<a name="l01057"></a>01057 <span class="comment">        - New examples:</span>
<a name="l01058"></a>01058 <span class="comment">                - ptuDPerception: Example of use performs a simple scan.</span>
<a name="l01059"></a>01059 <span class="comment">                - ptuHokuyo: A demostration of how coordinate ptu and hokuyo for obtain a map of points that we show using a opengl window.</span>
<a name="l01060"></a>01060 <span class="comment">                - sog-merge: Algorithm for merging SOG pose pdfs.</span>
<a name="l01061"></a>01061 <span class="comment">                - pioneerRobotDemo: A demonstration of connection to a Pioneer robot (ActiveMedia Robotics) and some data requests.</span>
<a name="l01062"></a>01062 <span class="comment">                - gps-coordinates:  Computation of XYZ local coordinates between two precise GPS measurements.</span>
<a name="l01063"></a>01063 <span class="comment">        - New applications:</span>
<a name="l01064"></a>01064 <span class="comment">                - grid-matching: A demonstration of algorithms for occupancy grid map matching. See the &lt;a href=&quot;http://www.mrpt.org/Applications&quot; &gt;application page&lt;/a&gt;.</span>
<a name="l01065"></a>01065 <span class="comment">                - stereo-calib-gui: A tool for calibrating stereo cameras. Based on code from the new OpenCV 1.1.0 and the OpenCV book (requires OpenCV 1.1.0).</span>
<a name="l01066"></a>01066 <span class="comment">        - BUG FIXES:</span>
<a name="l01067"></a>01067 <span class="comment">                - removeObject didn&#39;t work in mrpt::opengl classes.</span>
<a name="l01068"></a>01068 <span class="comment">                - mrpt::utils::CConfigFile reported keys as non-existing if they existed but the actual value was an empty string.</span>
<a name="l01069"></a>01069 <span class="comment">                - occupancy grid map: Potential seg.fault when inserting a laser scan with the first range being invalid.</span>
<a name="l01070"></a>01070 <span class="comment">                - color gradient in mrpt::opengl::CPointCloud was lost with time when color_from_z=true.</span>
<a name="l01071"></a>01071 <span class="comment">                - mrpt::system::extractFileExtension flag for ignore gz extensions didn&#39;t work.</span>
<a name="l01072"></a>01072 <span class="comment">                - Serialization is now compatible between systems with different endianness.</span>
<a name="l01073"></a>01073 <span class="comment">                - Fail to compile with GCC 4.4, Debian bug &lt;a href=&quot;http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505668&quot; &gt; #505668 &lt;/a&gt;. Thanks to Martin Michlmayr.</span>
<a name="l01074"></a>01074 <span class="comment">                - Hopefuly fixed all wrong calculations of very precise (x,y,z) coordinates from latitude, longitude and height, in mrpt::slam::CObservationGPS.</span>
<a name="l01075"></a>01075 <span class="comment">                - Wrong data grabbed from xSens IMU: Gyroscope data saved as XYZ velocities. In mrpt::hwdrivers::CIMUXSens</span>
<a name="l01076"></a>01076 <span class="comment">                - Possible lock when reading from a serial port from two different objects mrpt::hwdrivers::CSerialPort</span>
<a name="l01077"></a>01077 <span class="comment">                - mrpt::system::os::getch: Now really does NOT wait for an enter, but just one keystroke in Linux.</span>
<a name="l01078"></a>01078 <span class="comment">                - mrpt::system::extractFileName didn&#39;t work for filenames already without an extension.</span>
<a name="l01079"></a>01079 <span class="comment">                - mrpt::utils::CMemoryChunk led to segmentation faults since the re-implementation with smart pointers.</span>
<a name="l01080"></a>01080 <span class="comment">                - Wrongly report missing parser for de-serializing a mrpt::slam::CSimplePointsMap object in the lastest binary format.</span>
<a name="l01081"></a>01081 <span class="comment">                - OpenGL render system had an inconsistence with the internal MRPT representation of 3D objects (by Pablo Moreno Olalla).</span>
<a name="l01082"></a>01082 <span class="comment"></span>
<a name="l01083"></a>01083 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l01084"></a>01084 <span class="comment">  &lt;a name=&quot;0.6.3&quot;&gt;</span>
<a name="l01085"></a>01085 <span class="comment">  &lt;h2&gt;Version 0.6.3: Released 23-Oct-2008.&lt;/h2&gt;&lt;/a&gt;</span>
<a name="l01086"></a>01086 <span class="comment">        - Updated &quot;INSTALL-COMPILE.html&quot;</span>
<a name="l01087"></a>01087 <span class="comment">        - mrpt::gui windows can now be used also from user GUIs. This was previously possible from console apps only.</span>
<a name="l01088"></a>01088 <span class="comment">        - Supports compiling without OpenCV.</span>
<a name="l01089"></a>01089 <span class="comment">        - BUG FIXES:</span>
<a name="l01090"></a>01090 <span class="comment">                - GridmapNavSimul crashes on exit, for Windows only (SF &lt;a href=&quot;https://sourceforge.net/tracker2/?func=detail&amp;aid=2189710&amp;group_id=205280&amp;atid=993006&quot; &gt;2189710&lt;/a&gt;).</span>
<a name="l01091"></a>01091 <span class="comment">                - Fixed possible compiling errors related to Boost (Thanks Xuan Vu!).</span>
<a name="l01092"></a>01092 <span class="comment">                - Wrong headers in some embedded jpeglib sources (Thanks Hai Li!).</span>
<a name="l01093"></a>01093 <span class="comment"></span>
<a name="l01094"></a>01094 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l01095"></a>01095 <span class="comment">  &lt;a name=&quot;0.6.2&quot;&gt;</span>
<a name="l01096"></a>01096 <span class="comment">  &lt;h2&gt;Version 0.6.2: Released 21-Oct-2008.&lt;/h2&gt;&lt;/a&gt;</span>
<a name="l01097"></a>01097 <span class="comment">        - &lt;b&gt;IMPORTANT CHANGES&lt;/b&gt;:</span>
<a name="l01098"></a>01098 <span class="comment">                - All metric maps now accept full 6D poses for evaluating observation likelihood, and rbpf-slam now always uses internally  6D poses.</span>
<a name="l01099"></a>01099 <span class="comment">                - mrpt::vision now integrates SIFT features computation thru Hess&#39; C library (http://web.engr.oregonstate.edu/~hess/) (by Francisco Angel Moreno).</span>
<a name="l01100"></a>01100 <span class="comment">                - Many bug fixes, and new samples and applications.</span>
<a name="l01101"></a>01101 <span class="comment"></span>
<a name="l01102"></a>01102 <span class="comment">        - Detailed list of changes:</span>
<a name="l01103"></a>01103 <span class="comment">                - All metric maps now accept full 6D poses for evaluating observation likelihood.</span>
<a name="l01104"></a>01104 <span class="comment">                - Added new macros for easier RTTI: IS_CLASS and IS_DERIVED.</span>
<a name="l01105"></a>01105 <span class="comment">                - New sensor class compatible with rawlog-grabber: A camera image grabber. See mrpt::hwdrivers::CCameraSensor.</span>
<a name="l01106"></a>01106 <span class="comment">                - xSens IMU MTi now works on both Windows &amp; Linux with the new xSens software sources.</span>
<a name="l01107"></a>01107 <span class="comment">                - mrpt::hwdrivers::CIMUXSens now asks the IMU for calibrated acc. &amp; gyr. data as well.</span>
<a name="l01108"></a>01108 <span class="comment">                - New methods in mrpt::math.</span>
<a name="l01109"></a>01109 <span class="comment">                - Linux &amp; gcc only: Use --as-needed to avoid executables depending on useless .so libraries.</span>
<a name="l01110"></a>01110 <span class="comment">                - mrpt::gui::CDisplayWindow3D now can save the render canvas directy as a sequence of images, which helps to create videos from real-time animations.</span>
<a name="l01111"></a>01111 <span class="comment">                - mrpt::bayes::CParticleFilterCapable::computeResampling now implements all 4 resampling algorithms.</span>
<a name="l01112"></a>01112 <span class="comment">                - mrpt::vision now integrates SIFT features computation thru Hess&#39; C library (http://web.engr.oregonstate.edu/~hess/) (by Francisco Angel Moreno).</span>
<a name="l01113"></a>01113 <span class="comment">                - mrpt::math::CMatrixTemplateNumeric::loadFromTextFile: Lines starting with &#39;%&#39; or &#39;#&#39; are interpreted as comments and ignored.</span>
<a name="l01114"></a>01114 <span class="comment">                - New methods in mrpt::utils::CImage for fast flip and Red-Blue swap.</span>
<a name="l01115"></a>01115 <span class="comment">                - More efficient capture of video in mrpt::vision::CImageGrabber_OpenCV (by Vicente Arevalo).</span>
<a name="l01116"></a>01116 <span class="comment">                - Applications renamed for consistency:</span>
<a name="l01117"></a>01117 <span class="comment">                        - &quot;pf-localization&quot;</span>
<a name="l01118"></a>01118 <span class="comment">                        - &quot;rawlog-grabber&quot;</span>
<a name="l01119"></a>01119 <span class="comment">                - New class mrpt::poses::CPoseRandomSampler to efficiently draw samples from any 2D/3D pose PDF. Used to refactor code in some SLAM classes. E.g: pf-localization is now 20% faster.</span>
<a name="l01120"></a>01120 <span class="comment">                - Boost libraries are required for compiling some parts of MRPT. Follow the updated instructions in http://www.mrpt.org/Building_and_Installing_Instructions.</span>
<a name="l01121"></a>01121 <span class="comment">                - mrpt::utils::CReferencedMemBlock redesigned: it was too obscure, now it&#39;s based on a simpler stlplus::smart_ptr</span>
<a name="l01122"></a>01122 <span class="comment">                - mrpt::utils::CFileOutputStream &amp; mrpt::utils::CFileInputStream now has default constructors and &quot;open&quot; methods.</span>
<a name="l01123"></a>01123 <span class="comment">                - mrpt::opengl::CPlanarLaserScan implemented.</span>
<a name="l01124"></a>01124 <span class="comment">                - mrpt::slam::COccupancyGridMap2D: Simulator of laser scans now includes an optional noise in bearing angles.</span>
<a name="l01125"></a>01125 <span class="comment">                - rbpf-slam:</span>
<a name="l01126"></a>01126 <span class="comment">                        - New version 0.3: A full 6D state if always kept, even if the robot moves on a flat surface only. This enables experimenting with 6D SLAM approaches based on particle filtering.</span>
<a name="l01127"></a>01127 <span class="comment">                - RawLogViewer, changes:</span>
<a name="l01128"></a>01128 <span class="comment">                        - Proper display of IMU observations with all their data fields.</span>
<a name="l01129"></a>01129 <span class="comment">                        - Dialog &quot;Edit&quot; now also processes files gz-compressed.</span>
<a name="l01130"></a>01130 <span class="comment">                        - Dialog &quot;Motion model&quot; allows modification of a part of the rawlog only.</span>
<a name="l01131"></a>01131 <span class="comment">                - New examples:</span>
<a name="l01132"></a>01132 <span class="comment">                        - feature_extraction: Test for image feature detection using KLT, Harris and SIFTs.</span>
<a name="l01133"></a>01133 <span class="comment">                        - resampling-test: Particle filtering resampling schemes.</span>
<a name="l01134"></a>01134 <span class="comment">                - New applications:</span>
<a name="l01135"></a>01135 <span class="comment">                        - ro-localization: Range-Only Localization with particle filters. See &lt;a href=&quot;http://www.mrpt.org/Applications&quot; &gt;its wiki page&lt;/a&gt;.</span>
<a name="l01136"></a>01136 <span class="comment">                        - simul-grid: A command-line application to simulate rawlogs of laser scans using a world modelled by a grid map.</span>
<a name="l01137"></a>01137 <span class="comment">                        - GridmapNavSimul: A GUI application which simulates a robot controlled by a joystick and generate rawlogs with noisy odometry and laser scans plus ground truth. See &lt;a href=&quot;http://www.mrpt.org/Applications&quot; &gt;the wiki&lt;/a&gt;.</span>
<a name="l01138"></a>01138 <span class="comment">                - BUGS FIXED:</span>
<a name="l01139"></a>01139 <span class="comment">                        - Link errors in examples if paths have blank spaces.</span>
<a name="l01140"></a>01140 <span class="comment">                        - ReactiveNavigationDemo crashes with VFF method (Xuan Vu: SF &lt;a href=&quot;https://sourceforge.net/tracker2/?func=detail&amp;aid=2183187&amp;group_id=205280&amp;atid=993006&quot; &gt;#2183187&lt;/a&gt;).</span>
<a name="l01141"></a>01141 <span class="comment">                        - RawlogViewer crashes when opening logs with embedded images (Xuan Vu: SF &lt;a href=&quot;https://sourceforge.net/tracker2/?func=detail&amp;aid=2182167&amp;group_id=205280&amp;atid=993006&quot; &gt;#2182167&lt;/a&gt;).</span>
<a name="l01142"></a>01142 <span class="comment">                        - USB laser scanner data acquisition: wrong bit mask in mm mode.</span>
<a name="l01143"></a>01143 <span class="comment">                        - rawlog-grabber: Loss of 1 observation per grabbing period fixed.</span>
<a name="l01144"></a>01144 <span class="comment">                        - mrpt::utils::CFileStream: Error when opening a file for append (fomAppend) and the file didn&#39;t exist.</span>
<a name="l01145"></a>01145 <span class="comment">                        - mrpt::slam:COccupancyGridMap2D: fixed marking as occupied cells at the end of truncated rays when shorter than the &quot;maxDistanceInsertion&quot;.</span>
<a name="l01146"></a>01146 <span class="comment">                        - mrpt::vision::CImageGrabber_OpenCV didn&#39;t report an error when reaching the end of a video file.</span>
<a name="l01147"></a>01147 <span class="comment">                        - Timestamps were lost in mrpt::slam::CAction &#39;s when copied.</span>
<a name="l01148"></a>01148 <span class="comment">                        - Linker errors when compiling an external application using MRPTConfig.cmake with GCC and in Debug.</span>
<a name="l01149"></a>01149 <span class="comment">                        - Wrong destruction of critical sections when embedded into objects within smart_ptr&#39;s.</span>
<a name="l01150"></a>01150 <span class="comment">                        - mrpt::slam::CActionRobotMovement2D: Wrong copy of objects with the = operator.</span>
<a name="l01151"></a>01151 <span class="comment">                        - mrpt::utils::CFileGZOutputStream crashes if &quot;close&quot; called instead of closing at destructor.</span>
<a name="l01152"></a>01152 <span class="comment">                        - Errors compiling with BUILD_ARIA=0.</span>
<a name="l01153"></a>01153 <span class="comment"></span>
<a name="l01154"></a>01154 <span class="comment">  &lt;a name=&quot;0.6.1&quot;&gt;</span>
<a name="l01155"></a>01155 <span class="comment">  &lt;h2&gt;Version 0.6.1: Released 27-Aug-2008.&lt;/h2&gt;&lt;/a&gt;</span>
<a name="l01156"></a>01156 <span class="comment">        - HOKUYO communications reconnect even if USB cable unplugged &amp; plugged again.</span>
<a name="l01157"></a>01157 <span class="comment">        - New, more robust version of Linux serial port.</span>
<a name="l01158"></a>01158 <span class="comment">        - particleFilterApplication now supports &quot;.gz&quot; input files as well.</span>
<a name="l01159"></a>01159 <span class="comment">        - &quot;zlib&quot; &amp; &quot;jpeglib&quot; included as separate libraries, for Windows in the case of not having wxWidgets.</span>
<a name="l01160"></a>01160 <span class="comment">        - xmlParser library files (src/core/utils/xmlparser/*): Legal issue fixed by replacing license with a BSD-like license from Frank Vanden Berghen (thanks!).</span>
<a name="l01161"></a>01161 <span class="comment">        - New target (Linux only): &quot;make documentation_tutorial&quot;.</span>
<a name="l01162"></a>01162 <span class="comment">        - New examples:</span>
<a name="l01163"></a>01163 <span class="comment">                - gravity3d: Demonstration of 3D animation and physics simulation.</span>
<a name="l01164"></a>01164 <span class="comment">        - New applications:</span>
<a name="l01165"></a>01165 <span class="comment">                - simul-landmarks</span>
<a name="l01166"></a>01166 <span class="comment">                - simul-beacons</span>
<a name="l01167"></a>01167 <span class="comment">        - BUGS FIXED:</span>
<a name="l01168"></a>01168 <span class="comment">                - Communications with HOKUYO in Linux eventually crashes.</span>
<a name="l01169"></a>01169 <span class="comment">                - Error in &quot;make install&quot;, tried to copy tutorial.ps.gz intended for Debian packages. (Thanks sisyphus me)</span>
<a name="l01170"></a>01170 <span class="comment">                - Wrong text format of dates &amp; times in mrpt::system functions.</span>
<a name="l01171"></a>01171 <span class="comment">                - Mismatched new / free[] solved in mrpt::system::createThread (Linux).</span>
<a name="l01172"></a>01172 <span class="comment">                - Applications icp-slam, kf-slam, rbpf-slam didn&#39;t recognize gz-compressed rawlogs.</span>
<a name="l01173"></a>01173 <span class="comment">        - All Debian scripts &amp; files moved away from MRPT source tree for consistency.</span>
<a name="l01174"></a>01174 <span class="comment"></span>
<a name="l01175"></a>01175 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l01176"></a>01176 <span class="comment">  &lt;a name=&quot;0.6.0&quot;&gt;</span>
<a name="l01177"></a>01177 <span class="comment">  &lt;h2&gt;Version 0.6.0: Released 14-Aug-2008.&lt;/h2&gt;&lt;/a&gt;</span>
<a name="l01178"></a>01178 <span class="comment"></span>
<a name="l01179"></a>01179 <span class="comment">        - &lt;b&gt;IMPORTANT CHANGES&lt;/b&gt;:</span>
<a name="l01180"></a>01180 <span class="comment">                - All classes reorganized into a new set of namespaces. Existing user-code out of MRPT will not compile, though changes typically imply just changing the names of the included files and adding some &quot;using namespace XXX;&quot; lines.</span>
<a name="l01181"></a>01181 <span class="comment">                - Better support of user applications using CMake command &quot;FIND_PACKAGE( MRPT REQUIRED )&quot;. Refer to: http://www.mrpt.org/Writing_applications_with_the_MRPT_C%2B%2B_Library</span>
<a name="l01182"></a>01182 <span class="comment">                - Pointers have been passed to smart pointer all across the code.</span>
<a name="l01183"></a>01183 <span class="comment">                - RawLog files: a new &quot;observations-only&quot; format has been introduced, and now all rawlog are saved compressed using &quot;gzip&quot; automatically (they are decompressed automatically to the user when loaded). Alternatively the user can rename a rawlog file to &quot;name.rawwlog.gz&quot;, then use standard tools to extract the uncompressed version, if necessary.</span>
<a name="l01184"></a>01184 <span class="comment">                - The MRPT libraries can now be compiled as a shared library (.dll/.so), by setting MRPT_BUILD_SHARED_LIB from the CMake GUI.</span>
<a name="l01185"></a>01185 <span class="comment">                - New hardware libraries supported:</span>
<a name="l01186"></a>01186 <span class="comment">                        - Cross-platform (Windows/Linux) library ARIA (distributed by ActivMedia Robotics under GNU GPL) integrated into MRPT. Select the appropriate switch in CMake to enable it. See hwdrivers::CActivMediaRobotBase.</span>
<a name="l01187"></a>01187 <span class="comment">                        - New hardware driver for XSens inertial measuring units (IMU). See hwdrivers::CIMUXSens.</span>
<a name="l01188"></a>01188 <span class="comment">                - New applications:</span>
<a name="l01189"></a>01189 <span class="comment">                        - RawLogGrabber, for gathering data in real-time from a robotic platform. See wiki page: http://www.mrpt.org/Application:RawLogGrabber</span>
<a name="l01190"></a>01190 <span class="comment">                        - hmtMapViewer, an inspection tool for HMT-SLAM. See wiki page: http://www.mrpt.org/HMT-SLAM:An_Open_Source_Implementation</span>
<a name="l01191"></a>01191 <span class="comment">                - Visual Studio 6 is not supported anymore from now on: it&#39;s a too old compiler, buggy, and lacks many modern C++ features.</span>
<a name="l01192"></a>01192 <span class="comment">                - Many bugs fixed.</span>
<a name="l01193"></a>01193 <span class="comment"></span>
<a name="l01194"></a>01194 <span class="comment">        - All changes:</span>
<a name="l01195"></a>01195 <span class="comment">                - Many additions to conform to Debian packaging standards and freedesktop.org standard files for creating application menus, etc.</span>
<a name="l01196"></a>01196 <span class="comment">                - Added new &quot;colored points&quot; map &amp; opengl objects. See mrpt::slam::CColouredPointMap and mrpt::opengl::CPointCloudColoured.</span>
<a name="l01197"></a>01197 <span class="comment">                - SceneViewer also is able to read from .gz&#39;d files (.3Dscene files, but can be renamed to .3Dscene.gz if desired).</span>
<a name="l01198"></a>01198 <span class="comment">                - Management of local and UTC times clarifies with new methods. See mrpt::system, time functions.</span>
<a name="l01199"></a>01199 <span class="comment">                - Added a new class for transparent disk-swapped loading of very large datasets. see mrpt::slam::CRawlogXXL.</span>
<a name="l01200"></a>01200 <span class="comment">                - Exception handling prepared to correctly manage bad_alloc exceptions (for out of memory scenarios).</span>
<a name="l01201"></a>01201 <span class="comment">                - Added a 1D function interpolator using splines. See mrpt::math::CSplineInterpolator1D.</span>
<a name="l01202"></a>01202 <span class="comment">                - Added a 6D poses interpolator, using splines. See mrpt::poses::CPose3DInterpolator.</span>
<a name="l01203"></a>01203 <span class="comment">                - Removed built-in zlib library, replaced by wxWidget&#39;s one.</span>
<a name="l01204"></a>01204 <span class="comment">                - Added support for easy read and write of .gz files. For the automatic streams, see mrpt::utils::CFileGZInputStream and mrpt::utils::CFileGZOutputStream. For manual operation, see mrpt::compress::zip.</span>
<a name="l01205"></a>01205 <span class="comment">                - New opengl object: mrpt::opengl::C3DSScene for importing complete scenes from 3D Studio files (using the open source lib3ds library, Copyright (C) 1996-2007 by Jan Eric Kyprianidis &lt;www.kyprianidis.com&gt; ).</span>
<a name="l01206"></a>01206 <span class="comment">                - Class for storing rawlogs renamed as &quot;mrpt::slam::CRawlog&quot;, and enabled for the new observation-only &lt;a href=&quot;http://www.mrpt.org/http://www.mrpt.org/Rawlog_Format&quot;&gt;rawlog file format&lt;/a&gt;.</span>
<a name="l01207"></a>01207 <span class="comment">                - Introduced precompiled headers for a dramatic reduction of compilation time thru the header &lt;mrpt/slam.h&gt;.</span>
<a name="l01208"></a>01208 <span class="comment">                - The method CSerializable::duplicate has been optimized using directly the derived class copy constructor instead of a temporary memory buffer.</span>
<a name="l01209"></a>01209 <span class="comment">                - Created a new metric map: grid map of heights. See mrpt::slam::CHeightGridMap2D.</span>
<a name="l01210"></a>01210 <span class="comment">                - Added a method for estimating the Jacobian of a function by finite differences. See math::estimateJacobian.</span>
<a name="l01211"></a>01211 <span class="comment">                - Source tree has undergone a re-ordering and rename. Now, libraries are named as: mrpt-core, mrpt-hwdrivers, mrpt-ann, etc. and all the sources are in &lt;mrpt&gt;/src.</span>
<a name="l01212"></a>01212 <span class="comment">                - Added generic class for Levenberg-Marquart optimization problems. See utils::CLevenbergMarquardt and the &lt;a href=&quot;http://www.mrpt.org/Levenberg%E2%80%93Marquardt_algorithm&quot;&gt;wiki tutorial on the topic&lt;/a&gt;.</span>
<a name="l01213"></a>01213 <span class="comment">                - Added communications support for the new HOKUYO UTM-30LX (Windows and Linux). Refer to the &lt;a href=&quot;http://www.mrpt.org/Example:HOKUYO_URG_Laser_Scanner&quot; &gt;wiki page&lt;/a&gt;.</span>
<a name="l01214"></a>01214 <span class="comment">                - New method introduced to gas distribution mapping: optimized Kalman filter with constant time update. See mrpt::slam::CGasConcentrationGridMap2D.</span>
<a name="l01215"></a>01215 <span class="comment">                - The class utils::CTicTac now does not use dynamic memory, so it&#39;s constructor &amp; destructor are faster.</span>
<a name="l01216"></a>01216 <span class="comment">                - Several optimizations applied to 2D and 3D geometry classes (poses::CPoseOrPoint derived ones).</span>
<a name="l01217"></a>01217 <span class="comment">                - Added cross-platform support for &quot;alloca&quot;. See system::alloca.</span>
<a name="l01218"></a>01218 <span class="comment">                - Sources updated to be compatible with GCC 4.3 and Visual Studio C++ 2008.</span>
<a name="l01219"></a>01219 <span class="comment">                - Thread statistics now are also implemented for Linux. See system::getCurrentThreadTimes.</span>
<a name="l01220"></a>01220 <span class="comment">                - HWDRIVERS classes unified under the &quot;generic sensor model&quot;. See hwdrivers::CGenericSensor.</span>
<a name="l01221"></a>01221 <span class="comment">                - 3D render canvas classes unified under the new class utils::WX_gui::CMyGLCanvas_Base.</span>
<a name="l01222"></a>01222 <span class="comment">                - Added serializable STL classes. See utils::vector_serializable, etc. See utils/stl_extensions.h</span>
<a name="l01223"></a>01223 <span class="comment">                - Added serialization to the whole mapping framework state in HMT-SLAM, and many related classes. See mrpt::hmtslam::CHMTSLAM.</span>
<a name="l01224"></a>01224 <span class="comment">                - lib_hwdrivers: Custom device-dependent initialization commands can be sent when opening a GPS interface. See hwdrivers::CGPSInterface.</span>
<a name="l01225"></a>01225 <span class="comment">                - Joysticks and game-pads fully supported now under both Windows and Linux. See hwdrivers::CJoystick.</span>
<a name="l01226"></a>01226 <span class="comment">                - Added new applications:</span>
<a name="l01227"></a>01227 <span class="comment">                        - RawLogGrabber, for gathering data in real-time from a robotic platform. See wiki page: http://www.mrpt.org/Application:RawLogGrabber</span>
<a name="l01228"></a>01228 <span class="comment">                        - hmtMapViewer, an inspection tool for HMT-SLAM. See wiki page: http://www.mrpt.org/HMT-SLAM:An_Open_Source_Implementation</span>
<a name="l01229"></a>01229 <span class="comment">                - Added new examples:</span>
<a name="l01230"></a>01230 <span class="comment">                        - /samples/UTILS/fileSystemWatcher: Demonstrating watching of directory changes. Based on class utils::CFileSystemWatcher.</span>
<a name="l01231"></a>01231 <span class="comment">                - RawLogViewer:</span>
<a name="l01232"></a>01232 <span class="comment">                        - A new facy custom tree view, extremely more efficient for very large datasets and with a time-line to graphically visualize timestamps.</span>
<a name="l01233"></a>01233 <span class="comment">                        - Many new commands: resort from timestamps, regenerate timestamps from GPS observations, etc.</span>
<a name="l01234"></a>01234 <span class="comment">                        - In the &quot;raw-map&quot; window the user can change now the number of types of maps to build from odometry + raw observations.</span>
<a name="l01235"></a>01235 <span class="comment">                        - Implemented building a map from a rawlog with RTK GPS data. See &quot;RawMap&quot; dialog.</span>
<a name="l01236"></a>01236 <span class="comment">                - BUGS FIXED:</span>
<a name="l01237"></a>01237 <span class="comment">                        - Textual representation of dates and times with seconds represented with just one digit.</span>
<a name="l01238"></a>01238 <span class="comment">                        - Fixed wrong computation of transformation from GPS to local coordinates.</span>
<a name="l01239"></a>01239 <span class="comment">                        - Exception raised if an empty CImage is serialized.</span>
<a name="l01240"></a>01240 <span class="comment">                        - Wrong conversion of old serialization versions of gridmaps.</span>
<a name="l01241"></a>01241 <span class="comment">                        - Parameters of a gas gridmap were ignored after loading from .ini.</span>
<a name="l01242"></a>01242 <span class="comment">                        - Changing by hand the coordinates in mrpt::poses::CPose3D was not persistent when serializing the object.</span>
<a name="l01243"></a>01243 <span class="comment">                        - Added missing &quot;+ operators&quot; to mrpt::poses::CPoint3D.</span>
<a name="l01244"></a>01244 <span class="comment">                        - mrpt::slam::CSimplePointsMap: Serialization was not cross-platform (it used &quot;unsigned long&quot; data type).</span>
<a name="l01245"></a>01245 <span class="comment">                        - mrpt::slam::CObservationGPS didn&#39;t save the &quot;sensorPose&quot; when streaming.</span>
<a name="l01246"></a>01246 <span class="comment"></span>
<a name="l01247"></a>01247 <span class="comment">        - MAY-2008:</span>
<a name="l01248"></a>01248 <span class="comment">                - mrpt::poses::CPointsMap now also has a horizontal tolerance range for &quot;horizontal&quot; or &quot;planar&quot; maps.</span>
<a name="l01249"></a>01249 <span class="comment">                - Pseudorandom number generator algorithm Mersenne twister MT19937 implemented in utils::RandomGenerator for uniform distributions (in turn used for the rest). This assures same PRNs over different platforms.</span>
<a name="l01250"></a>01250 <span class="comment">                - gui::CDisplayWindowPlots now can also manage 2D bitmaps plots, that can be combined with 2D vectorial plots. See gui::CDisplayWindowPlots::image.</span>
<a name="l01251"></a>01251 <span class="comment">                - CPointsMap::compute3DMatchingRatio is now ~6 times faster (using KD-tree).</span>
<a name="l01252"></a>01252 <span class="comment">                - Missing implementation of KD-tree for 3D points in mrpt::poses::CPointsMap now complete.</span>
<a name="l01253"></a>01253 <span class="comment">                - Added support for file-system watching. See utils::CFileSystemWatcher.</span>
<a name="l01254"></a>01254 <span class="comment">                - SceneViewer:</span>
<a name="l01255"></a>01255 <span class="comment">                        - New option to allow free rotation and zoom of the camera even for scenes with the flag &quot;followCamera&quot;.</span>
<a name="l01256"></a>01256 <span class="comment">                - RawLogViewer:</span>
<a name="l01257"></a>01257 <span class="comment">                        - Added importer for &quot;rtl&quot; log files.</span>
<a name="l01258"></a>01258 <span class="comment">                        - Added capability to export several GPSs to text files.</span>
<a name="l01259"></a>01259 <span class="comment">                        - Sensor labels appear in the tree view.</span>
<a name="l01260"></a>01260 <span class="comment">                - BUGS FIXED:</span>
<a name="l01261"></a>01261 <span class="comment">                        - &quot;mrpt::slam::CSensFrameProbSequence::operator =&quot; was wrongly implemented.</span>
<a name="l01262"></a>01262 <span class="comment">                        - In gridmaps (mrpt::slam::COccupancyGridMap2D):</span>
<a name="l01263"></a>01263 <span class="comment">                                - Calling mrpt::slam::COccupancyGridMap2D::resizeGrid only supports growing the grid (not shrinking). This is now forced internally to fix impredictable results.</span>
<a name="l01264"></a>01264 <span class="comment">                                - In some situations, inserting a 2D laser scan ray ending very close to the border didn&#39;t make the grid to extend its size, and may lead to memory corruption.</span>
<a name="l01265"></a>01265 <span class="comment">                                - Disabled ROWSIZE_MULTIPLE_16 in mrpt::slam::COccupancyGridMap2D to avoid rare memory corruptions (bug to be tracked down if wanna enable it in the future again...).</span>
<a name="l01266"></a>01266 <span class="comment">                        - Fixed support for Bumblebee in external applications through CMake system (MRPTconfig.cmake).</span>
<a name="l01267"></a>01267 <span class="comment">                        - Wrong reporting of stacked exceptions messages.</span>
<a name="l01268"></a>01268 <span class="comment">                        - Fixed wrong calculation of (x,y,z) coordinates from latitude, longitude and height, in mrpt::slam::CObservationGPS.</span>
<a name="l01269"></a>01269 <span class="comment">                        - utils::CClientSocket did send debug information in the middle of actual data!. Thanks to Vicente Arevalo for reporting.</span>
<a name="l01270"></a>01270 <span class="comment"></span>
<a name="l01271"></a>01271 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l01272"></a>01272 <span class="comment">  &lt;a name=&quot;0.5.5&quot;&gt;</span>
<a name="l01273"></a>01273 <span class="comment">  &lt;h2&gt;Version 0.5.5: Released April 30, 2008.&lt;/h2&gt;&lt;/a&gt;</span>
<a name="l01274"></a>01274 <span class="comment">        - APR-2008:</span>
<a name="l01275"></a>01275 <span class="comment">                - New 2D font render engine in utils::CCanvas. It now supports a number of different fonts, including CJK (Chinese-Japanese-Korean) characters.</span>
<a name="l01276"></a>01276 <span class="comment">                - HOKUYO URG04 laser scanner interface now works for Linux and Windows. See hwdrivers::CHokuyoURG and &lt;a href=&quot;http://www.mrpt.org/Example:HOKUYO_URG_Laser_Scanner&quot; &gt;the wiki page&lt;/a&gt;.</span>
<a name="l01277"></a>01277 <span class="comment">                - Serialization format changed: added an end-flag and 5 bytes saved per dumped object. See the serialization description &lt;a href=&quot;http://www.mrpt.org/Serialization&quot;&gt;here&lt;/a&gt;.</span>
<a name="l01278"></a>01278 <span class="comment">                - Management of 3D scenes greatly improved through the introduction of multi-viewports. This has been a major change, but compatibility with old code has been maintained as much as possible. See opengl::COpenGLScene, or the &lt;a href=&quot;http://www.mrpt.org/Tutorial_3D_Scenes&quot;&gt;tutorial&lt;/a&gt;.</span>
<a name="l01279"></a>01279 <span class="comment">                - Generation of HTML and CHM documentation has been integrated in the project workspace, as &quot;make documentation_XXX&quot; for &quot;make&quot; or new projects in Visual Studio.</span>
<a name="l01280"></a>01280 <span class="comment">                - Occupancy grids reimplemented with a discrete representation of log-odds. Most common operations are now faster (e.g. inserting a laser scan is x10 faster!). See mrpt::slam::COccupancyGridMap and &lt;a href=&quot;http://www.mrpt.org/Occupancy_Grids&quot; &gt;the gridmaps tutorial&lt;/a&gt;.</span>
<a name="l01281"></a>01281 <span class="comment">                - The file &quot;MRPT_version.h&quot; is now automatically updated from CMake with the version + SVN (if local copy is a repository).</span>
<a name="l01282"></a>01282 <span class="comment">                - Socket classes are now fully implemented for Linux and Windows. See utils::CClientTCPSocket and utils::CServerTCPSocket.</span>
<a name="l01283"></a>01283 <span class="comment">                - Added two new CStream classes: utils::CFileInputStream, utils::CFileOutputStream, specializations of the old utils::CFileStream.</span>
<a name="l01284"></a>01284 <span class="comment">                - File stream classes rewritten based on standard std::iostream classes (faster I/O). See utils::CFileStream.</span>
<a name="l01285"></a>01285 <span class="comment">                - Examples can now be built and run from any directory, through the new config file: &quot;MRPT_examples_config.h&quot;.</span>
<a name="l01286"></a>01286 <span class="comment">                - Added support to any number of points map within mrpt::slam::CMultiMetricMap.</span>
<a name="l01287"></a>01287 <span class="comment">                - Added a new way to store images within utils::CImage: external storage in separate files, to enable managing very large rawlogs efficiently. It is transparent to the user, the images will be loaded automatically from disk when needed.</span>
<a name="l01288"></a>01288 <span class="comment">                - Options of mrpt::slam::COccupancyGridMap2D, mrpt::poses::CPointsMap and mrpt::slam:::CMultiMetricMap are now persistent (included in the serialization).</span>
<a name="l01289"></a>01289 <span class="comment">                - Macros max,min,max3,min3 passed to inline template functions, reusing std::max &amp; std::min.</span>
<a name="l01290"></a>01290 <span class="comment">                - The following synchronization classes can now be safely copied (eg. within STL containers) and they still refer to the same OS&#39;s synchronization object: synch::CSemaphore, synch::CCriticalSection, synch::CEvent.</span>
<a name="l01291"></a>01291 <span class="comment">                - New class utils::CReferencedMemBlock for memory blocks that have to be shared between objects when copied with &quot;=&quot;.</span>
<a name="l01292"></a>01292 <span class="comment">                - Major revision of many classes to satisfy design rules in Scott Meyers&#39; &quot;Effective C++ book&quot; (-Weffc++ gcc option).</span>
<a name="l01293"></a>01293 <span class="comment">                - Added new examples:</span>
<a name="l01294"></a>01294 <span class="comment">                        - /samples/MRML/pathPlanning: Demonstrating path finding in occupancy grid maps for circular robots.</span>
<a name="l01295"></a>01295 <span class="comment">                        - /samples/MRML/benchmark-gridmap</span>
<a name="l01296"></a>01296 <span class="comment">                        - /samples/MRML/gridMapLikelihoodCharacterization</span>
<a name="l01297"></a>01297 <span class="comment">                        - /samples/HWDRIVERS/HOKUYO_laser_test: Added example for HOKUYO laser range finder.</span>
<a name="l01298"></a>01298 <span class="comment">                - Re-factorization of the main library (lib_MRPT) for faster rebuild and better modularity. New libraries in &quot;/apps/lib_XXX&quot;:</span>
<a name="l01299"></a>01299 <span class="comment">                        - lib_HMTSLAM.</span>
<a name="l01300"></a>01300 <span class="comment">                        - lib_HWDRIVERS.</span>
<a name="l01301"></a>01301 <span class="comment">                - RawLogViewer version 2.2:</span>
<a name="l01302"></a>01302 <span class="comment">                        - Now the user can choose the format (png,jpg,...) of the image files when generating image lists, transforming into external storage image observations, etc.</span>
<a name="l01303"></a>01303 <span class="comment">                - BUGS FIXED:</span>
<a name="l01304"></a>01304 <span class="comment">                        - No timestamp saved in rawlogs for some observations.</span>
<a name="l01305"></a>01305 <span class="comment">                        - Extra NULL character stored in type list in utils::CTypeSelector.</span>
<a name="l01306"></a>01306 <span class="comment"></span>
<a name="l01307"></a>01307 <span class="comment">        - MAR-2008:</span>
<a name="l01308"></a>01308 <span class="comment">                - New classes added in file &quot;UTILS/safe_pointers.h&quot; for making classes with pointer members safer.</span>
<a name="l01309"></a>01309 <span class="comment">                - Added switches to CMake system to disable MRPT_START/END and ASSERT_ blocks, for speed up on well tested applications.</span>
<a name="l01310"></a>01310 <span class="comment">                - Added new class utils::CMemoryChunk.</span>
<a name="l01311"></a>01311 <span class="comment">                - Added a new application for building metric maps from &quot;.simplemap&quot; files.</span>
<a name="l01312"></a>01312 <span class="comment">                - Added a class for message passing between threads. See utils::CMessageQueue.</span>
<a name="l01313"></a>01313 <span class="comment">                - Created mrpt::slam::TKLDParams to unify KLD-sampling parameters across different classes.</span>
<a name="l01314"></a>01314 <span class="comment">                - mrpt::slam::CHybridMetricMap finally renamed mrpt::slam::CMultiMetricMapPDF, for consistency with mrpt::slam::CMultiMetricMap.</span>
<a name="l01315"></a>01315 <span class="comment">                - Particle filter classes re-organized: options are now kept in bayes::CParticleFilter, and steps are run with CParticleFilter::executeOn, to avoid pointers (less safe) and be more sensible.</span>
<a name="l01316"></a>01316 <span class="comment">                - Added a tolerance threshold for the pitch/roll of laser scans to be treated as &quot;horizontal&quot; in mrpt::slam::COccupancyGridMap2D.</span>
<a name="l01317"></a>01317 <span class="comment">                - A textual label added to all observations to describe its sensor (See CObservation::sensorLabel).</span>
<a name="l01318"></a>01318 <span class="comment">                - mrpt::slam::CSensoryFrame and mrpt::slam::CActionCollection now behave like STL containers (begin,end,iterator,erase,...); internal lists are protected.</span>
<a name="l01319"></a>01319 <span class="comment">                - All geometry, PDFs, and Kalman Filter classes passed from float -&gt; double.</span>
<a name="l01320"></a>01320 <span class="comment">                - Added a new, more efficient implementation to bayes::CKalmanFilterCapable, processing one observation (not each scalar component) at once.</span>
<a name="l01321"></a>01321 <span class="comment">                - Added new fast operations to matrices. See math::CMatrixTemplateNumeric.</span>
<a name="l01322"></a>01322 <span class="comment">                - Fixed the small memory leak of the ANN library by calling annClose.</span>
<a name="l01323"></a>01323 <span class="comment">                - SceneViewer:</span>
<a name="l01324"></a>01324 <span class="comment">                        - Scenes are compiled into OpenGL lists for efficiency.</span>
<a name="l01325"></a>01325 <span class="comment">                - RawLogViewer version 2.2:</span>
<a name="l01326"></a>01326 <span class="comment">                        - Added a command to convert images of old rawlogs into delayed-load images.</span>
<a name="l01327"></a>01327 <span class="comment">                        - Support for delayed-load images: now much larger rawlogs can be managed efficiently.</span>
<a name="l01328"></a>01328 <span class="comment">                        - Added &quot;compact rawlog&quot; command: group consecutive actions &amp; observations.</span>
<a name="l01329"></a>01329 <span class="comment">                        - Added &quot;loss-less decimation&quot;.</span>
<a name="l01330"></a>01330 <span class="comment">                        - Added &quot;edit rawlog&quot; by name of sensor.</span>
<a name="l01331"></a>01331 <span class="comment">                        - Now two monocular images can be displayed simultaneously in the &quot;View images as video&quot;-module.</span>
<a name="l01332"></a>01332 <span class="comment">                        - Added &quot;export/import to ALOG format&quot;.</span>
<a name="l01333"></a>01333 <span class="comment">                - BUGS FIXED:</span>
<a name="l01334"></a>01334 <span class="comment">                        - Fixed compiling errors when compiling under Linux without GL/GLUT.</span>
<a name="l01335"></a>01335 <span class="comment">                        - Wrong copy of 3D angles in CPose3DPDFGaussian::copyFrom.</span>
<a name="l01336"></a>01336 <span class="comment">                        - Missing a valid, secure operator (operator =) for bayes::CParticleFilterData.</span>
<a name="l01337"></a>01337 <span class="comment">                        - Compiling errors due to non-ASCII Spanish characters (thanks to Zhe Zhang).</span>
<a name="l01338"></a>01338 <span class="comment">                        - Unpredictable result if a 2D laser scan with all invalid points is inserted in a pointsmap.</span>
<a name="l01339"></a>01339 <span class="comment"></span>
<a name="l01340"></a>01340 <span class="comment">  &lt;h2&gt;Version 0.5.4: Released March 6, 2008.&lt;/h2&gt;</span>
<a name="l01341"></a>01341 <span class="comment">        - MAR-2008:</span>
<a name="l01342"></a>01342 <span class="comment">                - Size variables in mrpt::poses::CPointsMap, math::CPolygon, and ReactiveNavigationLibrary passed to &quot;size_t&quot;.</span>
<a name="l01343"></a>01343 <span class="comment">                - Thread join implemented in Windows.</span>
<a name="l01344"></a>01344 <span class="comment">                - Added a new class synch::CCriticalSectionLocker to assure consistent critical section leaving in any situation (exceptions, programmer&#39;s mistakes,...).</span>
<a name="l01345"></a>01345 <span class="comment">                - Implemented Iterative Kalman Filter (IKF). See bayes::CKalmanFilterCapable.</span>
<a name="l01346"></a>01346 <span class="comment">                - Next MRPT release will be published under the GNU GPL version 3 (comment blocks updated in all source files).</span>
<a name="l01347"></a>01347 <span class="comment">                - Correspondences between point maps implemented with KD-tree: &quot;classic ICP&quot; is now ~10x faster.</span>
<a name="l01348"></a>01348 <span class="comment">                - Removed wrong covariance estimation in mrpt::poses::CPointsMap::computeMatchingWith2D and added a new better one to mrpt::slam::CICP.</span>
<a name="l01349"></a>01349 <span class="comment">                - The library ANN (Approximate Nearest Neighbor) by Sunil Arya and David Mount (University of Maryland) has been integrated in the build tree.</span>
<a name="l01350"></a>01350 <span class="comment">                - Added an option to utils::CImage to disable ZIP compression when storing images.</span>
<a name="l01351"></a>01351 <span class="comment">                - Added the all new implementation of HMT-SLAM. See mrpt::slam::CHMTSLAM.</span>
<a name="l01352"></a>01352 <span class="comment">                - Fixed all 64-bit portability issues detected by Visual Studio 2005.</span>
<a name="l01353"></a>01353 <span class="comment">                - Created a repository of 3D objects in opengl::stock_objects.</span>
<a name="l01354"></a>01354 <span class="comment">                - COpenGLScene &amp; opengl::CSetOfObjects now have the list of objects as &quot;protected&quot; for assure safe memory-management.</span>
<a name="l01355"></a>01355 <span class="comment">                - Added build options as switchs in the CMake build system for:</span>
<a name="l01356"></a>01356 <span class="comment">                        - The GCC stdlibc++ &quot;parallel mode&quot;. See http://algo2.iti.uni-karlsruhe.de/singler/mcstl/.</span>
<a name="l01357"></a>01357 <span class="comment">                        - Selecting 8bits/16bits cell size in occupancy grid maps.</span>
<a name="l01358"></a>01358 <span class="comment">                        - Enabling code profiling (GNU GCC only).</span>
<a name="l01359"></a>01359 <span class="comment">                - Added new applications:</span>
<a name="l01360"></a>01360 <span class="comment">                        - icp-slam: A very naive mapping algorithm based on a single metric map &amp; ICP laser scan alignment. See mrpt::slam::CMetricMapBuilderICP.</span>
<a name="l01361"></a>01361 <span class="comment">                - BUGS FIXED:</span>
<a name="l01362"></a>01362 <span class="comment">                        - Copy operator of 6D poses didn&#39;t work always as expected.</span>
<a name="l01363"></a>01363 <span class="comment">                        - Pose composition of 6D Gaussian poses (poses::CPose3DPDFGaussian) used wrong Jacobians.</span>
<a name="l01364"></a>01364 <span class="comment">        - FEB-2008:</span>
<a name="l01365"></a>01365 <span class="comment">                - Added a new application: camera-calib,  by Vicente Arevalo (University of Malaga).</span>
<a name="l01366"></a>01366 <span class="comment">                - Added &quot;point size&quot; property to UTILS:opengl::CPointCloud.</span>
<a name="l01367"></a>01367 <span class="comment">                - Windows only: OpenCV linked again as a DLL instead of a static library, in order to free 30Mb in MRPT packages, useless for non-Windows users.</span>
<a name="l01368"></a>01368 <span class="comment">                - RawlogViewer &amp; SceneViewer: Directory of last opened file now saved when invoking programs with file as command-line argument.</span>
<a name="l01369"></a>01369 <span class="comment">                - Added a new mechanism for displaying mathematical graphs using MATLAB-like &quot;plot&quot; commands. See gui::CDisplayWindowPlots.</span>
<a name="l01370"></a>01370 <span class="comment">                - Visual Leak Detector integrated in the CMake build system.</span>
<a name="l01371"></a>01371 <span class="comment">                - Extended Kalman Filter implementation rewritten from scratch. See bayes::CKalmanFilterCapable.</span>
<a name="l01372"></a>01372 <span class="comment">                - Implemented missing operations (move,resize,...) in gui::CDisplayWindow &amp; gui::CDisplayWindow3D.</span>
<a name="l01373"></a>01373 <span class="comment">                - New implementation of the Kalman Filter in mrpt::slam::CRangeBearingKFSLAM: &#39;a la Davison&#39;, orders of magnitude faster than naive Kalman (new version 0.2 of application &quot;kf-slam&quot;).</span>
<a name="l01374"></a>01374 <span class="comment">                - Improved 3D/6D geometry implementation: x2 speed-up in (inverse) pose compositions (utils::CPoseOrPoint and derived classes).</span>
<a name="l01375"></a>01375 <span class="comment">                - Addition of a new matrix class: math::CMatrixFixed, for compile-time known sizes (more efficient??).</span>
<a name="l01376"></a>01376 <span class="comment">                - Fixed compiling errors if MRPT_HAS_WXWIDGETS = 0.</span>
<a name="l01377"></a>01377 <span class="comment">                - Generation of CMakeLists fully automated for samples.</span>
<a name="l01378"></a>01378 <span class="comment">                - Added support for &quot;pkg-config libMRPT --libs --cflags&quot; if the library is make install&#39;ed,  UNIX only.</span>
<a name="l01379"></a>01379 <span class="comment">                - &quot;Save as...&quot; implemented in gui::CDisplayWindow.</span>
<a name="l01380"></a>01380 <span class="comment">                - Added new examples:</span>
<a name="l01381"></a>01381 <span class="comment">                        - samples/UTILS/threadsTest, demonstrating the creation of threads and synchronization.</span>
<a name="l01382"></a>01382 <span class="comment">                        - UTILS/benchmark-matrix.</span>
<a name="l01383"></a>01383 <span class="comment">                        - samples/UTILS/bayesianTracking, implementing a very simple bearing &amp; tracking problem with both a EKF and a particle filter (PF).</span>
<a name="l01384"></a>01384 <span class="comment">                        - samples/UTILS/displayPlots.</span>
<a name="l01385"></a>01385 <span class="comment">                        - MRML/grid-matching.</span>
<a name="l01386"></a>01386 <span class="comment">                - BUGS FIXED:</span>
<a name="l01387"></a>01387 <span class="comment">                        - Core dump due to a wrong initialization of mrpt::slam::CSensoryFrame using the *copy constuctor*.</span>
<a name="l01388"></a>01388 <span class="comment">                        - RawlogViewer: Changing a sensor pose in the &quot;sensor/camera modification dialog&quot; didn&#39;t change it for 6D poses.</span>
<a name="l01389"></a>01389 <span class="comment">                        - utils::CDirectoryExplorer missed files under Windows when marked as FILE_ATTRIB_NORMAL.</span>
<a name="l01390"></a>01390 <span class="comment">                        - Core dump (double free) if a matrix is set to size (0,0) and then resized again (it affected the new matrix loadFromTextFile method).</span>
<a name="l01391"></a>01391 <span class="comment">                        - Inverted axes in CDisplayWindow3D &amp; SceneViewer when camera elevation=-90deg.</span>
<a name="l01392"></a>01392 <span class="comment">                        - Wrong generation of random samples in random::randomNormalMultiDimensional.</span>
<a name="l01393"></a>01393 <span class="comment">                        - Missing synchronization within WxSubsystem&#39;s thread.</span>
<a name="l01394"></a>01394 <span class="comment">                        - Not using double-buffering in SceneViewer.</span>
<a name="l01395"></a>01395 <span class="comment">                        - Wrong simulation of bearing-range observations for any 6D pose in mrpt::slam::CLandmarksMap.</span>
<a name="l01396"></a>01396 <span class="comment">                        - gui::CDisplayWindow &amp; gui::CDisplayWindow3D timeout waiting to close windows after class destruction.</span>
<a name="l01397"></a>01397 <span class="comment"></span>
<a name="l01398"></a>01398 <span class="comment">  &lt;h2&gt;Version 0.5.3  (First public release, January 31, 2008)&lt;/h2&gt;</span>
<a name="l01399"></a>01399 <span class="comment">        - JAN-2008:</span>
<a name="l01400"></a>01400 <span class="comment">                - Small changes in CMake files to prepare first public source release.</span>
<a name="l01401"></a>01401 <span class="comment">                - utils::WxSubsystem created as a centralized manager of GUI windows in the MRPT using the cross-platform wxWidgets. Now used for CDisplayWindow &amp; CDisplayWindow3D.</span>
<a name="l01402"></a>01402 <span class="comment">                - Application &quot;ReactiveNavigationDemo&quot; rewritten using wxWidgets and integrated in the MRPT CMake tree.</span>
<a name="l01403"></a>01403 <span class="comment">                - Bumblebee camera support integrated in CMake file system.</span>
<a name="l01404"></a>01404 <span class="comment">                - RawLogViewer 2.1 finished.</span>
<a name="l01405"></a>01405 <span class="comment">                - SceneViewer 1.1 finished.</span>
<a name="l01406"></a>01406 <span class="comment">                - New methods added to matrixes and to the MATH namespace.</span>
<a name="l01407"></a>01407 <span class="comment">                - &quot;mrpt::slam::CSensFrameProbSequence&quot; and &quot;mrpt::slam::CIncrementalMapPartitioner&quot; modified to work with full 3D/6D poses rather than planar robot poses only.</span>
<a name="l01408"></a>01408 <span class="comment">                - Added a working example of EKF-SLAM including a sample dataset.</span>
<a name="l01409"></a>01409 <span class="comment">                - Tree structure modified for clarity, clean up of files at the root directory.</span>
<a name="l01410"></a>01410 <span class="comment">                - RawLogViewer: Added viewer of mrpt::slam::CObservationBearingRange.</span>
<a name="l01411"></a>01411 <span class="comment">                - Added a new method to compute spherical coordinates of a 3D point from a 6D pose (see mrpt::poses::CPose3D).</span>
<a name="l01412"></a>01412 <span class="comment">                - MRPT_ALWAYS_CHECKS_DEBUG is now enabled by default.</span>
<a name="l01413"></a>01413 <span class="comment">                - Added new matrix operations to employ them in a more efficient EKF implementation.</span>
<a name="l01414"></a>01414 <span class="comment">                - Changes all across the library to enable compilation in 64 bit targets (without warnings).</span>
<a name="l01415"></a>01415 <span class="comment">                - getCurrentTime now gives high-resolution time (usecs) in Linux.</span>
<a name="l01416"></a>01416 <span class="comment">                - Added the option &quot;justOneOccupiedCellPerRay&quot; to mrpt::slam::COccupancyGridMap2D.</span>
<a name="l01417"></a>01417 <span class="comment">                - Added new applications:</span>
<a name="l01418"></a>01418 <span class="comment">                        - map-partition.</span>
<a name="l01419"></a>01419 <span class="comment">                        - KF-SLAM.</span>
<a name="l01420"></a>01420 <span class="comment">                - Added new examples:</span>
<a name="l01421"></a>01421 <span class="comment">                        - MRML/landmarkRawlogSimulator, a simulator of a robot with a 3D range-bearing sensor.</span>
<a name="l01422"></a>01422 <span class="comment">                - BUGS FIXED:</span>
<a name="l01423"></a>01423 <span class="comment">                        - CSemaphore::waitForSignal now also works for an timeout=0 (no timeout).</span>
<a name="l01424"></a>01424 <span class="comment">                        - In openCV_cross_correlation: wrong order of (v,u) coordinates! Have been replaced by (x,y) to prevent more errors.</span>
<a name="l01425"></a>01425 <span class="comment">                        - Wrong calculation of mean in CGraphPartitioner::SpectralBisection.</span>
<a name="l01426"></a>01426 <span class="comment">                        - Wrong calculations in &quot;multiply_HCHt&quot;</span>
<a name="l01427"></a>01427 <span class="comment">                        - &quot;dateTimeToString&quot; gave wrong data.</span>
<a name="l01428"></a>01428 <span class="comment">                        - Out of vector bound exception in RawLogViewer exporter to text files.</span>
<a name="l01429"></a>01429 <span class="comment">                        - Wrong normalization of 3D vectors in generateAxisBaseFromDirection.</span>
<a name="l01430"></a>01430 <span class="comment"></span>
<a name="l01431"></a>01431 <span class="comment">        - DEC-2007:</span>
<a name="l01432"></a>01432 <span class="comment">                - Speed up in rendering of 3D ellipsoids by computing eigenvectors only once.</span>
<a name="l01433"></a>01433 <span class="comment">                - Implemented RO-SLAM with SOG (mrpt::slam::CBeaconMap)</span>
<a name="l01434"></a>01434 <span class="comment">                - Added a method to generate permutations of vectors (See utils::RandomGenerator).</span>
<a name="l01435"></a>01435 <span class="comment">                - Started RawLogViewer 2.1: Added a new module for laser scan animations.</span>
<a name="l01436"></a>01436 <span class="comment">                - Added a new cross-platform 3DSceneViewer application.</span>
<a name="l01437"></a>01437 <span class="comment">                - Deleted the old application x3DSceneViewer</span>
<a name="l01438"></a>01438 <span class="comment">                - New example: MRML/geometry3D</span>
<a name="l01439"></a>01439 <span class="comment">                - BUGS FIXED:</span>
<a name="l01440"></a>01440 <span class="comment">                        - Wrong initialization of CMatrix from a CPoint3D</span>
<a name="l01441"></a>01441 <span class="comment">                        - Wrong calculation of yaw/pitch/roll fields in CPose3D when composing poses.</span>
<a name="l01442"></a>01442 <span class="comment"></span>
<a name="l01443"></a>01443 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l01444"></a>01444 <span class="comment">  &lt;h2&gt;Version 0.5.2 (Released December 26, 2007)&lt;/h2&gt;</span>
<a name="l01445"></a>01445 <span class="comment">        - DEC-2007:</span>
<a name="l01446"></a>01446 <span class="comment">                - Release of RawLogViewer 2.0, the first portable (win32/linux-gtk) version.</span>
<a name="l01447"></a>01447 <span class="comment">                - Old win32 version &quot;RawLogsViewer&quot; removed from the repository!</span>
<a name="l01448"></a>01448 <span class="comment">                - GUI classes (CDisplayWindow, CDisplayWindow3D) have been rewritten in:</span>
<a name="l01449"></a>01449 <span class="comment">                        - Windows: Native MSW API.</span>
<a name="l01450"></a>01450 <span class="comment">                        - Linux: GTK2</span>
<a name="l01451"></a>01451 <span class="comment">                - New features to RawLogViewer (change sensor poses,...)</span>
<a name="l01452"></a>01452 <span class="comment">                - Added general abstract methods to CObservation for getting/setting the sensor pose.</span>
<a name="l01453"></a>01453 <span class="comment">                - Added to RawLogViewer: Import a directory of images as a rawlog.</span>
<a name="l01454"></a>01454 <span class="comment">                - utils::CDirectoryExplorer rewritten &amp; ported to Linux.</span>
<a name="l01455"></a>01455 <span class="comment">                - BUG FIXED: &#39;system::sleep&#39; was aborted by signals in Linux. It now resumes until the desired delay.</span>
<a name="l01456"></a>01456 <span class="comment">                - Linux implementation for CSerialPort.</span>
<a name="l01457"></a>01457 <span class="comment">                - RawLogViewer: ScanMatching module finished.</span>
<a name="l01458"></a>01458 <span class="comment">                - New class for landmark observations by bearing and range (See mrpt::slam::CObservationBearingRange).</span>
<a name="l01459"></a>01459 <span class="comment">                - Timestamps have been added to CAction&#39;s.</span>
<a name="l01460"></a>01460 <span class="comment">                - BUG FIXED: Invalid encoder info in CActionRobotMovement2D.</span>
<a name="l01461"></a>01461 <span class="comment">                - New methods added to CRawlog to enable a better encapsulation of the internal list of objects as &quot;private&quot;.</span>
<a name="l01462"></a>01462 <span class="comment">        - NOV-2007:</span>
<a name="l01463"></a>01463 <span class="comment">                - BUG FIXED: CObservationGPS didn&#39;t load from CStream in Linux. Serialization version 1 is now portable.</span>
<a name="l01464"></a>01464 <span class="comment">                - Added the sprintf-like function &quot;format&quot; for std::string&#39;s.</span>
<a name="l01465"></a>01465 <span class="comment">                - Integration of xmlParser library within utils::CSimpleDatabase.</span>
<a name="l01466"></a>01466 <span class="comment">                - A new class for managing the custom USB board that interfaces SRF10 ultrasonic range finders. Class hwdrivers::CBoardSonars.</span>
<a name="l01467"></a>01467 <span class="comment">                - Class hwdrivers::CBoardENoses has been finished and tested with the real devices.</span>
<a name="l01468"></a>01468 <span class="comment">                - Many includes in &quot;utils_defs.h&quot; moved to those source files really requiring them, to speed up compilation.</span>
<a name="l01469"></a>01469 <span class="comment">                - Fixs to allow compiling using the free Borland C++ 5.5.1 compiler from CMake makefiles.</span>
<a name="l01470"></a>01470 <span class="comment">                - Added new sample for eNose board interface.</span>
<a name="l01471"></a>01471 <span class="comment"></span>
<a name="l01472"></a>01472 <span class="comment">  &lt;h2&gt;Version 0.5.1 (Released for BABEL, November 13, 2007)&lt;/h2&gt;</span>
<a name="l01473"></a>01473 <span class="comment">        - NOV-2007:</span>
<a name="l01474"></a>01474 <span class="comment">                - BUG FIXED: math::generateAxisBaseFromDirection now returns all the three vectors normalized.</span>
<a name="l01475"></a>01475 <span class="comment">                - Implemented Sum of Gaussians (SOG) as a way to create the PDF of a beacon for RO-SLAM (in mrpt::slam::CBeaconMaps).</span>
<a name="l01476"></a>01476 <span class="comment">                - Added a new example to &quot;samples/MRML&quot;: beaconRawlogSimulator.</span>
<a name="l01477"></a>01477 <span class="comment">                - Added a new class for interfacing an &quot;e-Noses&quot; board via USB, in hwdrivers::CBoardENoses.</span>
<a name="l01478"></a>01478 <span class="comment">                - OpenCV added as a monolithic, static linking library to avoid DLL dependencies (for Windows).</span>
<a name="l01479"></a>01479 <span class="comment">                - New wiki-based website. Old doxygen-based documentation headers (.h) removed.</span>
<a name="l01480"></a>01480 <span class="comment">                - BUG FIXED: Memory leaks in the MRPT class registration system and in utils::CTicTac have been removed (Using &quot;Visual Leak Detector&quot; it seems there are no more leaks by now...).</span>
<a name="l01481"></a>01481 <span class="comment">                - BUG FIXED: THROW_EXCEPTION_XXX macros redesigned to avoid eventual exceptions in wxWidgets applications.</span>
<a name="l01482"></a>01482 <span class="comment"></span>
<a name="l01483"></a>01483 <span class="comment">        - OCT-2007:</span>
<a name="l01484"></a>01484 <span class="comment">                - Methods &quot;computeMatchingWith2D&quot; modified for a sensible usage of the &quot;const&quot; modifier.</span>
<a name="l01485"></a>01485 <span class="comment">                - Changed mrpt::slam::CMetricMapsAlignmentAlgorithm::Align to avoid the warning &quot;break strict-aliasing rules&quot; about the CPosePDF**.</span>
<a name="l01486"></a>01486 <span class="comment">                - Added tutorial: Serialization.</span>
<a name="l01487"></a>01487 <span class="comment">                - Added new class mrpt::poses::CPose3DPDFSOG for Sum of Gaussians-representation of a 6D pose probability density.</span>
<a name="l01488"></a>01488 <span class="comment">                - Reactive Navigation Library ported from Win32 API to standard C++.</span>
<a name="l01489"></a>01489 <span class="comment">                - Resampling methods now are separated in a generic, static method bayes::CParticleFilterCapable::computeResampling.</span>
<a name="l01490"></a>01490 <span class="comment"></span>
<a name="l01491"></a>01491 <span class="comment">  &lt;h2&gt;Version 0.4 (Released for BABEL, October 13, 2007)&lt;/h2&gt;</span>
<a name="l01492"></a>01492 <span class="comment">        - OCT-2007:</span>
<a name="l01493"></a>01493 <span class="comment">                - BUG FIXED: Loading grayscale images CImageFloat now forces to load images from files as grayscale always.</span>
<a name="l01494"></a>01494 <span class="comment">                - BUG FIXED: To allow inserting into gridmaps laser scans taken with the sensor bottom-up.</span>
<a name="l01495"></a>01495 <span class="comment">                - All the makefiles of MRPT has been moved to CMake.</span>
<a name="l01496"></a>01496 <span class="comment">        - SEP-2007:</span>
<a name="l01497"></a>01497 <span class="comment">                - Structure of &quot;include&quot; directory changed to include the prefix &quot;&lt;MRPT/...&quot;. This is for leading to a one-directory install into &quot;usr/include&quot; in Linux systems.</span>
<a name="l01498"></a>01498 <span class="comment">                - CSemaphore implemented for Linux using pthreads.</span>
<a name="l01499"></a>01499 <span class="comment">                - CDisplayWindow3D is now based on GLUT and works in Windows &amp; Linux.</span>
<a name="l01500"></a>01500 <span class="comment">                - Added a new application by Antonio J. Ortiz de Galistea: a MonoSLAM demo.</span>
<a name="l01501"></a>01501 <span class="comment">                - Different PF resampling methods are now supported. See CParticleFilter::resample.</span>
<a name="l01502"></a>01502 <span class="comment">                - CParticleFilter now has a centralized structure for all the PF-related options.</span>
<a name="l01503"></a>01503 <span class="comment">                - BUG FIXED: CDisplayWindow2D now has an extra (global) thread to process OpenCV messages without the need for the application to call &quot;waitForKey&quot;.</span>
<a name="l01504"></a>01504 <span class="comment">                - Added a new procedure into CMultiMetricMapPDF for expanding the potential range of observation likelihoods without having a numerical overflow.</span>
<a name="l01505"></a>01505 <span class="comment">                - Add Class for Sonar SRF10 Interface (AJOGD).</span>
<a name="l01506"></a>01506 <span class="comment">                - CImage now is a wrapper class over OpenCV. More image file types are supported now.</span>
<a name="l01507"></a>01507 <span class="comment">                - CDisplayWindow now completely portable between windows/Linux thorugh OpenCV.</span>
<a name="l01508"></a>01508 <span class="comment">        - AUG-2007:</span>
<a name="l01509"></a>01509 <span class="comment">                - BUG FIXED: In utils::CConfigFile.</span>
<a name="l01510"></a>01510 <span class="comment">                - Started new application RawLogViewer using wxWidGets for a portable version (windows/linux).</span>
<a name="l01511"></a>01511 <span class="comment">                - Added utils::getAllRegisteredClasses to obtain at runtime the list of all MRPT registered classes.</span>
<a name="l01512"></a>01512 <span class="comment">                - Started the porting towards &quot;bakefiles&quot;</span>
<a name="l01513"></a>01513 <span class="comment">                - A new function added to obtain the compilation date and the library version (including SVN). See utils::SystemUtils.</span>
<a name="l01514"></a>01514 <span class="comment">                - Started a new version of the application &quot;RawLogViewer&quot; in portable wxWidGets for linux compatibility!.</span>
<a name="l01515"></a>01515 <span class="comment">                - Borland C++ 5.5 not supported any more, due to a lot of internal compiler errors. We use now BCC version 6.0.</span>
<a name="l01516"></a>01516 <span class="comment">                - Range-Only SLAM will be integrated into existing SLAM classes through the new class mrpt::slam::CBeaconMap, now fully integrated into mrpt::slam::CMultiMetricMap.</span>
<a name="l01517"></a>01517 <span class="comment">                - A new class for integrating different PDF representations of beacons (mrpt::slam::CBeacon) and the corresponding map (mrpt::slam::CBeaconMap).</span>
<a name="l01518"></a>01518 <span class="comment">        - JUL-2007:</span>
<a name="l01519"></a>01519 <span class="comment">                - A new class of CAction for 6D movements (mrpt::slam::CActionRobotMovement3D).</span>
<a name="l01520"></a>01520 <span class="comment">                - CStream &amp; CSerializable now have more consistent &quot;const&quot; declarations.</span>
<a name="l01521"></a>01521 <span class="comment"></span>
<a name="l01522"></a>01522 <span class="comment">  &lt;hr&gt;</span>
<a name="l01523"></a>01523 <span class="comment">  &lt;h2&gt;Version 0.3 (Released for BABEL v3.800, July 2007)&lt;/h2&gt;</span>
<a name="l01524"></a>01524 <span class="comment"></span>
<a name="l01525"></a>01525 <span class="comment">        - JUL-2007:</span>
<a name="l01526"></a>01526 <span class="comment">                - A new class for Range-Only Localization (mrpt::slam::CRejectionSamplingRangeOnlyLocalization).</span>
<a name="l01527"></a>01527 <span class="comment">                - Range-Only SLAM is now supported with a new map class (mrpt::slam::CBeaconMap), which has been also integrated in mrpt::slam::CMultiMetricMap.</span>
<a name="l01528"></a>01528 <span class="comment">                - A new class for parsing messages from/to a USB FTDI device (hwdrivers::CInterfaceFTDIMessages).</span>
<a name="l01529"></a>01529 <span class="comment">                - Added a new class for 3D Point PDF representation as a SOG (poses::CPoint3DPFGSOG).</span>
<a name="l01530"></a>01530 <span class="comment"></span>
<a name="l01531"></a>01531 <span class="comment"></span>
<a name="l01532"></a>01532 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l01533"></a>01533 <span class="comment">  &lt;h2&gt;Version 0.2&lt;/h2&gt;</span>
<a name="l01534"></a>01534 <span class="comment"></span>
<a name="l01535"></a>01535 <span class="comment">        - JUN-2007:</span>
<a name="l01536"></a>01536 <span class="comment">                - From now on MRPT is updated through Subversion (SVN).</span>
<a name="l01537"></a>01537 <span class="comment">                - Start solving portability issues towards a full Linux support.</span>
<a name="l01538"></a>01538 <span class="comment">        - MAY-2007:</span>
<a name="l01539"></a>01539 <span class="comment">                - Included the makefile project for &quot;Code::Blocks&quot; compiler, for supporting Linux GCC C++ compiler.</span>
<a name="l01540"></a>01540 <span class="comment">        - FEB-2007:</span>
<a name="l01541"></a>01541 <span class="comment">                - BUG FIXED: In &quot;CSerializable::duplicate()&quot;</span>
<a name="l01542"></a>01542 <span class="comment">                - Added new config file-like interfaces. See utils::CConfigFileBase and derived classes.</span>
<a name="l01543"></a>01543 <span class="comment">                - Added utils::CStringList.</span>
<a name="l01544"></a>01544 <span class="comment">        - JAN-2007:</span>
<a name="l01545"></a>01545 <span class="comment">                - New fast image correlation method based on 2D FFT. See CImage::cross_correlation_FFT</span>
<a name="l01546"></a>01546 <span class="comment">                - 2D FFT functions added to utils::MATH</span>
<a name="l01547"></a>01547 <span class="comment">                - The class utils::CConfigFile now can read entries as &quot;std::vector&quot;&#39;s.</span>
<a name="l01548"></a>01548 <span class="comment">                - New utilities added to utils::MRPT_OS for tokenizing strings.</span>
<a name="l01549"></a>01549 <span class="comment"></span>
<a name="l01550"></a>01550 <span class="comment">  &lt;br&gt;&lt;hr&gt;&lt;br&gt;</span>
<a name="l01551"></a>01551 <span class="comment">  &lt;h2&gt;Version ALFA 0.1 (Published with BABEL v3.0.0, Jan-2007)&lt;/h2&gt;</span>
<a name="l01552"></a>01552 <span class="comment"></span>
<a name="l01553"></a>01553 <span class="comment">        - JAN-2007:</span>
<a name="l01554"></a>01554 <span class="comment">                - The classes &quot;utils::CBitmapXX&quot; have been removed, and BMP image format operations appropriately integrated into existing utils::CImage and utils::CImageFloat classes.</span>
<a name="l01555"></a>01555 <span class="comment">                - Now 3D scenes are supported through &quot;opengl::COpenGLScene&quot;, objects in &quot;mrpt::opengl&quot; namespace, and an external 3D Scene viewer application for Windows.</span>
<a name="l01556"></a>01556 <span class="comment">        - DEC-2006:</span>
<a name="l01557"></a>01557 <span class="comment">                - Addition of TCP/IP sockets, through classes utils::CServerTCPSocket and utils::CClientTCPSocket, allowing serialization of MRPT objects through a TCP socket.</span>
<a name="l01558"></a>01558 <span class="comment">                - New classes in HWDRIVERS namespace allow using serial ports and interfacing GPS units.</span>
<a name="l01559"></a>01559 <span class="comment">                - A new interface utils::CCanvas has been defined for enabling drawing primitives to be implemented in graphical classes.</span>
<a name="l01560"></a>01560 <span class="comment">                - New class gui::CDisplayWindow for visualization of images in a GUI.</span>
<a name="l01561"></a>01561 <span class="comment">                - Portability issues solved for compatibility with Microsoft Visual Studio 2005 (VC8), including the new standard C++ library &quot;secure&quot; functions.</span>
<a name="l01562"></a>01562 <span class="comment">                - A new class &quot;mrpt::slam::CMultiMetricMap&quot; has been introduced for storing any set of metric maps, in a much more convenient and flexible way that the previous (non existing now) class &quot;mrpt::slam::CHybridMetricMap&quot;</span>
<a name="l01563"></a>01563 <span class="comment">        - NOV-2006:</span>
<a name="l01564"></a>01564 <span class="comment">                - The new Optimal Auxiliary Particle Filter has been implemented in &quot;poses::CPosePDFParticles&quot;, and in &quot;mrpt::slam::CMultiMetricMapPDF&quot;</span>
<a name="l01565"></a>01565 <span class="comment">                - BUG FIXED: In matrix inversion, into class &quot;math::CMatrixTemplateNumeric&quot;.</span>
<a name="l01566"></a>01566 <span class="comment">                - RANSAC method added for correspondences-pair lists, in &quot;mrpt::slam::CICP::robustRigidTransformation&quot;</span>
<a name="l01567"></a>01567 <span class="comment">        - OCT-2006:</span>
<a name="l01568"></a>01568 <span class="comment">                - The Dieter Fox&#39;s algorithm &quot;KLD-sampling&quot; for adative particle filter has been implemented in the class &quot;poses::CPosePDFParticles&quot;</span>
<a name="l01569"></a>01569 <span class="comment">                - Major changes in the way bayes::CParticleFilter works: Now there are four diferent particle filter algorithms defined.</span>
<a name="l01570"></a>01570 <span class="comment">                - New utils::MATH functions added (chi-square and normal quantiles, etc...)</span>
<a name="l01571"></a>01571 <span class="comment">                - A new probabilistic motion model has been added to &quot;mrpt::slam::CActionRobotMovement2D&quot;, the particles draw process described in Thrun&#39;s 2006 book.</span>
<a name="l01572"></a>01572 <span class="comment">        - SEP-2006:</span>
<a name="l01573"></a>01573 <span class="comment">                - The Lu &amp; Milios algorithm now works with any user-supplied matrix of pose constrains. See &quot;mrpt::slam::CConsistentObservationAlignment&quot;.</span>
<a name="l01574"></a>01574 <span class="comment">                - A new generic matrix template has been created, &quot;math::CMatrixTemplate&quot; and &quot;math::CMatrixTemplateNumeric&quot;, which are now the base for math::CMatrix and math::CMatrixD.</span>
<a name="l01575"></a>01575 <span class="comment">                - Template functions defined for dealing with STL&#39;s vectors: basic math operations, printing to screen,... in &quot;utils::MATH&quot;</span>
<a name="l01576"></a>01576 <span class="comment">                - The mrpt::slam::CICP algorithm now also deals with mrpt::slam::CLandmarksMap metric maps.</span>
<a name="l01577"></a>01577 <span class="comment">        - AUG-2006:</span>
<a name="l01578"></a>01578 <span class="comment">                - A new SLAM framework has been implemented in the main class mrpt::slam::CHierarchicalMappingFramework</span>
<a name="l01579"></a>01579 <span class="comment">                - A new class added for managing INI-like config files &quot;utils::CConfigFile&quot;.</span>
<a name="l01580"></a>01580 <span class="comment">                - Hill-climbing algorithm &quot;utils::CHillClimbing&quot; added to the library.</span>
<a name="l01581"></a>01581 <span class="comment">                - Improved SIFT features detection, triangulation and matching in &quot;mrpt::slam::CLandmarksMap&quot; for pairs of stereo images.</span>
<a name="l01582"></a>01582 <span class="comment">        - JUN-2006:</span>
<a name="l01583"></a>01583 <span class="comment">                - New functions added to &quot;poses::CPointPDFGaussian&quot; for Bayesian fusion, correspondence likelihood,...</span>
<a name="l01584"></a>01584 <span class="comment">        - MAY-2006:</span>
<a name="l01585"></a>01585 <span class="comment">                - Introduction of &quot;pixel to 3D&quot; functions in vision</span>
<a name="l01586"></a>01586 <span class="comment">                - SIFT features extractor moved to vision</span>
<a name="l01587"></a>01587 <span class="comment">        - ABR-2006:</span>
<a name="l01588"></a>01588 <span class="comment">                - mrpt::slam::CLandmarksMap now works with SIFT features: loading from images, fusing,...</span>
<a name="l01589"></a>01589 <span class="comment">                - SIFT features extractor in &quot;utils::CImage&quot;</span>
<a name="l01590"></a>01590 <span class="comment">        - FEB-2006:</span>
<a name="l01591"></a>01591 <span class="comment">                - The class mrpt::slam::COccupancyGrid2D now uses 16bit for storing cell values, and many new options added.</span>
<a name="l01592"></a>01592 <span class="comment">                - Rao-Blackwellized Particle filters now supported in class mrpt::slam::CMultiMetricMapPDF</span>
<a name="l01593"></a>01593 <span class="comment">        - JAN-2006:</span>
<a name="l01594"></a>01594 <span class="comment">                - Landmarks-based maps now supported with mrpt::slam::CLandmarksMap</span>
<a name="l01595"></a>01595 <span class="comment">                - ZIP compression supported with the introduction of classes in the new namespace compress::zip.</span>
<a name="l01596"></a>01596 <span class="comment">                - Rao-Balckwellized particle filter mapping supported with mrpt::slam::CMetricMapBuilderRBPF</span>
<a name="l01597"></a>01597 <span class="comment">                - Points map are now fused considering the weights of points (mrpt::slam::CSimplePointsMap)</span>
<a name="l01598"></a>01598 <span class="comment">                - Definition of a new class mrpt::slam::CMetricMapBuilding for grouping map building methods.</span>
<a name="l01599"></a>01599 <span class="comment">                - Addition of a new class for 3D occupancy grid building.</span>
<a name="l01600"></a>01600 <span class="comment">                - New types of points map derived from mrpt::slam::CMetricMap.</span>
<a name="l01601"></a>01601 <span class="comment">        - DEC-2005:</span>
<a name="l01602"></a>01602 <span class="comment">                - New methods added to MRML, for circular robots paths planning. See the base class mrpt::slam::CPathPlanningMethod</span>
<a name="l01603"></a>01603 <span class="comment">                - The method by Lu &amp; Milios for consistent maps alignment has been integrated into the MRML library, in the mrpt::slam::CConsistentObservationAlignment</span>
<a name="l01604"></a>01604 <span class="comment">                - The CObservation-derived classes has been modified to adhere to the &quot;BABEL modules proposal for robotics architecture&quot; (Technical report, dec.2005)</span>
<a name="l01605"></a>01605 <span class="comment">                - Metrics maps has been grouped using a common base class: mrpt::slam::CMetricMap</span>
<a name="l01606"></a>01606 <span class="comment">                - The spectral-based method for maps partitioning has been integrated into the MRML library, in the class mrpt::slam::CIncrementalMapPartitioner.</span>
<a name="l01607"></a>01607 <span class="comment">                - CObservationLaserRangeScan renamed as CObservation2DRangeScan.</span>
<a name="l01608"></a>01608 <span class="comment">        - NOV-2005:</span>
<a name="l01609"></a>01609 <span class="comment">                - New types of observations added (mrpt::slam::CObservation descendant classes) for images (from a camera) and for sonar readings.</span>
<a name="l01610"></a>01610 <span class="comment">        - OCT-2005:</span>
<a name="l01611"></a>01611 <span class="comment">                - New class added: A simple SLAM method for 2D localization and simple, metric maps building (non-hierarchical global maps). See mrpt::slam::CSimple2DSLAM.</span>
<a name="l01612"></a>01612 <span class="comment">                - Addition of &quot;streaming versioning&quot; for mrpt::utils::CSerializable classes.</span>
<a name="l01613"></a>01613 <span class="comment">                - A new observation type has been introduced, the mrpt::slam::CObservationIRRing.</span>
<a name="l01614"></a>01614 <span class="comment">                - Introduction of 3D poses using 4x4 transformation matrices and yaw/pitch/roll angles.</span>
<a name="l01615"></a>01615 <span class="comment">                - Polymorphism mechanishs for mrpt::utils::CSerializable derived classes and correct streaming using &quot;&lt;&lt;&quot; and &quot;&gt;&gt;&quot; operators has been provided through a set of &quot;#define&quot;&#39;s and functions. See CSerializable.h</span>
<a name="l01616"></a>01616 <span class="comment">        - SEP-2005:</span>
<a name="l01617"></a>01617 <span class="comment">                - Reactive Navigator totally rewritten for integration into MRPT applications repository (See MRPT::reactivenav::CReactiveNavigationSystem).</span>
<a name="l01618"></a>01618 <span class="comment">                - Added MRPT applications repository section.</span>
<a name="l01619"></a>01619 <span class="comment">        - AUG-2005:</span>
<a name="l01620"></a>01620 <span class="comment">                - Particle filters basic algorithm added to UTILS library.</span>
<a name="l01621"></a>01621 <span class="comment">                - Bitmap classes (utils::CBitmap) totally rewritten for a sensible use of classes inheritance.</span>
<a name="l01622"></a>01622 <span class="comment">        - JUN-2005:</span>
<a name="l01623"></a>01623 <span class="comment">                - First version of the library! there are a few classes for matrix manipulation, 2D point map management, and an implementation of the ICP algorithm.</span>
<a name="l01624"></a>01624 <span class="comment"></span>
<a name="l01625"></a>01625 <span class="comment">*/</span>
<a name="l01626"></a>01626 
</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.2</a> for MRPT 0.9.4 SVN: at Mon Jan 10 22:30:30 UTC 2011</td><td></td> <td width="100"> </td> <td width="150">  </td></tr> </table> </body></html>