CHANGELOG

Changelog for package mp2p_icp

1.6.4 (2024-12-18)

  • merge two docs pages in one to shorten the docs TOC

  • Update README.md: Mark ROS2 Iron as EOL

  • Also use TBB for parallel solving point-to-plane pairings

  • Contributors: Jose Luis Blanco-Claraco

1.6.3 (2024-11-11)

  • icp-log-viewer: also reduce GUI refresh rate

  • mm-viewer: avoid useless GUI refresh (CPU usage reduction)

  • txt2mm: Add input filter xyzrgb

  • mm-viewer: add a ‘fit view to map’ button

  • New cli app rawlog-filter

  • FilterCurvature: better handling scans with <=3 points in some rings

  • new subcommand ‘sm-cli tf’

  • Contributors: Jose Luis Blanco-Claraco

1.6.2 (2024-09-14)

  • Expose << and >> operators for geo-reference data structures

  • Fix missing build_dep

  • Contributors: Jose Luis Blanco-Claraco

1.6.1 (2024-09-11)

  • Fix missing catkin buildtoo_depend for ROS1 builds

  • Update RTTI macros for upcoming MRPT 2.14.0

  • Contributors: Jose Luis Blanco-Claraco

1.6.0 (2024-09-08)

  • Port Point2Plane matcher to use the new NN-for-planes API

  • mp2p_icp_map library: add NearestPlaneCapable virtual API

  • cmake: move from glob expressions to explicit lists of source files

  • clarify eigenvalues order in headers

  • Contributors: Jose Luis Blanco-Claraco

1.5.6 (2024-09-07)

  • sm2mm cli: show map contents before writing to disk

  • add another demo sm2mm file for the mola tutorials

  • Add another sm2mm demo file w/o deskew for the mola mapping tutorial

  • Matcher_Point2Plane: fix build error in armhf

  • Fix build with embedded mola_common

  • README: Add ROS badges for all architectures

  • Contributors: Jose Luis Blanco-Claraco

1.5.5 (2024-08-27)

  • Explicitly add tbb as dependency in package.xml

  • Depend on new mrpt_lib packages (deprecate mrpt2)

  • FIX: build errors in armhf arch

  • Contributors: Jose Luis Blanco-Claraco

1.5.4 (2024-08-20)

  • Do not use Eigen::Vector for compatibility with Eigen3 <3.4 in ROS Noetic

  • Contributors: Jose Luis Blanco-Claraco

1.5.3 (2024-08-20)

  • Re-add ROS1 Noetic as supported distribution

  • Generator sanity check asserts: more informative error messages

  • sm-cli: new command ‘join’ to merge simplemaps

  • icp-log-viewer UI: new keybind ‘I’ to switch initial/final pose

  • icp-log-viewer UI: add option to visualize voxelmaps empty space

  • Contributors: Jose Luis Blanco-Claraco

1.5.2 (2024-07-24)

  • Add sm2mm yaml example for dynamic/static obstacles

  • Update sample sm2mm pipelines to use de-skew

  • docs: add mm-filter example

  • Fix pointcloud ptr typo

  • More safety sanity checks added in mm-viewer and sm2mm

  • BUGFIX: Generator should not create empty maps for GPS observations

  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera López

1.5.1 (2024-07-03)

  • Update docs

  • ICP: Add optional functors for before-logging maps

  • icp-log-viewer UI: fix potential out-of-range exception when autoplay is on

  • FilterAdjustTimestamps: add new param ‘time_offset’ useful for multiple LiDARs setups

  • Contributors: Jose Luis Blanco-Claraco

1.5.0 (2024-06-21)

  • ICP: Add optional user-provided per-iteration hooks

  • Add new filter: FilterByRing

  • Add new filter: FilterAdjustTimestamps

  • Add sanity checks for point cloud fields.

  • Fix typo in default class for FilterDeskew

  • generators API: add bool return type to detect if observation was actually processed

  • generic Generator: handle velodyne observations so timestamps are generated

  • Contributors: Jose Luis Blanco-Claraco

1.4.3 (2024-06-11)

  • Add pointcloud_sanity_check() auxiliary function

  • Generator: more DEBUG level traces

  • BUGFIX: FilterDeskew generated buggy output points if the input does not contain timestamps

  • Add sanity checks for point cloud fields

  • ICP log records now also store the dynamic variables. icp-log-viewer displays them.

  • ICP log files: automatically create output directory if it does not exist

  • Update ros2 badges (added Jazzy)

  • Contributors: Jose Luis Blanco-Claraco

1.4.2 (2024-05-28)

  • mm-viewer: add check-all, check-none to layer filters

  • Add new filter: FilterRemoveByVoxelOccupancy

  • mm-viewer: camera travelling keyframes-based animations

  • mm-viewer: navigate the map with keyboard arrows; add a load button

  • mm-viewer: can now also draws a TUM trajectory overlaid with the map

  • UI apps: smoother rendering

  • icp-log-viewer and mm-viewer: the UI now has a XYZ corner overlay

  • sm-cli: command “export-kfs” now has an optional flag ‘–output-twist’

  • FilterDeskew: ignore empty input maps

  • More debug-level traces

  • deskew filter: Fix case of variable names in docs

  • sm-cli app: Add new command ‘trim’ to cut simplemaps by bounding box

  • mm-viewer: show mouse pointing coordinates

  • Contributors: Jose Luis Blanco-Claraco

1.4.1 (2024-05-19)

  • Fix build for older mrpt versions

  • ICP pipelines: Implement loading quality_checkpoints parameter from YAML config file

  • Quality evaluators: add the option for ‘hard discard’

  • Update QualityEvaluator_Voxels to use prebuilt voxel layers from input maps. Add unit tests.

  • BUGFIX: Fix deserializing georeferenced .mm files stored in <1.4.0 format

  • ICP: quality evaluators can now have formulas in their parameters too

  • mm-viewer and icp-log-viewer: extend zoom range so maps of tens of kms can be viewed at once

  • Contributors: Jose Luis Blanco-Claraco

1.4.0 (2024-05-06)

  • Update commit for robin-map to latest version (patch contributed upstream)

  • icp-log-viewer: UI now has a slider for each map point size

  • ICP: Add a new quality_checkpoint parameter to early abort ICP attempts

  • georeferenced maps: T_enu_to_map now has a covariance field

  • mm-viewer: display ENU frame too

  • Contributors: Jose Luis Blanco-Claraco

1.3.3 (2024-04-30)

  • Add minimum_input_points_to_filter option to FilterDecimateVoxels

  • FIX: QualityEvaluator_PairedRatio throws when one of the reference maps is empty

  • FIX BUG: Won’t try to match 2D pointclouds if their height is different

  • Clarify comments in metricmap.h about geodetic references

  • Fix printing metric_map_t contents when it only has a gridmap

  • Fix potential dangling references (g++ 13 warning)

  • Fix potential use of uninitialized point index

  • Bump cmake_minimum_required to 3.5

  • Contributors: Jose Luis Blanco-Claraco

1.3.2 (2024-04-22)

  • tsl::robin_map library is no longer exposed neither in the public API nor as public headers (PIMPL pattern) This is to prevent Debian-level collisions with other packages also exposing it.

  • add first icp-log-viewer docs

  • Contributors: Jose Luis Blanco-Claraco

1.3.1 (2024-04-16)

  • mm-viewer and icp-log-viewer: saves UI state in persistent user config file

  • FIX: missing UI refresh when clicking showPairings checkbox

  • renamed apps for less verbose names: icp-run, icp-log-viewer

  • ICP core now defines a variable ICP_ITERATION for use in programmable formulas in pipelines

  • icp-log-viewer: much faster rendering of ICP iteration details

  • mm-viewer: fix bug in calculation of bounding box

  • Merge docs with main MOLA repo

  • Contributors: Jose Luis Blanco-Claraco

1.3.0 (2024-03-10)

  • mm-viewer: new options to visualize georeferenced maps

  • New sm-cli commands: –cut, –export-keyframes, –export-rawlog

  • propagate cmake deps downstream

  • metric_map_t: add georeferencing optional field

  • mm-filter: add –rename operation

  • GetOrCreatePointLayer() moved to its own header and uses shared ptrs

  • FilterMerge: add param input_layer_in_local_coordinates

  • Contributors: Jose Luis Blanco-Claraco

1.2.0 (2024-02-16)

  • Add new apps: sm-cli, mm-info, txt2mm, mm2txt, mm-filter

  • Improved documentation.

  • new filter FilterByIntensity

  • FilterNormalizeIntensity: add option for intensity range memory

  • FilterByRange: renamed params to simplify them (removed param ‘keep_between’)

  • FIX: missing intensity channel in decimate voxel when using some decimation methods

  • sm-cli: new subcommand ‘level’ to maximize the ‘horizontality’ of built maps

  • add optional profiler to filter pipelines

  • Contributors: Jose Luis Blanco-Claraco

1.1.1 (2024-02-07)

  • MergeFilter: now also handles CVoxelMap as inputs

  • more memory efficient defaults

  • FilterCurvature: now based on ring_id channel

  • Use hash map min_factor to speed up clear()s

  • add missing hash reserve

  • PointCloudToVoxelGridSingle: Fix wrong initialization of point count

  • Contributors: Jose Luis Blanco-Claraco

1.1.0 (2024-01-25)

  • FilterDecimateVoxels: Replace 3 bool parameters with an enum

  • Fix clang warnings

  • Save and visualize ICP step partial solutions

  • QualityEvaluator_PairedRatio: now does not require parameters

  • Add filter: Bonxai VoxelMap -> 2D gridmap. Bayesian filtering of voxel columns

  • Generator: allow defining custom metric maps directly in the YAML configuration

  • Contributors: Jose Luis Blanco-Claraco

1.0.0 (2024-01-20)

  • Gauss-Newton solver: Add optional prior term

  • Added FilterMerge and modifications to allow sm2mm to build any type maps

  • sm2mm: add option for lazy-load external directory

  • Decimate filter: add flatten_to option to efficiently convert 3D->2D point clouds

  • FilterBoundingBox: parameter name changed for clearer split of inside / outside bbox

  • Deskew: add option to bypass de-skew operation

  • bump minimum required mrpt version

  • Better coloring; add option to export mm layers

  • Use new mrpt api to propagate point properties; add final_filter stage to sm2mm

  • sm2mm: add verbosity flag

  • bbox filter: allow processing variables too

  • Introduce robot_{x,y,z} variables

  • Better mm-viewer; update sm2mm demo file

  • Progress with RST docs

  • Add missing robotPose argument to generators; progress with mm-viewer

  • Add sm2mm app

  • Add FILE attribute to license tag

  • More dynamic parameters

  • fix print format

  • Add Deskew filter

  • update CI to u22.04

  • Introduce Parameterizable interface

  • New layers: create of the same input cloud type

  • Add FilterCurvature

  • filter: optional additional layer for deleted points

  • FIX: important error in robust gradient

  • expose GN params as public

  • new generators and filters

  • Filters: use tsl robin_map, faster than std::unordered_map

  • prefer nn_radius_search() to exploit nanoflann rknn

  • Minor UI updates

  • gui: autoplay

  • estimate_points_eigen.h moved to the mp2p_icp_map library

  • Solvers: add option to select by correction magnitude

  • add [[nodiscard]] to generator API

  • Add specialized implementation of voxelize for 1 pt/vx

  • add Cauchy robust kernel

  • Add support for TBB for parallelization

  • add angularThresholdFactor; add max plane-to-pt distance

  • viewer UI: show number of points per layer

  • Prefer Teschner’s spatial hash

  • Use nn_single_search() when possible

  • viewer: add follow local checkbox

  • Add new filter: FilterDecimateVoxelsQuadratic

  • FilterDecimateVoxels: new option use_closest_to_voxel_average

  • FilterDecimateVoxels: new param use_random_point_within_voxel

  • less unnecesary mem allocs

  • generator: create map layers first, then filter by observation name/class filter

  • port to NN radius search

  • add “enabled” property to base Matcher class

  • Solvers: add property ‘enabled’

  • Add robust kernels to GN solver

  • Add optional profiler to ICP

  • New parameter decimationDebugFiles

  • Add plugin option to viewer

  • VoxelFilter: is now ~7 times faster and does not need a bounding box parameter, thanks to using an associative container.

  • viewer: add new flag -f to load one single log file

  • viewer: increase slider range for max far plane

  • Options to recolorize maps in icp log viewer

  • Fix regression in rendering options for point clouds

  • Matcher: new parameter bounding_box_intersection_check_epsilon

  • New env var MP2P_ICP_GENERATE_DEBUG_FILES can be use to override generation of icp log files

  • BUGFIX: Ignored sensorPose for Generator::filterPointCloud()

  • Allow ICP matching against voxel metric map types

  • mp2p_icp_filters::Generator now can create a map from a generic INI file (e.g. voxelmaps)

  • fix references to old pointcloud_t -> metric_map_t

  • Remove support for MRPT<2.4.0

  • Contributors: Jose Luis Blanco-Claraco

0.2.2 (2023-09-08)

  • Fix missing cmake dependencies between libraries

  • Update mola_common

  • Refactor into a new small library mp2p_icp_map with just the metric_map_t class

  • sync mola_common submodule

  • Update submodule mola_common

  • Remove redundant section

  • Update ROS badges

  • Contributors: Jose Luis Blanco-Claraco

0.2.1 (2023-09-02)

  • Update copyright date

  • Update to new name of mola_common

  • update ros badges

  • Contributors: Jose Luis Blanco-Claraco

0.2.0 (2023-08-24)

  • First release as MOLA submodule.

0.1.0 (2023-06-14)

  • First official release of the mp2p_icp libraries

  • Contributors: FranciscoJManasAlvarez, Jose Luis Blanco-Claraco