MRPT  1.9.9
Change Log

Version 2.0.0: (Under development)

  • 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
  • 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:
    • [mrpt-base] => 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-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_grp [NEW IN MRPT 2.0.0]
    • [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-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.
    • [mrpt-rtti] [NEW IN MRPT 2.0.0]
      • 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.
    • [mrpt-opengl]
      • Update Assimp lib version 4.0.1 -> 4.1.0 (when built as ExternalProject)
    • [mrpt-obs]
    • [mrpt-poses] [NEW IN MRPT 2.0.0]
  • 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.
    • Fix potential crashes in RawLogViewer while editing list of observations.

Version 1.5.7: Released 24/APR/2019

  • Detailed list of changes:
    • [mrpt-base]
      • 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.
  • BUG FIXES:
    • 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.
  • 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_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 namespaces 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:
          DEFINE_SERIALIZABLE_PRE_*(...)
          class XXX {
          };
        • 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]-examples\srba-tutorials\tutorial-srba-how-to-recover-global-map.cpp)
  • BUG FIXES:
    • 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.
  • 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:
    • [mrpt-base]
      • mrpt::poses::CPose3DRotVec is now fully implemented (By Francisco Angel Moreno).
    • [mrpt-opengl]

r3409

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

BUG FIXES:

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

r3429



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


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

r3044

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

[mrpt-bayes]

[mrpt-graphs]

[mrpt-gui]

[mrpt-hwdrivers]

[mrpt-maps]

[mrpt-obs]

[mrpt-opengl]

[mrpt-reactivenav]

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

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

  • 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

BUG FIXES:

  • 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 http://code.google.com/p/mrpt/issues/detail?id=49 )
  • [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: 83b3724f1 Wed Aug 21 03:55:30 2019 +0200 at mié ago 21 04:00:11 CEST 2019