00001 /* +---------------------------------------------------------------------------+ 00002 | The Mobile Robot Programming Toolkit (MRPT) C++ library | 00003 | | 00004 | http://mrpt.sourceforge.net/ | 00005 | | 00006 | Copyright (C) 2004-2010 University of Malaga | 00007 | | 00008 | This software was written by the Perception and Robotics | 00009 | research group, University of Malaga (Spain). | 00010 | Contact: Jose-Luis Blanco <jlblanco@ctima.uma.es> | 00011 | | 00012 | This file is part of the MRPT project. | 00013 | | 00014 | MRPT is free software: you can redistribute it and/or modify | 00015 | it under the terms of the GNU General Public License as published by | 00016 | the Free Software Foundation, either version 3 of the License, or | 00017 | (at your option) any later version. | 00018 | | 00019 | MRPT is distributed in the hope that it will be useful, | 00020 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 00021 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 00022 | GNU General Public License for more details. | 00023 | | 00024 | You should have received a copy of the GNU General Public License | 00025 | along with MRPT. If not, see <http://www.gnu.org/licenses/>. | 00026 | | 00027 +---------------------------------------------------------------------------+ */ 00028 00029 /** \page changelog Change Log 00030 * 00031 00032 <p> <b>Note:</b> <i>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 <code>make documentation_html</code> or browse it on-line <a href="http://www.mrpt.org/" target="_blank">here</a>.</i></p> 00033 00034 <a name="0.9.4"> 00035 <h2>Version 0.9.4 - (Version 1.0.0-Release_Candidate_2): UNDER DEVELOPMENT </h2></a> 00036 - Changes in applications: 00037 - <a href="http://www.mrpt.org/Application:rawlog-grabber" >rawlog-grabber</a>: Added "hokuyo_UXM.ini" to support HOKUYO UXM laser series. 00038 - New classes: 00039 - mrpt::math::ModelSearch: A RANSAC + Genetic model fitter (by Zoltan Gaal) 00040 - Build system: 00041 - Linux/Mac: Don't enable BUILD_KINECT by default if libusb1-dev is not present. 00042 - Win64: Fixed building warnings and errors with MSVC9 00043 - Fixed compiling with MSVC 2005 (Patch by Z.P.Gaal) 00044 - Fixed compiling under MIPS/SPARC/S930/... due to a bug in Eigen3-beta (patch sent upstream and fixed in local copy). 00045 - Fixed build errors against latest changes in eigen3 (before their release version). 00046 - Changes in classes: 00047 - mrpt::opengl::COpenGLViewport now has a special "image mode" which makes very easy to render images to opengl windows efficiently. See the example "opengl_video_viewport_demo". 00048 - Improvement in Kinect Linux driver (libfreenect), avoiding intensive usage of critical sections (Thanks, "Gonzales" - see: http://www.mrpt.org/node/491 ) 00049 - Kinect: Embedded libfreenect library updated to latest GIT revision (12/DEC/2010). 00050 - mrpt::hwdrivers::CHokuyoURG now support ethernet connection (tested in HOKUYO UXM series)[JRRS]. 00051 - mrpt::slam::CICP has a new option: skip_cov_calculation that can save some time in some cases. 00052 - mrpt::poses::CPose3D was too strict in checking that the rotation matrix is orthogonal: admisible threshold is now 1 (plus/minus)3e-3. 00053 - Changes in examples: 00054 - hokuyo_laser_test. Now it's possible to choose between USB and Ethernet connection. 00055 - New examples: 00056 - opengl_video_demo: A demo of opengl textures from a video stream. 00057 - opengl_video_viewport_demo: A demonstration of the new viewport "image mode". 00058 - BUG FIXES: 00059 - Octree-based rendering of point cloud didn't discard all invisible nodes, not doing an optimal rendering. 00060 - Fixed situations were RTTI registrations were not updated before usage, leading to "uregistered class?" exceptions. 00061 - 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's fixed now). 00062 00063 00064 00065 <br> <hr> 00066 <a name="0.9.3"> 00067 <h2>Version 0.9.3 - (Version 1.0.0-Release_Candidate_1): Released 18-DEC-2010 (SVN 2338) </h2></a> 00068 - <b>Most important changes:</b> 00069 - MRPT now relies entirely on Eigen (version 3) for matrix and vector classes. 00070 - Support for Microsoft Xbox Kinect. See mrpt::hwdrivers::CKinect and this page: http://www.mrpt.org/Kinect_and_MRPT 00071 - Many new functions in mrpt::vision (by F.A. Moreno). 00072 - More efficient rendering of all mrpt::opengl classes thru automatic caching of OpenGL display lists. 00073 - <b>Detailed list of changes:</b> 00074 - Changes related to mathematics, matrices and containers and the port to Eigen: 00075 - All is now based on the Eigen library, v3. See <a href="http://www.mrpt.org/Matrices_vectors_arrays_and_Linear_Algebra_MRPT_and_Eigen_classes" >this page</a> for a more complete description of all the changes and the reasons of this big change. 00076 - Matrices constructors from poses (TPose2D,...) now are explicit. Example: Previous code "CMatrixDouble31 m = myPose2D;" won't build now, should be: "CMatrixDouble31 m = CMatrixDouble31(myPose2D);" 00077 - CVectorFloat and CVectorDouble are not synonymous with mrpt::vector_float and mrpt::vector_double. 00078 - mrpt::math::meanAndCov() overloads have been separated into: meanAndCovVec() and meanAndCovMat() 00079 - method unit() in matrices was inconsistent between fixed and dynamic sized matrices. It's now unified (see Eigen::Matrix::unit) 00080 - Types mrpt::vector_float and std::vector<float> (or the "double" versions) are not interchangeable any more. Read more on this in the link above. 00081 - These examples have been removed: benchmark-matrix, math_iterators_test, matrix_views 00082 - New application: 00083 - <a href="http://www.mrpt.org/Application:kinect-3d-slam" >kinect-3d-slam</a>. 00084 - Changes in applications: 00085 - SceneViewer3D: Now has new options to visualize and tune the octree structures of point clouds. 00086 - <a href="http://www.mrpt.org/Application:GridmapNavSimul" >GridmapNavSimul</a>: Now can load a custom grid map and save rawlogs in the two existing formats. 00087 - <a href="http://www.mrpt.org/Application:pf-localization" >pf-localization</a>: Now can also handle observations-only rawlogs. 00088 - Deleted classes: 00089 - mrpt::slam::CConsistentObservationAlignment: It implemented the Lu & Milios algorithm, now superseded by graph-slam methods. See the mrpt::graphslam namespace. 00090 - mrpt::utils::CImageFloat: For real images with float pixels, it's better to directly use OpenCV. For matrices, there'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. 00091 - Changes in classes: 00092 - mrpt::gui::CDisplayWindow::showImageAndPoints() now also displays the index of the feature (if required). 00093 - mrpt::vision::CFeature now has new members: 00094 - nTimesSeen, nTimesNotSeen, nTimesLastSeen. Counters for performing tracking of the feature visibility. 00095 - initialDepth. The computed 3D distance from the camera to the 3D real feature the first time it was seen. 00096 - detph. The computed 3D distance from the camera to the 3D real feature. 00097 - p3D. The 3D coordinates of this feature when projected into 3D space. 00098 - multiScales. A vector containing the set of different scales at which the SIFT-like descriptor must be computed. 00099 - multiOrientations. For each scale in multiScales there is a vector containing the main orientations of the feature. 00100 - descriptors.multiSIFTDescriptors. For each scale and orientation there is a SIFT-like descriptor. 00101 - multiHashCoeffs. For each descriptor, a 3-d vector containing its Hash coefficients computed through the Haar wavelets. 00102 - hasDescriptorMultiSIFT(). Indicates if the multi-resolution SIFT-like descriptor has been computed for this feature. 00103 - New method mrpt::gui::CDisplayWindow3D::getRenderingFPS() 00104 - Both mrpt::opengl::CPointCloud and mrpt::opengl::CPointCloudColoured are now much more optimized to render huge point clouds: 00105 - Smart rendering based on Octrees to determine which volumes are within the frustum. 00106 - 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? 00107 - New method mrpt::utils::CClientTCPSocket::getReadPendingBytes() 00108 - New method mrpt::opengl::COpenGLScene::visitAllObjects() 00109 - Many mrpt::opengl classes now are derived from a display-list-cached base class (mrpt::opengl::CRenderizableDisplayList) 00110 - mrpt::utils::CStream now has two new methods (mrpt::utils::CStream::ReadBufferFixEndianness & 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). 00111 - Changes in functions: 00112 - mrpt::vision::matchFeatures(). Implemented a new method for managing ambiguous matches, now taking into account which of the conflicting matches is the most probable. 00113 - New structures/classes: 00114 - mrpt::hwdrivers::CKinect: Support for grabbing XBox Kinect. Read the class documentation for more details. 00115 - TMultiResDescMatchOptions. Struct containing the options when matching multi-resolution SIFT-like descriptors. 00116 - TMultiResDescOptions. Struct containing the options when computing the multi-resolution SIFT-like descriptors. 00117 - mrpt::aligned_containers: A helper template to ease the declaration of STL containers with the correct Eigen aligned allocators. 00118 - mrpt::opengl::CRenderizable::TRenderInfo: Helper struct to help OpenGL objects to render more efficiently by predicting their rendering conditions 00119 - mrpt::opengl::CRenderizableDisplayList, a class to automate the caching of OpenGL objects via Display Lists. 00120 - New functions: 00121 - mrpt::vision::computeGradient(). Computes the gradient of certain pixel within the image. 00122 - 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) 00123 - 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. 00124 - mrpt::vision::interpolateHistEntry(). Inserts the orientation value of a certain pixel within the keypoint neighbourhood into the histogram of orientations. 00125 - mrpt::vision::computeMultiResolutionDescriptors(). Computes the multi-resolution SIFT-like descriptor of a set of matched features 00126 - mrpt::vision::matchMultiResolutionFeatures(). Matches two CFeatureList containing mulit-resolution descriptors. 00127 - mrpt::vision::setProperScales(). Computes the initial and final scales where to look when finding a match between multi-resolution features. 00128 - mrpt::vision::computeSAD(). Calculates the Sum of Absolutes Differences (range [0,1]) between two patches. 00129 - mrpt::vision::computeMoreDescriptors(). Computes and adds more multi-resolution descriptor to certain feature at lower or upper scales. 00130 - mrpt::vision::setProperScales(). Determines the range of scales where to look according to the depth of the involved features. 00131 - mrpt::system::createThread now also has overloaded versions for the thread functions having arguments passed by reference. 00132 - New examples: 00133 - keypoint_matching. It contains three different methods: 00134 - 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. 00135 - Feature extraction, stereo matching and re-projection to 3D from a pair of images. 00136 - 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. 00137 - octree_render_huge_pointcloud 00138 - <b>BUG FIXES:</b> 00139 - Serialization dumps of many objects (observations, maps,...) should be now compatible between big and little endian architectures. 00140 - Doing a clear() on mrpt::slam::CColouredPointsMap didn't actually clear the internal vectors for RGB+Distance values. 00141 - mrpt::utils::net::DNS_resolve_async didn't work properly. 00142 - RawlogViewer, module "Raw-map": It didn't display or save the robot path for observations-only rawlogs. 00143 - Fixed exception when rendering a mrpt::opengl::CPointCloud with no points in it. 00144 - Fixed bad computation of SAD in mrpt::vision::matchFeatures() because bad usage of IplImage fields <i>width</i> and <i>widthstep</i>. 00145 - Fixed vision::CImage::update_patch(). Row and column checkings of the patch position were wrongly related to image width and height, respectively. 00146 - 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 ). 00147 00148 <br> <hr> <br> 00149 00150 <a name="0.9.2"> 00151 <h2>Version 0.9.2: 27-OCT-2010 </h2></a> 00152 - <b>Most important changes:</b> 00153 - Basic support for Graph-SLAM. Among others, see mrpt::poses::CNetworkOfPoses, the new namespace mrpt::graphslam and the program <a href="http://www.mrpt.org/Application:graph-slam" >graph-slam</a> 00154 - First working version of Sparse Bundle-Adjustment (see mrpt::vision::bundle_adj_full). 00155 - New hardware supported: Phidget kits & Fiber Optic Gyro KVH DSP3000 (both contributed by Adrien Barral, Robopec). 00156 - Tons of performance optimizations, mostly in geometry classes. 00157 - <b>Backward incompatible changes:</b> 00158 - In <=0.9.1, mrpt::poses::CPose2D for (x,y,phi) also contained a "z" field, which has been removed now. It didn't make sense at all but was there for implementation convenience. In the new implementation of poses there's no need anymore for that dummy "z" coordinate. 00159 - <b>Detailed list of changes:</b> 00160 - New applications: 00161 - <a href="http://www.mrpt.org/Application:carmen2rawlog" >carmen2rawlog</a>: A converter from CARMEN robotics logs to binary Rawlog dataset files. 00162 - <a href="http://www.mrpt.org/Application:carmen2simplemap" >carmen2simplemap</a>: A converter from CARMEN robotics logs to binary "simplemap" files. 00163 - <a href="http://www.mrpt.org/Application:graph-slam" >graph-slam</a>: A central application for all Graph-SLAM methods and tools. 00164 - Changes in applications: 00165 - <a href="http://www.mrpt.org/Application:rawlog-edit" >rawlog-edit</a>: More operations supported. 00166 - <a href="http://www.mrpt.org/Application:mrpt-performance" >mrpt-performance</a>: Added command-line arguments to filter what tests to run, and more tests added. 00167 - RawLogViewer: Can now build "raw maps" from datasets in the "observations-only" format. 00168 - <a href="http://www.mrpt.org/Application:icp-slam" >icp-slam</a> and <a href="http://www.mrpt.org/Application:rbpf-slam" >rbpf-slam</a> now accept a second command-line argument for the dataset (rawlog) to load. 00169 - <a href="http://www.mrpt.org/Application:map-partition">map-partition</a>: Fixed generation of a valid MATLAB script to easily visualize the results (Thanks Ricardo Vazquez Martin for reporting!). 00170 - Changes in build system / compiling: 00171 - By default, MRPT_ALWAYS_CHECKS_DEBUG_MATRICES is OFF. This allow programs to run faster in non Debug builds. 00172 - Doxygen documentation: More macros expanded while generating docs: now docs are also generated for smart pointers and for RTTI & serialization stuff. 00173 - Previous header <mrpt/math_mrpt.h> renamed <mrpt/math.h>. The old one still remains (probably until MRPT 1.0.0), but raises a warning on usage. 00174 - New classes: 00175 - New sensor driver for Phidget kit (see mrpt::hwdrivers::CPhidgetInterfaceKitProximitySensors), contributed by Adrien Barral (Robopec). 00176 - New sensor driver for Fiber Optic Gyro KVH DSP3000 (see mrpt::hwdrivers::CGyroKVHDSP3000), contributed by Adrien Barral (Robopec). 00177 - mrpt::math::CDirectedTree template for directed tree-like graphs. Includes generic depth-first & breath-first visitors. 00178 - mrpt::vision::CUndistortMap, a class for efficiently undistorting sequences of images with the same camera parameters. 00179 - New PDF classes for "information" (inverse covariance) forms: 00180 - mrpt::poses::CPosePDFGaussianInf 00181 - mrpt::poses::CPose3DPDFGaussianInf 00182 - Data types for graph SLAM (only two of them existed before, and now they are all classes and support serialization): 00183 - mrpt::poses::CNetworkOfPoses2D 00184 - mrpt::poses::CNetworkOfPoses3D 00185 - mrpt::poses::CNetworkOfPoses2DInf 00186 - mrpt::poses::CNetworkOfPoses3DInf 00187 - mrpt::poses::CNetworkOfPoses2DCov 00188 - mrpt::poses::CNetworkOfPoses3DCov 00189 - 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<> 00190 - mrpt::utils::CTextFileLinesParser 00191 - New event for GUI windows: mrpt::gui::mrptEventMouseDown 00192 - New metaprogramming class: mrpt::utils::TEnumType, allows converting between numerical and symbolic text values for enum types. 00193 - New SE(2) and SE(3) geometry helper classes. See mrpt::poses::SE_traits 00194 - Helper templates to handle poses and pose PDFs at build time. See <mrpt/poses/helper_templates.h> 00195 - Changes in classes: 00196 - mrpt::hwdrivers::CHokuyoURG has new configuration variable "HOKUYO_HS_mode" to enable the high sensitivity mode. 00197 - removeObservationsByTimestamp() removed from mrpt::slam::CheightGridMap2D, which now doesn't have the "sliding window" insertion method. It was too memory intensive for large maps. 00198 - 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. 00199 - mrpt::poses::CNetworkOfPoses has many improvements and new methods (see its documentation). 00200 - mrpt::math::CDijkstra: 00201 - Algorithm is now much faster (eg: 70x times faster for graphs of 4K nodes & 60K arcs). 00202 - Many changes in its interface, including new feedback functors, support for returning the built tree and many handy typedef's. 00203 - Added a new type mrpt::utils::TNodeID, used in graph-related classes: mrpt::math::CDirectedGraph, mrpt::math::CDijkstra 00204 - mrpt::opengl::CPointCloud & mrpt::opengl::CPointCloudColoured now have an option to draw smoothed points (see mrpt::opengl::CPointCloud::enablePointSmooth). 00205 - mrpt::utils::TColorf: New explicit copy constructor from a mrpt::utils::TColor 00206 - mrpt::opengl::CRenderizable: Many "set" methods that returned "void" now return a reference to "this" so several calls can be chained (e.g. obj.setColor(...).setScale(1.0) ) 00207 - mrpt::gui::CDisplayWindow3D doesn't report ALT+Enter as a keystroke event anymore. 00208 - mrpt::gui::CBaseGUIWindow has new methods (implemented in all derived classes): 00209 - getLastMousePosition() 00210 - setCursorCross() 00211 - New method mrpt::utils::CTimeLogger::getMeanTime 00212 - mrpt::vision::TSequenceFeatureObservations has load/save methods to text files. 00213 - mrpt::utils::TCamera now has setter methods. 00214 - New method: mrpt::math::CSparseMatrixTemplate::insertMatrix() 00215 - New method: mrpt::math::CArrayNumeric::slice() 00216 - New method: mrpt::utils::CImage::copyFromForceLoad() 00217 - mrpt::poses::CPose3D: 00218 - Much faster operations, as long as yaw(), pitch() & roll() are not explicitly called. These 3 angles are now not computed until really requested by the user, then cached. 00219 - New SE3 Lie algebra methods: mrpt::poses::CPose3D::exp(), mrpt::poses::CPose3D::ln(), ... 00220 - mrpt::poses::CPose3D::composePoint() now has an optional flag to compute faster, approximate Jacobians (for small rotations only!). 00221 - Methods composePoint() and inverseComposePoint() now can also compute the Jacobian with respect to se3 (the tangent space of SE(3) at a given pose). 00222 - New methods: setFrom12Vector(), getAs12Vector() 00223 - New method: mrpt::hwdrivers::CSerialPort::ReadString 00224 - All matrices: New methods: 00225 - t() (for transpose, apart of the old ~ operator) 00226 - multiply_A_skew3(). 00227 - mrpt::slam::CGasConcentrationGridMap2D now implements correctly the Kernel DM & DM+V methods as explained in the IROS 2009 paper (see class for refs). 00228 - mrpt::utils::CDynamicGrid has new template method getAsMatrix(). 00229 - New functions: 00230 - mrpt::graphslam::optimize_graph_spa_levmarq , a graph-slam implementation in the new namespace mrpt::graphslam 00231 - mrpt::math::slerp 00232 - mrpt::math::skew_symmetric3 & mrpt::math::skew_symmetric3_neg 00233 - mrpt::math::rodrigues_so3_exp 00234 - mrpt::vision::pinhole::undistort_point 00235 - ostream text print << operators for mrpt::utils::TPixelCoordf and mrpt::utils::TPixelCoordf. 00236 - New ASSERT macros: ASSERT_EQUAL_, ASSERT_NOT_EQUAL_, ASSERT_BELOW_, ASSERT_ABOVE_. 00237 - mrpt::slam::carmen_log_parse_line() a tool for parsing CARMEN logs. 00238 - mrpt::opengl::graph_tools::graph_visualize(), a visualizer of graphs of pose constraints. 00239 - mrpt::opengl::stock_objects::CornerXYSimple() for 2D corners. 00240 - mrpt::system::strCmp, mrpt::system::strCmpI, mrpt::system::strStarts, mrpt::system::strStartsI. 00241 - mrpt::system::os::_strncmp, mrpt::system::os::_strnicmp. 00242 - New examples: 00243 - opengl_objects_demo 00244 - phidgetProximitySensor 00245 - bundle_adj_full_demo 00246 - se3 00247 - slerp_demo 00248 - voronoi_demo 00249 - Others: 00250 - Change in interface of function mrpt::scanmatching::HornMethod() 00251 - 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. 00252 - BUG FIXES: 00253 - Fixed wrong size of 2D ellipsoids in mrpt::opengl::CEllipsoid when "quantiles" != 1. 00254 - Fixed crash in mrpt::math::maximum() and minimum() for empty vectors. This also solves Debian FTBFS bug <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=599989" > #599989</a>. 00255 - Fixed crash in particle filters (both localization and RBPF-SLAM) when using the "optimal particle filter algorithm". 00256 - mrpt::opengl::CPointCloud::enableColorFromX() didn't work for disabling the coloring of points. 00257 - Fixed build missing finite() function with GCC in some platforms (thanks Mike Davies for reporting!). 00258 - Fixed build without zlib in GNU/Linux. 00259 - Fixed minimal build, without OpenCV, wxWidgets and GL/GLUT. 00260 - Fixed wrong saving/loading to/from text files for mrpt::vision::CFeatureList (thanks "me138" for noticing!) 00261 - Fixed (aparently compiler/config-dependent) error when deserializing classes with an old deprecated name, i.e. registered with registerClassCustomName() (Thanks "ricardo" for reporting!) 00262 - Fixed exception in mrpt::math::CLevenbergMarquardtTempl when saving the optimization path. 00263 - Iterators in mrpt::slam::CRawlog only had the post-increment form, but actually implemented a pre-increment. Both, correct, versions now exist. 00264 - mrpt::gui::CBaseGUIWindow::setWindowTitle() didn't work (for some versions of wxWidgets only?). 00265 - mrpt::gui::CDisplayWindowPlots::plot(y) asserted on empty input vector (actually a bug in mrpt::math::linspace for len=0) 00266 - mrpt::gui::CDisplayWindowPlots did ignore the construction-time width x height. 00267 - Fixed bug in mrpt::utils::CImage::KLT_response: due to wrong signed numbers usage, responses were high in textureless parts of images. 00268 - FIXED: mrpt::gui::CDisplayWindow3D crashes when hitting ALT+Enter for fullscreen when user is waiting for a key to close the window. 00269 - icp-slam: Fixed potential wrong processing of datasets in observations-only format where the odometry initial value is not (0,0,0). 00270 - Build errors with some OpenCV versions (<a href="http://www.mrpt.org/node/369" >Bug report & patch</a> by "iXce"); fixed link errors against opencv 2.0 (thanks Rudan Janos). 00271 - FIXED: Text labels of CRenderizable classes inherited the color from the objects; now they're always white. 00272 - mrpt::poses::CPosePDFGaussianInf & mrpt::poses::CPose3DPDFGaussianInf were not registered at startup with registerClass(). 00273 00274 00275 <br> <hr> <br> 00276 00277 <a name="0.9.1"> 00278 <h2>Version 0.9.1: Released 1-AUG-2010 (SVN 2076) </h2></a> 00279 - <b>Most important changes:</b> 00280 - CRITICAL REGRESION FIXED: The program rbpf-slam did always crash at start-up in MRPT 0.9.0. 00281 - Changes in <a href="index.html#libs" >libraries</a>: 00282 - Further factorization: New libraries: <a href="mrpt-detectors.html" > mrpt-detectors</a>, <a href="mrpt-bayes.html" > mrpt-bayes</a> and <a href="mrpt-scanmatching.html" >mrpt-scanmatching </a>. 00283 - Dependencies simplified - most notably, mrpt-gui is now not included by many libraries that did in previous versions (check the <a href="index.html#libs" > deps graph </a> ). 00284 - <b>Important:</b> Due to this last change, you <b>may need</b> to add a <code>#include <mrpt/gui.h></code> when using mrpt::gui classes in places where formerly a <code>#include <mrpt/slam.h></code> was enough. 00285 - Many new stuff and improvements in mrpt-vision, e.g. mrpt::vision::CGenericFeatureTracker, mrpt::vision::CFeatureList, etc. 00286 - Support for Videre Stereo cameras (By Cyril Gerber, thanks!) 00287 - New command-line dataset manipulation tool: rawlog-edit. 00288 - Fixed support for pkg-config with a new set of libmrpt-*.pc files (see new example MRPT/doc/mrpt_example1-with-Makefile and <a href="http://www.mrpt.org/Compiling_custom_applications_in_Linux_with_a_Makefile_and_pkg-config" >this page</a>). 00289 - <b>Detailed list of changes:</b> 00290 - Changes in build system: 00291 - Fixed support for pkg-config with a new set of libmrpt-*.pc files (see new example MRPT/doc/mrpt_example1-with-Makefile and <a href="http://www.mrpt.org/Compiling_custom_applications_in_Linux_with_a_Makefile_and_pkg-config" >this page</a>). 00292 - Further factorization: New libraries: <a href="mrpt-detectors.html" > mrpt-detectors</a>, <a href="mrpt-bayes.html" > mrpt-bayes</a> and <a href="mrpt-scanmatching.html" >mrpt-scanmatching </a>. 00293 - Dependencies simplified - most notably, mrpt-gui is now not included by many libraries that did in previous versions (check the <a href="index.html#libs" > deps graph </a> ). 00294 - New CMake switch: "MRPT_BACKCOMPATIB_08X": 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. 00295 - Changes in applications: 00296 - camera-calib can now open SwissRangers 3D cameras as well for real-time calibration. 00297 - rawlog-grabber: New config file optional argument: "rawlog_GZ_compress_level" to settle the desired GZ-compression level of rawlogs. 00298 - Changes in classes: 00299 - mrpt::utils::CImage: 00300 - It now has a new method (setFromImageReadOnly) and a new constructor as UNINITIALIZED_IMAGE. 00301 - New alternative checkerboard detector algorithm (by Scaramuzza et al.). See mrpt::utils::CImage::findChessboardCorners for references and more details. 00302 - findChessboardCorners() is no longer a method of CImage, but a function in mrpt::vision (see mrpt::vision::findChessboardCorners). 00303 - New method to compute KLT response at any given position: mrpt::utils::CImage::KLT_response 00304 - New efficient constructor to build a grayscale version of another image, or a fast "link" if it was already grayscale. See CImage::CImage( img, FAST_REF_OR_CONVERT_TO_GRAY ) 00305 - Many classes: UNINITIALIZED_* which were #defines have been transformed into enums to keep all that stuff into MRPT namespaces. 00306 - mrpt::reactivenav::CReactiveNavigationSystem does not have any longer the "debugWindows" option. This is done to remove the dependecy of mrpt-reactivenav on mrpt-gui. 00307 - mrpt::vision::CFeatureExtraction has a new option FASTOptions.use_KLT_response. 00308 - mrpt::slam::CObservation now has virtual load() and unload() method to manually invoke delayed-load (actually only needed by 3D camera observations). 00309 - stlplus::smart_ptr templates now have an extra template argument "COUNTER" which defaults to an thread-safe atomic counter but can be set to a plain "unsigned int" in time-critical apps which are known to work in a single thread. 00310 - mrpt::utils::CStream now handles sizes as uint64_t instead of size_t, to allow files larger than 4Gb in 32bit systems. 00311 - mrpt::hwdrivers::prepareVideoSourceFromUserSelection() now also displays as an option to grab images from SwissRanger 3D cameras. 00312 - mrpt::hwdrivers::CCameraSensor can now open SwissRanger 3D cameras. 00313 - mrpt::vision::CFeatureList now has KD-tree-based search. 00314 - mrpt::slam::CColouredPointsMap: 00315 - Added a few new methods to modify and retrieve the color of points already in the map. 00316 - mrpt::hwdrivers::CGenericSensor: 00317 - Now has a generic interface for external image directories (it was only in CCameraSensor before), so more sensors can use this feature. 00318 - The sensor label member is now "m_sensorLabel" in this base class, instead of replicating it in all children classes. 00319 - mrpt::slam::CObservation3DRangeScan: 00320 - The confidence channel is stored as an image instead of a matrix to optimize memory and disk space. 00321 - New "auto-calibration" method: CObservation3DRangeScan::recoverCameraCalibrationParameters 00322 - mrpt::hwdrivers::CSwissRanger3DCamera is now prepared to store intensity & confidence channels to external image files to save rawlog storage size. 00323 - mrpt::utils::CStream now has methods for sending/receiving messages in a predefined frame format. See mrpt::utils::CStream::receiveMessage, mrpt::utils::CStream::sendMessage. 00324 - mrpt::utils::CConfigFileMemory has a new method getContent(). 00325 - Template mrpt::utils::TParameters now has typedefs mrpt::utils::TParametersDouble, mrpt::utils::TParametersString and many new methods. See the example params-by-name. 00326 - New method TCamera::scaleToResolution() for scale camera calibration params for different resolutions. 00327 - In mrpt::slam::CMetricMap 00328 - New method loadFromSimpleMap() (fast inline call to loadFromProbabilisticPosesAndObservations, with a better name!). 00329 - The method alignBylikelihoodHillClimbing() has been removed, since it didn't make sense there and was a pretty old and unefficient implementation. 00330 - In mrpt::slam::CSimpleMap: 00331 - New methods loadFromFile() and saveToFile(). 00332 - Added STL-like iterators and such. 00333 - mrpt::slam::CObservationGPS: Fixed const'ness of the getAsStruct<>() methods. 00334 - Absolute pixel coordinates are now permited where previously there were only factors over width/height. See: 00335 - mrpt::opengl::COpenGLViewport::setViewportPosition and mrpt::opengl::COpenGLViewport::getViewportPosition. 00336 - mrpt::gui::CDisplayWindow3D::addTextMessage. 00337 - CMyGLCanvasBase::renderTextBitmap (now accepts negative pixel coords as well, meaning to wrap). 00338 - mrpt::hwdrivers::CGenericSensor::registerClass is now public. 00339 - 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 "as vectors", i.e. even for matrices, all the elements are saved/loaded as a simple sequence: 00340 - loadFromTextFileAsVector 00341 - saveToTextFileAsVector 00342 - mrpt::hwdrivers::CActivMediaRobotBase can now transparently open serial ports >COM4 in Windows without the prefix "\\.\" (it's added automatically if needed). 00343 - The ANN library has been moved from mrpt-maps to mrpt-base (still can be reached at the same path under <mrpt/otherlibs/ann/...>. This is to allow more code to use KD-trees without depending on mrpt-maps. 00344 - mrpt::vision::TPixelCoordf now holds "float" coordinates instead of "double" since: it's enough for pixels, to save memory, and for consistency in name suffixes "f". 00345 - mrpt::utils::CCanvas now uses TColor as color data type, instead of "int"s (finally!). 00346 - New functions: 00347 - 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 ). 00348 - mrpt::vision::findMultipleChessboardsCorners 00349 - 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. 00350 - Added << and >> operators to mrpt::math::CArrayNumeric<> classes to dump/read them with MRPT's mrpt::utils::CStream streams. 00351 - mrpt::topography::ENUToGeocentric 00352 - mrpt::gui::CMyGLCanvasBase::textBitmapWidth, a new function to compute the width of a bitmap string. 00353 - New classes: 00354 - 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. 00355 - New hierarchy of computer vision detectors/detectable objects. See new namespace mrpt::detectors for the new library mrpt-detectors. 00356 - mrpt::math::CSparseMatrix for efficient sparse matrix computations (based on code from robotvision & the CSparse library - see the class doc for more details and credits). 00357 - New generalized KD-tree pattern class: mrpt::math::KDTreeCapable, previously used only for points of maps, now used in more places. 00358 - Feature tracking for images now has a set of different implementations. See mrpt::vision::CGenericFeatureTracker 00359 - mrpt::slam::CObservationStereoImagesFeatures to hold the minimum information needed by a stereo SLAM back-end algorithm. 00360 - New applications: 00361 - 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 00362 - New examples: 00363 - kmeans 00364 - params-by-name 00365 - checkerboardDetectors 00366 - multipleCheckerboards 00367 - face-detector 00368 - Global settings: 00369 - New global variable mrpt::global_settings::POINTSMAPS_3DOBJECT_POINTSIZE 00370 - BUGFIXES: 00371 - <b>CRITICAL REGRESION FIXED</b>: The program rbpf-slam did always crash at start-up in MRPT 0.9.0. 00372 - Fixed annoying JavaScript error in CHM documentation. 00373 - Fixed bug when accessing matrixes in CKalmanFilterCapable.h if the OBS_SIZE and the FEAT_SIZE parameters are different. 00374 - Fixed crash (on non Win32) when calling mrpt::system::joinThread on an empty thread handle. 00375 - Error in CStream-classes handling files larger than 4Gb. 00376 - Fixed build with BUILD_SHARED_LIBS=OFF under Visual Studio. 00377 - Fixed: RANSAC won't use the last input data point (Thanks "Stephane" for reporting!) 00378 - mrpt::slam::COccupancyGridMap2D::TLikelihoodOptions::loadFromConfigFile ignored the "section" name for loading "likelihoodMethod" (reported by Thomas Ciarfuglia, Università di Perugia). 00379 - Fixed build error when compiling without OpenGL/GLUT support. 00380 - The method mrpt::slam::CColouredPointsMap::insertPoint( float x, float y, float z, float R, float G, float B ) was declared but not defined. 00381 - Fixed ignoring the first time ALT+ENTER is pressed in mrpt::gui::CDisplayWindow3D 00382 - Fixed compilation against older OpenCV versions 1.1.0 and 2.0.0. 00383 00384 00385 <br> <hr> <br> 00386 00387 <a name="0.9.0"> 00388 <h2>Version 0.9.0: Released 3-JUN-2010 (SVN 1880) </h2></a> 00389 - <b>Most relevant changes:</b> 00390 - 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 "Important changes in the API"). 00391 - The previous "mrpt-core" library has been split into several smaller libs for better modularity, less dependencies of user programs and faster recompiling. 00392 - Compile/build: Support for MSVC 2010. 00393 - Support for the 3D cameras SR3000/SR4000. See mrpt::hwdrivers::CSwissRanger3DCamera and <a href="http://www.mrpt.org/Example:SwissRanger_SR4000_3D_camera" >this example</a>. 00394 - 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). 00395 - The program 'icp-slam', and mrpt::slam::CMetricMapBuilderICP, are now capable of handling two kinds of rawlogs: based on CSensoryFrame's (as usual), and the newest only containing CObservation's. Note however that ICP-SLAM now requires all odometry actions/observations to have a valid timestamp (very old datasets <=2007 would need to be fixed in RawlogViewer). 00396 - 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's smart pointers without forcing to implement serialization. Existing user code should be not affected at all. 00397 - Fixed critical bugs in rawlog-grabber and in 6D KF-SLAM (read below). 00398 - MRPT now uses Google's unit test framework (gtest). Dozens of automated tests already exist to provide a robust, continuous checking of the health of MRPT core functionality. 00399 00400 <a name="0.9.0.API"> 00401 - <b>Important changes in the API:</b> Changes that *may* break existing user code. 00402 - Calls to buildAuxPointsMap() in some CObservation-derived classes must be replaced by buildAuxPointsMap<CPointsMap>(). 00403 - 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 "#if MRPT_VERSION>=0x090", etc. to handle different versions of MRPT. 00404 - 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. 00405 - color functions moved from mrpt::vision to mrpt::utils (See mrpt::utils::colormap, ...). 00406 - mrpt::utils::CImage: The method cross_correlation() is now what was previously called openCV_cross_correlation(). 00407 - mrpt::vision::openCV_cross_correlation() function deleted, since it's already in CImage. 00408 - mrpt::slam::CObservation::likelihoodWith() has been removed. It's somehow replaced by mrpt:::slam::observationsOverlap(). 00409 - COccupancyGridMap2D::extractFeatures(), COccupancyGridMap2D::extractFeatures(), ... have been moved out of the map itself to a new class: mrpt::slam::COccupancyGridMapFeatureExtractor. 00410 - 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. 00411 - 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's recommended to use the new names of the structs. 00412 - The member mrpt::slam::CPointsMap::TInsertionOptions::matchStaticPointsOnly has been removed, since it had little practical utility and broke independence between sub-libraries. 00413 - The header <mrpt/slam/pose_graph_optimizers.h> has been renamed <mrpt/slam/graph_slam.h>. 00414 - The class CRobotSimulator has been moved from mrpt::slam to mrpt::utils, since it had nothing to do with SLAM. 00415 - The function mrpt::hwdrivers::registerAllSensors() has been removed, since it's now not needed (registration is now done reliably at startup). 00416 00417 00418 - <b>Detailed list of changes:</b> 00419 - Applications: 00420 - simul-landmarks: 00421 - New parameter "show_in_3d" to display a 3D view with the complete simulated robot path and landmarks. 00422 - It can now simulate random walks of a robot in 6D, not only over a 2D plane as in previous versions. 00423 - Generated rawlogs are gz-compressed. 00424 - RawlogViewer: 00425 - 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. 00426 - The program can now export all the images from a given camera as an AVI file (or two, for stereo cameras). 00427 - New menu option to regenerate the odometry timestamps of very old datasets (<=2007). 00428 - icp-slam: 00429 - The program 'icp-slam', and mrpt::slam::CMetricMapBuilderICP, are now capable of handling two kinds of rawlogs: based on CSensoryFrame's (as usual), and the newest only containing CObservation's. 00430 - New parameters to set a minimum distance between pose correction with ICP, for faster execution. 00431 - kf-slam: 00432 - Now has a much more rich live visualization as a 3D view. See http://www.mrpt.org/Application:kf-slam 00433 - ICP and RBPF SLAM now have a new option to always insert any kind of CObservation-derived class. See mrpt::slam::CMetricMapBuilder::TOptions::alwaysInsertByClass 00434 - rawlog-grabber: Now supports extra sensors defined by the user by means of compile-time "plug ins". See http://www.mrpt.org/Application:rawlog-grabber 00435 - New namespaces: 00436 - mrpt::global_settings for global switches to tune MRPT behavior at runtime. 00437 - mrpt::math::jacobians that unifies Jacobian-related functions. 00438 - New classes: 00439 - Support for the SwissRanger 3D cameras SR3000/SR4000. See the C++ class mrpt::hwdrivers::CSwissRanger3DCamera and <a href="http://www.mrpt.org/Example:SwissRanger_SR4000_3D_camera" >this example</a>. 00440 - Implementation of the observer/observable design pattern in the classes: mrpt::utils::CObservable & mrpt::utils::CObserver . See also the example "observer_pattern". 00441 - Usage of the observer/observable design to dispatch events in GUI windows. See mrpt::gui::CBaseGUIWindow. 00442 - 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: 00443 - mrpt::poses::CPose3DQuat - which can be transparently converted to/from mrpt::poses::CPose3D 00444 - mrpt::poses::CPose3DQuatPDF 00445 - mrpt::poses::CPose3DQuatPDFGaussian 00446 - New class mrpt::utils::CStartUpClassesRegister useful to automatically register CObject-derived classes from user code (and all the MRPT libs). 00447 - New OpenGL class: mrpt::opengl::CBox, for representing rectangular solid or wireframed boxes. 00448 - New class: mrpt::utils::CListOfClasses 00449 - 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. 00450 - New thread-safe template queue: mrpt::utils::CThreadSafeQueue, which is a generalization of the previous mrpt::utils::CMessageQueue. 00451 - New hardware driver: mrpt::hwdriver::CBoardIR for a MAPIR custom I/O board for infrared sensors. 00452 - Improved classes: 00453 - mrpt::bayes::CKalmanFilterCapable now has a new parameter (debug_verify_analytic_jacobians) to automatically verify the user-providen Jacobians vs. numerical ones. 00454 - mrpt::slam::CMetricMap (all metric maps) now have a hook method to be called after successful observation insertion. 00455 - mrpt::hwdrivers::CRovio has been cleaned and redesigned for offering an easier interface. 00456 - mrpt::gui::CDisplayWindow3D now switches full-screen pressing Alt+Enter. 00457 - mrpt::vision::CFeatureExtraction now supports the FAST feature detector. 00458 - 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. 00459 - mrpt::slam::CHeightGridMap2D now has a method to compute the intersection of 3D rays with its cells. 00460 - New serialization format of CPose3D, which saves about a 5% in (uncompressed) rawlog file sizes. 00461 - Pose composition operator += added to mrpt::poses::CPosePDFGaussian, since it was missing there, but existing in the 3D version mrpt::poses::CPose3DPDFGaussian. 00462 - Lightweight geometry structs TPose* & TPoint* now also have method asString() and fromString(). 00463 - mrpt::poses::CPose3D now has a constructor from a quaternion + a (x,y,z) displacement. 00464 - mrpt::opengl::CSetOfObjects and mrpt::opengl::COpenGLViewport now have begin() end() and iterators. 00465 - mrpt::slam::COccupancyGridMap2D now accepts inserting IR and sonar observations (by rhn - mrhemali.rhn at porcupinefactory dot org) 00466 - Added event "file accessed" to mrpt::system::CFileSystemWatcher: 00467 - Build system: 00468 - Support for MSVC 2010. 00469 - New or improved functions: 00470 - In mrpt::topography: 00471 - Introduction of the structure mrpt::topography::TGeodeticCoords 00472 - New functions implementing more conversions. 00473 - Set of new functions for propagating a Gaussian PDF trough an arbitrary function (see also example 'unscented_transformation_test') 00474 - mrpt::math::transform_gaussian_montecarlo : Monte Carlo approximation 00475 - mrpt::math::transform_gaussian_linear : First order approximation (as in EKF) 00476 - mrpt::math::transform_gaussian_unscented : Scaled Unscented Transformation (as in UKF). 00477 - mrpt::slam::CLandmarksMap::saveToTextFile() now generates a text header in each file explaining the format of the file (compatible with MATLAB comments). 00478 - mrpt::opengl::COpenGLViewport::get3DRayForPixelCoord now also works with orthogonal projections. 00479 - 3D windows can display an arbitrary number of 2D text messages. See mrpt::gui::CDisplayWindow3D::add2DTextMessage(). 00480 - mrpt::utils::TTypeName now also supports matrix and CArray-derived classes. 00481 - Functions that have been "templatized": 00482 - mrpt::math::normalPDF 00483 - mrpt::math::covariancesAndMean 00484 - New methods in all kind of matrices (some were only in CMatrixTemplate). 00485 - insertMatrix, insertTransposeMatrix 00486 - extractCol, extractRow 00487 - New functions: 00488 - mrpt::system::terminateThread. 00489 - mrpt::math::unscented_transform_gaussian 00490 - mrpt::math::montecarlo_transform_gaussian 00491 - mrpt::math::covariancesAndMeanWeighted 00492 - mrpt::math::extractColumnFromVectorOfVectors 00493 - New examples: 00494 - observer_pattern 00495 - quaternions 00496 - unscented_transformation_test 00497 - grab3Dvideo 00498 - <b>BUG FIXES:</b> 00499 - mrpt::utils::CConfigFileBase didn't always remove extra leading and trailing whitespaces in read_string(). 00500 - Initial size of the window was ignored in mrpt::gui::CDisplayWindow3D. 00501 - Error returning 2x1 size() in dynamic matrices, since there was only one static member shared by all matrices. 00502 - Swapped red-blue channels in mrpt::gui::wxImage2MRPTImage (Closes <a href="http://www.mrpt.org/node/70" >this issue</a>). 00503 - mrpt::poses::CPose3D undefined values when initializing from a "-" operator, due to bug in mrpt::math::homogeneousMatrixInverse(). 00504 - mrpt::math::CHistogram::getBinRatio() and hence mrpt::math::histogram when do_normalization=true, always returned zero. 00505 - Fixed crash in rawlog-grabber when grabbing from a (non-stereo) camera and enabling preview (Closes <a href="https://sourceforge.net/tracker/?func=detail&aid=2988657&group_id=205280&atid=993006" >SF #2988657 </a>). 00506 - When grabbing images with mrpt::hwdrivers::CCameraSensor and decimation is enabled in mrpt::hwdrivers::CGenericSensor, all the images were saved to disk. It's been fixed so only the decimated ones are saved. 00507 - Fixed direction errors in the computation of 3D rays of OpenGL viewports for perspective projection. See mrpt::opengl::COpenGLViewport::get3DRayForPixelCoord() 00508 - RawLogViewer: When loading gz-compressed rawlogs, the "Loading" dialog may close too early. 00509 - fixed compilation with GCC < 4.4.1 - thanks to zhangbo (å¼ æ³¢) for testing. 00510 - mrpt::opengl::CPointCloud: When color_from_Z is enabled, sometimes the colors switched when the range in Z was very close to 0. 00511 - 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. 00512 - More robust handling of strings with \ r \ n chars in matrixes fromMatlabFormat(). 00513 - Fixed wrong results with mrpt::math::mean() and other functions when applied to vectors of integers (By Edu). 00514 - Fixed mrpt::system::tokenize's wrong behavior with GCC. 00515 00516 00517 <hr> 00518 00519 <a name="0.8.1"> 00520 <h2>Version 0.8.1: Released 6-MAR-2010 (svn 1590). </h2></a> 00521 - A very large reorganization and improvement of "mrpt::math". Thanks to Pablo Moreno for his big work here. 00522 - Added a forward declarations header <mrpt/math/math_fwrds.h> 00523 - New header <mrpt/math/ops_containers.h> with general arithmetic operations applicable to vectors, arrays and matrices of any kind. 00524 - Most matrix template implementations moved to <mrpt/math/ops_matrices.h>. User code that already included <mrpt/slam.h> will need no change to keep compiling OK. 00525 - More small functions marked as inline. 00526 - Fixed some specializations that weren't actually called due to issues with forward declarations. 00527 - Clean up of the mrpt::math namespace by moving auxiliary functions to mrpt::math::detail. 00528 - All kind of matrices now have dozens of common methods (multiply, leftDivide, rightDivide, inverse, det, eigenValues,...); this includes matrix views. 00529 - Added md5 cryptographic hash function to utils. 00530 - MRPT can be now built in Win64. 00531 - Sonar observations are now processed in point maps. See CSimplePointsMap::insertObservation for arguments of type mrpt::slam::CObservationRange. 00532 - More robust wxSubsystem in mrpt::gui classes. 00533 - Occupancy grid maps now have a method to simulate sonar sensors. See COccupancyGridMap2D::sonarSimulator. 00534 - All 3D objects in mrpt::opengl now have a visible/invisible property. See mrpt::opengl::CRenderizable::setVisibility 00535 - 3D views (mrpt::gui::CDisplayWindow3D and mrpt::gui::CMyGLCanvasBase) now have: 00536 - Functions to determine the 3D rays for coordinates picked by the user with the mouse. See the example "display3D". 00537 - A way to obtain the camera pose as a CPose3D object (see COpenGLViewport::getCurrentCameraPose). 00538 - New application: navlog-viewer. A GUI tool to reproduce and examine navigation logs. See the applications wiki for more details. 00539 - mrpt::opengl::CTexturedObject, a new base class to factor code for all mrpt::opengl classes loading/unloading texture images. 00540 - Particle filters now have new options: verbose, pfAuxFilterOptimal_MLE. 00541 - read_bool() for INI-like files now accepts "yes/no" and "true/false" apart from "1/0". 00542 - mrpt::utils::CTimeLogger now can export all the timing data to a CSV file. 00543 - mrpt::math::CQuaternion has been "modernized": it now inherits from CArray<T,4> and many methods are inline and templates. 00544 - 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: 00545 - The following classes: mrpt::poses::CPosePDFParticles, mrpt::slam::CMultiMetricMapPDF now support any combination of these algorithms: 00546 - pfStandardProposal (SIR), sample size: fixed OR KLD-based dynamic size, different resampling strategies (mrpt::bayes::CParticleFilter::TParticleResamplingAlgorithm). 00547 - pfAuxiliaryPFStandard (APF), sample size: fixed OR KLD-based dynamic size. 00548 - pfAuxiliaryPFOptimal (Blanco et al.), sample size: fixed OR KLD-based dynamic size. 00549 - mrpt::system::aligned_malloc and family now work on all OS's and are used to align the memory of rows in dynamic matrices. 00550 - Due to many enhancements in the "template-fication" of MRPT, it's no longer equivalent to use std::vector<double> or vector_double, etc... The later form is the only one supported. 00551 - 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 00552 - The following classes have fully STL-like iterators, reverse_iterators and container-like methods (begin(),end(),...): 00553 - mrpt::math::CMatrixFixedNumeric (and derived classes) 00554 - mrpt::math::CMatrixTemplate (and derived classes) 00555 - mrpt::math::CArray (and derived classes) 00556 - Application 2d-slam-demo: 00557 - It now supports command-line arguments. Try "2d-slam-demo --help" 00558 - Several improvements in the GUI. 00559 - Functions modified as templates to allow its usage with a wider variety of parameter types: 00560 - mrpt::math::estimateJacobian, mrpt::math::homogeneousMatrixInverse 00561 - New "STL extension" class: mrpt::utils::bimap<KEY,VAL>, a bidirectional equivalent of std::map. 00562 - Reorganization of header <mrpt/utils/stl_extensions.h>: it now actually includes a few new headers, one for each important class. 00563 - News in Kalman Filter implementation: 00564 - New option to compute custom "new landmark"'s covariance, which is needed by, eg. MonoSLAM. The old version of "OnInverseObservationModel" still exists for backward-compatibility. See the new mrpt::bayes::OnInverseObservationModel. 00565 - 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. 00566 - All plots based on wxMathPlot now has a new entry in the popup menu for printing the plot to PS/PDF. 00567 - wxMathPlot updated to version 0.1.2 (Dec-2009). 00568 - Poses and point classes in mrpt::poses now have the operator[], usable in the new template constructor of mrpt::math::CArrayNumeric 00569 - mrpt::utils::CLoadableOptions now also allows writting the configuration to files, not only reading. 00570 - Build system: 00571 - Fixed the detection of some standard functions (erfc,lrint,...) under GCC for defining the HAVE_XXX's in config.h 00572 - New small functions: 00573 - mrpt::math::chi2PDF, mrpt::math::chi2CDF, mrpt::math::noncentralChi2CDF (adapted from code in the Vigra project). 00574 - trace() (in all matrices), mrpt::math::KLD_Gaussians, mrpt::math::condidenceIntervals 00575 - mrpt::random::random_generator_for_STL 00576 - New examples: 00577 - math_iterators_test 00578 - BUGFIXES: 00579 - mrpt::hwdrivers::CBoardSonars was not automatically registered as CGenericSensor. 00580 - Fixed compiling with ARIA disabled. 00581 - mrpt::utils::CSimpleDataBase: fixed crash when loading a record with an empty string in any field. 00582 - Linux only: Fixed errors compiling with glut.h instead of freeglut.h (Thanks rhn for reporting). 00583 - Fixed crash if mrpt::gui windows are created, all destroyed, then some created again. 00584 - Linux only: Fixed ignored argument in CSemaphore::release() 00585 - Fixed wrong serialization of CSetOfTexturedTriangles. 00586 - Fixed compile errors for latest OpenCV versions due to need to include <cvaux.h> (By Vicente Arevalo). 00587 - CStream::printf would crash on very large strings. It now supports arbitrarily long strings, just like mrpt::format. 00588 - Fixed an error compiling against OpenCV 1.1 (mainly for Fedora repositories). 00589 - Fixed crash if serializing a CObservation2DRangeScan or a CObservation3DRangeScan with zero scan points (will not happen in real situations, but it's safer now). 00590 - fixed a conceptual error in mrpt::slam::data_association: The observations do NOT have a covariance matrix! Formulas corrected accordingly. 00591 - data_association with JCBB only worked with Mahalanobis distance. Fixed for ML. 00592 - Error loading some parameters from a config file in mrpt::hwdrivers::CSickLaserSerial 00593 00594 <br> 00595 <hr> 00596 00597 <a name="0.8.0"> 00598 <h2>Version 0.8.0: Released 30-Dec-2009 (SVN 1398). </h2></a> 00599 - <b>Important changes:</b> 00600 - New minor version number due to a few incompatible changes in the API. The affected classes are: 00601 - mrpt::bayes::CKalmanFilterCapable 00602 - mrpt::reactivenav::CReactiveInterfaceImplementation 00603 - Headers for namespace mrpt::system have been factored in a number of smaller files. 00604 - rbpf-slam now builds maps of points. 00605 - Data association implemented as a generic algorithm and demonstrated in the program 2d-slam-demo. 00606 - The interface of Kalman filters has been greatly redesigned for a better factoring of code and to explote fixed-size matrices. 00607 - Hardware and sensors: 00608 - PointGrey Research (PGR) Bumblebee & 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. 00609 - New interface to SICK LMS100 via ethernet. Contributed by Adrien Barral (Robopec). See mrpt::hwdrivers::CLMS100Eth and new example "SICK_lms100eth_test". 00610 - Support for advanced GPS devices: NTRIP client + emitter, RTK GPS, etc. 00611 - 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. 00612 - New algorithms (e.g. A*), many new methods in existing classes and several bug fixes. 00613 00614 - <b>Detailed list of all changes.</b> New stuff and enhancements: 00615 - 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. 00616 - Fixed size matrices can be declared with one or both of the dimensions equal to zero and that wouldn't lead to an error - until an element is tried to be accessed. 00617 - 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. 00618 - Added a simple profiler class mrpt::utils::CTimeLogger. 00619 - 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. 00620 - mrpt::gui windows now have a method CBaseGUIWindow::getPushedKey, which also returns the key modifiers (shift, alt, etc...). 00621 - CCameraSensor can now display a preview of the captured images with a "preview_reduction" factor to make them smaller. 00622 - 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). 00623 - mrpt::utils::CImage::saveToFile now has a parameter to select the desired quality of JPEG files. 00624 - 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. 00625 - mrpt::math::CArray: A STL-like container for C fixed-size arrays. 00626 - New method in CImageGrabber_dc1394 to enumerate all existing Firewire classes. See mrpt::vision::CImageGrabber_dc1394::enumerateCameras. 00627 - mrpt::hwdrivers::CGPSInterface now can send initialization commands to Javad/TopCon GPS units to setup RTK sources. 00628 - mrpt::gui window classes now have a static class factory "::Create(...)" similar to their constructor but returning smart pointers. 00629 - CPointsMap now has a proper observation likelihood method, similar to Sebastian Thrun's "Likelihood Field" for grids, but using points and KD-trees for the look-ups. See CPointsMap::TLikelihoodOptions 00630 - rbpf-slam: 00631 - Many improvements to rbpf-slam, especially it now supports map building with maps of points. 00632 - ICP parameters of rbpf-slam can be now configured via the .ini file. 00633 - See the example file shared/mrpt/config_files/rbpf-slam/gridmapping_ICPbased.ini 00634 - The application 2d-slam-demo now shows and computes stats on data association. 00635 - mrpt::hwdrivers::CHokuyoURG: 00636 - Now has methods setSerialPort/getSerialPort instead of the public-access variable "m_serial_port". 00637 - Added mrpt::hwdrivers::CHokuyoURG::setReducedFOV. 00638 - ReactiveNavigation: All functors are finally replaced by the new virtual class mrpt::reactivenav::CReactiveInterfaceImplementation. 00639 - Data association is now correctly implemented and integrated into mrpt::slam::CRangeBearingKFSLAM2D. 00640 - mrpt::slam::CColouredPointsMap: It can be now selected different schemes for coloring (new: cmFromHeightRelativeToSensorGray). 00641 - Added missing loadFromTextFile method to fixed-size matrices. 00642 - Poses and points have new methods: asString, fromString. See mrpt::poses::CPoseOrPoint 00643 - getByName in mrpt::opengl classes now is recursive when there are CSetOfObjects objects. 00644 - New class mrpt::utils::CLog, by Vicente Arevalo. 00645 - mrpt::utils::CClientTCPSocket: Connect and DNS look-up now have a configurable timeout. 00646 - For all classes that inherit from mrpt::utils::CDebugOutputCapable, calling printf_debug now also sends the strings to the Visual Studio output window. 00647 - mrpt::hwdrivers::CGenericSensor: 00648 - The class now implements "loadConfig" and the old virtual "loadConfig" has been renamed to "loadConfig_sensorSpecific". The former calls the latter automatically. 00649 - New generic parameter "grab_decimation" that enable decimating any source of observations. 00650 - New class: mrpt::utils::circular_buffer. Used to enhance the reception buffers of these hardware drivers: 00651 - mrpt::hwdrivers::CHokuyoURG 00652 - mrpt::hwdrivers::CInterfaceFTDI 00653 - Utilities for multithread programming (See mrpt::synch) 00654 - Added a pattern class for creating thread-safe variables protected by a critical section. See mrpt::synch::CThreadSafeVariable. 00655 - Macro THREADSAFE_OPERATION(critsect, operation). 00656 - Added serialization of missing std::vector<T> for T=std::string, int8_t, int16_t. 00657 - New methods to read & write the settings of a generic CCameraSensor object from/to a MRPT-provided wxPanel for GUI applications. See mrpt::hwdrivers::writeConfigFromVideoSourcePanel, mrpt::hwdrivers::readConfigIntoVideoSourcePanel 00658 - COpenGLViewport now has settable min/max clipping values. See mrpt::opengl::COpenGLViewport::setViewportClipDistances. 00659 - mrpt::utils::CConfigFile now can be created without specifying the associated file and do the association later with a new method. 00660 - Apart from 2D exclusion areas in laser scanners, 3D prism zones are now supported as well. C2DRangeFinderAbstract::loadExclusionAreas 00661 - A* algorithm implemented in mrpt::math::CAStarAlgorithm. (By Pablo Moreno) 00662 - The central registry of MRPT classes (derived from CSerializable) rewritten as a proper Singleton. 00663 - New interface to SICK LMS100 via ethernet. Contributed by Adrien Barral (Robopec). See mrpt::hwdrivers::CLMS100Eth and new example "SICK_lms100eth_test". 00664 - mrpt::utils::CClientTCPSocket now gives a textual description of the error reasons (win32). 00665 - New namespace with small utilities for networking. See mrpt::utils::net. 00666 - New class for downloading differential GPS corrections from a NTRIP server. See mrpt::hwdrivers::CNTRIPClient and the example "ntrip-client". 00667 - 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. 00668 - Data association is now fully implemented in mrpt::slam::data_association_full_covariance and related methods. 00669 - 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 "SICK_LMS_serial.ini". 00670 - New generic function for CRC16 computation. See mrpt::utils::compute_CRC16 00671 - mrpt::math::CQuaternion now has methods for fixed size matrices. 00672 - Assembler optimized versions of small functions (mrpt::utils::round,...). 00673 - Changes in the build process: 00674 - Clean up of options in cmake-gui. Many options are now "advanced" so they are hidden in the "simple view". 00675 - Better detection of wxWidgets libraries (static/dynamic libs), through a patch submitted to CMake. You'll need to update CMake to enjoy this feature. 00676 - Fixed building errors with wxWidgets 2.9.0 00677 - Fixed compilation of MRPT without opencv (in MSVC it reported an error: library 'mrpt-sifthess' missing). 00678 - Boost is not required anymore. boost-program-options has been replaced by the STL-based TCLAP library. 00679 - New small functions: 00680 - mrpt::system::getNumberOfProcessors 00681 - mrpt::poses::CPose3D::isHorizontal 00682 - mrpt::math::meanAndCov and mrpt::math::cov now also accept matrices as inputs (just like in MATLAB). 00683 - mrpt::utils::ObjectToRawString and mrpt::utils::RawStringToObject 00684 - mrpt::topography::ENU_axes_from_WGS84 00685 - mrpt::system::os::timegm 00686 - mrpt::math::CMatrixTemplate::extractSubmatrixSymmetricalBlocks 00687 - mrpt::utils::keep_max and mrpt::utils::keep_min 00688 - mrpt::math::make_vector 00689 - New examples: 00690 - SICK_laser_serial_test 00691 - setOfTexturedTrianglesTest 00692 - ntrip-client 00693 - http_tests 00694 - SICK_lms100eth_test 00695 - a_starAlgorithm 00696 - cameraCampureAskDialog 00697 - BUG FIXES: 00698 - CDisplayWindow3D won't process char key events (Thanks to Miyamoto Musashi for reporting a tested fix). 00699 - Linking errors due to missing template instantiations of some mrpt::math functions (Thanks to Diego for reporting). 00700 - Fixed data association routines. 00701 - Fixed error when deserializing objects of type mrpt::opengl::CPointCloudColoured 00702 - Fixed potential crash in mrpt::system::dateTimeLocalToString and other time functions when passed an invalid timestamp value. 00703 - mrpt::system::formatTimeInterval won't show the decimal part of seconds. 00704 - Win32-MSVC only: Removed the "-D_SECURE_SCL=0" flag in user code that uses MRPT through CMake, since it may lead to increadibly-hard-to-debug crashes. 00705 - Duplicated landmarkIDs in range-bearing observations are now detected as errors. 00706 - mrpt::opengl::CTexturedPlane didn't reflect the change of texture after the first time it was rendered. 00707 - CCameraSensor::setPathForExternalImages didn't work for saving; it was neccesary to also set CImage::IMAGES_PATH_BASE, which is NOT the expected behavior by the user. 00708 - Fixed linking errors in user programs linked to MRPT thru CMake, when MRPT is compiled as static libs and ffmpeg support is enabled. 00709 - mrpt::utils::CConfigFileMemory::write may raise an exception even if there was no error. 00710 - Linux: Fixed mrpt::hwdrivers::CSerialPort won't write the whole data block on Write(). 00711 - Fixed OpenGLCanvas not creating a depth buffer in some platforms/systems. 00712 - (Win32 only) mrpt::hwdrivers::CInterfaceFTDI won't neither close the USB link or unload the FT2XX.DLL at destruction. 00713 - C locales changed by default in wxWidgets >=2.9.0 will mess up reading from config files. Fixed by forcing "C" numerics locale in all GUI applications. 00714 - Fixed potential random crash in mrpt::system::buildTimestampFromParts when used in multi-threaded applications. 00715 - lib3ds: Won't render scenes with small scales (LIB3DS_EPSILON has been reduced). 00716 - GUI apps: Many errors in wxWidgets wxFlexSizers fixed, as detected by the recent wx2.9.0 in Debug mode. 00717 - The following functions (in mrpt::system) did crash when a malformed TTimeStamp was passed as argument: timestampToParts, dateTimeToString, extractDayTimeFromTimestamp, timeToString, dateToString. 00718 - mrpt::utils::CClientTCPSocket::connect won't resolve server names. 00719 - Fixed hardcoded type "double" in a method of the generic template mrpt::utils::TParameters. 00720 - Fixed random crashes when opening several CDisplayWindow*'s at the same time. 00721 - Fixed infinite recursion (stack overflow) when deleting an arc in a mrpt::hmtslam::CHierarchicalMHMap. 00722 - Potential crash when freeing OpenGL textures from CTexturedPlane due to incorrect call to "glDeleteTextures". 00723 - Potential error in mrpt::system::getCurrentThreadTimes with modern MSVC compilers. 00724 - Fixed Debian bug <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543621" >#543621</a>. 00725 - Fixed a minor error in mrpt::math::computeAverageLogLik, giving a constant offset. 00726 00727 00728 <a name="0.7.1"> 00729 <h2>Version 0.7.1: Released 17-Aug-2009 (SVN 1144). </h2></a> 00730 - New methods in mrpt::math to compute the covariance from a list of samples (See mrpt::math::cov,...) 00731 - Small optimizations to random generation of samples from multivariate Gaussians. 00732 - 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 00733 - New efficient operators "+=" to compose CPose2D and CPose3D objects. 00734 - New methods in matrix classes: 00735 - add_Ac 00736 - substract_Ac 00737 - Slightly more efficient and more correct computation of covariance matrix in mrpt::scanmatching::leastSquareErrorRigidTransformation. 00738 - 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. 00739 - Reduction in the number of MRPT libraries: "mrpt-ann" and "mrpt-3ds" have disappeared (for all platforms), since their code is now integrated in "mrpt-core". 00740 - <b>The following classes have been renamed</b> (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. 00741 - CMRPTImage --> CImage 00742 - CMRPTImageFloat --> CImageFloat 00743 - CMRPTCanvas --> CCanvas 00744 - CMRPTMessage --> CMessage 00745 - 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). 00746 - Embedded lib3ds 1.3 (Library Author: Jan Eric Kyprianidis), for use in all platforms. 00747 - PTGs can be created through a class factory. See mrpt::reactivenav::CParameterizedTrajectoryGenerator::CreatePTG. 00748 - PTG classes rewritten and greatly simplified by using standard STL containers. 00749 - New utility mrpt::utils::TParameters. 00750 - mrpt::math::CPolygon is now a wrapper around a mrpt::math::TPolygon2D, implementing serialization, backwards compatible with old code. 00751 - Added new header "mrpt/reactivenav/motion_planning_utils.h" with global utility functions for reactive navigation and motion planning. See mrpt::reactivenav. 00752 - New methods in mrpt::slam::CPointsMap classes to set all the points at once (setAllPoints). 00753 - (UNCOMPLETED!!) New robot navigation algorithm in the mrpt-reactivenav library: PTG-based Rapidly-exploring Random Tree (PRRT) method. See mrpt::reactivenav::CPRRTNavigator 00754 - Smart pointers are now thread safe through atomic increment/decrement operations. 00755 - New class for atomic operations. See mrpt::synch::CAtomicCounter 00756 - Support for custom menu entries in the popup menu of mrpt::gui::CDisplayWindowPlots. See example displayPlots and class CDisplayWindowPlots. 00757 - Compilation under MinGW completely fixed and tested, including OpenCV and wxWidgets. 00758 - Added == operator to fixed-size matrices and some CPosePDF* classes. 00759 - Added STL containers utility "erase_return_next" to stl_extensions.h 00760 - Implemented missing converter from SOG PDFs in CPose3DPDF::createFrom2D. 00761 - Windows Installer: Added missing links for some GUI applications. 00762 - Added several insertion-related methods in some mrpt::opengl classes. 00763 - (UNCOMPLETED!!): Recovered "mono-slam" 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. 00764 - New examples: 00765 - fbo_render_test 00766 - New programs: 00767 - mono-slam: Monocular SLAM (experimental state, UNCOMPLETED!). 00768 - prrt-navigator-demo: A GUI to experiment with the new PTG-based Rapidly-exploring Random Tree (PRRT) method (UNCOMPLETED!). 00769 - BUG FIXES: 00770 - 2D ellipses won't render properly in mrpt::opengl::CEllipsoid. 00771 - Potential static/dynamic library errors when linking against Boost. (Thanks Philipp Robbel for noticing!) 00772 - CColouredPointsMap will contain inconsistent data after calling insertPoint() or many other methods. 00773 - CPose3D might accept angle values out of the range ]-pi,pi]. Thanks to Philipp Robbel for noticing! 00774 - COccupancyGridMap2D::laserScanSimulator: Simulation of scan rays ending in free space were not marked as invalid. 00775 - Only the header files for mrpt-core were installed in Linux with "make install" (this also affected each Linux distribution packages!). (Closes <a href="http://sourceforge.net/tracker/?func=detail&atid=993006&aid=2807979&group_id=205280" > SF #2807979 </a>, thanks Joel). 00776 - ransac_detect_2D_lines (and probably all RANSAC methods) may raise exceptions for some degenerate cases. Thanks to Joel Mckay for reporting and debugging. 00777 - Compile errors when using automatic serialization of the STL containers "set" and "multiset". 00778 - NULL pointer access when de-serializing an object of a non-registered class. 00779 - rbpf-slam: The program did get stuck when used in "fixed number of samples" and one particle has a likelihood >20 orders of magnitud than the others. Thanks to Philipp Robbel for detecting and helping to isolate the issue. 00780 - rbpf-slam: Images "mapping_%05i.png" files were vertically flipped. 00781 - Won't fuse two point maps due to an error in CSimplePointsMap::fuseWith. Thanks to Wilian França Costa for the patch. 00782 - Fixed a little bug in mrpt::opengl::CEllipsoid ray tracing. 00783 - Wrong computation of ICP covariance. Thanks to Wilian França Costa for the patch. 00784 00785 <br><hr><br> 00786 00787 <a name="0.7.0"> 00788 <h2>Version 0.7.0: Released 27-May-2009 (SVN 1042). </h2></a> 00789 - <b>IMPORTANT CHANGES</b>: 00790 - Old deprecated methods removed. 00791 - Changes which may require modifications in user's code: 00792 - Interface of all probability density functions (PDF) changed for efficiency: getEstimatedMean -> getMean, getEstimatedCov -> 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). 00793 - 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. 00794 - A few matrix arithmetic methods renamed for consistency: Now all start with "multiply_XXX", "add_XXX", etc... 00795 - Some constructors in poses,points & matrices marked as "explicit" to avoid unintended conversions. 00796 - 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. 00797 - All covariance matrices passed to a new matrix class with compile time fixed-size, with dramatic speed ups. 00798 - Data declarations in geometry.h have been moved to lightweight_geom_data, although TPolygons and TObjects are not really lightweight (Pablo). 00799 - mrpt::vision now integrates SURF features (Requires OpenCV 1.1.0, integrated by Francisco-Angel Moreno), and new interest point descriptors. 00800 - New hardware supported: 00801 - IP cameras via rtsp:// protocol (due to support of FFmpeg libraries). 00802 - xSens IMU, MTi devices (Built-in version of XSens library). 00803 - Win32 only: .lib and .dll files now have a postfix with the MRPT version, that is, "libmrpt-core070.lib" instead of "libmrpt-core.lib", etc... 00804 - 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. 00805 - Efficient geometry structures and dozens of new geomtry methods (mainly by Pablo Moreno). 00806 - Geometry methods improved, corrected and expanded in mrpt::math (by Pablo Moreno). See the list of changes below. 00807 - A more powerful serialization engine capable of handling arbitrarily complex data types built with STL containers and MRPT classes. See the <a href="http://www.mrpt.org/Serialization" > wiki page</a>. 00808 - Several bug fixes. 00809 - New programs: 00810 - camera-calib: A new GUI program (fused of old "camera-calib" & "camera-calib-gui") for camera calibration with live camera capture. 00811 - features-matching: A new computer vision demo application. 00812 - 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. 00813 - Many new examples: 00814 - createVideoFile. 00815 - data-association-demo 00816 - dijkstra-example 00817 - gauss_img_filtering 00818 - grab_camera_ffmpeg 00819 - optimize_pose_network 00820 - polyhedronIntersection: Demonstration of the capabilities of polygon intersection in 3D (Pablo). 00821 - polygonSplit: Polygon split (Pablo). 00822 - ransac-demo-applications 00823 - ransac-demo-plane3D 00824 - smart_pointers_test 00825 - stl_containers_serialize 00826 - tuMicos 00827 - type_name 00828 00829 - Detailed list of changes: 00830 - 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. 00831 - New powerful method in CPolyhedron to create different types of polyhedra using a regular base. Many existing methods have been adapted to this interface. 00832 - Added support for base64 encoding & decoding. See mrpt::system::decodeBase64, mrpt::system::encodeBase64 00833 - Polyhedra intersection demo improved with twelve additional pairs of polyhedra, including a random one (Pablo). 00834 - Ray tracing now works with CEllipsoid (Pablo). 00835 - Ray tracing now works with CCylinder (Pablo). 00836 - mrpt::utils::CSimpleDatabase interface converted to smart pointers. 00837 - Added "hold_on" and "hold_off" to mrpt::gui::CDisplayWindowPlots. 00838 - New class for 2D range-bearing SLAM. See mrpt::slam::CRangeBearingKFSLAM2D 00839 - CGeneralizedCylinder now works internally using CPose3D instead of TPoint3D. 00840 - Fixed a bug in the calculation of the distance between TPoints3D. 00841 - 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 00842 - rawlog-grabber can now save odometry and sonar data from an ARIA-compatible robot (Pioneers 3-DX, AT, etc...). See the new configuration file "share/config_files/rawlog-grabber/activmedia_robot.ini". 00843 - rawlog-grabber can record video from IP-cameras thru FFMpeg via the common camera class mrpt::hwdrivers::CCameraSensor. 00844 - (paco) Bumblebee stereo camera interface mrpt::vision::CStereoGrabber_Bumblebee updates to the lattest vendor's API for Win32 (Francisco Angel Moreno). 00845 - mrpt::hwdrivers::CActivMediaRobotBase extended to read sonar data, bumpers and enable the guidance of the robot through a joystick attached to the computer. 00846 - Ray tracing has been considerably sped up. 00847 - New methods to mrpt::math::CHistogram to ease the computation of PDFs. 00848 - New methods to control section visibility in mrpt::opengl::CGeneralizedCylinder. 00849 - CDisplayWindowPlots now have templatized methods. 00850 - Added missing 2D point PDF. See mrpt::poses::CPoint2DPDF. 00851 - 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. 00852 - CGeneralizedCylinder now supports ray tracing (Pablo). 00853 - Added a non-optimal method to split polygons in theirs convex components, including a simple demo (Pablo). 00854 - Matrices now have hard-coded optimized implementations for some 2x2 and 3x3 operations (eg. determinant, inverse) 00855 - (experimental!!) A new generic method, mrpt::slam::data_association, which implements NN (nearest neightbor) and JCBB (Joint Compatibility Branch & Bound). 00856 - Additional methods to retrieve data from mrpt::opengl::CGeneralizedCylinder (Pablo). 00857 - Added some methods to mrpt::math::CMatrixTemplate (Pablo). 00858 - New methods in the geometric classes and in mrpt::opengl::CPolyhedron (Pablo). 00859 - New methods in mrpt::utils::CImage: scaleImage, rotateImage, ... 00860 - Added new malloc/realloc/free equivalents for aligned memory. See mrpt::system::os::aligned_malloc 00861 - New application: <i>features-matching</i>, for demonstrating and evaluating the performance of several image feature detectors & descriptors. See <a href="http://www.mrpt.org/Application:features-matching" >its wiki page</a>. 00862 - mrpt::registerAllClasses mustn't be called manually anymore: it's always automatically executed at startup. 00863 - Added a generic mechanism to obtain the (compiler independant, unlike typeid) name of a type. See mrpt::utils::TTypeName, and the <a href="http://www.mrpt.org/Metaprogramming:Type_name_to_string" >documentation on the wiki</a>. 00864 - Now all STL containers are serialized automatically via template << and >> operators, thus the old classes vector_serializable, etc.. are not needed anymore and has been removed. See utils/stl_extensions.h 00865 - Small changes in polyhedron intersection demo (Pablo). 00866 - 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's suitable for both 2D and 3D objects (Pablo). 00867 - Added methods to extract vectors of mrpt::math::TObject2D and mrpt::math::TObject3D by type (Pablo). 00868 - More mrpt::opengl classes adapted to mrpt::math::TPoint3D and other geometric lightweight types (Pablo). 00869 - Maps of landmarks now reuse the feature descriptors defined in mrpt::vision::CFeature. See mrpt::slam::CLandmarksMap 00870 - Geometric lightweight types have been serialized (JL/Pablo). 00871 - CSetOfLines class has been almost completely redone, although mantaining its former interface (Pablo). 00872 - mrpt::opengl::CPolyhedron::rayTrace now works properly (Pablo). 00873 - mrpt::vision::CFeatureExtraction now has a more uniform interface which separates interest point detectors and descriptors (Francisco-Angel Moreno & Jose Luis) 00874 - New feature detector: Intensity-domain spin images (SpinImage). See mrpt::vision::CFeatureExtractor 00875 - Safer constructors of smart pointers from base to derived classes since classes are now always checked at runtime (unless ASSERT_'s are disabled from CMake). 00876 - Added a CSparseMatrix template, which relies on std::map (Pablo). 00877 - Added support for intersections in vectors and generic objects (Pablo). 00878 - Minor change in mrpt::poses::CPose3D::composePoint for efficiency purposes (Pablo). 00879 - Added methods to estimate lines and planes using linear regression (Pablo). 00880 - Added method mrpt::math::covariancesAndMean to get covariances and mean of any set of points in N-dimensions (Pablo). 00881 - The Levenberg-Marquardt implementation now has a second template parameter for the type of the "user parameter" passed to the evaluation functor. Instead of forcing it being a numeric vector, it can now be any arbitrary object. See mrpt::math::CLevenbergMarquardtTempl 00882 - New consistent pose-network optimizers (Experimental!): 00883 - Based on Levenberg-Marquardt. See mrpt::slam::optimizePoseGraph_levmarq 00884 - A new generic implementation of Dijkstra algorithm for shortest paths on a directed, possibly weighted, graph. See mrpt::math::CDijkstra 00885 - New centralized class for random number generators: mrpt::random::CRandomGenerator . Old methods marked as deprecated. 00886 - Random Generators rewritten as a class for thread-safety: Each object has its own internal state for the PRNG. 00887 - New base class mrpt::utils::CProbabilityDensityFunction for all PDF classes. 00888 - Added bi-directional conversions between 3D poses and quaternion. See mrpt::math::CQuaternion and mrpt::poses::CPose3D::getAsQuaternion 00889 - A new common base class for all GUI windows. See mrpt::gui::CBaseGUIWindow 00890 - Matrix constructors from poses and points moved from CMatrix & CMatrixD to CMatrixTemplateNumeric for greater utility. 00891 - Added unary "-" operators to mrpt::poses::CPose3D and mrpt::poses::CPose2D for obtaining the inverse poses quickly. 00892 - Removed deprecated methods: 00893 - From mrpt::utils::CImage: loadFromBMP, loadFromJPEG, saveToBMP, saveToJPEG. Replaced by saveToFile and loadFromFile. 00894 - From mrpt::slam::CRawlog and its iterators: isAction. Replace by getType 00895 - 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 00896 - 3D windows has a method to obtain the rendered image for user processing as desired. See mrpt::gui::CDisplayWindow3D::captureImagesStart 00897 - Added copy constructors for mrpt::math::TObject2D and mrpt::math::TObject3D to allow use in containers (Pablo). 00898 - mrpt::opengl::CPolyhedron and mrpt::opengl::CGeneralizedCylinder classes accustomed to the new geometric methods (Pablo). 00899 - Added non-secure methods to access geometric object's coordinates (like in mrpt::math::TPoint2D) as an array (Pablo). 00900 - Intersections in mrpt::math now work properly in almost every case (Pablo). 00901 - Added a signWithZero function in utils_defs (Pablo). 00902 - Added methods in mrpt::opengl::CPolyhedron to work with sets of mrpt::math::TPolygon3D (Pablo). 00903 - Added a new test for pragma pack (Pablo). 00904 - Added a video file writer from a sequence of images. See mrpt::vision::CVideoFileWriter 00905 - Deleted old obsolete classes from mrpt::vision: CGaussianConvolutionKernel, CImageConvolution 00906 - New utilities added to mrpt::utils::metaprogramming 00907 - Applied uses of RANSAC added in ransac_applications.h. See mrpt::math::ransac_detect_3D_planes, mrpt::math::ransac_detect_2D_lines and <a href="http://www.mrpt.org/RANSAC_C++_examples" > examples</a>. 00908 - 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. 00909 - Two new gz-compression methods: mrpt::compress::zip::compress_gz_data_block and mrpt::compress::zip::decompress_gz_data_block 00910 - Load/Save of matrices as text files moved from mrpt::math::CMatrixTemplateNumeric to mrpt::math::CMatrixTemplate. 00911 - mrpt::scanmatching::robustRigidTransformation (and the program grid-matching) dynamically determine the number of RANSAC iterations by default. 00912 - Exceptions now show a more detailed stack trace. See mrpt::system::stack_trace (requires wxWidgets and building in "Debug"). 00913 - Added methods to retrieve polygons (as defined in geometry.h) for some graphical classes. 00914 - 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). 00915 - Geometry methods improved, although still not fully functional. 00916 - Added generic RANSAC implementation. See mrpt::math::RANSAC_Template, and <a href="http://www.mrpt.org/RANSAC_C++_examples" > examples</a>. 00917 - Edit CPtuHokuyo rawlog-grabber profile to work with CTuMicos. 00918 - New classes for Micos Tu DT-80. See class mrpt::hwdrivers::CTuMicos. 00919 - mrpt::system::deleteFilesInDirectory now has a uniform behavior in all platforms, and do not raise "consoles" in Windows GUI applications. 00920 - lightweight_geom_data (.h and .cpp) added to store some 3D types which require little storage (Pablo Moreno). 00921 - mrpt::math::geometry methods heavily improved (not fully implemented) (Pablo Moreno). 00922 - COpenGLStandardObject now includes some new methods (Pablo Moreno). 00923 - Minor changes in other OpenGL classes (Pablo Moreno). 00924 - Fixed a bug which caused CMyOpenGLCanvasBase to crash in some cases. 00925 - BUG FIXES: 00926 - RawLogViewer didn't change the label of sensors when multiple observations of the same name were in one Sensory Frame. 00927 - Visual Leak Detector didn't work for multi-threaded applications. 00928 - Fixed failing mrpt::system::directoryExists when using a trailing "/" 00929 - Fixed dealing with image assignments when the source is externally stored in mrpt::utils::CImage. 00930 - CMetricMapBuilder::loadCurrentMapFromFile won't load a GZ-compressed .simplemap file (Reported by Zoltan Tuza). 00931 - Bad serialization of grayscale image origin (Francisco Moreno). 00932 - rbpf-slam won't show the live 3D view (Thanks Yuan Fang for reporting). 00933 - There was no way to retrieve the main viewport's camera parameters for CDisplayWindow3D (Thanks Vijay Somers). 00934 - mrpt::utils::CImage::getAsMatrix didn't return intensity values in the normalized range [0,1] as documented. 00935 - mrpt::utils::CMemoryStream: won't read the last byte of the memory block; won't assign an external memory block with assignMemoryNotOwn 00936 - Compile error in Linux with libdc1394 >=2.0.0 but <2.2.0 (Thanks Allemant David for reporting). 00937 - Compile errors when compiling in Linux without OpenGL (Thanks Michael Lisowski for reporting). 00938 - Linking error with Visual Studio when building as DLLs: missing implementation of CAngularObservationMesh::TFloatRange::XXX. (Closes SF <a href="https://sourceforge.net/tracker/index.php?func=detail&aid=2693938&group_id=205280&atid=993006" >2693938</a>). 00939 - SceneViewer3D does not save the menu image when saving a snapshot from the menu. 00940 - mrpt::gui::CDisplayWindow now correctly detects key-strokes. 00941 - mrpt::gui::CDisplayWindow now does not flick (on Win32) anymore when updating the image. 00942 - mrpt::system::vectorToBinaryFile crashes for vectors of zero-length. 00943 - Errors when compiling with ASSERTs off (Thanks Scott! Closes SF <a href="https://sourceforge.net/tracker2/?func=detail&aid=2616902&group_id=205280&atid=993006" >2616902</a>). 00944 - mrpt::poses::CPose3DInterpolator::getPreviousPoseWithMinDistance won't return the first pose in the path as a valid result. 00945 - mrpt::system::joinThread could block in Windows if the thread was already closed. 00946 - Fixed pragmas in mrpt-hwdrivers headers, which may lead to undefined functins while linking against hwdrivers in Visual Studio, non CMake-based projects. 00947 - Solved wrong name of .lib for mrpt-xsens under Windows, for Debug build (Thanks Vicente Arevalo!). 00948 - mrpt::utils::CSimpleDatabase::loadFromXML won't load any valid XML file. 00949 - Fixed two extremely unusual cases where a mrpt::poses::CPose3D could not be properly created from its homogeneous matrix. 00950 00951 00952 00953 <br><hr><br> 00954 <a name="0.6.5"> 00955 <h2>Version 0.6.5: Released 8-Feb-2009.</h2></a> 00956 - New method for 3D-ICP, aligning pairs of 3D point clouds using a KD-tree for looking for correspondences and Horn's equation for each iteration. See the class mrpt::slam::CICP, mrpt::slam::CMetricMapsAlignmentAlgorithm::Align3D, and the <a href="http://www.mrpt.org/3D-ICP_Example" >tutorial page</a>. 00957 - Added class COpenGLStandardObject to render custom objects using OpenGL primitives like GL_TRIANGLES or GL_QUAD_STRIP (Pablo Moreno). 00958 - CText now accepts color changes (Pablo Moreno). 00959 - Added "contains" method for CSetOfObjects (Pablo Moreno). 00960 - Added methods for loading matrices from MATLAB-like strings. See mrpt::math::CMatrixTemplate<T>::fromMatlabStringFormat and mrpt::utils::CConfigFileBase::read_matrix. 00961 - New method for computing the mahalanobis distance. See mrpt::math::mahalanobisDistance 00962 - Levenberg-Marquardt and many other functions in mrpt::random converted into templates. 00963 - Added some minor methods to graphic classes, especially CSetOfLines (Pablo Moreno). 00964 - Matrix'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. 00965 - Added ray trace simulation methods to CRenderizable and every children class except for C3DSScene, CEllipsoid, CCylinder, CGeneralizedCylinder, CPolyhedron and some classes which don't represent any surfaced object (Pablo Moreno). 00966 - Added some classes to mrpt::opengl namespace (Pablo Moreno): 00967 - CAngularObservationMesh to represent a 3D world obtained from a set of traced rays. 00968 - CCylinder to represent a cylinder, cone or truncated cylinder. 00969 - CGeneralizedCylinder to represent a generalized cylinder with an axis roughly perpendicular to the Z coordinate. 00970 - CPolyhedron to represent any object without curves. Includes methods to create common polyhedron, although still lacks some geometric methods. 00971 - CRenderizable::setColor method now works properly (affecting every child) when used in a CSetOfObjects or CSetOfTriangles (Pablo Moreno). 00972 - Added method mrpt::CMatrixTemplateNumeric::rank to calculate the rank of a matrix (Pablo Moreno). 00973 - 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 00974 - Header files defining the mrpt fonts (used in mrpt::utils::CCanvas) have been removed from the external headers and are internal now. 00975 - OpenGL objects now have a scale factor. See mrpt::opengl::CRenderizable::setScale 00976 - Added type mrpt::math::CMatrixLongDouble for matrices of "long double" (becomes "double" if the compiler does not suppor them). 00977 - New namespaces: 00978 - mrpt::vision::pinhole with functions related to camera projection models. 00979 - mrpt::utils::metaprogramming for grouping the metaprogramming classes. 00980 - Points and poses constructors from other classes that imply a loss of information are defined as explicit, e.g. CPose3D -> CPose2D, etc... 00981 - Fixed unnecessary link dependencies on 3ds,zlib & ann libs when linking as DLL in Windows. 00982 - Quick method mrpt::opengl::COpenGLScene::saveToFile to save 3D scenes. 00983 - New method for automated camera calibration: mrpt::vision::checkerBoardCameraCalibration 00984 - Important changes to improve the design of mrpt::opengl classes: "render" method is "const", more set/get methods instead of public members, etc. 00985 - New exception class mrpt::utils::CExceptionEOF, used to distinguish between normal and erroneous EOFs found while de-serializing objects from a stream. 00986 - Added method for RTK GPS path reconstruction: mrpt::topography::path_from_rtk_gps 00987 - New math methods: mrpt::math::unwrap2PiSequence, mrpt::math::averageWrap2Pi 00988 - Added template function mrpt::utils::find_in_vector for searching an element in any std::vector container (like "find" in other containers). 00989 - New interpolation methods for 1D functions: mrpt::math::interpolate2points, mrpt::math::leastSquareLinearFit. 00990 - CStream::printf now correctly returns an "int" instead of "void". 00991 - Types vector_XXX moved from global to "mrpt" namespace. 00992 - New color types mrpt::utils::TColor & mrpt::utils::TColorf. 00993 - Added support for exclusion areas to mark sensed point as invalid in laser scanners. See C2DRangeFinderAbstract::loadExclusionAreas 00994 - New method CPose3D::composePoint for more efficient 3D pose+point composition. 00995 - New examples: 00996 - icp3D: Demonstration of usage for 3D-ICP. 00997 - rayTrace: Demo of 3D ray tracing (Pablo Moreno). 00998 - leastSquares: Demonstration of linear least squares interpolation. 00999 - SceneViewer3D: 01000 - New menu action "Take snapshot" (F2). 01001 - RawLogViewer: 01002 - New combo-box for selecting among different, automatically detected paths for external images. For example, this allows quickly changing between rectified and original images. 01003 - All I/O file operations now support the gz-compressed format. 01004 - Edit dialog: Support for multiple selections instead of the old combos. 01005 - Menu "regenerate GPS" timestamps now allows operating over several sensor labels at once. 01006 - "Raw Map" module: Now builds 3D maps from sequences with 3 RTK GPS. 01007 - Support for configuration blocks in rawlogs. See mrpt::slam::CRawlog::getCommentTextAsConfigFile 01008 - Many improvements in the CMake build system for Linux systems, as part of the Fedora package review process (Thanks to Mamoru Tasaka). 01009 - BUG FIXES: 01010 - Error when compiling without GL/GLUT under Linux (Thanks to Chun-Wei for reporting). 01011 - Wrong computation of the likelihood in COccupancyGridMap2D::computeObservationLikelihood_CellsDifference (Thanks to Fabian Menges, SF <a href="https://sourceforge.net/tracker2/?func=detail&atid=993006&aid=2570053&group_id=205280" >2570053</a>). 01012 - mrpt::utils::ObjectToString won't really save the object as a string. 01013 - mrpt::utils::format now works for strings of arbitrarily large lengths. 01014 - Visual Studio: Exception when mrpt::utils::format tries to generate a too long string. 01015 - Wrong name of mrpt-zlib libs when compiling without wxWidgets and as DLL. 01016 - Compilation of app grid-matching fails (SF <a href="https://sourceforge.net/tracker2/?func=detail&aid=2490011&group_id=205280&atid=993006" >2490011</a>, Fabian Menges). 01017 - CPose3DInterpolator: Solved spureous transitions when "yaw" crosses the +-PI threshold. 01018 - RawLogViewer: Comments text block was lost after some edit operations. 01019 - Fixed all the warnings: "dpkg-shlibdeps: warning: dependency on ... could be avoided if ... were not uselessly linked against it (they use none of its symbols)". 01020 - Fixed an issue with architectures with big endiannes. Fixed Debian bug <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=509366" > #509366 </a>. 01021 01022 01023 <br><hr><br> 01024 <a name="0.6.4"> 01025 <h2>Version 0.6.4: Released 20-Dec-2008 (SVN: 696).</h2></a> 01026 - Full support for compiling all the libraries as DLLs under Windows. 01027 - Topography helper methods are now grouped in a new namespace: mrpt::topography 01028 - New class mrpt::utils::CConsoleRedirector for redirecting all the output from std::cout / std::cerr to a log file. 01029 - New methods in mrpt::utils::CDebugOutputCapable for making easy reporting messages to both the console and a log file. 01030 - New boolean matrix classes: mrpt::math::CMatrixBool and mrpt::math::CMatrixB 01031 - mrpt::opengl container classes now have a templatized getByClass<>() method. 01032 - New interface class for generic PTU called CPtuBase. (Jose Raul Ruiz Sarmiento) 01033 - 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) 01034 - Fixed the destination of MRPTConfig.cmake in "make install" (and debian packages) such CMake can now automatically find MRPT without asking the user. 01035 - Added the target "make uninstall" for Linux/Unix systems. 01036 - New predefined 3D objects (By Miguel Angel Espada Bernal). See http://www.mrpt.org/Predefined_3D_Objects 01037 - Added mime type files for installation in Linux systems (FreeDesktop-compatible, e.g. KDE, Gnome). 01038 - Created test targets. Use: "make", "make test" 01039 - Better portability with new HAVE_XXX entries in the "config.h" file. 01040 - Compilation with MinGW/GCC under Windows now supported. Refer to the <a href="http://www.mrpt.org/Guide:Installing_MinGW_(GCC_for_Windows)" > guide on the wiki </a>. 01041 - Occupancy grids now have an alternative method to insert laser scans (now set by default), which takes into account the "widening" of the laser beams with distance. See the insertionOptions member of mrpt::slam::COccupancyGridMap, and also <a href="http://www.mrpt.org/Occupancy_Grids" >the gridmaps tutorial</a>. 01042 - 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. 01043 - New class for pixel color retrieval with sub-pixel accuracy from images with transformed coordinates. See mrpt::utils::CMappedImage 01044 - New image processing operations: rectify, Median and Gaussian filter, etc... In mrpt::utils::CImage. 01045 - New method to merge several multivariate Gaussians in a Gaussian mixture (SOG) by minimizing the KL-divergence. See mrpt::poses::CPosePDFSOG::mergeModes. 01046 - Application SceneViewer renamed to SceneViewer3D to solve the Debian bug <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505272" > #505272 </a>. 01047 - New class mrpt::opengl::CSetOfTexturedTriangles for arbitrary shapes in 3D scenes with textures (by Vicente Arevalo). 01048 - Preview of image capture is posible in rawlog-grabber, thru new option in mrpt::hwdrivers::CCameraSensor. 01049 - 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. 01050 - New methods in matrix classes (and for vectors in mrpt::math::loadVector) for initializing directly from const C arrays. 01051 - RawlogViewer: 01052 - Many small improvements in laser & image animations. 01053 - New menu commands for transforming rawlogs, manipulating gps data, etc... 01054 - rawlog-grabber: 01055 - 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. 01056 - Support for high-speed & high-resolution IEEE1394 cameras through the class mrpt::hwdrivers::CCameraSensor -> grabber_type = dc1394. 01057 - New examples: 01058 - ptuDPerception: Example of use performs a simple scan. 01059 - ptuHokuyo: A demostration of how coordinate ptu and hokuyo for obtain a map of points that we show using a opengl window. 01060 - sog-merge: Algorithm for merging SOG pose pdfs. 01061 - pioneerRobotDemo: A demonstration of connection to a Pioneer robot (ActiveMedia Robotics) and some data requests. 01062 - gps-coordinates: Computation of XYZ local coordinates between two precise GPS measurements. 01063 - New applications: 01064 - grid-matching: A demonstration of algorithms for occupancy grid map matching. See the <a href="http://www.mrpt.org/Applications" >application page</a>. 01065 - 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). 01066 - BUG FIXES: 01067 - removeObject didn't work in mrpt::opengl classes. 01068 - mrpt::utils::CConfigFile reported keys as non-existing if they existed but the actual value was an empty string. 01069 - occupancy grid map: Potential seg.fault when inserting a laser scan with the first range being invalid. 01070 - color gradient in mrpt::opengl::CPointCloud was lost with time when color_from_z=true. 01071 - mrpt::system::extractFileExtension flag for ignore gz extensions didn't work. 01072 - Serialization is now compatible between systems with different endianness. 01073 - Fail to compile with GCC 4.4, Debian bug <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505668" > #505668 </a>. Thanks to Martin Michlmayr. 01074 - Hopefuly fixed all wrong calculations of very precise (x,y,z) coordinates from latitude, longitude and height, in mrpt::slam::CObservationGPS. 01075 - Wrong data grabbed from xSens IMU: Gyroscope data saved as XYZ velocities. In mrpt::hwdrivers::CIMUXSens 01076 - Possible lock when reading from a serial port from two different objects mrpt::hwdrivers::CSerialPort 01077 - mrpt::system::os::getch: Now really does NOT wait for an enter, but just one keystroke in Linux. 01078 - mrpt::system::extractFileName didn't work for filenames already without an extension. 01079 - mrpt::utils::CMemoryChunk led to segmentation faults since the re-implementation with smart pointers. 01080 - Wrongly report missing parser for de-serializing a mrpt::slam::CSimplePointsMap object in the lastest binary format. 01081 - OpenGL render system had an inconsistence with the internal MRPT representation of 3D objects (by Pablo Moreno Olalla). 01082 01083 <br><hr><br> 01084 <a name="0.6.3"> 01085 <h2>Version 0.6.3: Released 23-Oct-2008.</h2></a> 01086 - Updated "INSTALL-COMPILE.html" 01087 - mrpt::gui windows can now be used also from user GUIs. This was previously possible from console apps only. 01088 - Supports compiling without OpenCV. 01089 - BUG FIXES: 01090 - GridmapNavSimul crashes on exit, for Windows only (SF <a href="https://sourceforge.net/tracker2/?func=detail&aid=2189710&group_id=205280&atid=993006" >2189710</a>). 01091 - Fixed possible compiling errors related to Boost (Thanks Xuan Vu!). 01092 - Wrong headers in some embedded jpeglib sources (Thanks Hai Li!). 01093 01094 <br><hr><br> 01095 <a name="0.6.2"> 01096 <h2>Version 0.6.2: Released 21-Oct-2008.</h2></a> 01097 - <b>IMPORTANT CHANGES</b>: 01098 - All metric maps now accept full 6D poses for evaluating observation likelihood, and rbpf-slam now always uses internally 6D poses. 01099 - mrpt::vision now integrates SIFT features computation thru Hess' C library (http://web.engr.oregonstate.edu/~hess/) (by Francisco Angel Moreno). 01100 - Many bug fixes, and new samples and applications. 01101 01102 - Detailed list of changes: 01103 - All metric maps now accept full 6D poses for evaluating observation likelihood. 01104 - Added new macros for easier RTTI: IS_CLASS and IS_DERIVED. 01105 - New sensor class compatible with rawlog-grabber: A camera image grabber. See mrpt::hwdrivers::CCameraSensor. 01106 - xSens IMU MTi now works on both Windows & Linux with the new xSens software sources. 01107 - mrpt::hwdrivers::CIMUXSens now asks the IMU for calibrated acc. & gyr. data as well. 01108 - New methods in mrpt::math. 01109 - Linux & gcc only: Use --as-needed to avoid executables depending on useless .so libraries. 01110 - mrpt::gui::CDisplayWindow3D now can save the render canvas directy as a sequence of images, which helps to create videos from real-time animations. 01111 - mrpt::bayes::CParticleFilterCapable::computeResampling now implements all 4 resampling algorithms. 01112 - mrpt::vision now integrates SIFT features computation thru Hess' C library (http://web.engr.oregonstate.edu/~hess/) (by Francisco Angel Moreno). 01113 - mrpt::math::CMatrixTemplateNumeric::loadFromTextFile: Lines starting with '%' or '#' are interpreted as comments and ignored. 01114 - New methods in mrpt::utils::CImage for fast flip and Red-Blue swap. 01115 - More efficient capture of video in mrpt::vision::CImageGrabber_OpenCV (by Vicente Arevalo). 01116 - Applications renamed for consistency: 01117 - "pf-localization" 01118 - "rawlog-grabber" 01119 - 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. 01120 - Boost libraries are required for compiling some parts of MRPT. Follow the updated instructions in http://www.mrpt.org/Building_and_Installing_Instructions. 01121 - mrpt::utils::CReferencedMemBlock redesigned: it was too obscure, now it's based on a simpler stlplus::smart_ptr 01122 - mrpt::utils::CFileOutputStream & mrpt::utils::CFileInputStream now has default constructors and "open" methods. 01123 - mrpt::opengl::CPlanarLaserScan implemented. 01124 - mrpt::slam::COccupancyGridMap2D: Simulator of laser scans now includes an optional noise in bearing angles. 01125 - rbpf-slam: 01126 - 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. 01127 - RawLogViewer, changes: 01128 - Proper display of IMU observations with all their data fields. 01129 - Dialog "Edit" now also processes files gz-compressed. 01130 - Dialog "Motion model" allows modification of a part of the rawlog only. 01131 - New examples: 01132 - feature_extraction: Test for image feature detection using KLT, Harris and SIFTs. 01133 - resampling-test: Particle filtering resampling schemes. 01134 - New applications: 01135 - ro-localization: Range-Only Localization with particle filters. See <a href="http://www.mrpt.org/Applications" >its wiki page</a>. 01136 - simul-grid: A command-line application to simulate rawlogs of laser scans using a world modelled by a grid map. 01137 - 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 <a href="http://www.mrpt.org/Applications" >the wiki</a>. 01138 - BUGS FIXED: 01139 - Link errors in examples if paths have blank spaces. 01140 - ReactiveNavigationDemo crashes with VFF method (Xuan Vu: SF <a href="https://sourceforge.net/tracker2/?func=detail&aid=2183187&group_id=205280&atid=993006" >#2183187</a>). 01141 - RawlogViewer crashes when opening logs with embedded images (Xuan Vu: SF <a href="https://sourceforge.net/tracker2/?func=detail&aid=2182167&group_id=205280&atid=993006" >#2182167</a>). 01142 - USB laser scanner data acquisition: wrong bit mask in mm mode. 01143 - rawlog-grabber: Loss of 1 observation per grabbing period fixed. 01144 - mrpt::utils::CFileStream: Error when opening a file for append (fomAppend) and the file didn't exist. 01145 - mrpt::slam:COccupancyGridMap2D: fixed marking as occupied cells at the end of truncated rays when shorter than the "maxDistanceInsertion". 01146 - mrpt::vision::CImageGrabber_OpenCV didn't report an error when reaching the end of a video file. 01147 - Timestamps were lost in mrpt::slam::CAction 's when copied. 01148 - Linker errors when compiling an external application using MRPTConfig.cmake with GCC and in Debug. 01149 - Wrong destruction of critical sections when embedded into objects within smart_ptr's. 01150 - mrpt::slam::CActionRobotMovement2D: Wrong copy of objects with the = operator. 01151 - mrpt::utils::CFileGZOutputStream crashes if "close" called instead of closing at destructor. 01152 - Errors compiling with BUILD_ARIA=0. 01153 01154 <a name="0.6.1"> 01155 <h2>Version 0.6.1: Released 27-Aug-2008.</h2></a> 01156 - HOKUYO communications reconnect even if USB cable unplugged & plugged again. 01157 - New, more robust version of Linux serial port. 01158 - particleFilterApplication now supports ".gz" input files as well. 01159 - "zlib" & "jpeglib" included as separate libraries, for Windows in the case of not having wxWidgets. 01160 - xmlParser library files (src/core/utils/xmlparser/*): Legal issue fixed by replacing license with a BSD-like license from Frank Vanden Berghen (thanks!). 01161 - New target (Linux only): "make documentation_tutorial". 01162 - New examples: 01163 - gravity3d: Demonstration of 3D animation and physics simulation. 01164 - New applications: 01165 - simul-landmarks 01166 - simul-beacons 01167 - BUGS FIXED: 01168 - Communications with HOKUYO in Linux eventually crashes. 01169 - Error in "make install", tried to copy tutorial.ps.gz intended for Debian packages. (Thanks sisyphus me) 01170 - Wrong text format of dates & times in mrpt::system functions. 01171 - Mismatched new / free[] solved in mrpt::system::createThread (Linux). 01172 - Applications icp-slam, kf-slam, rbpf-slam didn't recognize gz-compressed rawlogs. 01173 - All Debian scripts & files moved away from MRPT source tree for consistency. 01174 01175 <br><hr><br> 01176 <a name="0.6.0"> 01177 <h2>Version 0.6.0: Released 14-Aug-2008.</h2></a> 01178 01179 - <b>IMPORTANT CHANGES</b>: 01180 - 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 "using namespace XXX;" lines. 01181 - Better support of user applications using CMake command "FIND_PACKAGE( MRPT REQUIRED )". Refer to: http://www.mrpt.org/Writing_applications_with_the_MRPT_C%2B%2B_Library 01182 - Pointers have been passed to smart pointer all across the code. 01183 - RawLog files: a new "observations-only" format has been introduced, and now all rawlog are saved compressed using "gzip" automatically (they are decompressed automatically to the user when loaded). Alternatively the user can rename a rawlog file to "name.rawwlog.gz", then use standard tools to extract the uncompressed version, if necessary. 01184 - The MRPT libraries can now be compiled as a shared library (.dll/.so), by setting MRPT_BUILD_SHARED_LIB from the CMake GUI. 01185 - New hardware libraries supported: 01186 - 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. 01187 - New hardware driver for XSens inertial measuring units (IMU). See hwdrivers::CIMUXSens. 01188 - New applications: 01189 - RawLogGrabber, for gathering data in real-time from a robotic platform. See wiki page: http://www.mrpt.org/Application:RawLogGrabber 01190 - hmtMapViewer, an inspection tool for HMT-SLAM. See wiki page: http://www.mrpt.org/HMT-SLAM:An_Open_Source_Implementation 01191 - Visual Studio 6 is not supported anymore from now on: it's a too old compiler, buggy, and lacks many modern C++ features. 01192 - Many bugs fixed. 01193 01194 - All changes: 01195 - Many additions to conform to Debian packaging standards and freedesktop.org standard files for creating application menus, etc. 01196 - Added new "colored points" map & opengl objects. See mrpt::slam::CColouredPointMap and mrpt::opengl::CPointCloudColoured. 01197 - SceneViewer also is able to read from .gz'd files (.3Dscene files, but can be renamed to .3Dscene.gz if desired). 01198 - Management of local and UTC times clarifies with new methods. See mrpt::system, time functions. 01199 - Added a new class for transparent disk-swapped loading of very large datasets. see mrpt::slam::CRawlogXXL. 01200 - Exception handling prepared to correctly manage bad_alloc exceptions (for out of memory scenarios). 01201 - Added a 1D function interpolator using splines. See mrpt::math::CSplineInterpolator1D. 01202 - Added a 6D poses interpolator, using splines. See mrpt::poses::CPose3DInterpolator. 01203 - Removed built-in zlib library, replaced by wxWidget's one. 01204 - 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. 01205 - 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 <www.kyprianidis.com> ). 01206 - Class for storing rawlogs renamed as "mrpt::slam::CRawlog", and enabled for the new observation-only <a href="http://www.mrpt.org/http://www.mrpt.org/Rawlog_Format">rawlog file format</a>. 01207 - Introduced precompiled headers for a dramatic reduction of compilation time thru the header <mrpt/slam.h>. 01208 - The method CSerializable::duplicate has been optimized using directly the derived class copy constructor instead of a temporary memory buffer. 01209 - Created a new metric map: grid map of heights. See mrpt::slam::CHeightGridMap2D. 01210 - Added a method for estimating the Jacobian of a function by finite differences. See math::estimateJacobian. 01211 - 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 <mrpt>/src. 01212 - Added generic class for Levenberg-Marquart optimization problems. See utils::CLevenbergMarquardt and the <a href="http://www.mrpt.org/Levenberg%E2%80%93Marquardt_algorithm">wiki tutorial on the topic</a>. 01213 - Added communications support for the new HOKUYO UTM-30LX (Windows and Linux). Refer to the <a href="http://www.mrpt.org/Example:HOKUYO_URG_Laser_Scanner" >wiki page</a>. 01214 - New method introduced to gas distribution mapping: optimized Kalman filter with constant time update. See mrpt::slam::CGasConcentrationGridMap2D. 01215 - The class utils::CTicTac now does not use dynamic memory, so it's constructor & destructor are faster. 01216 - Several optimizations applied to 2D and 3D geometry classes (poses::CPoseOrPoint derived ones). 01217 - Added cross-platform support for "alloca". See system::alloca. 01218 - Sources updated to be compatible with GCC 4.3 and Visual Studio C++ 2008. 01219 - Thread statistics now are also implemented for Linux. See system::getCurrentThreadTimes. 01220 - HWDRIVERS classes unified under the "generic sensor model". See hwdrivers::CGenericSensor. 01221 - 3D render canvas classes unified under the new class utils::WX_gui::CMyGLCanvas_Base. 01222 - Added serializable STL classes. See utils::vector_serializable, etc. See utils/stl_extensions.h 01223 - Added serialization to the whole mapping framework state in HMT-SLAM, and many related classes. See mrpt::hmtslam::CHMTSLAM. 01224 - lib_hwdrivers: Custom device-dependent initialization commands can be sent when opening a GPS interface. See hwdrivers::CGPSInterface. 01225 - Joysticks and game-pads fully supported now under both Windows and Linux. See hwdrivers::CJoystick. 01226 - Added new applications: 01227 - RawLogGrabber, for gathering data in real-time from a robotic platform. See wiki page: http://www.mrpt.org/Application:RawLogGrabber 01228 - hmtMapViewer, an inspection tool for HMT-SLAM. See wiki page: http://www.mrpt.org/HMT-SLAM:An_Open_Source_Implementation 01229 - Added new examples: 01230 - /samples/UTILS/fileSystemWatcher: Demonstrating watching of directory changes. Based on class utils::CFileSystemWatcher. 01231 - RawLogViewer: 01232 - A new facy custom tree view, extremely more efficient for very large datasets and with a time-line to graphically visualize timestamps. 01233 - Many new commands: resort from timestamps, regenerate timestamps from GPS observations, etc. 01234 - In the "raw-map" window the user can change now the number of types of maps to build from odometry + raw observations. 01235 - Implemented building a map from a rawlog with RTK GPS data. See "RawMap" dialog. 01236 - BUGS FIXED: 01237 - Textual representation of dates and times with seconds represented with just one digit. 01238 - Fixed wrong computation of transformation from GPS to local coordinates. 01239 - Exception raised if an empty CImage is serialized. 01240 - Wrong conversion of old serialization versions of gridmaps. 01241 - Parameters of a gas gridmap were ignored after loading from .ini. 01242 - Changing by hand the coordinates in mrpt::poses::CPose3D was not persistent when serializing the object. 01243 - Added missing "+ operators" to mrpt::poses::CPoint3D. 01244 - mrpt::slam::CSimplePointsMap: Serialization was not cross-platform (it used "unsigned long" data type). 01245 - mrpt::slam::CObservationGPS didn't save the "sensorPose" when streaming. 01246 01247 - MAY-2008: 01248 - mrpt::poses::CPointsMap now also has a horizontal tolerance range for "horizontal" or "planar" maps. 01249 - 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. 01250 - gui::CDisplayWindowPlots now can also manage 2D bitmaps plots, that can be combined with 2D vectorial plots. See gui::CDisplayWindowPlots::image. 01251 - CPointsMap::compute3DMatchingRatio is now ~6 times faster (using KD-tree). 01252 - Missing implementation of KD-tree for 3D points in mrpt::poses::CPointsMap now complete. 01253 - Added support for file-system watching. See utils::CFileSystemWatcher. 01254 - SceneViewer: 01255 - New option to allow free rotation and zoom of the camera even for scenes with the flag "followCamera". 01256 - RawLogViewer: 01257 - Added importer for "rtl" log files. 01258 - Added capability to export several GPSs to text files. 01259 - Sensor labels appear in the tree view. 01260 - BUGS FIXED: 01261 - "mrpt::slam::CSensFrameProbSequence::operator =" was wrongly implemented. 01262 - In gridmaps (mrpt::slam::COccupancyGridMap2D): 01263 - Calling mrpt::slam::COccupancyGridMap2D::resizeGrid only supports growing the grid (not shrinking). This is now forced internally to fix impredictable results. 01264 - In some situations, inserting a 2D laser scan ray ending very close to the border didn't make the grid to extend its size, and may lead to memory corruption. 01265 - 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...). 01266 - Fixed support for Bumblebee in external applications through CMake system (MRPTconfig.cmake). 01267 - Wrong reporting of stacked exceptions messages. 01268 - Fixed wrong calculation of (x,y,z) coordinates from latitude, longitude and height, in mrpt::slam::CObservationGPS. 01269 - utils::CClientSocket did send debug information in the middle of actual data!. Thanks to Vicente Arevalo for reporting. 01270 01271 <br><hr><br> 01272 <a name="0.5.5"> 01273 <h2>Version 0.5.5: Released April 30, 2008.</h2></a> 01274 - APR-2008: 01275 - New 2D font render engine in utils::CCanvas. It now supports a number of different fonts, including CJK (Chinese-Japanese-Korean) characters. 01276 - HOKUYO URG04 laser scanner interface now works for Linux and Windows. See hwdrivers::CHokuyoURG and <a href="http://www.mrpt.org/Example:HOKUYO_URG_Laser_Scanner" >the wiki page</a>. 01277 - Serialization format changed: added an end-flag and 5 bytes saved per dumped object. See the serialization description <a href="http://www.mrpt.org/Serialization">here</a>. 01278 - 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 <a href="http://www.mrpt.org/Tutorial_3D_Scenes">tutorial</a>. 01279 - Generation of HTML and CHM documentation has been integrated in the project workspace, as "make documentation_XXX" for "make" or new projects in Visual Studio. 01280 - 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 <a href="http://www.mrpt.org/Occupancy_Grids" >the gridmaps tutorial</a>. 01281 - The file "MRPT_version.h" is now automatically updated from CMake with the version + SVN (if local copy is a repository). 01282 - Socket classes are now fully implemented for Linux and Windows. See utils::CClientTCPSocket and utils::CServerTCPSocket. 01283 - Added two new CStream classes: utils::CFileInputStream, utils::CFileOutputStream, specializations of the old utils::CFileStream. 01284 - File stream classes rewritten based on standard std::iostream classes (faster I/O). See utils::CFileStream. 01285 - Examples can now be built and run from any directory, through the new config file: "MRPT_examples_config.h". 01286 - Added support to any number of points map within mrpt::slam::CMultiMetricMap. 01287 - 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. 01288 - Options of mrpt::slam::COccupancyGridMap2D, mrpt::poses::CPointsMap and mrpt::slam:::CMultiMetricMap are now persistent (included in the serialization). 01289 - Macros max,min,max3,min3 passed to inline template functions, reusing std::max & std::min. 01290 - The following synchronization classes can now be safely copied (eg. within STL containers) and they still refer to the same OS's synchronization object: synch::CSemaphore, synch::CCriticalSection, synch::CEvent. 01291 - New class utils::CReferencedMemBlock for memory blocks that have to be shared between objects when copied with "=". 01292 - Major revision of many classes to satisfy design rules in Scott Meyers' "Effective C++ book" (-Weffc++ gcc option). 01293 - Added new examples: 01294 - /samples/MRML/pathPlanning: Demonstrating path finding in occupancy grid maps for circular robots. 01295 - /samples/MRML/benchmark-gridmap 01296 - /samples/MRML/gridMapLikelihoodCharacterization 01297 - /samples/HWDRIVERS/HOKUYO_laser_test: Added example for HOKUYO laser range finder. 01298 - Re-factorization of the main library (lib_MRPT) for faster rebuild and better modularity. New libraries in "/apps/lib_XXX": 01299 - lib_HMTSLAM. 01300 - lib_HWDRIVERS. 01301 - RawLogViewer version 2.2: 01302 - Now the user can choose the format (png,jpg,...) of the image files when generating image lists, transforming into external storage image observations, etc. 01303 - BUGS FIXED: 01304 - No timestamp saved in rawlogs for some observations. 01305 - Extra NULL character stored in type list in utils::CTypeSelector. 01306 01307 - MAR-2008: 01308 - New classes added in file "UTILS/safe_pointers.h" for making classes with pointer members safer. 01309 - Added switches to CMake system to disable MRPT_START/END and ASSERT_ blocks, for speed up on well tested applications. 01310 - Added new class utils::CMemoryChunk. 01311 - Added a new application for building metric maps from ".simplemap" files. 01312 - Added a class for message passing between threads. See utils::CMessageQueue. 01313 - Created mrpt::slam::TKLDParams to unify KLD-sampling parameters across different classes. 01314 - mrpt::slam::CHybridMetricMap finally renamed mrpt::slam::CMultiMetricMapPDF, for consistency with mrpt::slam::CMultiMetricMap. 01315 - 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. 01316 - Added a tolerance threshold for the pitch/roll of laser scans to be treated as "horizontal" in mrpt::slam::COccupancyGridMap2D. 01317 - A textual label added to all observations to describe its sensor (See CObservation::sensorLabel). 01318 - mrpt::slam::CSensoryFrame and mrpt::slam::CActionCollection now behave like STL containers (begin,end,iterator,erase,...); internal lists are protected. 01319 - All geometry, PDFs, and Kalman Filter classes passed from float -> double. 01320 - Added a new, more efficient implementation to bayes::CKalmanFilterCapable, processing one observation (not each scalar component) at once. 01321 - Added new fast operations to matrices. See math::CMatrixTemplateNumeric. 01322 - Fixed the small memory leak of the ANN library by calling annClose. 01323 - SceneViewer: 01324 - Scenes are compiled into OpenGL lists for efficiency. 01325 - RawLogViewer version 2.2: 01326 - Added a command to convert images of old rawlogs into delayed-load images. 01327 - Support for delayed-load images: now much larger rawlogs can be managed efficiently. 01328 - Added "compact rawlog" command: group consecutive actions & observations. 01329 - Added "loss-less decimation". 01330 - Added "edit rawlog" by name of sensor. 01331 - Now two monocular images can be displayed simultaneously in the "View images as video"-module. 01332 - Added "export/import to ALOG format". 01333 - BUGS FIXED: 01334 - Fixed compiling errors when compiling under Linux without GL/GLUT. 01335 - Wrong copy of 3D angles in CPose3DPDFGaussian::copyFrom. 01336 - Missing a valid, secure operator (operator =) for bayes::CParticleFilterData. 01337 - Compiling errors due to non-ASCII Spanish characters (thanks to Zhe Zhang). 01338 - Unpredictable result if a 2D laser scan with all invalid points is inserted in a pointsmap. 01339 01340 <h2>Version 0.5.4: Released March 6, 2008.</h2> 01341 - MAR-2008: 01342 - Size variables in mrpt::poses::CPointsMap, math::CPolygon, and ReactiveNavigationLibrary passed to "size_t". 01343 - Thread join implemented in Windows. 01344 - Added a new class synch::CCriticalSectionLocker to assure consistent critical section leaving in any situation (exceptions, programmer's mistakes,...). 01345 - Implemented Iterative Kalman Filter (IKF). See bayes::CKalmanFilterCapable. 01346 - Next MRPT release will be published under the GNU GPL version 3 (comment blocks updated in all source files). 01347 - Correspondences between point maps implemented with KD-tree: "classic ICP" is now ~10x faster. 01348 - Removed wrong covariance estimation in mrpt::poses::CPointsMap::computeMatchingWith2D and added a new better one to mrpt::slam::CICP. 01349 - The library ANN (Approximate Nearest Neighbor) by Sunil Arya and David Mount (University of Maryland) has been integrated in the build tree. 01350 - Added an option to utils::CImage to disable ZIP compression when storing images. 01351 - Added the all new implementation of HMT-SLAM. See mrpt::slam::CHMTSLAM. 01352 - Fixed all 64-bit portability issues detected by Visual Studio 2005. 01353 - Created a repository of 3D objects in opengl::stock_objects. 01354 - COpenGLScene & opengl::CSetOfObjects now have the list of objects as "protected" for assure safe memory-management. 01355 - Added build options as switchs in the CMake build system for: 01356 - The GCC stdlibc++ "parallel mode". See http://algo2.iti.uni-karlsruhe.de/singler/mcstl/. 01357 - Selecting 8bits/16bits cell size in occupancy grid maps. 01358 - Enabling code profiling (GNU GCC only). 01359 - Added new applications: 01360 - icp-slam: A very naive mapping algorithm based on a single metric map & ICP laser scan alignment. See mrpt::slam::CMetricMapBuilderICP. 01361 - BUGS FIXED: 01362 - Copy operator of 6D poses didn't work always as expected. 01363 - Pose composition of 6D Gaussian poses (poses::CPose3DPDFGaussian) used wrong Jacobians. 01364 - FEB-2008: 01365 - Added a new application: camera-calib, by Vicente Arevalo (University of Malaga). 01366 - Added "point size" property to UTILS:opengl::CPointCloud. 01367 - 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. 01368 - RawlogViewer & SceneViewer: Directory of last opened file now saved when invoking programs with file as command-line argument. 01369 - Added a new mechanism for displaying mathematical graphs using MATLAB-like "plot" commands. See gui::CDisplayWindowPlots. 01370 - Visual Leak Detector integrated in the CMake build system. 01371 - Extended Kalman Filter implementation rewritten from scratch. See bayes::CKalmanFilterCapable. 01372 - Implemented missing operations (move,resize,...) in gui::CDisplayWindow & gui::CDisplayWindow3D. 01373 - New implementation of the Kalman Filter in mrpt::slam::CRangeBearingKFSLAM: 'a la Davison', orders of magnitude faster than naive Kalman (new version 0.2 of application "kf-slam"). 01374 - Improved 3D/6D geometry implementation: x2 speed-up in (inverse) pose compositions (utils::CPoseOrPoint and derived classes). 01375 - Addition of a new matrix class: math::CMatrixFixed, for compile-time known sizes (more efficient??). 01376 - Fixed compiling errors if MRPT_HAS_WXWIDGETS = 0. 01377 - Generation of CMakeLists fully automated for samples. 01378 - Added support for "pkg-config libMRPT --libs --cflags" if the library is make install'ed, UNIX only. 01379 - "Save as..." implemented in gui::CDisplayWindow. 01380 - Added new examples: 01381 - samples/UTILS/threadsTest, demonstrating the creation of threads and synchronization. 01382 - UTILS/benchmark-matrix. 01383 - samples/UTILS/bayesianTracking, implementing a very simple bearing & tracking problem with both a EKF and a particle filter (PF). 01384 - samples/UTILS/displayPlots. 01385 - MRML/grid-matching. 01386 - BUGS FIXED: 01387 - Core dump due to a wrong initialization of mrpt::slam::CSensoryFrame using the *copy constuctor*. 01388 - RawlogViewer: Changing a sensor pose in the "sensor/camera modification dialog" didn't change it for 6D poses. 01389 - utils::CDirectoryExplorer missed files under Windows when marked as FILE_ATTRIB_NORMAL. 01390 - Core dump (double free) if a matrix is set to size (0,0) and then resized again (it affected the new matrix loadFromTextFile method). 01391 - Inverted axes in CDisplayWindow3D & SceneViewer when camera elevation=-90deg. 01392 - Wrong generation of random samples in random::randomNormalMultiDimensional. 01393 - Missing synchronization within WxSubsystem's thread. 01394 - Not using double-buffering in SceneViewer. 01395 - Wrong simulation of bearing-range observations for any 6D pose in mrpt::slam::CLandmarksMap. 01396 - gui::CDisplayWindow & gui::CDisplayWindow3D timeout waiting to close windows after class destruction. 01397 01398 <h2>Version 0.5.3 (First public release, January 31, 2008)</h2> 01399 - JAN-2008: 01400 - Small changes in CMake files to prepare first public source release. 01401 - utils::WxSubsystem created as a centralized manager of GUI windows in the MRPT using the cross-platform wxWidgets. Now used for CDisplayWindow & CDisplayWindow3D. 01402 - Application "ReactiveNavigationDemo" rewritten using wxWidgets and integrated in the MRPT CMake tree. 01403 - Bumblebee camera support integrated in CMake file system. 01404 - RawLogViewer 2.1 finished. 01405 - SceneViewer 1.1 finished. 01406 - New methods added to matrixes and to the MATH namespace. 01407 - "mrpt::slam::CSensFrameProbSequence" and "mrpt::slam::CIncrementalMapPartitioner" modified to work with full 3D/6D poses rather than planar robot poses only. 01408 - Added a working example of EKF-SLAM including a sample dataset. 01409 - Tree structure modified for clarity, clean up of files at the root directory. 01410 - RawLogViewer: Added viewer of mrpt::slam::CObservationBearingRange. 01411 - Added a new method to compute spherical coordinates of a 3D point from a 6D pose (see mrpt::poses::CPose3D). 01412 - MRPT_ALWAYS_CHECKS_DEBUG is now enabled by default. 01413 - Added new matrix operations to employ them in a more efficient EKF implementation. 01414 - Changes all across the library to enable compilation in 64 bit targets (without warnings). 01415 - getCurrentTime now gives high-resolution time (usecs) in Linux. 01416 - Added the option "justOneOccupiedCellPerRay" to mrpt::slam::COccupancyGridMap2D. 01417 - Added new applications: 01418 - map-partition. 01419 - KF-SLAM. 01420 - Added new examples: 01421 - MRML/landmarkRawlogSimulator, a simulator of a robot with a 3D range-bearing sensor. 01422 - BUGS FIXED: 01423 - CSemaphore::waitForSignal now also works for an timeout=0 (no timeout). 01424 - In openCV_cross_correlation: wrong order of (v,u) coordinates! Have been replaced by (x,y) to prevent more errors. 01425 - Wrong calculation of mean in CGraphPartitioner::SpectralBisection. 01426 - Wrong calculations in "multiply_HCHt" 01427 - "dateTimeToString" gave wrong data. 01428 - Out of vector bound exception in RawLogViewer exporter to text files. 01429 - Wrong normalization of 3D vectors in generateAxisBaseFromDirection. 01430 01431 - DEC-2007: 01432 - Speed up in rendering of 3D ellipsoids by computing eigenvectors only once. 01433 - Implemented RO-SLAM with SOG (mrpt::slam::CBeaconMap) 01434 - Added a method to generate permutations of vectors (See utils::RandomGenerator). 01435 - Started RawLogViewer 2.1: Added a new module for laser scan animations. 01436 - Added a new cross-platform 3DSceneViewer application. 01437 - Deleted the old application x3DSceneViewer 01438 - New example: MRML/geometry3D 01439 - BUGS FIXED: 01440 - Wrong initialization of CMatrix from a CPoint3D 01441 - Wrong calculation of yaw/pitch/roll fields in CPose3D when composing poses. 01442 01443 <br><hr><br> 01444 <h2>Version 0.5.2 (Released December 26, 2007)</h2> 01445 - DEC-2007: 01446 - Release of RawLogViewer 2.0, the first portable (win32/linux-gtk) version. 01447 - Old win32 version "RawLogsViewer" removed from the repository! 01448 - GUI classes (CDisplayWindow, CDisplayWindow3D) have been rewritten in: 01449 - Windows: Native MSW API. 01450 - Linux: GTK2 01451 - New features to RawLogViewer (change sensor poses,...) 01452 - Added general abstract methods to CObservation for getting/setting the sensor pose. 01453 - Added to RawLogViewer: Import a directory of images as a rawlog. 01454 - utils::CDirectoryExplorer rewritten & ported to Linux. 01455 - BUG FIXED: 'system::sleep' was aborted by signals in Linux. It now resumes until the desired delay. 01456 - Linux implementation for CSerialPort. 01457 - RawLogViewer: ScanMatching module finished. 01458 - New class for landmark observations by bearing and range (See mrpt::slam::CObservationBearingRange). 01459 - Timestamps have been added to CAction's. 01460 - BUG FIXED: Invalid encoder info in CActionRobotMovement2D. 01461 - New methods added to CRawlog to enable a better encapsulation of the internal list of objects as "private". 01462 - NOV-2007: 01463 - BUG FIXED: CObservationGPS didn't load from CStream in Linux. Serialization version 1 is now portable. 01464 - Added the sprintf-like function "format" for std::string's. 01465 - Integration of xmlParser library within utils::CSimpleDatabase. 01466 - A new class for managing the custom USB board that interfaces SRF10 ultrasonic range finders. Class hwdrivers::CBoardSonars. 01467 - Class hwdrivers::CBoardENoses has been finished and tested with the real devices. 01468 - Many includes in "utils_defs.h" moved to those source files really requiring them, to speed up compilation. 01469 - Fixs to allow compiling using the free Borland C++ 5.5.1 compiler from CMake makefiles. 01470 - Added new sample for eNose board interface. 01471 01472 <h2>Version 0.5.1 (Released for BABEL, November 13, 2007)</h2> 01473 - NOV-2007: 01474 - BUG FIXED: math::generateAxisBaseFromDirection now returns all the three vectors normalized. 01475 - Implemented Sum of Gaussians (SOG) as a way to create the PDF of a beacon for RO-SLAM (in mrpt::slam::CBeaconMaps). 01476 - Added a new example to "samples/MRML": beaconRawlogSimulator. 01477 - Added a new class for interfacing an "e-Noses" board via USB, in hwdrivers::CBoardENoses. 01478 - OpenCV added as a monolithic, static linking library to avoid DLL dependencies (for Windows). 01479 - New wiki-based website. Old doxygen-based documentation headers (.h) removed. 01480 - BUG FIXED: Memory leaks in the MRPT class registration system and in utils::CTicTac have been removed (Using "Visual Leak Detector" it seems there are no more leaks by now...). 01481 - BUG FIXED: THROW_EXCEPTION_XXX macros redesigned to avoid eventual exceptions in wxWidgets applications. 01482 01483 - OCT-2007: 01484 - Methods "computeMatchingWith2D" modified for a sensible usage of the "const" modifier. 01485 - Changed mrpt::slam::CMetricMapsAlignmentAlgorithm::Align to avoid the warning "break strict-aliasing rules" about the CPosePDF**. 01486 - Added tutorial: Serialization. 01487 - Added new class mrpt::poses::CPose3DPDFSOG for Sum of Gaussians-representation of a 6D pose probability density. 01488 - Reactive Navigation Library ported from Win32 API to standard C++. 01489 - Resampling methods now are separated in a generic, static method bayes::CParticleFilterCapable::computeResampling. 01490 01491 <h2>Version 0.4 (Released for BABEL, October 13, 2007)</h2> 01492 - OCT-2007: 01493 - BUG FIXED: Loading grayscale images CImageFloat now forces to load images from files as grayscale always. 01494 - BUG FIXED: To allow inserting into gridmaps laser scans taken with the sensor bottom-up. 01495 - All the makefiles of MRPT has been moved to CMake. 01496 - SEP-2007: 01497 - Structure of "include" directory changed to include the prefix "<MRPT/...". This is for leading to a one-directory install into "usr/include" in Linux systems. 01498 - CSemaphore implemented for Linux using pthreads. 01499 - CDisplayWindow3D is now based on GLUT and works in Windows & Linux. 01500 - Added a new application by Antonio J. Ortiz de Galistea: a MonoSLAM demo. 01501 - Different PF resampling methods are now supported. See CParticleFilter::resample. 01502 - CParticleFilter now has a centralized structure for all the PF-related options. 01503 - BUG FIXED: CDisplayWindow2D now has an extra (global) thread to process OpenCV messages without the need for the application to call "waitForKey". 01504 - Added a new procedure into CMultiMetricMapPDF for expanding the potential range of observation likelihoods without having a numerical overflow. 01505 - Add Class for Sonar SRF10 Interface (AJOGD). 01506 - CImage now is a wrapper class over OpenCV. More image file types are supported now. 01507 - CDisplayWindow now completely portable between windows/Linux thorugh OpenCV. 01508 - AUG-2007: 01509 - BUG FIXED: In utils::CConfigFile. 01510 - Started new application RawLogViewer using wxWidGets for a portable version (windows/linux). 01511 - Added utils::getAllRegisteredClasses to obtain at runtime the list of all MRPT registered classes. 01512 - Started the porting towards "bakefiles" 01513 - A new function added to obtain the compilation date and the library version (including SVN). See utils::SystemUtils. 01514 - Started a new version of the application "RawLogViewer" in portable wxWidGets for linux compatibility!. 01515 - Borland C++ 5.5 not supported any more, due to a lot of internal compiler errors. We use now BCC version 6.0. 01516 - Range-Only SLAM will be integrated into existing SLAM classes through the new class mrpt::slam::CBeaconMap, now fully integrated into mrpt::slam::CMultiMetricMap. 01517 - A new class for integrating different PDF representations of beacons (mrpt::slam::CBeacon) and the corresponding map (mrpt::slam::CBeaconMap). 01518 - JUL-2007: 01519 - A new class of CAction for 6D movements (mrpt::slam::CActionRobotMovement3D). 01520 - CStream & CSerializable now have more consistent "const" declarations. 01521 01522 <hr> 01523 <h2>Version 0.3 (Released for BABEL v3.800, July 2007)</h2> 01524 01525 - JUL-2007: 01526 - A new class for Range-Only Localization (mrpt::slam::CRejectionSamplingRangeOnlyLocalization). 01527 - Range-Only SLAM is now supported with a new map class (mrpt::slam::CBeaconMap), which has been also integrated in mrpt::slam::CMultiMetricMap. 01528 - A new class for parsing messages from/to a USB FTDI device (hwdrivers::CInterfaceFTDIMessages). 01529 - Added a new class for 3D Point PDF representation as a SOG (poses::CPoint3DPFGSOG). 01530 01531 01532 <br><hr><br> 01533 <h2>Version 0.2</h2> 01534 01535 - JUN-2007: 01536 - From now on MRPT is updated through Subversion (SVN). 01537 - Start solving portability issues towards a full Linux support. 01538 - MAY-2007: 01539 - Included the makefile project for "Code::Blocks" compiler, for supporting Linux GCC C++ compiler. 01540 - FEB-2007: 01541 - BUG FIXED: In "CSerializable::duplicate()" 01542 - Added new config file-like interfaces. See utils::CConfigFileBase and derived classes. 01543 - Added utils::CStringList. 01544 - JAN-2007: 01545 - New fast image correlation method based on 2D FFT. See CImage::cross_correlation_FFT 01546 - 2D FFT functions added to utils::MATH 01547 - The class utils::CConfigFile now can read entries as "std::vector"'s. 01548 - New utilities added to utils::MRPT_OS for tokenizing strings. 01549 01550 <br><hr><br> 01551 <h2>Version ALFA 0.1 (Published with BABEL v3.0.0, Jan-2007)</h2> 01552 01553 - JAN-2007: 01554 - The classes "utils::CBitmapXX" have been removed, and BMP image format operations appropriately integrated into existing utils::CImage and utils::CImageFloat classes. 01555 - Now 3D scenes are supported through "opengl::COpenGLScene", objects in "mrpt::opengl" namespace, and an external 3D Scene viewer application for Windows. 01556 - DEC-2006: 01557 - Addition of TCP/IP sockets, through classes utils::CServerTCPSocket and utils::CClientTCPSocket, allowing serialization of MRPT objects through a TCP socket. 01558 - New classes in HWDRIVERS namespace allow using serial ports and interfacing GPS units. 01559 - A new interface utils::CCanvas has been defined for enabling drawing primitives to be implemented in graphical classes. 01560 - New class gui::CDisplayWindow for visualization of images in a GUI. 01561 - Portability issues solved for compatibility with Microsoft Visual Studio 2005 (VC8), including the new standard C++ library "secure" functions. 01562 - A new class "mrpt::slam::CMultiMetricMap" 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 "mrpt::slam::CHybridMetricMap" 01563 - NOV-2006: 01564 - The new Optimal Auxiliary Particle Filter has been implemented in "poses::CPosePDFParticles", and in "mrpt::slam::CMultiMetricMapPDF" 01565 - BUG FIXED: In matrix inversion, into class "math::CMatrixTemplateNumeric". 01566 - RANSAC method added for correspondences-pair lists, in "mrpt::slam::CICP::robustRigidTransformation" 01567 - OCT-2006: 01568 - The Dieter Fox's algorithm "KLD-sampling" for adative particle filter has been implemented in the class "poses::CPosePDFParticles" 01569 - Major changes in the way bayes::CParticleFilter works: Now there are four diferent particle filter algorithms defined. 01570 - New utils::MATH functions added (chi-square and normal quantiles, etc...) 01571 - A new probabilistic motion model has been added to "mrpt::slam::CActionRobotMovement2D", the particles draw process described in Thrun's 2006 book. 01572 - SEP-2006: 01573 - The Lu & Milios algorithm now works with any user-supplied matrix of pose constrains. See "mrpt::slam::CConsistentObservationAlignment". 01574 - A new generic matrix template has been created, "math::CMatrixTemplate" and "math::CMatrixTemplateNumeric", which are now the base for math::CMatrix and math::CMatrixD. 01575 - Template functions defined for dealing with STL's vectors: basic math operations, printing to screen,... in "utils::MATH" 01576 - The mrpt::slam::CICP algorithm now also deals with mrpt::slam::CLandmarksMap metric maps. 01577 - AUG-2006: 01578 - A new SLAM framework has been implemented in the main class mrpt::slam::CHierarchicalMappingFramework 01579 - A new class added for managing INI-like config files "utils::CConfigFile". 01580 - Hill-climbing algorithm "utils::CHillClimbing" added to the library. 01581 - Improved SIFT features detection, triangulation and matching in "mrpt::slam::CLandmarksMap" for pairs of stereo images. 01582 - JUN-2006: 01583 - New functions added to "poses::CPointPDFGaussian" for Bayesian fusion, correspondence likelihood,... 01584 - MAY-2006: 01585 - Introduction of "pixel to 3D" functions in vision 01586 - SIFT features extractor moved to vision 01587 - ABR-2006: 01588 - mrpt::slam::CLandmarksMap now works with SIFT features: loading from images, fusing,... 01589 - SIFT features extractor in "utils::CImage" 01590 - FEB-2006: 01591 - The class mrpt::slam::COccupancyGrid2D now uses 16bit for storing cell values, and many new options added. 01592 - Rao-Blackwellized Particle filters now supported in class mrpt::slam::CMultiMetricMapPDF 01593 - JAN-2006: 01594 - Landmarks-based maps now supported with mrpt::slam::CLandmarksMap 01595 - ZIP compression supported with the introduction of classes in the new namespace compress::zip. 01596 - Rao-Balckwellized particle filter mapping supported with mrpt::slam::CMetricMapBuilderRBPF 01597 - Points map are now fused considering the weights of points (mrpt::slam::CSimplePointsMap) 01598 - Definition of a new class mrpt::slam::CMetricMapBuilding for grouping map building methods. 01599 - Addition of a new class for 3D occupancy grid building. 01600 - New types of points map derived from mrpt::slam::CMetricMap. 01601 - DEC-2005: 01602 - New methods added to MRML, for circular robots paths planning. See the base class mrpt::slam::CPathPlanningMethod 01603 - The method by Lu & Milios for consistent maps alignment has been integrated into the MRML library, in the mrpt::slam::CConsistentObservationAlignment 01604 - The CObservation-derived classes has been modified to adhere to the "BABEL modules proposal for robotics architecture" (Technical report, dec.2005) 01605 - Metrics maps has been grouped using a common base class: mrpt::slam::CMetricMap 01606 - The spectral-based method for maps partitioning has been integrated into the MRML library, in the class mrpt::slam::CIncrementalMapPartitioner. 01607 - CObservationLaserRangeScan renamed as CObservation2DRangeScan. 01608 - NOV-2005: 01609 - New types of observations added (mrpt::slam::CObservation descendant classes) for images (from a camera) and for sonar readings. 01610 - OCT-2005: 01611 - New class added: A simple SLAM method for 2D localization and simple, metric maps building (non-hierarchical global maps). See mrpt::slam::CSimple2DSLAM. 01612 - Addition of "streaming versioning" for mrpt::utils::CSerializable classes. 01613 - A new observation type has been introduced, the mrpt::slam::CObservationIRRing. 01614 - Introduction of 3D poses using 4x4 transformation matrices and yaw/pitch/roll angles. 01615 - Polymorphism mechanishs for mrpt::utils::CSerializable derived classes and correct streaming using "<<" and ">>" operators has been provided through a set of "#define"'s and functions. See CSerializable.h 01616 - SEP-2005: 01617 - Reactive Navigator totally rewritten for integration into MRPT applications repository (See MRPT::reactivenav::CReactiveNavigationSystem). 01618 - Added MRPT applications repository section. 01619 - AUG-2005: 01620 - Particle filters basic algorithm added to UTILS library. 01621 - Bitmap classes (utils::CBitmap) totally rewritten for a sensible use of classes inheritance. 01622 - JUN-2005: 01623 - First version of the library! there are a few classes for matrix manipulation, 2D point map management, and an implementation of the ICP algorithm. 01624 01625 */ 01626
Page generated by Doxygen 1.7.1 for MRPT 0.9.4 SVN: at Mon Jan 10 23:33:19 UTC 2011 |