MRPT  1.9.9
Change Log

Note: 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 make documentation_html or browse it on-line.

Version 2.0.0: (Under development)

  • Most important changes:
    • MRPT now requires C++14 to build and use. See this page for a guide to port existing code to MRPT 2.0: Porting code from MRPT 1.{3,4,5} to MRPT 2.*
    • Support for old namespaces mrpt-scanmatching, mrpt-reactivenav is over.
    • Backwards compatible headers for "maps" and "observations" in mrpt::slam are removed. They moved to their own namespaces in MRPT v1.3.0 (Jan 2015).
    • All pointer typedefs are now in their respective classes.
    • Using a variant type from the mapbox variant library, and added serialization with variants(To be replaced by std::variant eventually).
  • Detailed list of changes:
    • Changes in applications:
      • RawLogViewer:
        • The ICP module now supports Velodyne 3D scans.
      • pf-localization:
        • Odometry is now used also for observation-only rawlogs.
    • Changes in libraries:
    • BUG FIXES:
      • Fix reactive navigator inconsistent state if navigation API is called from within rnav callbacks.
      • Fix incorrect evaluation of "ASSERT" formulas in mrpt::nav::CMultiObjectiveMotionOptimizerBase
      • Fix aborting reading from LMS111 scanner on first error.
      • Fix == operator on CPose3D: it now uses an epsilon for comparing the rotation matrices.
      • Fix accessing unaligned POD variables deserializing CObservationGPS (via the new MRPT_READ_POD() macro).
      • Fix segfault in CMetricMap::loadFromSimpleMap() if the provided CMetricMap has empty smart pointers.
    • Fix crash in CGPSInterface when not setting an external mutex.

Version 1.5.7: (Under development)

  • Detailed list of changes:
    • [mrpt-graphslam]
      • CNetworkOfPoses: read/write format made compatible with G2O EDGE_SE2 types.
    • BUG FIXES:
      • Fix missing "-ldl" linker flag.
      • Fix building against wxWidgets 3.1.1 in Windows (zlib link error).

Version 1.5.6: Released 24/APR/2018

  • Applications:
    • pf-localization:
      • Odometry is now used also for observation-only rawlogs.
  • [mrpt-hwdrivers]
  • [mrpt-maps]
    • COccupancyGridMap2D: New LIDAR insertion parameters: maxFreenessUpdateCertainty, maxFreenessInvalidRanges.
  • [mrpt-reactivenav]
    • CAbstractPTGBasedReactive: Added new score holo_stage_eval.
    • circular_buffer: exception made state preserving

Version 1.5.5: (Under development)

Version 1.5.4: Released 31/OCT/2017

  • Detailed list of changes:
    • [mrpt-base]
      • Fix potential uninitialized value in CRobot2DPoseEstimator::getLatestRobotPose()
      • MRPT_getCompilationDate() returns time as well
    • [mrpt-gui]
    • Build system:
      • Fix MRPTConfig.cmake for system octomap libraries.
      • Fix package-contains-vcs-control-file (.gitingore) Lintian error.
      • Fix compiling without liboctomap-dev in Ubuntu PPA.
    • BUG FIXES:
      • Fix waypoint reactive navigator edge case in which "end event" won't be issued.
      • Fix waypoint reactive navigator error while doing final aligning (missing and dupplicated nav-end events).
      • Fix aborting reading from LMS111 scanner on first error.
      • Fix waypoint reactive navigator edge case in which "end event" won't be issued.
      • Fix corrupted pointers in CNetworkOfPoses after copy or move operations.
      • Fix invalid TP-targets generated during reactive navigation.
      • Fix memory leak in reactivenav engine.
      • Fix potential out-of-range access in CObservation3DRangeScan::convertTo2DScan()

Version 1.5.3: Released 13/AUG/2017

  • Detailed list of changes:
    • CMake >=3.1 is now required for use of ExternalProjects.
    • Scripts scripts/prepare_{debian,release}.sh have been refactored and simplified.
    • Removed embedded source code versions of Eigen, assimp and octomap. Downloaded and built as ExternalProjects if not present in the system.
    • Releases will be signed with PGP from now on and posted as binary attachments to GitHub releases.

Version 1.5.2: Released 6/AUG/2017

Version 1.5.1: Released 21/JUN/2017

  • Detailed list of changes:

Version 1.5.0: Released 10-JUN-2018

Version 1.4.0: Released 22-APR-2016

Version 1.3.2: Released 3-NOV-2015

  • Changes in Apps:
    • rawlog-edit:
      • New operation: --list-poses
      • --list-images now also works with 3D range scans
  • Changes in libraries:
  • Changes in build system:
    • FIND_PACKAGE(MRPT) will return libraries in the var MRPT_LIBRARIES, following the CMake convention. The old variable name MRPT_LIBS will be also returned for backward compatibility.
    • Fix excessive width of paths drawn by CMetricMapBuilderRBPF::drawCurrentEstimationToImage()
    • Fix image distortion: k3 may be ignored. (Thanks to CBaiz)
    • Fix Debian bugs.

Version 1.3.1: Released 18-JUL-2015

Version 1.3.0: Released 12-JAN-2015

  • Most important changes:
    • Classes in libraries [mrpt-obs] and [mrpt-maps] now belong to new namespaces (mrpt::obs, mrpt::maps) instead of the old mrpt::slam
    • No more using namespaces polute MRPT headers. Errors in user projects missing using namespace XXX that might be formerly masked will now reveal. This is a good thing, though admitedly annoying...
    • New library [mrpt-nav], subsumming the old [mrpt-reactivenav].
    • New library [mrpt-tfest], a refactor of the old [mrpt-scanmatching].
    • Backwards compatible headers have been provided to ease the transition of user code for all those library changes. Warning messages will be shown recommending deprecated replacements.
  • Detailed list of changes:
    • Lib changes:
    • Build System / General changes:
      • Many optimizations in function arguments (value vs ref). Forces ABI incompatibility with previous versions, hence the change to a new minor version number.
      • Updated embedded version of Eigen to 3.2.3
      • Kinect: Dropped support for the CL NUI API, which seems discontinued. Alternatives in use are libfreenect and OpenNI2.
      • libfreenect is now detected in the system and used instead of compiling the embedded copy of it.
      • Embedded copy of libfreenect has been updated to (23/oct/2014). It now supports "Kinect for Windows".
      • More selective linking of .so files to avoid useless dependencies (Fixes #52).
      • (Windows only) MRPT can now be safely built with libusb support (Freenect, Kinect,...) and it will run on systems without libusb installed, by means of /DELAYLOAD linking flags.
      • More unit tests.
    • Changes in classes:
    • BUG FIXES:

Version 1.2.2: Released 12-SEP-2014

  • Changes in apps:
  • New classes:
  • Changes in classes:
    • Consistency in all "laser scan" classes: angular increments between rays are now FOV/(N-1) instead of FOV/N.
    • [mrpt-base]
      • New method mrpt::img::CImage::loadTGA()
      • IMPORTANT: Changed behavior of CSerializable/CObject macros (see bugfix below), introducing the new macros DEFINE_SERIALIZABLE_POST_*. May require changes in user code if serializable classes are defined:
        • Previous version:
          class XXX {
        • Must be changed in this version to:
          class XXX {
    • [mrpt-hwdrivers]
    • [mrpt-maps]
    • [mrpt-opengl]
      • mrpt::opengl::CWxGLCanvasBase (affects all 3D rendering classes): better handling of internal timers for smoother updates while rendering in multithreading apps.
    • [mrpt-srba]
      • New method to recover the global coordinates graph-slam problem for a RBA map: mrpt::srba::RbaEngine::get_global_graphslam_problem() (see example [MRPT]-examples\srba-tutorials\tutorial-srba-how-to-recover-global-map.cpp)
    • mrpt::img::CImage constructor from a matrix crashed.
    • Unit tests: Named semaphores are not tested anymore if it's detected that the kernel version doesn't support them (Fix Debian 758725).
    • mrpt::synch::CSemaphore [Linux]: didn't call sem_unlink().
    • mrpt::gui::CDisplayWindow3D didn't implement get/set FOV.
    • Valgrind: Fixed potential unaligned memory access warning in point clouds.
    • Fix build error with AppleClang 5.1 (Closes #71).
    • mrpt::utils::CClientTCPSocket: Use a connection success check that works on all platforms
    • Important bug fixed regarding a missing dynamic_cast<> in smart pointers casting. See above possible implications in user code. properly (Patch by Joe Burmeister).

Version 1.2.1: Released 10-JUL-2014

  • Changes in classes:
  • Build system:
    • Fix compilation of SRBA with DEBUG_GARBAGE_FILL_ALL_NUMS=1
    • Fix de-serialization error in mrpt::reactivenav::CLogFileRecord (and new unit tests added to avoid regressions).
    • Several Debian bugs closed (see packaging/debian/changelog), including build errors in uncommon platforms (MIPS, kFreeBSD, etc.)

Version 1.2.0: Released 25-JUN-2014

Version 1.1.0: Released 22-FEB-2014

  • New apps:
  • New classes:
  • Changes in classes:
  • Deleted classes:
    • mrpt::utils::CEvent, which was actually unimplemented (!)
    • mrpt::hwdrivers::CInterfaceNI845x has been deleted. It didn't offer features enough to justify a class.
  • New examples:
    • [MRPT]/samples/threadsPipe
    • [MRPT]/samples/NIDAQ_test
    • [MRPT]/openNI2_RGBD_demo (by Mariano Jaimez Tarifa)
    • [MRPT]/openNI2_proximity_demo (by Mariano Jaimez Tarifa)
  • Build system:
    • Fixed compilation with clang.
    • Fixed building against OpenCV 3.0.0 (GIT head)
    • Updated to the latest nanoflann 1.1.7.
    • Updated to Eigen 3.2.0 - (commit)
    • Binary packages for Windows now include .pdb files to help debugging with Visual Studio.
    • Fixed potential infinity loop in mrpt::math::make_vector<1,T>()
    • Fixed build error with GCC when experimental parallelization is enabled. (commit)
    • mrpt::reactivenav::CReactiveNavigationSystem complained about missing config variables ROBOTMODEL_TAU & ROBOTMODEL_DELAY, which were removed in MRPT 1.0.2 - (commit)
    • Fixed potential mem alignment errors (Eigen's UnalignedArrayAssert) in SRBA for 32bit builds. (commit)
    • mrpt::topography::geodeticToENU_WGS84() and related functions used a local +Z axis aligned to the line towards the Earth center; now the Z axis points normally to the ellipsoid surface. The difference with the previous behavior is small but may be of a few millimeters for each meter from the reference point. (commit)
    • Potential crash when setting mpPolygon::setPoints() with empty vectors


  • mrpt::reactivenav::CReactiveNavigationSystem and mrpt::reactivenav::CReactiveNavigationSystem3D didn't obey the "enableConsoleOutput" constructor flag - (commit)
  • mrpt::synch::CSemaphore::waitForSignal() : Fixed error when thread got an external signal (commit)

Version 1.0.2: Released 2-AUG-2013 (SVN 3435)


  • [mrpt-reactivenav]
    • mrpt::reactivenav::CReactiveNavigationSystem3D - By Mariano Jaimez Tarifa - r3389

New functions:

Changes in classes:

Build system:

  • Updated to nanoflann 1.1.7: ICP is ~5% faster.
  • More unit tests:
    • [mrpt-base] geometry module.


  • CTimeLogger::registerUserMeasure() ignored the enable/disable state of the logger - r3382
  • mrpt-srba: SEGFAULT in 32bit builds due to missing MRPT_MAKE_ALIGNED_OPERATOR_NEW - r3429

Version 1.0.1: Released 12-MAY-2013 (SVN 3370)

Version 1.0.0: Released 1-MAR-2013 (SVN 3287)


  • mrpt::config::CConfigFileBase::write() now has signatures for "uint32_t" and "uint64_t" in both 32 and 64bit builds, instead of relying of the "size_t" type. This was done to fix build errors in some GCC versions under 32bits.
  • mrpt::poses::CPose2D now caches the cos() and sin() of phi, with a huge performance improvement in most common operations.









  • Much code of mrpt::reactivenav classes have undergone a clean-up, slight optimizations and a translation of old Spanish names/comments to English - r2939, r2942, r2958, r3091
  • mrpt::reactivenav::CParameterizedTrajectoryGenerator::CCollisionGrid now has a more maintainable binary serialization format - r2939
  • mrpt::reactivenav::CParameterizedTrajectoryGenerator::debugDumpInFiles() now also saves text files which can be used to visualize PTGs from MATLAB (see scripts/viewPTG.m) - r3009
  • mrpt::reactivenav::CHolonomicVFF and mrpt::reactivenav::CHolonomicND now have more configurable parameters, loadable from config files. See their documentation.
  • Repulsive forces from obstacles in mrpt::reactivenav::CHolonomicVFF are now automatically normalized wrt the density of the 360deg view of obstacles and forces follow a "1/range" law instead of the old "exp(-range)".
  • Solved a stability issue in C-S paths, in mrpt::reactivenav::CPTG_DiffDrive_CS (By Mariano Jaimez Tarifa) - r3085


  • mrpt::scanmatching::robustRigidTransformation():
    • Changed behavior not to allow features to appear in duplicated pairings.
    • Added a consistency test to avoid seeding RANSAC with an inconsistent initial model.


  • mrpt::slam::CMetricMapBuilderICP now does not integrate the small pose changes due to odometry and/or relocalization when considering the distance and angle thresholds. This means that fewer map updates are now done for the same ICP-SLAM parameters, which should lead to "less noisy" maps.

New functions:

New examples:

  • octomap_simple
  • ransac-data-association

Build system:

  • Update to nanoflann 1.1.4 - r2937, r3017
  • Update to Eigen 3.1.2 - r3064
  • MRPT's root "CMakeLists.txt" has undergone a big refactoring and cleanup - r2961
  • Backward compatible "mrpt-core" has been removed as a fake lib for which to search with CMake from user programs - r2961
  • More system libs are detected in Linux (libclang-dev, lib3ds-dev), discarding embedded versions then - r2963 - Closes #17
  • Automatic detection of supported SIMD extensions (SSE*) from CMake (only for Linux OS) - r3013
  • Fixed building with Visual Studio 2012 (MSVC11) - r3017
  • MRPT now allows defining header-only libraries with the define_mrpt_lib_header_only() macro - r3034, r3035
  • More unit tests:
  • Added new documentation page: environment variables.
  • Removed the build flag "MRPT_BACKCOMPATIB_08X".
  • Fixes for building under Mac OSX: r3181
  • Enable some c++11 features if the compiler supports them - r3273


  • Build: Fixed detection of OpenCV 2.4.2+ installed in the system via CMake config file instead of pkg-config, which seems to be broken. - r3019
  • [mrpt-base] The iterator returned by end() in all MRPT vectors and matrices (based on Eigen) pointed to the last element, not to the (now correct) next position after the last element - r2941
  • [mrpt-base] mrpt::dynamicsize_vector::resize() performed a memory reallocation even if given the current size, due to an inherited behavior from Eigen. It is not the expected behavior, so it has been fixed. - r3003
  • [mrpt-base] Wrong computation of normPDF() values for the multidimensional cases. Closes #46 - r3068
  • [mrpt-base] mrpt::poses::CPoint::asString() confused the 2D and 3D cases (Thanks Cipri!)
  • [mrpt-base] Fixed errors in de-serialization of mrpt::utils::CPointPDFSOG and mrpt::maps::CReflectivityGridMap2D
  • [mrpt-base] mrpt::math::KDTreeCapable::kdTreeRadiusSearch2D() always returned 0 matched.
  • [mrpt-graphs] Fixed bug in RecursiveSpectralPartition (Thanks to Edu!) - r3026
  • [mrpt-hwdrivers] Fixed potential SEGFAULT in mrpt::hwdrivers::CGPSInterface (Thanks K.Miyawaki for reporting)
  • [mrpt-hwdrivers] Fixed communications to LMS 1xx scanners (Thanks Henry! See )
  • [mrpt-maps] mrpt::maps::COccupancyGridMap2D::getAs3DObject() returned cells with an occupancy of exactly "0" as transparent - r2957
  • [mrpt-maps] Fixed saving the correct point colors in mrpt::maps::CColouredPointsMap::savePCDFile() (Thanks Mariano!) - r3090
  • [mrpt-maps] In CPointsMap::computeMatchingWith3D. Fixed matching two 3D point clouds as each correspondence was inserted twice into the output vector. (By Paco) - r3162
  • [mrpt-opengl] Fixed a potential bug: after deserializing an object based on a display-list (most of them), it won't update in the opengl view.
  • [mrpt-reactivenav] Class mrpt::reactivenav::CHolonomicVFF was not exported in Windows DLL's (Thanks Mariano for noticing!).
  • [mrpt-reactivenav] Fixed wrong computation of obstacles force fields in mrpt::reactivenav::CHolonomicVFF (Thanks Mariano for noticing!) - r2953
  • [mrpt-reactivenav] Precomputed collision grids could be loaded in mrpt::reactivenav::CParameterizedTrajectoryGenerator even for different robot parameters/shape: now it correctly detects such situations and recompute when needed - r2939

Closes #33

  • [mrpt-reactivenav] ND algorithm: Fixed bugs of "last gap is never evaluated" and wrong composition of representative direction for some gaps (By Mariano) - r3056

Version 0.9.6 - (Version 1.0.0-Release_Candidate_4): Released 30-MAY-2012 (SVN 2930)

Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020