Change Log

Version 2.4.6: Released May 24th, 2022

  • Build system

    • Fixed ROS-level public dependencies via package.xml

Version 2.4.5: Released May 22nd, 2022

  • Changes in libraries:

    • New module [mrpt-ros2bridge] to support conversions to/from ROS2 data types and MRPT classes.

  • Build system:

    • Fix detection of dependencies for both ROS1 and ROS2.

Version 2.4.4: Released March 5th, 2022

  • New web-based applications

    • All MRPT modules (including [mrpt-opengl] and mrpt-nanogui) are now compatible with Emscripten so they can run as Javascript + wasm on any modern browser.

  • Changes in applications:

    • RawlogViewer:

      • Browse dialog: Smarter coloring of pointclouds; check all & none buttons for sensor layers.

    • rawlog-edit:

  • Changes in libraries:

  • 3rdparty libraries:

    • Updated libfyaml to v0.7.12.

  • Build system:

    • Allow using libfyaml-dev system package if found.

    • ROS package.xml: update dependencies so all sensors and mrpt-ros1bridge are enabled.

    • Fix detection of ROS1 native *_msgs packages as build dependencies.

    • If ROS environment variables are detected at CMake configure time, unit tests are disabled by default (to reduce build time in build farms).


Version 2.4.3: Released Feb 22nd, 2022

  • Changes in applications:

    • navlog-viewer:

      • The timestamp is now always shown.


Version 2.4.2: Released Feb 3rd, 2022

Version 2.4.1: Released Jan 5th, 2022

Version 2.4.0: Released Dec 12th, 2021

Version 2.3.2: Released Jul 14, 2021

Version 2.3.1: Released May 26th, 2021

Version 2.3.0: Released April 25th, 2021

Version 2.2.0: Released March 10th, 2021

  • Changes in libraries:


    • Fix invalid bounding box returned by octree_getBoundingBox() and mrpt::opengl point cloud classes when empty (Closes #1145).

    • Fix potential infinite recursion in exceptions with stack trace (Closes #1141).

    • Fix potential race conditions accessing waypoint lists in mrpt::nav::CWaypointsNavigator

    • Fix build errors with gcc-11.

Version 2.1.8: Released Feb 23rd, 2021

Version 2.1.7: Released Jan 2nd, 2021


    • Fix bash syntax error in PPA release scripts.

    • Fix Debian bug #978209 : FTBFS: mainwindow.h:218:2: error: reference to Tracker is ambiguous

Version 2.1.6: Released Dec 14th, 2020

  • Changes in libraries:

    • [mrpt-core]

      • Disable the use of BFD for symbols in stack traces by default in Debian builds. It is still used if found in the system and in Ubuntu PPAs.


Version 2.1.5: Released Dec 6th, 2020

Version 2.1.4: Released Nov 8th, 2020

Version 2.1.3: Released Oct 21st, 2020

Version 2.1.2: Released Oct 20th, 2020


Version 2.1.1: Released Oct 19th, 2020

Version 2.1.0: Released Aug 31st, 2020

Version 2.0.4: Released Jun 20, 2020

Version 2.0.3: Released May 13, 2020

  • Changes in applications:

    • navlog-viewer: Can now navigate with keyboard arrows too.

    • RawLogViewer: better 3D pointcloud coloring in observation view and in “scan animation” view.

  • Changes in libraries:

    • [mrpt-maps]

      • Point cloud classes mrpt::maps::CPointsMap : New methods:

        • load2D_from_text_stream()

        • load3D_from_text_stream()

        • save2D_to_text_stream()

        • save3D_to_text_stream()

    • [mrpt-poses]

      • More accurate analytical Jacobians for CPose3DQuatPDFGaussian::inverse() (Closes #1053)

    • BUG FIXES:

      • Incorrect number of points loaded when trying to load point clouds from incorrectly-formatted text files.

      • Fix build error in riscv64 (gcc doesn’t know mtune=native for that arch)

      • Fix spurious unit test failures in mrpt::apps::RawlogGrabberApp due to system load.

Version 2.0.2: Released May 4th, 2020

  • Changes in applications:

    • navlog-viewer: Ported to the new nanogui UI system (fixes random OpenGL context errors in former version).

  • Changes in libraries:

    • mrpt_containers_grp

    • mrtp_hwdrivers_grp

      • Remove support for obsolete XSens MTi 3rd generation devices. Removed class mrpt::hwdrivers::CIMUXSens. 4th+ generation still supported.

    • mrpt_gui_grp

      • Fix mouse-motion rotation glitches if clicking inside a nanogui control.

      • Fix cmake errors building user programs in Windows (missing glfw dependency).

    • mrpt_math_grp

    • mrpt_opengl_grp

    • mrpt_ros1bridge_grp

      • Narrower build and run time dependencies: rosbag -> rosbag_storage

Version 2.0.1: Released April 3rd, 2020

  • Changes in applications:

    • RawLogViewer: new “-l” flag to load datasets with types defined in external projects.

  • Changes in libraries:

Version 2.0.0: Released March 29th, 2020

  • Most important changes:

    • MRPT now requires C++17 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: FooPtr -> Foo::Ptr

    • Add support for serialization with std::variant

    • PbMap has been factored out into its own repository

    • XML-based database C++ classes have been removed from MRPT.

  • Changes in applications:

    • RawLogViewer:

      • The ICP module now supports Velodyne 3D scans.

    • rawlog-edit:

      • New operation: --de-externalize

    • pf-localization:

      • Odometry is now used also for observation-only rawlogs.

  • Changes in libraries:

    • All otherlibs subdirectories have been renamed to 3rdparty since it is a widespread name used in most projects.

    • mrpt_base_grp => Refactored into several smaller libraries, one per namespace.

    • [mrpt-core] [NEW IN MRPT 2.0.0]

      • Memory alignment of aligned_allocator_cpp11<> is set to 16,32 or 64 depending on whether AVX optimizations are enabled, to be compatible with Eigen.

      • mrpt::cpu::supports() : a new cross-OS CPU feature detection function.

      • mrpt::Clock allows users to select between Realtime or Monotonic sources.

      • Removed custom macro MRPT_UNUSED_PARAM (replaced by c++17 attribute).

      • Add syntactic suggar mrpt::lockHelper()

    • [mrpt-math] [NEW IN MRPT 2.0.0]

      • Removed functions (replaced by C++11/14 standard library):

        • mrpt::math::erf, mrpt::math::erfc, std::isfinite, mrpt::math::std::isnan

        • mrpt::math::make_vector<> => std::vector<>{...} braced initializator

      • Removed the include file: <mrpt/math/jacobians.h>. Replace by <mrpt/math/num_jacobian.h> or individual methods in [mrpt-poses] classes.

    • [mrpt-config] [NEW IN MRPT 2.0.0]

    • [mrpt-gui]

    • [mrpt-img] [NEW IN MRPT 2.0.0]

      • mrpt::img::TCamera distortion parameters now also supports the extra K4,K5,K6 distortion parameters.

    • [mrpt-serialization] [NEW IN MRPT 2.0.0]

    • [mrpt-slam]

      • rbpf-slam: Add support for simplemap continuation.

      • CICP: parameter onlyClosestCorrespondences deleted (always true now).

      • mrpt::slam::CICP API: Simplified and modernized to use only one output parameter, using std::optional.

    • [mrpt-system]

      • functions to get timestamp as local time were removed, since they don’t make sense. All timestamps in MRPT are UTC, and they can be formated as dates in either UTC or local time frames.

      • Added: mrpt::system::WorkerThreadsPool

    • [mrpt-rtti] [NEW IN MRPT 2.0.0]

      • All classes are now registered (and de/serialized) with their full name including namespaces. A backwards-compatible flag has been added to mrpt::rtti::findRegisteredClass().

      • CLASS_INIT() macro for automatic registration of classes has been removed, since it is not well-defined in which order global objects will be initialized. Therefore, manual registration (as already done in registerAllClasses.cpp files) is left as the unique registration system. This fixes warning messages “[mrpt::rtti::registerClass] Warning: Invoked with a nullptr”.

    • [mrpt-nav]

    • [mrpt-comms] [NEW IN MRPT 2.0.0]

      • This new module has been created to hold all serial devices & networking classes, with minimal dependencies.

    • [mrpt-maps]

    • [mrpt-hwdrivers]

      • COpenNI2Generic: is safer in multithreading apps.

      • CHokuyoURG:

        • Rewrite driver to be safer and reduce mem allocs.

        • New parameter scan_interval to decimate scans.

      • VelodyneCalibration: Can now load YAML files, in addition to XML.

      • New sensor state enum value: mrpt::hwdrivers::CGenericSensor::ssUninitialized

      • NMEA GPS parser: now also recognizes all existing talker IDs (GP, GN, GA, etc.)

    • [mrpt-opengl]

      • Update Assimp lib version 4.0.1 -> 4.1.0 (when built as ExternalProject)

      • Rendering engine rewritten to work using OpenGL Core (GLSL 3.3) instead of Legacy fixed functions.

    • [mrpt-obs]

    • [mrpt-poses] [NEW IN MRPT 2.0.0]

    • [mrpt-vision]

      • Removed FASTER methods, and the libCVD 3rd party dependency.


    • 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.

    • Fix potential crashes in RawLogViewer while editing list of observations.

    • Fix incorrect conversion from quaternion to CPose3D.

Version 1.5.7: Released 24/APR/2019

  • Detailed list of changes:

    • mrpt_base_grp

      • The following features have been finally ported to C++11. User code now requires, at least, C++11 enabled:

        • stlplus-based smart pointers replaced by std::shared_ptr. Backwards compatibility API is maintained.

        • mrpt::system::TThreadHandle now is a wrapper around std::thread.

        • Atomic counters now based on std::atomic. Custom implementation has been removed.

        • stlplus source code has been removed.

      • mrpt::utils::COutputLogger: change log str format from “[name|type|time]” to “[time|type|name]”.

    • [mrpt-graphslam]

      • levenberg-Marquardt graphslam modified to use more stable SE(2) Jacobians.

      • CNetworkOfPoses: read/write format made compatible with G2O EDGE_SE2 types.

    • [mrpt-nav]

      • Add virtual method CAbstractPTGBasedReactive::getHoloMethod()

      • New method CAbstractPTGBasedReactive::enableRethrowNavExceptions() to rethrow exceptions during navigation.

      • Waypoints now have a field speed_ratio which is directly forwarded to the low-level reactive navigator.

    • BUG FIXES:

      • Fix missing “-ldl” linker flag.

      • Fix building against wxWidgets 3.1.1 in Windows (zlib link error).

      • Fix potential segfault in 3D reactive navigator.

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_grp

    • 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_grp

      • 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 packaging/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 namespace s 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_grp.

    • New library [mrpt-tfest], a refactor of the old mrpt_scanmatching_grp.

    • 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:

      • Clean up of the bad practice of using namespace in public scopes of headers. May lead to user code failing for missing using namespace s which were previously masked.

      • Namespace “slam” deprecated in libraries mrpt-obs and mrpt-maps (used for historical reasons):

        • New namespaces [mrpt-obs] and [mrpt-maps].

        • #include files moved from old paths <mrpt/slam/…> => <mrpt/{obs,maps}/…>

        • Backward compatible headers added in <mrpt/slam/…> until mrpt 2.0.0

      • New library [mrpt-nav], subsumming the old mrpt-reactivenav (mrpt_reactivenav_grp).

      • mrpt_reactivenav_grp is now a meta-library, depending on [mrpt-nav].

      • [mrpt-tfest] : Old library mrpt-scanmatching (mrpt_scanmatching_grp) has been refactored, its API clean-up, and renamed [mrpt-tfest]

      • mrpt_scanmatching_grp is now a meta-library, depending on [mrpt-tfest].

      • These classes have been moved between libs for a more sensible organization:

    • 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]-examplessrba-tutorialstutorial-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

  • Most important changes:

    • Public header files (.h) have undergone a serious refactoring to minimize unnecesary dependencies and reduce compile time and memory as much as possible. As a side effect, user code might need to add new #include<> lines. This change justifies the new minor version series 1.2.X.

    • MRPT now cleanly builds in clang and OSX.

    • Support for new camera drivers (OpenNI2, DUO3D).

    • Many bug fixes.

  • Detailed list of changes:

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)

  • New apps:

  • Changes in apps:

    • rawlog-edit :

      • New operations: list-timestamps, remap-timestamps, export-2d-scans-txt, export-imu-txt

  • New classes:

    • [mrpt-base]

      • mrpt::poses::CPose3DRotVec is now fully implemented (By Francisco Angel Moreno).

    • [mrpt-opengl]

      • mrpt::opengl::CLight - OpenGL scenes now allow customization of OpenGL lighting. See also new lighting methods in mrpt::opengl::COpenGLViewport


  • [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


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

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

  • Most important changes:

    • New library with a flexible implementation of Sparser Relative Bundle Adjustment (RBA), as presented in ICRA 2013: mrpt-srba.

    • New library for Plane-based Maps: mrpt-pbmap (also presented in ICRA 2013).

    • Some MRPT modules are now header-only libraries.

    • Support for a new Octomap metric map, via the octomap library. See mrpt::maps::COctoMap and detailed changes below.

    • Support for importing/exporting point clouds in the standard LAS format (Look for liblas below).

    • Better support for custom builds of MRPT (selective building of individual apps and libs, etc.)

    • Ready for Visual Studio 2012 and GCC 4.7

    • From now on, MRPT is released under the “New BSD” license.

    • Many bug fixes.

  • Detailed list of changes:


  • 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)