Change Log

Starting from MRPT 3.0.0, changes are reported separately in each module’s own CHANGELOG.rst file (located next to its package.xml). The entries below cover the MRPT 2.x series.

Version 2.15.13: UNRELEASED

  • [mrpt-core]

    • mrpt::Clock::fromDouble() : Fixed undefined behavior (and platform-dependent results) when converting timestamps whose UNIX time is negative or near zero. The intermediate value was cast from a negative double to uint64_t, which wraps on x86-64 but saturates to 0 on AArch64, collapsing distinct timestamps to the same tick on ARM.

  • [mrpt-maps]

    • mrpt::maps::CPointsMap now pads with zeros if trying to insert a source point clouds with less fields than the target.

Version 2.15.12: Release Apr 6th, 2026

  • [mrpt-maps]

    • mrpt::maps::CPointsMap and derived classes: API change. Point cloud file names are no longer string_view but std::string. This is to prevent memory corruption due to dangling references and harder to maintain string views.

Version 2.15.11: Release Mar 12th, 2026

Version 2.15.10: Release Feb 14th, 2026

  • Changes in libraries:

Version 2.15.9: Release Feb 13rd, 2026

  • Changes in libraries:

    • [mrpt-containers]

      • Fix build against libfyaml 0.9.4

    • [mrpt-io]

      • Fix CCompressedInputStream uncompressed size hint in big endian architectures

    • Python bindings:

Version 2.15.8: Released Feb 8th, 2026

  • Changes in libraries:

    • [mrpt-opengl]

      • New class mrpt::opengl::CAnimatedAssimpModel for 3D models with animations.

Version 2.15.7: Released Feb 3rd, 2026

Version 2.15.6: Released Jan 29th, 2026

  • nanogui: Updated to new version (DockablePanel)

  • Changes in libraries:

    • [mrpt-maps]

      • All point cloud classes: now gets per-point timestamps from 2D LiDAR range scans.

Version 2.15.5: Released Jan 10th, 2026

  • Bug fixes:

  • Build system:

    • Updated embedded googletest to v1.17.0

Version 2.15.4: Released Dec 26th, 2025

Version 2.15.3: Released Dec 20th, 2025

Version 2.15.2: Released Nov 19th, 2025

Version 2.15.1: Released Oct 29th, 2025

  • Bug fixes:

    • FIX: Avoid throw when viewing and describing as text a PCD with an empty field.

    • Avoid cmake errors when disabling libraries required by some unit tests.

Version 2.15.0: Released Oct 26th, 2025

  • Changes in apps:

    • RawLogViewer:

      • Show stats for mrpt::maps::CGenericPoinsMap.

      • GUI options to colorize clouds by any point cloud field.

  • Changes in libraries:

  • Build system:

    • Completely remove any connection to ROS1 in this repository.

Version 2.14.16: Released Oct 15th, 2025

  • Changes in libraries:

    • [mrpt-rtti]

      • More informative error message when calling clone() on a class without copy constructor.

  • BUG FIXES:

    • Fix build building deprecated warnings in WorkerThreadsPool.

    • Fix mrpt::opengl::CPointCloudColoured throwing if the source cloud map may have color and color/intensity channels are actually empty.

Version 2.14.15: Released Sep 29th, 2025

  • BUG FIXES:

    • Fix regression in OpenGL application crashing after last update.

Version 2.14.14: Released Sep 27th, 2025

  • BUG FIXES:

    • Fix missing backported fix to build mrpt::lockHelper() on modern gcc

    • Fix OpenGL crashes under specific build flags: OpenGL Buffers and VBO changed so they are initialized after constructor.

Version 2.14.13: Released Sep 27th, 2025

  • Changes in libraries:

  • BUG FIXES:

    • Fix mrpt::opengl::CEllipsoid3D wrong direction.

    • Fix potential race conditions in TBB-parallel particle filters with 2D gridmap.

    • Harden opengl unit tests against crashes on non-GPU runners.

    • Fix build against ffmpeg 8.0 (Debian bug #1115064)

Version 2.14.12: Released Aug 31rd, 2025

  • Changes in libraries:

    • [mrpt-opengl]

      • New method mrpt::opengl::CPointCloudColoured::setAllPointsAlpha().

Version 2.14.11: Released May 31rd, 2025

  • BUG FIXES:

    • Fix build against all tf2 versions in all active ROS 2 distributions.

Version 2.14.10: Released May 23rd, 2025

  • BUG FIXES:

    • Fix build in ROS rolling: Unknown CMake command "ament_target_dependencies".

Version 2.14.9: Released May 17th, 2025

  • BUG FIXES:

    • Fix build with latest tf2 version.

Version 2.14.8: Released Apr 25th, 2025

  • Build system:

    • Fix build w/o OpenCV.

  • BUG FIXES:

    • RawLogViewer scan matching module GUI was broken.

    • CCameraSensor would crash at the end of a video file input.

Version 2.14.7: Released Dec 9th, 2024

  • Changes in apps:

  • Changes in libraries:

  • Build system:

    • mrpt-*-config.cmake files now enforce the search of cmake dependencies in CONFIG mode, to avoid being foolish by deprecated FindXXX() lying around.

Version 2.14.6: Released Dec 3rd, 2024

  • Changes in libraries:

    • mrpt_gui_grp:

      • Added a new mouse control to rotate OpenGL cameras by pressing the “Alt” key.

    • mrpt_opengl_grp:

      • mrpt::opengl::Texture now supports rendering 16-bit images.

      • mrpt::opengl::CCamera now has a “roll” angle when in orbit-view mode.

  • BUG FIXES:

    • mrpt::opengl::CMesh: There was a bug with texture scaling with non-square images.

Version 2.14.5: Released Nov 4th, 2024

  • Upgraded nanoflann to v1.6.2 (fixes a potential bug).

  • Debian files:

    • Fix appstreamcli warnings in metadata XML files.

  • Changes in libraries:

  • BUG FIXES:

    • mrpt::maps::CPointsMapXYZIRT::getPointRGB() now handles the case of no intensity without throwing, fixing the visualization of such clouds through mrpt::opengl::CPointCloudColoured::loadFromPointsMap().

    • GridmapNavSimul: Loading a different gridmap won’t update the map visualization.

Version 2.14.4: Released Oct 19th, 2024

  • BUG FIXES:

    • mrpt::nav::CAbstractPTGBasedReactive : Missing heading information in recently-added TP-Space targets as TPose2D.

    • rosbag2rawlog: Fix detection of mrpt-ros1bridge when built within mrpt_ros ROS packaging.

Version 2.14.3: Released Oct 12th, 2024

  • Changes in libraries:

    • mrpt_img_grp:

    • mrpt_math_grp:

    • mrpt_nav_grp:

      • mrpt::nav::CWaypointsNavigator : New parameter “minimum_target_approach_per_step” and feature to keep approaching waypoints until no significant improvement is done.

      • mrpt::nav::CHolonomicFullEval : Rewritten TP-Space data structures so the target heading is visible to holonomic evaluator algorithms. Added a new weight [7] related to correct alignment at target. All RNAV INI files have been updated accordingly.

    • [mrpt-ros1bridge] and mrpt_ros2bridge_grp:

      • Convert from MRPT occupancy grids to ROS: Add new optional parameter to interpret grid maps as cost maps.

Version 2.14.2: Released Oct 5th, 2024

  • Changes in libraries:

    • mrpt_nav_grp:

      • Add generic internalState to PTGs.

    • mrpt_opengl_grp:

      • mrpt::opengl::CMesh: Remove the annoying warning “Texture image and Z matrix have different sizes”

Version 2.14.1: Released Sep 24th, 2024

  • Changes in apps:

    • SceneViewer3D: New button to enable shadow casting.

  • Changes in libraries:

    • mrpt_opengl_grp:

      • New method mrpt::opengl::CAssimpModel::split_triangles_rendering_bbox() to enable a new feature in Assimp 3D models: splitting into smaller triangle sets for correct z-ordering of semitransparent objects; e.g. required for trees with masked leaves.

      • SkyBox shader changed its internal ID so it gets rendered before potentially transparent elements, fixing render artifacts.

      • mrpt::opengl::Texture : Wrapped OpenGL options for texture coordinate wrapping.

    • mrpt_ros2bridge_grp:

      • Handle PointCloud2 with uint32 timestamps, interpreted as nanoseconds.

Version 2.14.0: Released Sep 15th, 2024

Version 2.13.8: Released Sep 7th, 2024

  • Changes in libraries:

    • mrpt_vision_grp:

      • mrpt::vision::TMatchingOptions: Remove useless custom “operator=”.

    • pymrpt:

      • Fix all C++ build warnings in pymrpt.

  • BUG FIXES:

    • Fix unstable keypoint KLT response values leading to NaN in some architectures.

    • Fix tons of typos and Debian-specific spare install files (lintian pedantic).

    • Fix segfault in arm64 EKF unit tests.

    • Fix bug in mrpt::system::CDirectoryExplorer : it would throw and stop if finds a broken symlink.

    • Fix regression in mrpt::math::KDTreeCapable : all RKNN calls (NN with maximum radius) may return undefined pairing indices if less than N points are found within the given radius.

Version 2.13.7: Released Aug 22nd, 2024

  • Changes in apps:

    • rosbag2rawlog (ROS1): Implement generation of odometry from /tf messages.

  • BUG FIXES:

    • Fix incorrect check in mrpt-io unit tests leading to potential false positives.

Version 2.13.6: Released Aug 14th, 2024

  • Build system:

  • BUG FIXES:

    • CWaypointsNavigator::waypoints_navigationStep() stops aligning with target after the waypoint is considered as reached.

    • Fix FTBFS in Debian sid (g++-14) due to missing #include <iomanip>.

Version 2.13.5: Released Aug 5th, 2024

  • Changes in libraries:

    • mrpt_ros2bridge_grp:

      • mrpt::ros2bridge::toROS() conversion from PointCloud2 to mrpt::maps::CPointsMapXYZIRT:

        • Recognize timestamp field names "t" and "timestamp", apart of "time".

        • Fixed detection of timestamp fields in Float64 format, and convert them from absolute to relative timestamps.

  • BUG FIXES:

    • ros1bridge and ros2bridge: fix conversion to PointCloud XYZI.

Version 2.13.4: Released July 24th, 2024

  • Fix docs typos.

  • Upgraded nanoflann to v1.6.0 (fixes an important bug).

Version 2.13.3: Released July 1st, 2024

  • Build system:

    • ROS package.xml: Re-enable the octomap dependency

  • BUG FIXES:

    • Fix FTBFS of pymrpt for armhf

    • Fix failing unit tests for KLT_response() in non-Intel architectures.

Version 2.13.2: Released June 23rd, 2024

  • Changes in libraries:

    • mrpt_maps_grp:

    • mrpt_obs_grp:

    • mrpt_ros1bridge_grp:

      • mrpt::ros1bridge::toROS() conversion from PointCloud2 to mrpt::maps::CPointsMapXYZIRT: recognize timestamp field names "t" and "timestamp", and support conversion from uint32_t timestamps as nanoseconds.

  • BUG FIXES:

    • mrpt::vision::CFeatureTracker_KL: Parameter LK_epsilon was rounded to integer.

    • mrpt::maps::CPointsMapXYZI::insertPointFast() did also append to the intensity channel, which is inconsistent behavior with the other map classes.

Version 2.13.1: Released June 5th, 2024

  • BUG FIXES:

    • nanogui: Fix invalidation of iterators/references in widget lists.

    • rnav: fix exception thrown when target is out of the domain of one PTG.

Version 2.13.0: Released May 19th, 2024

  • Changes in apps:

    • SceneViewer3D: it now automatically guesses the min/max clip planes from the scene bounding box.

    • rosbag2rawlog (ROS1): tolerate loss of some sensor observations if /tf has not been yet received instead of aborting conversion.

  • Changes in libraries:

  • BUG FIXES:

Version 2.12.2: Released April 23rd, 2024

  • Changes in libraries:

    • mrpt_math_grp:

      • Remove deprecated headers:

        • <mrpt/math/lightweight_geom_data_frwds.h>

        • <mrpt/math/lightweight_geom_data.h>

      • Static constructors of mrpt::math::TPoint2D and mrpt::math::TPoint3D marked as [[nodiscard]].

    • mrpt_opengl_grp:

      • Render pipeline is now robust against exceptions thrown in the 3D entities boundingBox determination methods.

  • BUG FIXES:

Version 2.12.1: Released April 4th, 2024

Version 2.12.0: Released March 17th, 2024

  • Changes in libraries:

  • BUG FIXES:

    • Fix Debian bug #1066207: FTBFS in latest sid due to undefined declarations in mrpt_xsens C library.

    • Fix FTBFS if using embedded libfreenect due to undefined declarations (usleep).

    • Update embedded version of libfreenect to v0.7.0

    • Fix wrong computation of bounding boxes for mrpt::opengl::CSetOfObjects.

Version 2.11.12: Released March 10th, 2024

Version 2.11.11: Released March 5th, 2024

  • Changes in libraries:

    • mrpt_ros1bridge_grp:

      • Add missing mrpt::ros1bridge::toROS() for mrpt::maps::CPointsMapXYZIRT => PointCloud2 conversions.

  • BUG FIXES:

Version 2.11.10: Released Feb 19th, 2024

  • Changes in libraries:

    • mrpt_maps_grp:

    • mrpt_vision_grp:

      • Remove functions that were problematic with opencv 5: mrpt::vision::findMultipleChessboardsCorners()

  • Others:

    • Fix Debian appstream warnings on mrpt-apps.

    • Fix build against opencv 5.

Version 2.11.9: Released Feb 11th, 2024

Version 2.11.8: Released Feb 7th, 2024

  • Changes in apps:

    • RawLogViewer: Show pointcloud ring, intensity, and time min/max ranges.

    • rawlog-edit: Show dataset duration as formatted time interval.

    • rosbag2rawlog (ROS 1):

      • Added support for XYZIRT point clouds.

      • Finally, implemented automatic detection of sensor poses wrt base_link from tf messages, with an option to manually override sensor poses from YAML config.

  • Changes in libraries:

    • mrpt_maps_grp:

    • mrpt_ros1bridge_grp:

      • Add missing mrpt::ros1bridge::fromROS() for PointCloud2 => mrpt::maps::CPointsMapXYZIRT conversions.

    • mrpt_ros2bridge_grp:

      • Fix wrong macros leading to including obsolete header <cv_bridge/cv_bridge.h>.

    • mrpt_system_grp:

Version 2.11.7: Released Jan 25th, 2024

  • Changes in apps:

    • carmen2rawlog: Generate valid timestamps.

    • rosbag2rawlog: Add support for sensor_msgs/CompressedImage topics.

  • BUG FIXES:

Version 2.11.6: Released Jan 13th, 2024

  • Changes in libraries:

  • BUG FIXES:

    • Fix wrong filenames in rawlog-edit --externalize when sensor labels contain the / character (e.g. mimicking ROS topic names).

    • Fix crash in mrpt::ros2bridge::toROS() for XYZIRT point clouds.

    • Fix exception while rendering paths in the ptg-configurator application.

    • Fix potential race condition in mrpt::obs::CObservation3DRangeScan.

Version 2.11.5: Released Dec 21st, 2023

Version 2.11.4: Released Dec 15th, 2023

  • Changes in apps:

    • RawLogViewer: visualize mrpt::obs::CObservationRotatingScan as point cloud + range image + intensity image.

    • rawlog-edit: --info command now also shows the type of each sensor label.

  • Changes in libraries:

  • BUG FIXES:

    • Fix missing Threads::Threads downstream due to missing find_dependency(Threads) in MRPT cmake config files.

    • Fix broken import of PLY files in SceneViewer3D (empty scene even if correctly imported).

    • mrpt::math::CMatrixDynamic constructor from (row,col) was not marked explicit, leading to potential problems.

    • mrpt::opengl::Viewport::setViewportPosition() did not handle negative width values as expected (i.e. pixel distances from the opposite corner).

Version 2.11.3: Released Nov 21st, 2023

Version 2.11.2: Released Oct 25th, 2023

Version 2.11.1: Released Oct 23rd, 2023

  • Changes in libraries:

    • [mrpt-math]

      • Fix several build warnings introduced in the last version.

    • [mrpt-maps]

      • Voxel maps: A voxel is considered occupied if its occupancy is larger than likelihoodOptions.occupiedThreshold instead of a fixed 0.5.

Version 2.11.0: Released Oct 19th, 2023

Version 2.10.2: Released Oct 5th, 2023

  • Build system:

    • ROS: fix missing deps in package.xml needed for build via Nix.

    • MRPT and OpenCV versions were until now exposed as macros with 3 hexadecimal digits (e.g. 2.4.0 -> 0x240), with a clear limitation of versions greater than 15. Now, both symbols MRPT_VERSION and MRPT_OPENCV_VERSION_NUM use TWO hexadecimal digits per version part, like: 2.10.2 -> 0x010A02, which is much more general and safe for the future. For backwards compatibility, just make sure your user code only uses MRPT_VERSION>=xxx or MRPT_VERSION>xxx comparisons, instead of less-than comparisons (Fixes issue #1285).

  • Changes in apps:

    • rawlog-edit: Add --select-label optional filter to command --remap-timestamps.

  • Changes in libraries:

  • BUG FIXES:

    • Fix CSparse “C” linkage build error (OSX Clang). PR #1280

    • Fix missing Python wrapping of poses PDF (poses with uncertainty) composition (oplus and ominus) operators. (Closes #1281). PR #1283

    • Fix wrong Jacobian in mrpt::math::CQuaternion::rpy_and_jacobian() for the case of Gimbal Lock. Thanks @giafranchini for reporting!. PR #1290 (Closes #1289)

    • Fix spurious failures in offscreen render unit tests in RISCV64 (Closes #1287).

Version 2.10.1: Released August 10th, 2023

  • Build system:

    • Add cmake flag to disable LTO in pymrpt module.

    • Add -flto=auto to pymrpt so linking is much faster.

  • BUG FIXES:

    • Fix “FTBFS when binutils-dev is installed but not libiberty-dev” (Debian bug #1041165)

    • pymrpt Debian packaging: triggering of post/pre installation scripts was missing.

Version 2.10.0: Released July 9th, 2023

  • Changes in libraries:

    • [mrpt-opengl]

      • Move the parameter eyeDistance2lightShadowExtension from TRenderMatrices to mrpt::opengl::TLightParameters so it can be changed from user code (ABI change).

      • New parameter mrpt::opengl::TLightParameters::minimum_shadow_map_extension_ratio

  • Python:

    • More pymrpt examples.

  • BUG FIXES:

    • pymrpt was not automatically built when invoking the python tests using make test_legacy.

Version 2.9.4: Released July 1st, 2023

  • Python:

    • pymrpt now ships stub .pyi files, for IDEs to autocomplete MRPT Python programs.

    • maps and multimaps are iterable again (Fixes a regression in v2.9.3)

    • timestamps now has a __str__ operator and to_double() method.

  • Build system:

    • Fix several modern cmake warnings.

  • BUG FIXES:

    • Fix fail to build with libftdi1 v1.4 (Ubuntu Focal).

Version 2.9.3: Released June 22nd, 2023

  • Python:

    • New module pymrpt.ros_bridge

    • Matrices now have proper conversion and accessor methods in the Python API, including conversion from/to numpy.

    • Reduce build time of pymrpt.

Version 2.9.2: Released June 20th, 2023

Version 2.9.1: Release June 14th, 2023

  • Build system:

    • ROS 2: fix missing explicit dep on rclcpp in package.xml.

Version 2.9.0: Released June 7th, 2023

  • Changes in apps:

  • Changes in libraries:

    • New Python3 module pymrpt with an almost full wrapping of all MRPT classes (via pybind11). Refer to the Python API documentation (pydoc3).

    • Removed the legacy module mrpt::hmtslam and associated applications. Please refer to older MRPT releases if needed.

    • Removed all deprecated functions and headers.

    • [mrpt-ros2bridge]

      • Fix use of obsolete header <cv_bridge.h> in newer ROS distributions.

Version 2.8.1: Released April 17th, 2023

  • Changes in libraries:

    • [mrpt-opengl]

      • Expose shadow bias parameters into mrpt::opengl::TLightParameters

  • BUG FIXES:

    • OpenGL shadow rendering: Fix error in calculation of anti peter-panning and shadow acne effects.

Version 2.8.0: Released April 8th, 2023

  • Changes in apps:

  • Changes in libraries:

    • [mrpt-hwdrivers]

    • [mrpt-math]

      • mrpt::math::getRegressionPlane() return value is not roughly the inverse of the condition number of the regression problem, which gives a stronger quality indicator than the former formula.

    • [mrpt-opengl]

      • Header <mrpt/opengl.h> has been updated to include the backwards-compatible type mrpt::opengl::COpenGLScene to smooth transition of existing code bases.

      • mrpt::opengl::CSphere now has a number of divisions property instead of two (one of them was not actually used).

      • Fixed const correctness of mrpt::opengl::CGeneralizedEllipsoidTemplate::getNumberOfSegments()

    • [mrpt-system]

      • Removed mrpt::system::setConsoleColor() (Deprecated since MRPT 2.3.3)

  • Build system:

    • Fix use of obsolete qt5_use_modules().

    • New minimum CMake version required is CMake 3.16.0

  • BUG FIXES:

    • Fix regression in mrpt::obs::CRawlog::detectImagesDirectory() leading to RawLogViewer and other apps not finding the external image directories for datasets.

    • Fix wrong rendering of shadows of lines when in orthographic projection.

    • mrpt::opengl::CSphere::onUpdateBuffers_Triangles() did not update the list of points

Version 2.7.0: Released March 4th, 2023

  • Changes in libraries:

    • [mrpt-gui]

      • All OpenGL viewports: pan is now also achieved by pressing the mouse middle button (wheel) + dragging, for similarity with many other CAD UIs.

    • [mrpt-opengl]

      • Shadows can now be rendered for directional lights. See mrpt::opengl::Viewport::enableShadowCasting()

      • These class names have been shortened for ease of use (typedefs with the older names still exist for backwards compatibility, including deserialization of old files):

        • mrpt::opengl::COpenGLScene ==> mrpt::opengl::Scene

        • mrpt::opengl::COpenGLViewport ==> mrpt::opengl::Viewport

      • New class mrpt::opengl::CSkyBox for rendering “3D background” as sky boxes. Refer to example Example: opengl_skybox_example

      • OpenGL shaders: more rational use of GLSL precision specifiers: highp for positions, lowp for colors.

      • New flag mrpt::opengl::CFBORender::Parameters::raw_depth

      • mrpt::opengl::FrameBuffer : Remove stencil bit for faster off-screen rendering.

      • New class mrpt::opengl::OpenGLDepth2LinearLUTs

      • mrpt::opengl::CMesh now supports texture wrapping over the mesh extension.

      • Texture handling refactored into a new class mrpt::opengl::Texture

      • Enabled GL MipMap texture generation.

      • Triangles shaders now also account for shininess of material to generate specular reflections. See new method mrpt::opengl::CRenderizable::materialShininess()

      • mrpt::opengl::TLightParameters has been modified to make it more consistent: just one light color and three floats (diffuse, ambient, specular).

      • mrpt::opengl::CRenderizable base methods are now 100% thread-safe. getPoseRef() method has been removed since it was not safe.

  • BUG FIXES:

Version 2.6.0: Released January 12th, 2023

  • Changes in libraries:

    • [mrpt-math]

      • Remove unused header: <mrpt/math/bits_math.h>

    • [mrpt-opengl]

      • New method mrpt::opengl::CAssimpModel::texturedObjects()

  • BUG FIXES:

    • Fix wrong evaluation of the pivot point for the angular threshold parameters in ICP (Closes #1264)

Version 2.5.8: Released January 7th, 2023

Version 2.5.7: Released November 25th, 2022

  • Changes in applications:

  • Changes in libraries:

  • General build changes:

    • clang-format: enforce and upgraded to use clang-format-11.

  • BUG FIXES:

    • Fix crash if calling mrpt::opengl::CSetOfObjects::getByName() with null pointers as children objects.

    • Fix opengl resources leak if mrpt::opengl::CRenderizableShaderTexturedTriangles instance is destroyed from a thread different than the one used to render.

Version 2.5.6: Released November 12th, 2022

Version 2.5.5: Released October 19th, 2022

  • Changes in applications:

    • ptg-configurator:

      • A maximum trajectory time can be specified now for rendering PTGs.

      • New CLI arguments --ini, --ini-section to automate loading custom INI files.

  • Changes in libraries:

    • [mrpt-containers]

      • mrpt::container::yaml:

        • Clearer error messages when an invalid type conversion is requested.

        • It now does not throw internal exceptions when trying to convert strings to bool.

    • mrpt_imgs_grp

    • [mrpt-math]

      • Correct copyright notes for embedded version of the CSparse sources (PR #1255).

    • [mrpt-typemeta]

      • mrpt::typemeta::TEnumType<> on invalid names, it now prints all valid known enum names in its exception error message.

Version 2.5.4: Released September 24th, 2022

  • Changes in libraries:

  • BUG FIXES:

    • Fix build on hppa for parisc architecture too (not supported flag -mtune=native)

    • nanogui: Fix mismatched memory allocator/free in serialization code.

    • Fix potential segfault in RawLogViewer while building the tree view.

Version 2.5.3: Released September 6th, 2022

  • Changes in libraries:

    • [mrpt-gui]

      • nanogui::mainloop() (and mrpt::gui::CDisplayWindowGUI()) now allows defining a minimum period for calls to user callback functions via a new second optional parameter.

    • [mrpt-obs]

      • Not all CObservation* classes were declared in <mrpt/obs/obs_frwds.h>. Now it is corrected.

  • BUG FIXES:

    • Fix build on hppa (parisc64) architecture (not supported flag -mtune=native)

Version 2.5.2: Released August 30th, 2022

Version 2.5.1: Released August 4th, 2022

  • Changes in applications:

    • RawLogViewer:

      • Bold points when selecting a sensor in the timeline UI.

  • Changes in libraries:

    • Embedded nanoflann version upgraded to v1.4.3

  • BUG FIXES:

    • Fix regression: mrpt::opengl::CAssimpModel may fail to resolve texture relative paths.

    • mrpt::opengl::CMesh was implementing texture coordinates flipping (u,v) wrt documented behavior.

    • Fix static_assert() failure in CTicTac when building with latest emscripten clang compiler.

    • Fix regression: yaml parsing boolean values may throw an exception inside std::stoi().

Version 2.5.0: Released July 18th, 2022

Version 2.4.10: Relased June 24th, 2022

  • Changes in applications:

    • ptg-configurator:

      • New menu action to export selected path to matlab/octave script.

    • RawLogViewer:

      • Visual improvements and display of timestamps in local time too.

  • Changes in libraries:

    • [mrpt-obs]

      • New set of functions to help visualize observations: customizable_obs_viz_grp

    • [mrpt-poses]

      • Adds covariance mapping to SE(3) for GTSAM (Closes #1229)

    • [mrpt-ros1bridge]

      • Import mrptToROSLoggerCallback() from the now obsolete mrpt_bridge package into mrpt::ros1bridge.

  • Build system

    • Fix ROS version detection; select ROS2 if packages for both versions are found.

  • BUG FIXES:

    • Fix mrpt-comms rare timeout in busy build farms.

    • mrpt::ros1bridge and mrpt::ros2bridge were not correctly exporting the fromROS() function for LaserScan messages.

Version 2.4.9: Released June 7th, 2022

Version 2.4.8: Released May 26th, 2022

  • Build system:

    • Fixed various ROS-level public dependencies.

Version 2.4.7: Released May 26th, 2022

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

  • BUG FIXES:

    • ASSERT_NEAR_() did not work correctly when arguments were expressions with operators.

    • Fixed incorrect parsing of strings with whitespaces in mrpt::from_string<>() when converting to std::string

    • mrpt::obs::CObservation3DRangeScan::get_unproj_lut() was ignoring the depth camera distortion model and always assumed plumb_bob.

    • mrpt::ros1bridge converter for IMU observations now correctly handles missing IMU readings (ROS convention of “-1” in covariance).

Version 2.4.3: Released Feb 22nd, 2022

  • Changes in applications:

    • navlog-viewer:

      • The timestamp is now always shown.

  • BUG FIXES:

    • Do not run offscreen rendering unit tests in MIPS arch, since they seem to fail in autobuilders.

    • mrpt::vision::checkerBoardCameraCalibration() did not return the distortion model (so if parameters are printed, it would look like no distortion at all!).

    • mrpt::gui::CDisplayWindowGUI::createManagedSubWindow() created the subwindows helper UI on top of the other user windows. It now remains on the back of other windows.

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

  • General build changes:

    • CMake >=3.8.0 is now required to ensure proper handling of dependencies compile options.

  • Changes in applications:

    • ptg-configurator: target now also comprises a heading angle.

    • RawLogViewer:

      • New tab with CObservation3DRangeScan visualization options.

      • All icons have been updated for a more modern look.

  • Changes in libraries:

  • BUG FIXES:

    • ptg-configurator: Fix failure to list existing PTGs, due to RTTI unregistered name “CParameterizedTrajectoryGenerator”.

    • mrpt::opengl::Viewport::get3DRayForPixelCoord() returned wrong pixel coordinates when in orthogonal projection mode.

    • mrpt::opengl::CArrow: Fix wrong normal calculation (wrong rendering reflections).

    • mrpt::opengl::CPointCloud::markAllPointsAsNew() and mrpt::opengl::CPointCloudColoured::markAllPointsAsNew() did not refresh OpenGL buffers.

    • mrpt::nav::CPTG_DiffDrive_CollisionGridBased::getPathTwist() returned much larger velocities than the actual values.

    • Fix broken Debian dependencies for libmrpt-vision-lgpl (Closes Debian bug #986071).

    • mrpt::maps::CPointsMap::load2Dor3D_from_text_stream() for 2D maps left uninitialized values in z. Fixed to load zeros instead.

    • Fixed crash in mrpt::vision::checkerBoardCameraCalibration() causing segfault in the camera-calib app.

Version 2.2.0: Released March 10th, 2021

  • Changes in libraries:

    • mrpt_vision_grp

      • Remove all obsolete SIFTOptions.implementation values. OpenCV is now the only possibility.

    • [mrpt-nav]

  • BUG FIXES:

    • 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

  • Changes in applications:

    • RawLogViewer:

      • “Scan animation” window: now also shows the timestamp of observations.

    • camera-calib and kinect-stereo-calib:

      • New option to save camera calibration results as YAML files.

    • navlog-viewer:

      • New option to enable orthogonal view.

  • General build changes:

    • Fix excessive alignment in aarch64 (32->16 bytes).

    • clang-format: enforce and upgraded to use clang-format-10.

    • Fix building against the non-legacy GL library (Linux).

    • nanoflann source code is no longer included as a copy: it will be used as the system library libnanoflann-dev, or as a git submodule if the former is not found.

  • Changes in libraries:

  • BUG FIXES:

    • Log *_THROTTLE_* macros (e.g. MRPT_LOG_THROTTLE_DEBUG) did not report the message the first time they were called, which seems a safer behavior.

    • Reverted changed behavior: mrpt::config::CConfigFile did not throw if a non-existing file was passed to its constructor, but it throws in MRPT 2.1.{0-7}.

    • Fix build against opencv 2.4.x (version in Ubuntu Xenial 16.04).

    • Fixed: CHokuyoURG::initialize() won’t report sensor status as ssError if it fails to communicate with the sensor, incorrectly leaving it as ssInitializing instead.

    • Fixed: mrpt::opengl::CTexturedPlane::setPlaneCorners() did not check for incorrect null width or height.

    • Fixed: mrpt::opengl textured objects leaking memory (Closes #1136).

    • Fix bug in parsing CARMEN logs: mrpt::obs::carmen_log_parse_line() returned all scan ranges marked as “invalid”.

Version 2.1.7: Released Jan 2nd, 2021

  • BUG FIXES:

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

  • BUG FIXES:

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

  • BUG FIXES:

Version 2.1.1: Released Oct 19th, 2020

  • Changes in applications:

    • SceneViewer3D:

      • Command-line argument is now interpreted as ASSIMP model to open if it is not a 3Dscene.

      • New menu: “File -> Import -> Show image” useful to test image-mode viewport rendering.

  • Changes in libraries:

  • BUG FIXES:

    • navlog-viewer: Crash when clicking “play” (Closes #1103).

    • RawLogViewer: Fix wrong indices in tree view. Fix freezed progress bar loading a second rawlog.

    • RawLogViewer: Fix wrong rendering if font is missing in the system (Ubuntu 20.04)

    • rawlog-edit: Fix cut operation leaving empty sensory frames/action collections.

    • mrpt::opengl::CCylinder::setHasBases() was ignored since last OpenGL3 refactor.

    • Fix building against OpenCV 4.4

    • Correct texture loading in mrpt::opengl::CAssimpModel.

    • Fix wrong aspect ratio of image-mode opengl viewports (Closes #1101).

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

      • Fix displaying of uninitialized textured in mrpt::opengl::CTexturedPlane. It now uses the default solid color of the object.

    • 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 xxx.so” 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 formatted 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::maps::CMultiMetricMap has been greatly simplified and now it is actually defined in the mrpt-maps library.

      • New map type: mrpt::maps::CPointsMapXYZI for pointclouds with an intensity channel.

      • New observation class: mrpt::obs::CObservationPointCloud

      • Added optional “channel” attribute to CReflectivityGridMap2D and CObservationReflectivity to support different colors of light.

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

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

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

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

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

ReactiveNavigationDemo has been totally rebuilt as a 3D visualizer capable of testing different navigation algorithms and robot kinematics.

  • RawLogViewer :

    • Now displays a textual and graphical representation of all observation timestamps, useful to quickly detect sensor “shortages” or temporary failures.

    • New menu operation: “Edit” -> “Rename selected observation”

    • mrpt::obs::CObservation3DRangeScan pointclouds are now shown in local coordinates wrt to the vehicle/robot, not to the sensor.

rawlog-edit : New flag: --txt-externals

Version 1.4.0: Released 22-APR-2016

gps2rawlog : Application to parse raw dumps of a GPS (GNSS) receiver output.

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

  • Changes in apps:

navlog-viewer : Now shows more information on navigation logs.

  • New app icp-slam-live : Real-time ICP-SLAM with a LIDAR sensor.

Changes in libraries:

BUG FIXES:

  • Fix ocasional (false) failure of RANSAC unit tests due to their non-deterministic nature.

  • Fix build error with MSVC 2010 in mrpt-hmtslam (Closes #127).

  • Fixed potential wrong bounding box results in mrpt::maps::CPointsMap::boundingBox() when SSE2 optimization is enabled.

  • mrpt::obs::CObservation6DFeatures : Fixed random crashes related to non-aligned memory in 32bit builds (Fixes #141)

  • Fix Debian bug #786349 on Eigen2 support.

  • mrpt::hwdrivers::CIMUXSens_MT4 : Fix crash in destructor of objects not attached to a physical device.

  • Fix wrong quaternion cross product when target variable is one of the operands. Also affected the += operator of mrpt::poses::CPose3DQuat (Fixes #148)

  • mrpt::hwdrivers::CKinect with libfreenect driver: Fix potential memory corruption.

  • Fix a bug in mrpt::tfest::se3_l2_robust() that led to it returning without trying to find a good consensus solution. It affected the demo app kinect-3d-slam (Fixes #156)

  • Fix wrong feature points in CFeatureExtraction::extractFeaturesKLT() (Fixes #138)

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:

        • mrpt::slam::CDetectorDoorCrossing ==> mrpt::detectors::CDetectorDoorCrossing

        • mrpt::slam::CPathPlanningMethod & CPathPlanningCircularRobot: [mrpt_slam] ==> [mrpt-nav]

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

      • [mrpt-base]

      • [mrpt-hwdrivers]

        • mrpt::hwdrivers::CIMUXSens_MT4 : (by Joe Burmeister for Suave Aerial Software)

          • Upgrade to latest XSens SDK 4.2.1. Requires libudev-dev in Linux

          • Add GPS observations to CIMUXSens_MT4 for Xsens devices like GTi-G-700 which have GPS

        • mrpt::hwdrivers::CImageGrabber_dc1394 : Length of ring buffer is now configurable via TCaptureOptions_dc1394::ring_buffer_size

      • [mrpt-maps]

      • [mrpt-obs]

        • CObservation::getDescriptionAsText(): New virtual method to obstain a textual description of observations. Refactoring of messy code previously in the RawLogViewer app.

      • [mrpt-vision]

        • mrpt::vision::CFeatureExtraction: Removed (unused) optional ROI parameter in detectors.

    • BUG FIXES:

      • mrpt::poses::CRobot2DPoseEstimator could estimate wrong angular velocities for orientations near +-180deg.

      • mrpt::system::CDirectoryExplorer::sortByName() didn’t sort in descending order

      • Fixed crashes from MATLAB .mex files: mrpt::system::registerFatalExceptionHandlers() has no longer effect, and will be removed in future releases. (Thanks to Jesús Briales García for all the testing!)

      • Fixed potential crash for Eigen unaligned memory access in 32bit builds in mrpt::slam::CGridMapAligner and other places (Closes #94)

Version 1.2.2: Released 12-SEP-2014

  • Changes in apps:

    • SceneViewer3D :

      • New menu “File” -> “Import” -> “3D model” which supports many standard formats (via mrpt::opengl::CAssimpModel)

  • New classes:

    • [mrpt-hwdrivers]

    • [mrpt-opengl]

      • mrpt::opengl::CAssimpModel for rendering complex 3D models (many supported formats) in OpenGL scenes.

  • 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 {
            DEFINE_SERIALIZABLE(XXX)
          };
        • Must be changed in this version to:

          DEFINE_SERIALIZABLE_PRE_*(...)
          class XXX {
            DEFINE_SERIALIZABLE(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]samplessrba-examplessrba-tutorialstutorial-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:

    • [mrpt-base]

      • All points and poses now have a method setToNaN(), e.g. mrpt::poses::CPose3D::setToNaN()

    • [mrpt-hwdrivers]

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

    • Changes in apps:

      • rawlog-edit :

        • New operations: export-odometry-txt, recalc-odometry

        • New flag: rectify-centers-coincide

    • New examples:

      • kitti_dataset2rawlog

    • New classes:

    • Changes in classes:

    • Build system / public API:

      • Fixes to build in OS X - Patch by Randolph Voorhies.

      • Removed most “using namespace” from public headers, as good practice.

      • Refactoring of MRPT headers.

        • <mrpt/utils/stl_extensions.h> has been split into:

          • <mrpt/serialization/stl_serialization.h>

          • <mrpt/containers/circular_buffer.h>

          • <mrpt/utils/list_searchable.h>

          • <mrpt/containers/bimap.h>

          • <mrpt/utils/map_as_vector.h>

          • <mrpt/containers/traits_map.h>

          • <mrpt/serialization/stl_serialization.h>

          • <mrpt/containers/printf_vector.h>

          • <mrpt/containers/stl_containers_utils.h>

          • <mrpt/utils/ci_less.h>

      • Deleted methods and functions:

      • Embedded Eigen updated to version 3.2.1 (commit) (commit)

    • BUG FIXES:

      • RawlogViewer app: Fixed abort while converting SF->obs.only datasets when there is no odometry.

      • mrpt::obs::CSensoryFrame : The cached point map is now invalidated with any change to the list of observations so it’s rebuild upon next call.

      • New implementation of mrpt::synch::CSemaphore avoids crashes in OS X - by Randolph Voorhies.

      • mrpt::opengl::CArrow was always drawn of normalized length.

      • FlyCapture2 monocular & stereo cameras could return an incorrect timestamp (only in Linux?).

      • mrpt::system::createDirectory() returned false (error) when the directory already existed.

      • mrpt::vision::CStereoRectifyMap::rectify() didn’t update the left & right camera poses inside mrpt::obs::CObservationStereoImages objects while rectifying.

      • RawLogViewer: Operation “convert to SF format” didn’t take into account odometry observations.

      • Fix build errors with GCC 4.9

      • Fix crash of mrpt::hwdrivers::CIMUXSens_MT4 ‘s destructor when it fails to scan and open a device.

      • Fix potential crash in mrpt::slam::data_association_full_covariance with JCBB when no individually compatible matching exists (commit)

Version 1.1.0: Released 22-FEB-2014

  • New apps:

DifOdometry-Camera. (By Mariano Jaimez Tarifa)

  • DifOdometry-Datasets. (By Mariano Jaimez Tarifa)

  • mrpt::reactivenav::CParameterizedTrajectoryGenerator::inverseMap_WS2TP() for inverse look-up of WS to TP space - (commit)

  • mrpt::reactivenav::CParameterizedTrajectoryGenerator::renderPathAsSimpleLine() - (commit)

    • Changed the signature of mrpt::reactivenav::build_PTG_collision_grids() to become more generic for 2D & 2.5D PTGs - (commit)

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]/mrpt_examples_cpp/threadsPipe

  • [MRPT]/mrpt_examples_cpp/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:

ReactiveNav3D-Demo (By Mariano Jaimez Tarifa)

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

r3409

  • [mrpt-reactivenav]

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

New functions:

Changes in classes:

  • [mrpt-base]

  • [mrpt-maps]

  • [mrpt-openg]

    • mrpt::opengl::CBox now be also rendered as a solid box + line borders. See mrpt::opengl::CBox::enableBoxBorder()

    • mrpt::opengl::COctoMapVoxels - r4329

      • Fixed calculation of normals (fix shading)

      • Added new coloring scheme to mrpt::opengl::COctoMapVoxels::visualization_mode_t : “FIXED”

      • By default, light effects are disabled in this object, because shadows aren’t computed anyway and the effect isn’t pleasant.

      • Voxels cubes are sorted in ascending Z order so the visual effect is correct when rendering with transparency.

  • [mrpt-reactivenav]

    • mrpt::reactivenav::CParameterizedTrajectoryGenerator: The “low pass filter” has been removed since it wasn’t practical and was never used; thus, parameters “TAU” and “DELAY” has been removed. - r3395

    • Methods removed since they weren’t implemented in any derived class and there are no plans for doing it.

      • mrpt::reactivenav::CReactiveNavigationSystem ::evaluate()

      • mrpt::reactivenav::CReactiveNavigationSystem ::setParams()

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)

  • 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::CLoadableOptions::dumpToTextStreamstd::ostream::Seek() now supports files larger than 2GB by using uint64_t instead of long (still see issue report for another patch required for MSVC2010) - (Closes issue 39, thanks Robert Schattschneider) - r3042

  • mrpt::typemeta::TTypeName<> moved to its own header <mrpt/typemeta/TTypeName.h> while refactoring <mrpt/serialization/CSerializable.h>

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]

  • Better integration of point cloud classes with PCL: - r2943

  • Point cloud loading & saving in the standard ASPRS LiDAR LAS format (if liblas is installed in the system, see http://www.liblas.org/). See also the ready-to-use import menu in SceneViewer3D - r3244

    • mrpt::maps::CPointsMap::loadLASFile()

    • mrpt::maps::CPointsMap::saveLASFile()

  • Integration of wind measurements in gas-concentration maps (by Javier G. Monroy) - r3050

[mrpt-obs]

[mrpt-opengl]

  • Evaluation of bounding box of opengl objects. New methods: - r3026

    • mrpt::opengl::CRenderizable::getBoundingBox()

    • mrpt::opengl::Scene::getBoundingBox()

    • mrpt::opengl::Viewport::getBoundingBox()

mrpt::opengl::COctreePointRenderer::octree_get_graphics_boundingboxes() has a new flag to draw solid boxes at each leaf node - r3033

  • mrpt::opengl::Viewport has a new set of “global OpenGL switches” that affect the rendering of entire scenes - r3185

  • Classes drawing lines now by default enable anti-aliasing (can be disabled by the programmer): - r3185

    • mrpt::opengl::CGridPlaneXY, mrpt::opengl::CGridPlaneXZ

    • mrpt::opengl::CSimpleLine

    • mrpt::opengl::CSetOfLines

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

  • New applications:

    • kinect-stereo-calibrate : A GUI tool for calibrating RGB+D and/or stereo cameras, including live Kinect capturing.

  • Removed applications:

    • stereo-calib-gui: it’s now superseded by kinect-stereo-gui. The old command line tool is still useful, so it’s still there as the example “stereo-calib-opencv”.

  • Changes in applications:

    • icp-slam :

      • Added a new option (SHOW_LASER_SCANS_3D in config files) to draw laser scans in the live 3D view - r2881

    • rawlog-edit :

      • Operation “–camera-params” now also handles stereo observations.

      • New operation “–stereo-rectify” for batch rectifying datasets with stereo images.

      • New operation “–rename-externals”.

    • SceneViewer3D :

      • New menu for generating high-resolution renders of any scene directly to imag files - r2775

      • Many new menus for selective selecting objects and applying operations on them - r2776

    • stereo-calib-gui: Now generates a report with detailed and clear results from stereo calibration and allows the user to change most parameters interactively - r2801

    • kinect-3d-view : New key command: press ‘9’ to grab selected snapshots to disk - r2890

  • Kinect stuff:

  • New classes:

    • [mrpt-gui]

    • [mrpt-hwdrivers]

    • [mrpt-opengl]

      • New classes for representing confidence intervals (ellipsoids) in transformed spaces - r2783

        • mrpt::opengl::CGeneralizedEllipsoidTemplate<>

        • mrpt::opengl::CEllipsoidRangeBearing2D

        • mrpt::opengl::CEllipsoidInverseDepth2D

        • mrpt::opengl::CEllipsoidInverseDepth3D

      • mrpt::opengl::CFrustum to easily render these geometric figures

      • New struct mrpt::opengl::TFontParams result of a code refactoring

    • [mrpt-vision]