Main MRPT website > C++ reference for 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 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.

Version 1.5.5: (Under development)

  • Detailed list of changes:

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-2017


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.
  • BUG FIXES:
    • 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::utils::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:
          DEFINE_SERIALIZABLE_PRE_*(...)
          class XXX {
          };
          #define DEFINE_SERIALIZABLE(class_name)
          This declaration must be inserted in all CSerializable classes definition, within the class declarati...
        • Must be changed in this version to:
          DEFINE_SERIALIZABLE_PRE_*(...)
          class XXX {
          };
          DEFINE_SERIALIZABLE_POST_*(...)
    • [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]\samples\srba-examples\srba-tutorials\tutorial-srba-how-to-recover-global-map.cpp)
  • BUG FIXES:
    • mrpt::utils::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.
  • BUG FIXES:
    • 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 - (commit)
    • 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)

  • New apps:
  • Changes in apps:
    • rawlog-edit:
      • New operations: –list-timestamps, –remap-timestamps, –export-2d-scans-txt, –export-imu-txt
  • New classes:
  • New functions:
  • Changes in classes:
  • Build system:
    • Updated to nanoflann 1.1.7: ICP is ~5% faster.
    • More unit tests:
      • [mrpt-base] geometry module.
  • BUG FIXES:
    • 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)



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




Page generated by Doxygen 1.9.1 for MRPT 1.9.9 Git: 63ea9d1f1 Thu Nov 23 00:06:53 2017 +0100 at mar 26 may 2026 12:19:29 CEST