00001 /* +---------------------------------------------------------------------------+ 00002 | The Mobile Robot Programming Toolkit (MRPT) C++ library | 00003 | | 00004 | http://mrpt.sourceforge.net/ | 00005 | | 00006 | Copyright (C) 2004-2008 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://babel.isa.uma.es/mrpt/" target="_blank">here</a>.</i></p> 00033 00034 00035 <a name="0.7.1"> 00036 <h2>Version 0.7.1: Released 17-Aug-2009 (SVN 1144). </h2></a> 00037 - New methods in mrpt::math to compute the covariance from a list of samples (See mrpt::math::cov,...) 00038 - Small optimizations to random generation of samples from multivariate Gaussians. 00039 - 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 00040 - New efficient operators "+=" to compose CPose2D and CPose3D objects. 00041 - New methods in matrix classes: 00042 - add_Ac 00043 - substract_Ac 00044 - Slightly more efficient and more correct computation of covariance matrix in mrpt::scan_matching::leastSquareErrorRigidTransformation. 00045 - 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. 00046 - 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". 00047 - <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. 00048 - CMRPTImage --> CImage 00049 - CMRPTImageFloat --> CImageFloat 00050 - CMRPTCanvas --> CCanvas 00051 - CMRPTMessage --> CMessage 00052 - 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). 00053 - Embedded lib3ds 1.3 (Library Author: Jan Eric Kyprianidis), for use in all platforms. 00054 - PTGs can be created through a class factory. See mrpt::reactivenav::CParameterizedTrajectoryGenerator::CreatePTG. 00055 - PTG classes rewritten and greatly simplified by using standard STL containers. 00056 - New utility mrpt::utils::TParameters. 00057 - mrpt::math::CPolygon is now a wrapper around a mrpt::math::TPolygon2D, implementing serialization, backwards compatible with old code. 00058 - Added new header "mrpt/reactivenav/motion_planning_utils.h" with global utility functions for reactive navigation and motion planning. See mrpt::reactivenav. 00059 - New methods in mrpt::slam::CPointsMap classes to set all the points at once (setAllPoints). 00060 - (UNCOMPLETED!!) New robot navigation algorithm in the mrpt-reactivenav library: PTG-based Rapidly-exploring Random Tree (PRRT) method. See mrpt::reactivenav::CPRRTNavigator 00061 - Smart pointers are now thread safe through atomic increment/decrement operations. 00062 - New class for atomic operations. See mrpt::synch::CAtomicCounter 00063 - Support for custom menu entries in the popup menu of mrpt::gui::CDisplayWindowPlots. See example displayPlots and class CDisplayWindowPlots. 00064 - Compilation under MinGW completely fixed and tested, including OpenCV and wxWidgets. 00065 - Added == operator to fixed-size matrices and some CPosePDF* classes. 00066 - Added STL containers utility "erase_return_next" to stl_extensions.h 00067 - Implemented missing converter from SOG PDFs in CPose3DPDF::createFrom2D. 00068 - Windows Installer: Added missing links for some GUI applications. 00069 - Added several insertion-related methods in some mrpt::opengl classes. 00070 - (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. 00071 - New examples: 00072 - fbo_render_test 00073 - New programs: 00074 - mono-slam: Monocular SLAM (experimental state, UNCOMPLETED!). 00075 - prrt-navigator-demo: A GUI to experiment with the new PTG-based Rapidly-exploring Random Tree (PRRT) method (UNCOMPLETED!). 00076 - BUG FIXES: 00077 - 2D ellipses won't render properly in mrpt::opengl::CEllipsoid. 00078 - Potential static/dynamic library errors when linking against Boost. (Thanks Philipp Robbel for noticing!) 00079 - CColouredPointsMap will contain inconsistent data after calling insertPoint() or many other methods. 00080 - CPose3D might accept angle values out of the range ]-pi,pi]. Thanks to Philipp Robbel for noticing! 00081 - COccupancyGridMap2D::laserScanSimulator: Simulation of scan rays ending in free space were not marked as invalid. 00082 - 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). 00083 - ransac_detect_2D_lines (and probably all RANSAC methods) may raise exceptions for some degenerate cases. Thanks to Joel Mckay for reporting and debugging. 00084 - Compile errors when using automatic serialization of the STL containers "set" and "multiset". 00085 - NULL pointer access when de-serializing an object of a non-registered class. 00086 - 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. 00087 - rbpf-slam: Images "mapping_%05i.png" files were vertically flipped. 00088 - Won't fuse two point maps due to an error in CSimplePointsMap::fuseWith. Thanks to Wilian França Costa for the patch. 00089 - Fixed a little bug in mrpt::opengl::CEllipsoid ray tracing. 00090 - Wrong computation of ICP covariance. Thanks to Wilian França Costa for the patch. 00091 00092 <br><hr><br> 00093 00094 <a name="0.7.0"> 00095 <h2>Version 0.7.0: Released 27-May-2009 (SVN 1042). </h2></a> 00096 - <b>IMPORTANT CHANGES</b>: 00097 - Old deprecated methods removed. 00098 - Changes which may require modifications in user's code: 00099 - 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). 00100 - 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. 00101 - A few matrix arithmetic methods renamed for consistency: Now all start with "multiply_XXX", "add_XXX", etc... 00102 - Some constructors in poses,points & matrices marked as "explicit" to avoid unintended conversions. 00103 - 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. 00104 - All covariance matrices passed to a new matrix class with compile time fixed-size, with dramatic speed ups. 00105 - Data declarations in geometry.h have been moved to lightweight_geom_data, although TPolygons and TObjects are not really lightweight (Pablo). 00106 - mrpt::vision now integrates SURF features (Requires OpenCV 1.1.0, integrated by Francisco-Angel Moreno), and new interest point descriptors. 00107 - New hardware supported: 00108 - IP cameras via rtsp:// protocol (due to support of FFmpeg libraries). 00109 - xSens IMU, MTi devices (Built-in version of XSens library). 00110 - 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... 00111 - 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. 00112 - Efficient geometry structures and dozens of new geomtry methods (mainly by Pablo Moreno). 00113 - Geometry methods improved, corrected and expanded in mrpt::math (by Pablo Moreno). See the list of changes below. 00114 - A more powerful serialization engine capable of handling arbitrarily complex data types built with STL containers and MRPT classes. See the <a href="http://babel.isa.uma.es/mrpt/index.php/Serialization" > wiki page</a>. 00115 - Several bug fixes. 00116 - New programs: 00117 - camera-calib: A new GUI program (fused of old "camera-calib" & "camera-calib-gui") for camera calibration with live camera capture. 00118 - features-matching: A new computer vision demo application. 00119 - 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. 00120 - Many new examples: 00121 - createVideoFile. 00122 - data-association-demo 00123 - dijkstra-example 00124 - gauss_img_filtering 00125 - grab_camera_ffmpeg 00126 - optimize_pose_network 00127 - polyhedronIntersection: Demonstration of the capabilities of polygon intersection in 3D (Pablo). 00128 - polygonSplit: Polygon split (Pablo). 00129 - ransac-demo-applications 00130 - ransac-demo-plane3D 00131 - smart_pointers_test 00132 - stl_containers_serialize 00133 - tuMicos 00134 - type_name 00135 00136 - Detailed list of changes: 00137 - 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. 00138 - New powerful method in CPolyhedron to create different types of polyhedra using a regular base. Many existing methods have been adapted to this interface. 00139 - Added support for base64 encoding & decoding. See mrpt::system::decodeBase64, mrpt::system::encodeBase64 00140 - Polyhedra intersection demo improved with twelve additional pairs of polyhedra, including a random one (Pablo). 00141 - Ray tracing now works with CEllipsoid (Pablo). 00142 - Ray tracing now works with CCylinder (Pablo). 00143 - mrpt::utils::CSimpleDatabase interface converted to smart pointers. 00144 - Added "hold_on" and "hold_off" to mrpt::gui::CDisplayWindowPlots. 00145 - New class for 2D range-bearing SLAM. See mrpt::slam::CRangeBearingKFSLAM2D 00146 - CGeneralizedCylinder now works internally using CPose3D instead of TPoint3D. 00147 - Fixed a bug in the calculation of the distance between TPoints3D. 00148 - 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 00149 - 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". 00150 - rawlog-grabber can record video from IP-cameras thru FFMpeg via the common camera class mrpt::hwdrivers::CCameraSensor. 00151 - (paco) Bumblebee stereo camera interface mrpt::vision::CStereoGrabber_Bumblebee updates to the lattest vendor's API for Win32 (Francisco Angel Moreno). 00152 - mrpt::hwdrivers::CActivMediaRobotBase extended to read sonar data, bumpers and enable the guidance of the robot through a joystick attached to the computer. 00153 - Ray tracing has been considerably sped up. 00154 - New methods to mrpt::math::CHistogram to ease the computation of PDFs. 00155 - New methods to control section visibility in mrpt::opengl::CGeneralizedCylinder. 00156 - CDisplayWindowPlots now have templatized methods. 00157 - Added missing 2D point PDF. See mrpt::poses::CPoint2DPDF. 00158 - 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. 00159 - CGeneralizedCylinder now supports ray tracing (Pablo). 00160 - Added a non-optimal method to split polygons in theirs convex components, including a simple demo (Pablo). 00161 - Matrices now have hard-coded optimized implementations for some 2x2 and 3x3 operations (eg. determinant, inverse) 00162 - (experimental!!) A new generic method, mrpt::slam::data_association, which implements NN (nearest neightbor) and JCBB (Joint Compatibility Branch & Bound). 00163 - Additional methods to retrieve data from mrpt::opengl::CGeneralizedCylinder (Pablo). 00164 - Added some methods to mrpt::math::CMatrixTemplate (Pablo). 00165 - New methods in the geometric classes and in mrpt::opengl::CPolyhedron (Pablo). 00166 - New methods in mrpt::utils::CImage: scaleImage, rotateImage, ... 00167 - Added new malloc/realloc/free equivalents for aligned memory. See mrpt::system::os::aligned_malloc 00168 - New application: <i>features-matching</i>, for demonstrating and evaluating the performance of several image feature detectors & descriptors. See <a href="http://babel.isa.uma.es/mrpt/index.php/Application:features-matching" >its wiki page</a>. 00169 - mrpt::registerAllClasses mustn't be called manually anymore: it's always automatically executed at startup. 00170 - Added a generic mechanism to obtain the (compiler independant, unlike typeid) name of a type. See mrpt::utils::TTypeName, and the <a href="http://babel.isa.uma.es/mrpt/index.php/Metaprogramming:Type_name_to_string" >documentation on the wiki</a>. 00171 - 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 00172 - Small changes in polyhedron intersection demo (Pablo). 00173 - 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). 00174 - Added methods to extract vectors of mrpt::math::TObject2D and mrpt::math::TObject3D by type (Pablo). 00175 - More mrpt::opengl classes adapted to mrpt::math::TPoint3D and other geometric lightweight types (Pablo). 00176 - Maps of landmarks now reuse the feature descriptors defined in mrpt::vision::CFeature. See mrpt::slam::CLandmarksMap 00177 - Geometric lightweight types have been serialized (JL/Pablo). 00178 - CSetOfLines class has been almost completely redone, although mantaining its former interface (Pablo). 00179 - mrpt::opengl::CPolyhedron::rayTrace now works properly (Pablo). 00180 - mrpt::vision::CFeatureExtraction now has a more uniform interface which separates interest point detectors and descriptors (Francisco-Angel Moreno & Jose Luis) 00181 - New feature detector: Intensity-domain spin images (SpinImage). See mrpt::vision::CFeatureExtractor 00182 - 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). 00183 - Added a CSparseMatrix template, which relies on std::map (Pablo). 00184 - Added support for intersections in vectors and generic objects (Pablo). 00185 - Minor change in mrpt::poses::CPose3D::composePoint for efficiency purposes (Pablo). 00186 - Added methods to estimate lines and planes using linear regression (Pablo). 00187 - Added method mrpt::math::covariancesAndMean to get covariances and mean of any set of points in N-dimensions (Pablo). 00188 - 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 00189 - New consistent pose-network optimizers (Experimental!): 00190 - Based on Levenberg-Marquardt. See mrpt::slam::optimizePoseGraph_levmarq 00191 - A new generic implementation of Dijkstra algorithm for shortest paths on a directed, possibly weighted, graph. See mrpt::math::CDijkstra 00192 - New centralized class for random number generators: mrpt::random::CRandomGenerator . Old methods marked as deprecated. 00193 - Random Generators rewritten as a class for thread-safety: Each object has its own internal state for the PRNG. 00194 - New base class mrpt::utils::CProbabilityDensityFunction for all PDF classes. 00195 - Added bi-directional conversions between 3D poses and quaternion. See mrpt::math::CQuaternion and mrpt::poses::CPose3D::getAsQuaternion 00196 - A new common base class for all GUI windows. See mrpt::gui::CBaseGUIWindow 00197 - Matrix constructors from poses and points moved from CMatrix & CMatrixD to CMatrixTemplateNumeric for greater utility. 00198 - Added unary "-" operators to mrpt::poses::CPose3D and mrpt::poses::CPose2D for obtaining the inverse poses quickly. 00199 - Removed deprecated methods: 00200 - From mrpt::utils::CImage: loadFromBMP, loadFromJPEG, saveToBMP, saveToJPEG. Replaced by saveToFile and loadFromFile. 00201 - From mrpt::slam::CRawlog and its iterators: isAction. Replace by getType 00202 - 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 00203 - 3D windows has a method to obtain the rendered image for user processing as desired. See mrpt::gui::CDisplayWindow3D::captureImagesStart 00204 - Added copy constructors for mrpt::math::TObject2D and mrpt::math::TObject3D to allow use in containers (Pablo). 00205 - mrpt::opengl::CPolyhedron and mrpt::opengl::CGeneralizedCylinder classes accustomed to the new geometric methods (Pablo). 00206 - Added non-secure methods to access geometric object's coordinates (like in mrpt::math::TPoint2D) as an array (Pablo). 00207 - Intersections in mrpt::math now work properly in almost every case (Pablo). 00208 - Added a signWithZero function in utils_defs (Pablo). 00209 - Added methods in mrpt::opengl::CPolyhedron to work with sets of mrpt::math::TPolygon3D (Pablo). 00210 - Added a new test for pragma pack (Pablo). 00211 - Added a video file writer from a sequence of images. See mrpt::vision::CVideoFileWriter 00212 - Deleted old obsolete classes from mrpt::vision: CGaussianConvolutionKernel, CImageConvolution 00213 - New utilities added to mrpt::utils::metaprogramming 00214 - 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://babel.isa.uma.es/mrpt/index.php/RANSAC_C++_examples" > examples</a>. 00215 - 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. 00216 - Two new gz-compression methods: mrpt::compress::zip::compress_gz_data_block and mrpt::compress::zip::decompress_gz_data_block 00217 - Load/Save of matrices as text files moved from mrpt::math::CMatrixTemplateNumeric to mrpt::math::CMatrixTemplate. 00218 - mrpt::scan_matching::robustRigidTransformation (and the program grid-matching) dynamically determine the number of RANSAC iterations by default. 00219 - Exceptions now show a more detailed stack trace. See mrpt::system::stack_trace (requires wxWidgets and building in "Debug"). 00220 - Added methods to retrieve polygons (as defined in geometry.h) for some graphical classes. 00221 - 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). 00222 - Geometry methods improved, although still not fully functional. 00223 - Added generic RANSAC implementation. See mrpt::math::RANSAC_Template, and <a href="http://babel.isa.uma.es/mrpt/index.php/RANSAC_C++_examples" > examples</a>. 00224 - Edit CPtuHokuyo rawlog-grabber profile to work with CTuMicos. 00225 - New classes for Micos Tu DT-80. See class mrpt::hwdrivers::CTuMicos. 00226 - mrpt::system::deleteFilesInDirectory now has a uniform behavior in all platforms, and do not raise "consoles" in Windows GUI applications. 00227 - lightweight_geom_data (.h and .cpp) added to store some 3D types which require little storage (Pablo Moreno). 00228 - mrpt::math::geometry methods heavily improved (not fully implemented) (Pablo Moreno). 00229 - COpenGLStandardObject now includes some new methods (Pablo Moreno). 00230 - Minor changes in other OpenGL classes (Pablo Moreno). 00231 - Fixed a bug which caused CMyOpenGLCanvasBase to crash in some cases. 00232 - BUG FIXES: 00233 - RawLogViewer didn't change the label of sensors when multiple observations of the same name were in one Sensory Frame. 00234 - Visual Leak Detector didn't work for multi-threaded applications. 00235 - Fixed failing mrpt::system::directoryExists when using a trailing "/" 00236 - Fixed dealing with image assignments when the source is externally stored in mrpt::utils::CImage. 00237 - CMetricMapBuilder::loadCurrentMapFromFile won't load a GZ-compressed .simplemap file (Reported by Zoltan Tuza). 00238 - Bad serialization of grayscale image origin (Francisco Moreno). 00239 - rbpf-slam won't show the live 3D view (Thanks Yuan Fang for reporting). 00240 - There was no way to retrieve the main viewport's camera parameters for CDisplayWindow3D (Thanks Vijay Somers). 00241 - mrpt::utils::CImage::getAsMatrix didn't return intensity values in the normalized range [0,1] as documented. 00242 - mrpt::utils::CMemoryStream: won't read the last byte of the memory block; won't assign an external memory block with assignMemoryNotOwn 00243 - Compile error in Linux with libdc1394 >=2.0.0 but <2.2.0 (Thanks Allemant David for reporting). 00244 - Compile errors when compiling in Linux without OpenGL (Thanks Michael Lisowski for reporting). 00245 - 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>). 00246 - SceneViewer3D does not save the menu image when saving a snapshot from the menu. 00247 - mrpt::gui::CDisplayWindow now correctly detects key-strokes. 00248 - mrpt::gui::CDisplayWindow now does not flick (on Win32) anymore when updating the image. 00249 - mrpt::system::vectorToBinaryFile crashes for vectors of zero-length. 00250 - 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>). 00251 - mrpt::poses::CPose3DInterpolator::getPreviousPoseWithMinDistance won't return the first pose in the path as a valid result. 00252 - mrpt::system::joinThread could block in Windows if the thread was already closed. 00253 - Fixed pragmas in mrpt-hwdrivers headers, which may lead to undefined functins while linking against hwdrivers in Visual Studio, non CMake-based projects. 00254 - Solved wrong name of .lib for mrpt-xsens under Windows, for Debug build (Thanks Vicente Arevalo!). 00255 - mrpt::utils::CSimpleDatabase::loadFromXML won't load any valid XML file. 00256 - Fixed two extremely unusual cases where a mrpt::poses::CPose3D could not be properly created from its homogeneous matrix. 00257 00258 00259 00260 <br><hr><br> 00261 <a name="0.6.5"> 00262 <h2>Version 0.6.5: Released 8-Feb-2009.</h2></a> 00263 - 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://babel.isa.uma.es/mrpt/index.php/3D-ICP_Example" >tutorial page</a>. 00264 - Added class COpenGLStandardObject to render custom objects using OpenGL primitives like GL_TRIANGLES or GL_QUAD_STRIP (Pablo Moreno). 00265 - CText now accepts color changes (Pablo Moreno). 00266 - Added "contains" method for CSetOfObjects (Pablo Moreno). 00267 - Added methods for loading matrices from MATLAB-like strings. See mrpt::math::CMatrixTemplate<T>::fromMatlabStringFormat and mrpt::utils::CConfigFileBase::read_matrix. 00268 - New method for computing the mahalanobis distance. See mrpt::math::mahalanobisDistance 00269 - Levenberg-Marquardt and many other functions in mrpt::random converted into templates. 00270 - Added some minor methods to graphic classes, especially CSetOfLines (Pablo Moreno). 00271 - 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. 00272 - 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). 00273 - Added some classes to mrpt::opengl namespace (Pablo Moreno): 00274 - CAngularObservationMesh to represent a 3D world obtained from a set of traced rays. 00275 - CCylinder to represent a cylinder, cone or truncated cylinder. 00276 - CGeneralizedCylinder to represent a generalized cylinder with an axis roughly perpendicular to the Z coordinate. 00277 - CPolyhedron to represent any object without curves. Includes methods to create common polyhedron, although still lacks some geometric methods. 00278 - CRenderizable::setColor method now works properly (affecting every child) when used in a CSetOfObjects or CSetOfTriangles (Pablo Moreno). 00279 - Added method mrpt::CMatrixTemplateNumeric::rank to calculate the rank of a matrix (Pablo Moreno). 00280 - 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 00281 - Header files defining the mrpt fonts (used in mrpt::utils::CCanvas) have been removed from the external headers and are internal now. 00282 - OpenGL objects now have a scale factor. See mrpt::opengl::CRenderizable::setScale 00283 - Added type mrpt::math::CMatrixLongDouble for matrices of "long double" (becomes "double" if the compiler does not suppor them). 00284 - New namespaces: 00285 - mrpt::vision::pinhole with functions related to camera projection models. 00286 - mrpt::utils::metaprogramming for grouping the metaprogramming classes. 00287 - Points and poses constructors from other classes that imply a loss of information are defined as explicit, e.g. CPose3D -> CPose2D, etc... 00288 - Fixed unnecessary link dependencies on 3ds,zlib & ann libs when linking as DLL in Windows. 00289 - Quick method mrpt::opengl::COpenGLScene::saveToFile to save 3D scenes. 00290 - New method for automated camera calibration: mrpt::vision::checkerBoardCameraCalibration 00291 - Important changes to improve the design of mrpt::opengl classes: "render" method is "const", more set/get methods instead of public members, etc. 00292 - New exception class mrpt::utils::CExceptionEOF, used to distinguish between normal and erroneous EOFs found while de-serializing objects from a stream. 00293 - Added method for RTK GPS path reconstruction: mrpt::topography::path_from_rtk_gps 00294 - New math methods: mrpt::math::unwrap2PiSequence, mrpt::math::averageWrap2Pi 00295 - Added template function mrpt::utils::find_in_vector for searching an element in any std::vector container (like "find" in other containers). 00296 - New interpolation methods for 1D functions: mrpt::math::interpolate2points, mrpt::math::leastSquareLinearFit. 00297 - CStream::printf now correctly returns an "int" instead of "void". 00298 - Types vector_XXX moved from global to "mrpt" namespace. 00299 - New color types mrpt::utils::TColor & mrpt::utils::TColorf. 00300 - Added support for exclusion areas to mark sensed point as invalid in laser scanners. See C2DRangeFinderAbstract::loadExclusionAreas 00301 - New method CPose3D::composePoint for more efficient 3D pose+point composition. 00302 - New examples: 00303 - icp3D: Demonstration of usage for 3D-ICP. 00304 - rayTrace: Demo of 3D ray tracing (Pablo Moreno). 00305 - leastSquares: Demonstration of linear least squares interpolation. 00306 - SceneViewer3D: 00307 - New menu action "Take snapshot" (F2). 00308 - RawLogViewer: 00309 - New combo-box for selecting among different, automatically detected paths for external images. For example, this allows quickly changing between rectified and original images. 00310 - All I/O file operations now support the gz-compressed format. 00311 - Edit dialog: Support for multiple selections instead of the old combos. 00312 - Menu "regenerate GPS" timestamps now allows operating over several sensor labels at once. 00313 - "Raw Map" module: Now builds 3D maps from sequences with 3 RTK GPS. 00314 - Support for configuration blocks in rawlogs. See mrpt::slam::CRawlog::getCommentTextAsConfigFile 00315 - Many improvements in the CMake build system for Linux systems, as part of the Fedora package review process (Thanks to Mamoru Tasaka). 00316 - BUG FIXES: 00317 - Error when compiling without GL/GLUT under Linux (Thanks to Chun-Wei for reporting). 00318 - 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>). 00319 - mrpt::utils::ObjectToString won't really save the object as a string. 00320 - mrpt::utils::format now works for strings of arbitrarily large lengths. 00321 - Visual Studio: Exception when mrpt::utils::format tries to generate a too long string. 00322 - Wrong name of mrpt-zlib libs when compiling without wxWidgets and as DLL. 00323 - 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). 00324 - CPose3DInterpolator: Solved spureous transitions when "yaw" crosses the +-PI threshold. 00325 - RawLogViewer: Comments text block was lost after some edit operations. 00326 - 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)". 00327 - 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>. 00328 00329 00330 <br><hr><br> 00331 <a name="0.6.4"> 00332 <h2>Version 0.6.4: Released 20-Dec-2008 (SVN: 696).</h2></a> 00333 - Full support for compiling all the libraries as DLLs under Windows. 00334 - Topography helper methods are now grouped in a new namespace: mrpt::topography 00335 - New class mrpt::utils::CConsoleRedirector for redirecting all the output from std::cout / std::cerr to a log file. 00336 - New methods in mrpt::utils::CDebugOutputCapable for making easy reporting messages to both the console and a log file. 00337 - New boolean matrix classes: mrpt::math::CMatrixBool and mrpt::math::CMatrixB 00338 - mrpt::opengl container classes now have a templatized getByClass<>() method. 00339 - New interface class for generic PTU called CPtuBase. (Jose Raul Ruiz Sarmiento) 00340 - 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) 00341 - Fixed the destination of MRPTConfig.cmake in "make install" (and debian packages) such CMake can now automatically find MRPT without asking the user. 00342 - Added the target "make uninstall" for Linux/Unix systems. 00343 - New predefined 3D objects (By Miguel Angel Espada Bernal). See http://babel.isa.uma.es/mrpt/index.php/Predefined_3D_Objects 00344 - Added mime type files for installation in Linux systems (FreeDesktop-compatible, e.g. KDE, Gnome). 00345 - Created test targets. Use: "make", "make test" 00346 - Better portability with new HAVE_XXX entries in the "config.h" file. 00347 - Compilation with MinGW/GCC under Windows now supported. Refer to the <a href="http://babel.isa.uma.es/mrpt/index.php/Guide:Installing_MinGW_(GCC_for_Windows)" > guide on the wiki </a>. 00348 - 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://babel.isa.uma.es/mrpt/index.php/Occupancy_Grids" >the gridmaps tutorial</a>. 00349 - 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. 00350 - New class for pixel color retrieval with sub-pixel accuracy from images with transformed coordinates. See mrpt::utils::CMappedImage 00351 - New image processing operations: rectify, Median and Gaussian filter, etc... In mrpt::utils::CImage. 00352 - New method to merge several multivariate Gaussians in a Gaussian mixture (SOG) by minimizing the KL-divergence. See mrpt::poses::CPosePDFSOG::mergeModes. 00353 - Application SceneViewer renamed to SceneViewer3D to solve the Debian bug <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505272" > #505272 </a>. 00354 - New class mrpt::opengl::CSetOfTexturedTriangles for arbitrary shapes in 3D scenes with textures (by Vicente Arevalo). 00355 - Preview of image capture is posible in rawlog-grabber, thru new option in mrpt::hwdrivers::CCameraSensor. 00356 - 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. 00357 - New methods in matrix classes (and for vectors in mrpt::math::loadVector) for initializing directly from const C arrays. 00358 - RawlogViewer: 00359 - Many small improvements in laser & image animations. 00360 - New menu commands for transforming rawlogs, manipulating gps data, etc... 00361 - rawlog-grabber: 00362 - 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. 00363 - Support for high-speed & high-resolution IEEE1394 cameras through the class mrpt::hwdrivers::CCameraSensor -> grabber_type = dc1394. 00364 - New examples: 00365 - ptuDPerception: Example of use performs a simple scan. 00366 - ptuHokuyo: A demostration of how coordinate ptu and hokuyo for obtain a map of points that we show using a opengl window. 00367 - sog-merge: Algorithm for merging SOG pose pdfs. 00368 - pioneerRobotDemo: A demonstration of connection to a Pioneer robot (ActiveMedia Robotics) and some data requests. 00369 - gps-coordinates: Computation of XYZ local coordinates between two precise GPS measurements. 00370 - New applications: 00371 - grid-matching: A demonstration of algorithms for occupancy grid map matching. See the <a href="http://babel.isa.uma.es/mrpt/index.php/Applications" >application page</a>. 00372 - 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). 00373 - BUG FIXES: 00374 - removeObject didn't work in mrpt::opengl classes. 00375 - mrpt::utils::CConfigFile reported keys as non-existing if they existed but the actual value was an empty string. 00376 - occupancy grid map: Potential seg.fault when inserting a laser scan with the first range being invalid. 00377 - color gradient in mrpt::opengl::CPointCloud was lost with time when color_from_z=true. 00378 - mrpt::system::extractFileExtension flag for ignore gz extensions didn't work. 00379 - Serialization is now compatible between systems with different endianness. 00380 - 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. 00381 - Hopefuly fixed all wrong calculations of very precise (x,y,z) coordinates from latitude, longitude and height, in mrpt::slam::CObservationGPS. 00382 - Wrong data grabbed from xSens IMU: Gyroscope data saved as XYZ velocities. In mrpt::hwdrivers::CIMUXSens 00383 - Possible lock when reading from a serial port from two different objects mrpt::hwdrivers::CSerialPort 00384 - mrpt::system::os::getch: Now really does NOT wait for an enter, but just one keystroke in Linux. 00385 - mrpt::system::extractFileName didn't work for filenames already without an extension. 00386 - mrpt::utils::CMemoryChunk led to segmentation faults since the re-implementation with smart pointers. 00387 - Wrongly report missing parser for de-serializing a mrpt::slam::CSimplePointsMap object in the lastest binary format. 00388 - OpenGL render system had an inconsistence with the internal MRPT representation of 3D objects (by Pablo Moreno Olalla). 00389 00390 <br><hr><br> 00391 <a name="0.6.3"> 00392 <h2>Version 0.6.3: Released 23-Oct-2008.</h2></a> 00393 - Updated "INSTALL-COMPILE.html" 00394 - mrpt::gui windows can now be used also from user GUIs. This was previously possible from console apps only. 00395 - Supports compiling without OpenCV. 00396 - BUG FIXES: 00397 - 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>). 00398 - Fixed possible compiling errors related to Boost (Thanks Xuan Vu!). 00399 - Wrong headers in some embedded jpeglib sources (Thanks Hai Li!). 00400 00401 <br><hr><br> 00402 <a name="0.6.2"> 00403 <h2>Version 0.6.2: Released 21-Oct-2008.</h2></a> 00404 - <b>IMPORTANT CHANGES</b>: 00405 - All metric maps now accept full 6D poses for evaluating observation likelihood, and rbpf-slam now always uses internally 6D poses. 00406 - mrpt::vision now integrates SIFT features computation thru Hess' C library (http://web.engr.oregonstate.edu/~hess/) (by Francisco Angel Moreno). 00407 - Many bug fixes, and new samples and applications. 00408 00409 - Detailed list of changes: 00410 - All metric maps now accept full 6D poses for evaluating observation likelihood. 00411 - Added new macros for easier RTTI: IS_CLASS and IS_DERIVED. 00412 - New sensor class compatible with rawlog-grabber: A camera image grabber. See mrpt::hwdrivers::CCameraSensor. 00413 - xSens IMU MTi now works on both Windows & Linux with the new xSens software sources. 00414 - mrpt::hwdrivers::CIMUXSens now asks the IMU for calibrated acc. & gyr. data as well. 00415 - New methods in mrpt::math. 00416 - Linux & gcc only: Use --as-needed to avoid executables depending on useless .so libraries. 00417 - mrpt::gui::CDisplayWindow3D now can save the render canvas directy as a sequence of images, which helps to create videos from real-time animations. 00418 - mrpt::bayes::CParticleFilterCapable::computeResampling now implements all 4 resampling algorithms. 00419 - mrpt::vision now integrates SIFT features computation thru Hess' C library (http://web.engr.oregonstate.edu/~hess/) (by Francisco Angel Moreno). 00420 - mrpt::math::CMatrixTemplateNumeric::loadFromTextFile: Lines starting with '%' or '#' are interpreted as comments and ignored. 00421 - New methods in mrpt::utils::CImage for fast flip and Red-Blue swap. 00422 - More efficient capture of video in mrpt::vision::CImageGrabber_OpenCV (by Vicente Arevalo). 00423 - Applications renamed for consistency: 00424 - "pf-localization" 00425 - "rawlog-grabber" 00426 - 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. 00427 - Boost libraries are required for compiling some parts of MRPT. Follow the updated instructions in http://babel.isa.uma.es/mrpt/index.php/Building_and_Installing_Instructions. 00428 - mrpt::utils::CReferencedMemBlock redesigned: it was too obscure, now it's based on a simpler stlplus::smart_ptr 00429 - mrpt::utils::CFileOutputStream & mrpt::utils::CFileInputStream now has default constructors and "open" methods. 00430 - mrpt::opengl::CPlanarLaserScan implemented. 00431 - mrpt::slam::COccupancyGridMap2D: Simulator of laser scans now includes an optional noise in bearing angles. 00432 - rbpf-slam: 00433 - 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. 00434 - RawLogViewer, changes: 00435 - Proper display of IMU observations with all their data fields. 00436 - Dialog "Edit" now also processes files gz-compressed. 00437 - Dialog "Motion model" allows modification of a part of the rawlog only. 00438 - New examples: 00439 - feature_extraction: Test for image feature detection using KLT, Harris and SIFTs. 00440 - resampling-test: Particle filtering resampling schemes. 00441 - New applications: 00442 - ro-localization: Range-Only Localization with particle filters. See <a href="http://babel.isa.uma.es/mrpt/index.php/Applications" >its wiki page</a>. 00443 - simul-grid: A command-line application to simulate rawlogs of laser scans using a world modelled by a grid map. 00444 - 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://babel.isa.uma.es/mrpt/index.php/Applications" >the wiki</a>. 00445 - BUGS FIXED: 00446 - Link errors in examples if paths have blank spaces. 00447 - 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>). 00448 - 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>). 00449 - USB laser scanner data acquisition: wrong bit mask in mm mode. 00450 - rawlog-grabber: Loss of 1 observation per grabbing period fixed. 00451 - mrpt::utils::CFileStream: Error when opening a file for append (fomAppend) and the file didn't exist. 00452 - mrpt::slam:COccupancyGridMap2D: fixed marking as occupied cells at the end of truncated rays when shorter than the "maxDistanceInsertion". 00453 - mrpt::vision::CImageGrabber_OpenCV didn't report an error when reaching the end of a video file. 00454 - Timestamps were lost in mrpt::slam::CAction 's when copied. 00455 - Linker errors when compiling an external application using MRPTConfig.cmake with GCC and in Debug. 00456 - Wrong destruction of critical sections when embedded into objects within smart_ptr's. 00457 - mrpt::slam::CActionRobotMovement2D: Wrong copy of objects with the = operator. 00458 - mrpt::utils::CFileGZOutputStream crashes if "close" called instead of closing at destructor. 00459 - Errors compiling with BUILD_ARIA=0. 00460 00461 <a name="0.6.1"> 00462 <h2>Version 0.6.1: Released 27-Aug-2008.</h2></a> 00463 - HOKUYO communications reconnect even if USB cable unplugged & plugged again. 00464 - New, more robust version of Linux serial port. 00465 - particleFilterApplication now supports ".gz" input files as well. 00466 - "zlib" & "jpeglib" included as separate libraries, for Windows in the case of not having wxWidgets. 00467 - xmlParser library files (src/core/utils/xmlparser/*): Legal issue fixed by replacing license with a BSD-like license from Frank Vanden Berghen (thanks!). 00468 - New target (Linux only): "make documentation_tutorial". 00469 - New examples: 00470 - gravity3d: Demonstration of 3D animation and physics simulation. 00471 - New applications: 00472 - simul-landmarks 00473 - simul-beacons 00474 - BUGS FIXED: 00475 - Communications with HOKUYO in Linux eventually crashes. 00476 - Error in "make install", tried to copy tutorial.ps.gz intended for Debian packages. (Thanks sisyphus me) 00477 - Wrong text format of dates & times in mrpt::system functions. 00478 - Mismatched new / free[] solved in mrpt::system::createThread (Linux). 00479 - Applications icp-slam, kf-slam, rbpf-slam didn't recognize gz-compressed rawlogs. 00480 - All Debian scripts & files moved away from MRPT source tree for consistency. 00481 00482 <br><hr><br> 00483 <a name="0.6.0"> 00484 <h2>Version 0.6.0: Released 14-Aug-2008.</h2></a> 00485 00486 - <b>IMPORTANT CHANGES</b>: 00487 - 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. 00488 - Better support of user applications using CMake command "FIND_PACKAGE( MRPT REQUIRED )". Refer to: http://babel.isa.uma.es/mrpt/index.php/Writing_applications_with_the_MRPT_C%2B%2B_Library 00489 - Pointers have been passed to smart pointer all across the code. 00490 - 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. 00491 - The MRPT libraries can now be compiled as a shared library (.dll/.so), by setting MRPT_BUILD_SHARED_LIB from the CMake GUI. 00492 - New hardware libraries supported: 00493 - 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. 00494 - New hardware driver for XSens inertial measuring units (IMU). See hwdrivers::CIMUXSens. 00495 - New applications: 00496 - RawLogGrabber, for gathering data in real-time from a robotic platform. See wiki page: http://babel.isa.uma.es/mrpt/index.php/Application:RawLogGrabber 00497 - hmtMapViewer, an inspection tool for HMT-SLAM. See wiki page: http://babel.isa.uma.es/mrpt/index.php/HMT-SLAM:An_Open_Source_Implementation 00498 - Visual Studio 6 is not supported anymore from now on: it's a too old compiler, buggy, and lacks many modern C++ features. 00499 - Many bugs fixed. 00500 00501 - All changes: 00502 - Many additions to conform to Debian packaging standards and freedesktop.org standard files for creating application menus, etc. 00503 - Added new "colored points" map & opengl objects. See mrpt::slam::CColouredPointMap and mrpt::opengl::CPointCloudColoured. 00504 - SceneViewer also is able to read from .gz'd files (.3Dscene files, but can be renamed to .3Dscene.gz if desired). 00505 - Management of local and UTC times clarifies with new methods. See mrpt::system, time functions. 00506 - Added a new class for transparent disk-swapped loading of very large datasets. see mrpt::slam::CRawlogXXL. 00507 - Exception handling prepared to correctly manage bad_alloc exceptions (for out of memory scenarios). 00508 - Added a 1D function interpolator using splines. See mrpt::math::CSplineInterpolator1D. 00509 - Added a 6D poses interpolator, using splines. See mrpt::poses::CPose3DInterpolator. 00510 - Removed built-in zlib library, replaced by wxWidget's one. 00511 - 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. 00512 - 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> ). 00513 - Class for storing rawlogs renamed as "mrpt::slam::CRawlog", and enabled for the new observation-only <a href="http://babel.isa.uma.es/mrpt/index.php/http://babel.isa.uma.es/mrpt/index.php/Rawlog_Format">rawlog file format</a>. 00514 - Introduced precompiled headers for a dramatic reduction of compilation time thru the header <mrpt/core.h>. 00515 - The method CSerializable::duplicate has been optimized using directly the derived class copy constructor instead of a temporary memory buffer. 00516 - Created a new metric map: grid map of heights. See mrpt::slam::CHeightGridMap2D. 00517 - Added a method for estimating the Jacobian of a function by finite differences. See math::estimateJacobian. 00518 - 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. 00519 - Added generic class for Levenberg-Marquart optimization problems. See utils::CLevenbergMarquardt and the <a href="http://babel.isa.uma.es/mrpt/index.php/Levenberg%E2%80%93Marquardt_algorithm">wiki tutorial on the topic</a>. 00520 - Added communications support for the new HOKUYO UTM-30LX (Windows and Linux). Refer to the <a href="http://babel.isa.uma.es/mrpt/index.php/Example:HOKUYO_URG_Laser_Scanner" >wiki page</a>. 00521 - New method introduced to gas distribution mapping: optimized Kalman filter with constant time update. See mrpt::slam::CGasConcentrationGridMap2D. 00522 - The class utils::CTicTac now does not use dynamic memory, so it's constructor & destructor are faster. 00523 - Several optimizations applied to 2D and 3D geometry classes (poses::CPoseOrPoint derived ones). 00524 - Added cross-platform support for "alloca". See system::alloca. 00525 - Sources updated to be compatible with GCC 4.3 and Visual Studio C++ 2008. 00526 - Thread statistics now are also implemented for Linux. See system::getCurrentThreadTimes. 00527 - HWDRIVERS classes unified under the "generic sensor model". See hwdrivers::CGenericSensor. 00528 - 3D render canvas classes unified under the new class utils::WX_gui::CMyGLCanvas_Base. 00529 - Added serializable STL classes. See utils::vector_serializable, etc. See utils/stl_extensions.h 00530 - Added serialization to the whole mapping framework state in HMT-SLAM, and many related classes. See mrpt::hmtslam::CHMTSLAM. 00531 - lib_hwdrivers: Custom device-dependent initialization commands can be sent when opening a GPS interface. See hwdrivers::CGPSInterface. 00532 - Joysticks and game-pads fully supported now under both Windows and Linux. See hwdrivers::CJoystick. 00533 - Added new applications: 00534 - RawLogGrabber, for gathering data in real-time from a robotic platform. See wiki page: http://babel.isa.uma.es/mrpt/index.php/Application:RawLogGrabber 00535 - hmtMapViewer, an inspection tool for HMT-SLAM. See wiki page: http://babel.isa.uma.es/mrpt/index.php/HMT-SLAM:An_Open_Source_Implementation 00536 - Added new examples: 00537 - /samples/UTILS/fileSystemWatcher: Demonstrating watching of directory changes. Based on class utils::CFileSystemWatcher. 00538 - RawLogViewer: 00539 - A new facy custom tree view, extremely more efficient for very large datasets and with a time-line to graphically visualize timestamps. 00540 - Many new commands: resort from timestamps, regenerate timestamps from GPS observations, etc. 00541 - In the "raw-map" window the user can change now the number of types of maps to build from odometry + raw observations. 00542 - Implemented building a map from a rawlog with RTK GPS data. See "RawMap" dialog. 00543 - BUGS FIXED: 00544 - Textual representation of dates and times with seconds represented with just one digit. 00545 - Fixed wrong computation of transformation from GPS to local coordinates. 00546 - Exception raised if an empty CImage is serialized. 00547 - Wrong conversion of old serialization versions of gridmaps. 00548 - Parameters of a gas gridmap were ignored after loading from .ini. 00549 - Changing by hand the coordinates in mrpt::poses::CPose3D was not persistent when serializing the object. 00550 - Added missing "+ operators" to mrpt::poses::CPoint3D. 00551 - mrpt::slam::CSimplePointsMap: Serialization was not cross-platform (it used "unsigned long" data type). 00552 - mrpt::slam::CObservationGPS didn't save the "sensorPose" when streaming. 00553 00554 - MAY-2008: 00555 - mrpt::poses::CPointsMap now also has a horizontal tolerance range for "horizontal" or "planar" maps. 00556 - 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. 00557 - gui::CDisplayWindowPlots now can also manage 2D bitmaps plots, that can be combined with 2D vectorial plots. See gui::CDisplayWindowPlots::image. 00558 - CPointsMap::compute3DMatchingRatio is now ~6 times faster (using KD-tree). 00559 - Missing implementation of KD-tree for 3D points in mrpt::poses::CPointsMap now complete. 00560 - Added support for file-system watching. See utils::CFileSystemWatcher. 00561 - SceneViewer: 00562 - New option to allow free rotation and zoom of the camera even for scenes with the flag "followCamera". 00563 - RawLogViewer: 00564 - Added importer for "rtl" log files. 00565 - Added capability to export several GPSs to text files. 00566 - Sensor labels appear in the tree view. 00567 - BUGS FIXED: 00568 - "mrpt::slam::CSensFrameProbSequence::operator =" was wrongly implemented. 00569 - In gridmaps (mrpt::slam::COccupancyGridMap2D): 00570 - Calling mrpt::slam::COccupancyGridMap2D::resizeGrid only supports growing the grid (not shrinking). This is now forced internally to fix impredictable results. 00571 - 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. 00572 - 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...). 00573 - Fixed support for Bumblebee in external applications through CMake system (MRPTconfig.cmake). 00574 - Wrong reporting of stacked exceptions messages. 00575 - Fixed wrong calculation of (x,y,z) coordinates from latitude, longitude and height, in mrpt::slam::CObservationGPS. 00576 - utils::CClientSocket did send debug information in the middle of actual data!. Thanks to Vicente Arevalo for reporting. 00577 00578 <br><hr><br> 00579 <a name="0.5.5"> 00580 <h2>Version 0.5.5: Released April 30, 2008.</h2></a> 00581 - APR-2008: 00582 - New 2D font render engine in utils::CCanvas. It now supports a number of different fonts, including CJK (Chinese-Japanese-Korean) characters. 00583 - HOKUYO URG04 laser scanner interface now works for Linux and Windows. See hwdrivers::CHokuyoURG and <a href="http://babel.isa.uma.es/mrpt/index.php/Example:HOKUYO_URG_Laser_Scanner" >the wiki page</a>. 00584 - Serialization format changed: added an end-flag and 5 bytes saved per dumped object. See the serialization description <a href="http://babel.isa.uma.es/mrpt/index.php/Serialization">here</a>. 00585 - 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://babel.isa.uma.es/mrpt/index.php/Tutorial_3D_Scenes">tutorial</a>. 00586 - 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. 00587 - 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://babel.isa.uma.es/mrpt/index.php/Occupancy_Grids" >the gridmaps tutorial</a>. 00588 - The file "MRPT_version.h" is now automatically updated from CMake with the version + SVN (if local copy is a repository). 00589 - Socket classes are now fully implemented for Linux and Windows. See utils::CClientTCPSocket and utils::CServerTCPSocket. 00590 - Added two new CStream classes: utils::CFileInputStream, utils::CFileOutputStream, specializations of the old utils::CFileStream. 00591 - File stream classes rewritten based on standard std::iostream classes (faster I/O). See utils::CFileStream. 00592 - Examples can now be built and run from any directory, through the new config file: "MRPT_examples_config.h". 00593 - Added support to any number of points map within mrpt::slam::CMultiMetricMap. 00594 - 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. 00595 - Options of mrpt::slam::COccupancyGridMap2D, mrpt::poses::CPointsMap and mrpt::slam:::CMultiMetricMap are now persistent (included in the serialization). 00596 - Macros max,min,max3,min3 passed to inline template functions, reusing std::max & std::min. 00597 - 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. 00598 - New class utils::CReferencedMemBlock for memory blocks that have to be shared between objects when copied with "=". 00599 - Major revision of many classes to satisfy design rules in Scott Meyers' "Effective C++ book" (-Weffc++ gcc option). 00600 - Added new examples: 00601 - /samples/MRML/pathPlanning: Demonstrating path finding in occupancy grid maps for circular robots. 00602 - /samples/MRML/benchmark-gridmap 00603 - /samples/MRML/gridMapLikelihoodCharacterization 00604 - /samples/HWDRIVERS/HOKUYO_laser_test: Added example for HOKUYO laser range finder. 00605 - Re-factorization of the main library (lib_MRPT) for faster rebuild and better modularity. New libraries in "/apps/lib_XXX": 00606 - lib_HMTSLAM. 00607 - lib_HWDRIVERS. 00608 - RawLogViewer version 2.2: 00609 - Now the user can choose the format (png,jpg,...) of the image files when generating image lists, transforming into external storage image observations, etc. 00610 - BUGS FIXED: 00611 - No timestamp saved in rawlogs for some observations. 00612 - Extra NULL character stored in type list in utils::CTypeSelector. 00613 00614 - MAR-2008: 00615 - New classes added in file "UTILS/safe_pointers.h" for making classes with pointer members safer. 00616 - Added switches to CMake system to disable MRPT_TRY_START/END and ASSERT_ blocks, for speed up on well tested applications. 00617 - Added new class utils::CMemoryChunk. 00618 - Added a new application for building metric maps from ".simplemap" files. 00619 - Added a class for message passing between threads. See utils::CMessageQueue. 00620 - Created mrpt::slam::TKLDParams to unify KLD-sampling parameters across different classes. 00621 - mrpt::slam::CHybridMetricMap finally renamed mrpt::slam::CMultiMetricMapPDF, for consistency with mrpt::slam::CMultiMetricMap. 00622 - 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. 00623 - Added a tolerance threshold for the pitch/roll of laser scans to be treated as "horizontal" in mrpt::slam::COccupancyGridMap2D. 00624 - A textual label added to all observations to describe its sensor (See CObservation::sensorLabel). 00625 - mrpt::slam::CSensoryFrame and mrpt::slam::CActionCollection now behave like STL containers (begin,end,iterator,erase,...); internal lists are protected. 00626 - All geometry, PDFs, and Kalman Filter classes passed from float -> double. 00627 - Added a new, more efficient implementation to bayes::CKalmanFilterCapable, processing one observation (not each scalar component) at once. 00628 - Added new fast operations to matrices. See math::CMatrixTemplateNumeric. 00629 - Fixed the small memory leak of the ANN library by calling annClose. 00630 - SceneViewer: 00631 - Scenes are compiled into OpenGL lists for efficiency. 00632 - RawLogViewer version 2.2: 00633 - Added a command to convert images of old rawlogs into delayed-load images. 00634 - Support for delayed-load images: now much larger rawlogs can be managed efficiently. 00635 - Added "compact rawlog" command: group consecutive actions & observations. 00636 - Added "loss-less decimation". 00637 - Added "edit rawlog" by name of sensor. 00638 - Now two monocular images can be displayed simultaneously in the "View images as video"-module. 00639 - Added "export/import to ALOG format". 00640 - BUGS FIXED: 00641 - Fixed compiling errors when compiling under Linux without GL/GLUT. 00642 - Wrong copy of 3D angles in CPose3DPDFGaussian::copyFrom. 00643 - Missing a valid, secure operator (operator =) for bayes::CParticleFilterData. 00644 - Compiling errors due to non-ASCII Spanish characters (thanks to Zhe Zhang). 00645 - Unpredictable result if a 2D laser scan with all invalid points is inserted in a pointsmap. 00646 00647 <h2>Version 0.5.4: Released March 6, 2008.</h2> 00648 - MAR-2008: 00649 - Size variables in mrpt::poses::CPointsMap, math::CPolygon, and ReactiveNavigationLibrary passed to "size_t". 00650 - Thread join implemented in Windows. 00651 - Added a new class synch::CCriticalSectionLocker to assure consistent critical section leaving in any situation (exceptions, programmer's mistakes,...). 00652 - Implemented Iterative Kalman Filter (IKF). See bayes::CKalmanFilterCapable. 00653 - Next MRPT release will be published under the GNU GPL version 3 (comment blocks updated in all source files). 00654 - Correspondences between point maps implemented with KD-tree: "classic ICP" is now ~10x faster. 00655 - Removed wrong covariance estimation in mrpt::poses::CPointsMap::computeMatchingWith2D and added a new better one to mrpt::slam::CICP. 00656 - The library ANN (Approximate Nearest Neighbor) by Sunil Arya and David Mount (University of Maryland) has been integrated in the build tree. 00657 - Added an option to utils::CImage to disable ZIP compression when storing images. 00658 - Added the all new implementation of HMT-SLAM. See mrpt::slam::CHMTSLAM. 00659 - Fixed all 64-bit portability issues detected by Visual Studio 2005. 00660 - Created a repository of 3D objects in opengl::stock_objects. 00661 - COpenGLScene & opengl::CSetOfObjects now have the list of objects as "protected" for assure safe memory-management. 00662 - Added build options as switchs in the CMake build system for: 00663 - The GCC stdlibc++ "parallel mode". See http://algo2.iti.uni-karlsruhe.de/singler/mcstl/. 00664 - Selecting 8bits/16bits cell size in occupancy grid maps. 00665 - Enabling code profiling (GNU GCC only). 00666 - Added new applications: 00667 - icp-slam: A very naive mapping algorithm based on a single metric map & ICP laser scan alignment. See mrpt::slam::CMetricMapBuilderICP. 00668 - BUGS FIXED: 00669 - Copy operator of 6D poses didn't work always as expected. 00670 - Pose composition of 6D Gaussian poses (poses::CPose3DPDFGaussian) used wrong Jacobians. 00671 - FEB-2008: 00672 - Added a new application: camera-calib, by Vicente Arevalo (University of Malaga). 00673 - Added "point size" property to UTILS:opengl::CPointCloud. 00674 - 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. 00675 - RawlogViewer & SceneViewer: Directory of last opened file now saved when invoking programs with file as command-line argument. 00676 - Added a new mechanism for displaying mathematical graphs using MATLAB-like "plot" commands. See gui::CDisplayWindowPlots. 00677 - Visual Leak Detector integrated in the CMake build system. 00678 - Extended Kalman Filter implementation rewritten from scratch. See bayes::CKalmanFilterCapable. 00679 - Implemented missing operations (move,resize,...) in gui::CDisplayWindow & gui::CDisplayWindow3D. 00680 - 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"). 00681 - Improved 3D/6D geometry implementation: x2 speed-up in (inverse) pose compositions (utils::CPoseOrPoint and derived classes). 00682 - Addition of a new matrix class: math::CMatrixFixed, for compile-time known sizes (more efficient??). 00683 - Fixed compiling errors if MRPT_HAS_WXWIDGETS = 0. 00684 - Generation of CMakeLists fully automated for samples. 00685 - Added support for "pkg-config libMRPT --libs --cflags" if the library is make install'ed, UNIX only. 00686 - "Save as..." implemented in gui::CDisplayWindow. 00687 - Added new examples: 00688 - samples/UTILS/threadsTest, demonstrating the creation of threads and synchronization. 00689 - UTILS/benchmark-matrix. 00690 - samples/UTILS/bayesianTracking, implementing a very simple bearing & tracking problem with both a EKF and a particle filter (PF). 00691 - samples/UTILS/displayPlots. 00692 - MRML/grid-matching. 00693 - BUGS FIXED: 00694 - Core dump due to a wrong initialization of mrpt::slam::CSensoryFrame using the *copy constuctor*. 00695 - RawlogViewer: Changing a sensor pose in the "sensor/camera modification dialog" didn't change it for 6D poses. 00696 - utils::CDirectoryExplorer missed files under Windows when marked as FILE_ATTRIB_NORMAL. 00697 - Core dump (double free) if a matrix is set to size (0,0) and then resized again (it affected the new matrix loadFromTextFile method). 00698 - Inverted axes in CDisplayWindow3D & SceneViewer when camera elevation=-90deg. 00699 - Wrong generation of random samples in random::randomNormalMultiDimensional. 00700 - Missing synchronization within WxSubsystem's thread. 00701 - Not using double-buffering in SceneViewer. 00702 - Wrong simulation of bearing-range observations for any 6D pose in mrpt::slam::CLandmarksMap. 00703 - gui::CDisplayWindow & gui::CDisplayWindow3D timeout waiting to close windows after class destruction. 00704 00705 <h2>Version 0.5.3 (First public release, January 31, 2008)</h2> 00706 - JAN-2008: 00707 - Small changes in CMake files to prepare first public source release. 00708 - utils::WxSubsystem created as a centralized manager of GUI windows in the MRPT using the cross-platform wxWidgets. Now used for CDisplayWindow & CDisplayWindow3D. 00709 - Application "ReactiveNavigationDemo" rewritten using wxWidgets and integrated in the MRPT CMake tree. 00710 - Bumblebee camera support integrated in CMake file system. 00711 - RawLogViewer 2.1 finished. 00712 - SceneViewer 1.1 finished. 00713 - New methods added to matrixes and to the MATH namespace. 00714 - "mrpt::slam::CSensFrameProbSequence" and "mrpt::slam::CIncrementalMapPartitioner" modified to work with full 3D/6D poses rather than planar robot poses only. 00715 - Added a working example of EKF-SLAM including a sample dataset. 00716 - Tree structure modified for clarity, clean up of files at the root directory. 00717 - RawLogViewer: Added viewer of mrpt::slam::CObservationBearingRange. 00718 - Added a new method to compute spherical coordinates of a 3D point from a 6D pose (see mrpt::poses::CPose3D). 00719 - MRPT_ALWAYS_CHECKS_DEBUG is now enabled by default. 00720 - Added new matrix operations to employ them in a more efficient EKF implementation. 00721 - Changes all across the library to enable compilation in 64 bit targets (without warnings). 00722 - getCurrentTime now gives high-resolution time (usecs) in Linux. 00723 - Added the option "justOneOccupiedCellPerRay" to mrpt::slam::COccupancyGridMap2D. 00724 - Added new applications: 00725 - map-partition. 00726 - KF-SLAM. 00727 - Added new examples: 00728 - MRML/landmarkRawlogSimulator, a simulator of a robot with a 3D range-bearing sensor. 00729 - BUGS FIXED: 00730 - CSemaphore::waitForSignal now also works for an timeout=0 (no timeout). 00731 - In openCV_cross_correlation: wrong order of (v,u) coordinates! Have been replaced by (x,y) to prevent more errors. 00732 - Wrong calculation of mean in CGraphPartitioner::SpectralBisection. 00733 - Wrong calculations in "multiply_HCHt" 00734 - "dateTimeToString" gave wrong data. 00735 - Out of vector bound exception in RawLogViewer exporter to text files. 00736 - Wrong normalization of 3D vectors in generateAxisBaseFromDirection. 00737 00738 - DEC-2007: 00739 - Speed up in rendering of 3D ellipsoids by computing eigenvectors only once. 00740 - Implemented RO-SLAM with SOG (mrpt::slam::CBeaconMap) 00741 - Added a method to generate permutations of vectors (See utils::RandomGenerator). 00742 - Started RawLogViewer 2.1: Added a new module for laser scan animations. 00743 - Added a new cross-platform 3DSceneViewer application. 00744 - Deleted the old application x3DSceneViewer 00745 - New example: MRML/geometry3D 00746 - BUGS FIXED: 00747 - Wrong initialization of CMatrix from a CPoint3D 00748 - Wrong calculation of yaw/pitch/roll fields in CPose3D when composing poses. 00749 00750 <br><hr><br> 00751 <h2>Version 0.5.2 (Released December 26, 2007)</h2> 00752 - DEC-2007: 00753 - Release of RawLogViewer 2.0, the first portable (win32/linux-gtk) version. 00754 - Old win32 version "RawLogsViewer" removed from the repository! 00755 - GUI classes (CDisplayWindow, CDisplayWindow3D) have been rewritten in: 00756 - Windows: Native MSW API. 00757 - Linux: GTK2 00758 - New features to RawLogViewer (change sensor poses,...) 00759 - Added general abstract methods to CObservation for getting/setting the sensor pose. 00760 - Added to RawLogViewer: Import a directory of images as a rawlog. 00761 - utils::CDirectoryExplorer rewritten & ported to Linux. 00762 - BUG FIXED: 'system::sleep' was aborted by signals in Linux. It now resumes until the desired delay. 00763 - Linux implementation for CSerialPort. 00764 - RawLogViewer: ScanMatching module finished. 00765 - New class for landmark observations by bearing and range (See mrpt::slam::CObservationBearingRange). 00766 - Timestamps have been added to CAction's. 00767 - BUG FIXED: Invalid encoder info in CActionRobotMovement2D. 00768 - New methods added to CRawlog to enable a better encapsulation of the internal list of objects as "private". 00769 - NOV-2007: 00770 - BUG FIXED: CObservationGPS didn't load from CStream in Linux. Serialization version 1 is now portable. 00771 - Added the sprintf-like function "format" for std::string's. 00772 - Integration of xmlParser library within utils::CSimpleDatabase. 00773 - A new class for managing the custom USB board that interfaces SRF10 ultrasonic range finders. Class hwdrivers::CBoardSonars. 00774 - Class hwdrivers::CBoardENoses has been finished and tested with the real devices. 00775 - Many includes in "utils_defs.h" moved to those source files really requiring them, to speed up compilation. 00776 - Fixs to allow compiling using the free Borland C++ 5.5.1 compiler from CMake makefiles. 00777 - Added new sample for eNose board interface. 00778 00779 <h2>Version 0.5.1 (Released for BABEL, November 13, 2007)</h2> 00780 - NOV-2007: 00781 - BUG FIXED: math::generateAxisBaseFromDirection now returns all the three vectors normalized. 00782 - Implemented Sum of Gaussians (SOG) as a way to create the PDF of a beacon for RO-SLAM (in mrpt::slam::CBeaconMaps). 00783 - Added a new example to "samples/MRML": beaconRawlogSimulator. 00784 - Added a new class for interfacing an "e-Noses" board via USB, in hwdrivers::CBoardENoses. 00785 - OpenCV added as a monolithic, static linking library to avoid DLL dependencies (for Windows). 00786 - New wiki-based website. Old doxygen-based documentation headers (.h) removed. 00787 - 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...). 00788 - BUG FIXED: THROW_EXCEPTION_XXX macros redesigned to avoid eventual exceptions in wxWidgets applications. 00789 00790 - OCT-2007: 00791 - Methods "computeMatchingWith2D" modified for a sensible usage of the "const" modifier. 00792 - Changed mrpt::slam::CMetricMapsAlignmentAlgorithm::Align to avoid the warning "break strict-aliasing rules" about the CPosePDF**. 00793 - Added tutorial: Serialization. 00794 - Added new class mrpt::poses::CPose3DPDFSOG for Sum of Gaussians-representation of a 6D pose probability density. 00795 - Reactive Navigation Library ported from Win32 API to standard C++. 00796 - Resampling methods now are separated in a generic, static method bayes::CParticleFilterCapable::computeResampling. 00797 00798 <h2>Version 0.4 (Released for BABEL, October 13, 2007)</h2> 00799 - OCT-2007: 00800 - BUG FIXED: Loading grayscale images CImageFloat now forces to load images from files as grayscale always. 00801 - BUG FIXED: To allow inserting into gridmaps laser scans taken with the sensor bottom-up. 00802 - All the makefiles of MRPT has been moved to CMake. 00803 - SEP-2007: 00804 - 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. 00805 - CSemaphore implemented for Linux using pthreads. 00806 - CDisplayWindow3D is now based on GLUT and works in Windows & Linux. 00807 - Added a new application by Antonio J. Ortiz de Galistea: a MonoSLAM demo. 00808 - Different PF resampling methods are now supported. See CParticleFilter::resample. 00809 - CParticleFilter now has a centralized structure for all the PF-related options. 00810 - BUG FIXED: CDisplayWindow2D now has an extra (global) thread to process OpenCV messages without the need for the application to call "waitForKey". 00811 - Added a new procedure into CMultiMetricMapPDF for expanding the potential range of observation likelihoods without having a numerical overflow. 00812 - Add Class for Sonar SRF10 Interface (AJOGD). 00813 - CImage now is a wrapper class over OpenCV. More image file types are supported now. 00814 - CDisplayWindow now completely portable between windows/Linux thorugh OpenCV. 00815 - AUG-2007: 00816 - BUG FIXED: In utils::CConfigFile. 00817 - Started new application RawLogViewer using wxWidGets for a portable version (windows/linux). 00818 - Added utils::getAllRegisteredClasses to obtain at runtime the list of all MRPT registered classes. 00819 - Started the porting towards "bakefiles" 00820 - A new function added to obtain the compilation date and the library version (including SVN). See utils::SystemUtils. 00821 - Started a new version of the application "RawLogViewer" in portable wxWidGets for linux compatibility!. 00822 - Borland C++ 5.5 not supported any more, due to a lot of internal compiler errors. We use now BCC version 6.0. 00823 - Range-Only SLAM will be integrated into existing SLAM classes through the new class mrpt::slam::CBeaconMap, now fully integrated into mrpt::slam::CMultiMetricMap. 00824 - A new class for integrating different PDF representations of beacons (mrpt::slam::CBeacon) and the corresponding map (mrpt::slam::CBeaconMap). 00825 - JUL-2007: 00826 - A new class of CAction for 6D movements (mrpt::slam::CActionRobotMovement3D). 00827 - CStream & CSerializable now have more consistent "const" declarations. 00828 00829 <hr> 00830 <h2>Version 0.3 (Released for BABEL v3.800, July 2007)</h2> 00831 00832 - JUL-2007: 00833 - A new class for Range-Only Localization (mrpt::slam::CRejectionSamplingRangeOnlyLocalization). 00834 - Range-Only SLAM is now supported with a new map class (mrpt::slam::CBeaconMap), which has been also integrated in mrpt::slam::CMultiMetricMap. 00835 - A new class for parsing messages from/to a USB FTDI device (hwdrivers::CInterfaceFTDIMessages). 00836 - Added a new class for 3D Point PDF representation as a SOG (poses::CPoint3DPFGSOG). 00837 00838 00839 <br><hr><br> 00840 <h2>Version 0.2</h2> 00841 00842 - JUN-2007: 00843 - From now on MRPT is updated through Subversion (SVN). 00844 - Start solving portability issues towards a full Linux support. 00845 - MAY-2007: 00846 - Included the makefile project for "Code::Blocks" compiler, for supporting Linux GCC C++ compiler. 00847 - FEB-2007: 00848 - BUG FIXED: In "CSerializable::duplicate()" 00849 - Added new config file-like interfaces. See utils::CConfigFileBase and derived classes. 00850 - Added utils::CStringList. 00851 - JAN-2007: 00852 - New fast image correlation method based on 2D FFT. See CImage::cross_correlation_FFT 00853 - 2D FFT functions added to utils::MATH 00854 - The class utils::CConfigFile now can read entries as "std::vector"'s. 00855 - New utilities added to utils::MRPT_OS for tokenizing strings. 00856 00857 <br><hr><br> 00858 <h2>Version ALFA 0.1 (Published with BABEL v3.0.0, Jan-2007)</h2> 00859 00860 - JAN-2007: 00861 - The classes "utils::CBitmapXX" have been removed, and BMP image format operations appropriately integrated into existing utils::CImage and utils::CImageFloat classes. 00862 - Now 3D scenes are supported through "opengl::COpenGLScene", objects in "mrpt::opengl" namespace, and an external 3D Scene viewer application for Windows. 00863 - DEC-2006: 00864 - Addition of TCP/IP sockets, through classes utils::CServerTCPSocket and utils::CClientTCPSocket, allowing serialization of MRPT objects through a TCP socket. 00865 - New classes in HWDRIVERS namespace allow using serial ports and interfacing GPS units. 00866 - A new interface utils::CCanvas has been defined for enabling drawing primitives to be implemented in graphical classes. 00867 - New class gui::CDisplayWindow for visualization of images in a GUI. 00868 - Portability issues solved for compatibility with Microsoft Visual Studio 2005 (VC8), including the new standard C++ library "secure" functions. 00869 - 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" 00870 - NOV-2006: 00871 - The new Optimal Auxiliary Particle Filter has been implemented in "poses::CPosePDFParticles", and in "mrpt::slam::CMultiMetricMapPDF" 00872 - BUG FIXED: In matrix inversion, into class "math::CMatrixTemplateNumeric". 00873 - RANSAC method added for correspondences-pair lists, in "mrpt::slam::CICP::robustRigidTransformation" 00874 - OCT-2006: 00875 - The Dieter Fox's algorithm "KLD-sampling" for adative particle filter has been implemented in the class "poses::CPosePDFParticles" 00876 - Major changes in the way bayes::CParticleFilter works: Now there are four diferent particle filter algorithms defined. 00877 - New utils::MATH functions added (chi-square and normal quantiles, etc...) 00878 - A new probabilistic motion model has been added to "mrpt::slam::CActionRobotMovement2D", the particles draw process described in Thrun's 2006 book. 00879 - SEP-2006: 00880 - The Lu & Milios algorithm now works with any user-supplied matrix of pose constrains. See "mrpt::slam::CConsistentObservationAlignment". 00881 - A new generic matrix template has been created, "math::CMatrixTemplate" and "math::CMatrixTemplateNumeric", which are now the base for math::CMatrix and math::CMatrixD. 00882 - Template functions defined for dealing with STL's vectors: basic math operations, printing to screen,... in "utils::MATH" 00883 - The mrpt::slam::CICP algorithm now also deals with mrpt::slam::CLandmarksMap metric maps. 00884 - AUG-2006: 00885 - A new SLAM framework has been implemented in the main class mrpt::slam::CHierarchicalMappingFramework 00886 - A new class added for managing INI-like config files "utils::CConfigFile". 00887 - Hill-climbing algorithm "utils::CHillClimbing" added to the library. 00888 - Improved SIFT features detection, triangulation and matching in "mrpt::slam::CLandmarksMap" for pairs of stereo images. 00889 - JUN-2006: 00890 - New functions added to "poses::CPointPDFGaussian" for Bayesian fusion, correspondence likelihood,... 00891 - MAY-2006: 00892 - Introduction of "pixel to 3D" functions in vision 00893 - SIFT features extractor moved to vision 00894 - ABR-2006: 00895 - mrpt::slam::CLandmarksMap now works with SIFT features: loading from images, fusing,... 00896 - SIFT features extractor in "utils::CImage" 00897 - FEB-2006: 00898 - The class mrpt::slam::COccupancyGrid2D now uses 16bit for storing cell values, and many new options added. 00899 - Rao-Blackwellized Particle filters now supported in class mrpt::slam::CMultiMetricMapPDF 00900 - JAN-2006: 00901 - Landmarks-based maps now supported with mrpt::slam::CLandmarksMap 00902 - ZIP compression supported with the introduction of classes in the new namespace compress::zip. 00903 - Rao-Balckwellized particle filter mapping supported with mrpt::slam::CMetricMapBuilderRBPF 00904 - Points map are now fused considering the weights of points (mrpt::slam::CSimplePointsMap) 00905 - Definition of a new class mrpt::slam::CMetricMapBuilding for grouping map building methods. 00906 - Addition of a new class for 3D occupancy grid building. 00907 - New types of points map derived from mrpt::slam::CMetricMap. 00908 - DEC-2005: 00909 - New methods added to MRML, for circular robots paths planning. See the base class mrpt::slam::CPathPlanningMethod 00910 - The method by Lu & Milios for consistent maps alignment has been integrated into the MRML library, in the mrpt::slam::CConsistentObservationAlignment 00911 - The CObservation-derived classes has been modified to adhere to the "BABEL modules proposal for robotics architecture" (Technical report, dec.2005) 00912 - Metrics maps has been grouped using a common base class: mrpt::slam::CMetricMap 00913 - The spectral-based method for maps partitioning has been integrated into the MRML library, in the class mrpt::slam::CIncrementalMapPartitioner. 00914 - CObservationLaserRangeScan renamed as CObservation2DRangeScan. 00915 - NOV-2005: 00916 - New types of observations added (mrpt::slam::CObservation descendant classes) for images (from a camera) and for sonar readings. 00917 - OCT-2005: 00918 - New class added: A simple SLAM method for 2D localization and simple, metric maps building (non-hierarchical global maps). See mrpt::slam::CSimple2DSLAM. 00919 - Addition of "streaming versioning" for mrpt::utils::CSerializable classes. 00920 - A new observation type has been introduced, the mrpt::slam::CObservationIRRing. 00921 - Introduction of 3D poses using 4x4 transformation matrices and yaw/pitch/roll angles. 00922 - 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 00923 - SEP-2005: 00924 - Reactive Navigator totally rewritten for integration into MRPT applications repository (See MRPT::reactivenav::CReactiveNavigationSystem). 00925 - Added MRPT applications repository section. 00926 - AUG-2005: 00927 - Particle filters basic algorithm added to UTILS library. 00928 - Bitmap classes (utils::CBitmap) totally rewritten for a sensible use of classes inheritance. 00929 - JUN-2005: 00930 - First version of the library! there are a few classes for matrix manipulation, 2D point map management, and an implementation of the ICP algorithm. 00931 00932 */ 00933
Page generated by Doxygen 1.5.9 for MRPT 0.7.1 SVN: at Mon Aug 17 22:20:53 EDT 2009 |