Package Summary
Tags | No category tags. |
Version | 1.6.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-09-29 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mp2p_icp
C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and flexible point cloud processing pipelines. mp2p_icp
is used in the mola_lidar_odometry framework:
- Main library documentation and C++ API
- License: New BSD 3-Clause (Note that each module of MOLA has its own license)
Introduction
The project provides these C++ libraries:
-
mp2p_icp_map
: Provides themp2p_icp::metric_map_t
generic metric map container. Metric map files with extension*.mm
are serializations of instances of this class. -
mp2p_icp
: With ICP algorithms. It depends onmp2p_icp_map
. -
mp2p_icp_filters
: With point cloud filtering and manipulation algorithms. It depends onmp2p_icp_map
.
And these applications:
-
kitti2mm: Converts KITTI-like
.bin
files to.mm
files. -
mm-filter: CLI tool to apply a pipeline to an input metric map (
*.mm
), saving the result as another metric map file. -
mm-info: CLI tool to read a metric map (
*.mm
) and describe its contents. - mm-viewer: GUI tool to visualize .mm (metric map) files.
-
mm2txt: CLI tool to export the layers of a metric map (
*.mm
) as CSV/TXT. - icp-log-viewer: GUI to inspect results from ICP runs.
- icp-run: Standalone program to run ICP pipelines.
-
sm2mm: A CLI tool to convert a simple map
*.simplemap
(from a SLAM mapping session) into a metric map (*.mm
) via a configurable pipeline configuration file. -
sm-cli: A CLI tool to inspect, visualize, or modify simple maps
*.simplemap
(from a SLAM mapping session). - txt2mm: CLI tool to convert pointclouds from CSV/TXT files to mp2p_icp mm.
Key C++ classes provided by this project (see full docs):
-
mp2p_icp::metric_map_t
: A generic data type to store raw or processed point clouds, e.g. segmented, discrete extracted features. Note that filtering point clouds is intentionally left outside of the scope of this library. See MOLA for possible implementations. -
mp2p_icp::ICP_Base
: A uniform API for matching those generic point clouds. - Implementations/wrappers of different ICP algorithms under such uniform API.
- The library exposes both, complete iterative ICP algorithms, and the underlying optimal transformation estimators which are run at each ICP iteration.
Changelog for package mp2p_icp
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]{.title-ref} -> [metric_map_t]{.title-ref}
- 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
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ros_environment | |
catkin | |
ament_cmake | |
mola_common | |
mrpt_libbase | |
mrpt_libobs | |
mrpt_libposes | |
mrpt_libmaps | |
mrpt_libgui | |
mrpt_libtclap |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.6.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-09-29 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mp2p_icp
C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and flexible point cloud processing pipelines. mp2p_icp
is used in the mola_lidar_odometry framework:
- Main library documentation and C++ API
- License: New BSD 3-Clause (Note that each module of MOLA has its own license)
Introduction
The project provides these C++ libraries:
-
mp2p_icp_map
: Provides themp2p_icp::metric_map_t
generic metric map container. Metric map files with extension*.mm
are serializations of instances of this class. -
mp2p_icp
: With ICP algorithms. It depends onmp2p_icp_map
. -
mp2p_icp_filters
: With point cloud filtering and manipulation algorithms. It depends onmp2p_icp_map
.
And these applications:
-
kitti2mm: Converts KITTI-like
.bin
files to.mm
files. -
mm-filter: CLI tool to apply a pipeline to an input metric map (
*.mm
), saving the result as another metric map file. -
mm-info: CLI tool to read a metric map (
*.mm
) and describe its contents. - mm-viewer: GUI tool to visualize .mm (metric map) files.
-
mm2txt: CLI tool to export the layers of a metric map (
*.mm
) as CSV/TXT. - icp-log-viewer: GUI to inspect results from ICP runs.
- icp-run: Standalone program to run ICP pipelines.
-
sm2mm: A CLI tool to convert a simple map
*.simplemap
(from a SLAM mapping session) into a metric map (*.mm
) via a configurable pipeline configuration file. -
sm-cli: A CLI tool to inspect, visualize, or modify simple maps
*.simplemap
(from a SLAM mapping session). - txt2mm: CLI tool to convert pointclouds from CSV/TXT files to mp2p_icp mm.
Key C++ classes provided by this project (see full docs):
-
mp2p_icp::metric_map_t
: A generic data type to store raw or processed point clouds, e.g. segmented, discrete extracted features. Note that filtering point clouds is intentionally left outside of the scope of this library. See MOLA for possible implementations. -
mp2p_icp::ICP_Base
: A uniform API for matching those generic point clouds. - Implementations/wrappers of different ICP algorithms under such uniform API.
- The library exposes both, complete iterative ICP algorithms, and the underlying optimal transformation estimators which are run at each ICP iteration.
Changelog for package mp2p_icp
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]{.title-ref} -> [metric_map_t]{.title-ref}
- 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
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ros_environment | |
catkin | |
ament_cmake | |
mola_common | |
mrpt_libbase | |
mrpt_libobs | |
mrpt_libposes | |
mrpt_libmaps | |
mrpt_libgui | |
mrpt_libtclap |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.6.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-09-29 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mp2p_icp
C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and flexible point cloud processing pipelines. mp2p_icp
is used in the mola_lidar_odometry framework:
- Main library documentation and C++ API
- License: New BSD 3-Clause (Note that each module of MOLA has its own license)
Introduction
The project provides these C++ libraries:
-
mp2p_icp_map
: Provides themp2p_icp::metric_map_t
generic metric map container. Metric map files with extension*.mm
are serializations of instances of this class. -
mp2p_icp
: With ICP algorithms. It depends onmp2p_icp_map
. -
mp2p_icp_filters
: With point cloud filtering and manipulation algorithms. It depends onmp2p_icp_map
.
And these applications:
-
kitti2mm: Converts KITTI-like
.bin
files to.mm
files. -
mm-filter: CLI tool to apply a pipeline to an input metric map (
*.mm
), saving the result as another metric map file. -
mm-info: CLI tool to read a metric map (
*.mm
) and describe its contents. - mm-viewer: GUI tool to visualize .mm (metric map) files.
-
mm2txt: CLI tool to export the layers of a metric map (
*.mm
) as CSV/TXT. - icp-log-viewer: GUI to inspect results from ICP runs.
- icp-run: Standalone program to run ICP pipelines.
-
sm2mm: A CLI tool to convert a simple map
*.simplemap
(from a SLAM mapping session) into a metric map (*.mm
) via a configurable pipeline configuration file. -
sm-cli: A CLI tool to inspect, visualize, or modify simple maps
*.simplemap
(from a SLAM mapping session). - txt2mm: CLI tool to convert pointclouds from CSV/TXT files to mp2p_icp mm.
Key C++ classes provided by this project (see full docs):
-
mp2p_icp::metric_map_t
: A generic data type to store raw or processed point clouds, e.g. segmented, discrete extracted features. Note that filtering point clouds is intentionally left outside of the scope of this library. See MOLA for possible implementations. -
mp2p_icp::ICP_Base
: A uniform API for matching those generic point clouds. - Implementations/wrappers of different ICP algorithms under such uniform API.
- The library exposes both, complete iterative ICP algorithms, and the underlying optimal transformation estimators which are run at each ICP iteration.
Changelog for package mp2p_icp
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]{.title-ref} -> [metric_map_t]{.title-ref}
- 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
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ros_environment | |
catkin | |
ament_cmake | |
mola_common | |
mrpt_libbase | |
mrpt_libobs | |
mrpt_libposes | |
mrpt_libmaps | |
mrpt_libgui | |
mrpt_libtclap |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.6.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-09-29 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mp2p_icp
C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and flexible point cloud processing pipelines. mp2p_icp
is used in the mola_lidar_odometry framework:
- Main library documentation and C++ API
- License: New BSD 3-Clause (Note that each module of MOLA has its own license)
Introduction
The project provides these C++ libraries:
-
mp2p_icp_map
: Provides themp2p_icp::metric_map_t
generic metric map container. Metric map files with extension*.mm
are serializations of instances of this class. -
mp2p_icp
: With ICP algorithms. It depends onmp2p_icp_map
. -
mp2p_icp_filters
: With point cloud filtering and manipulation algorithms. It depends onmp2p_icp_map
.
And these applications:
-
kitti2mm: Converts KITTI-like
.bin
files to.mm
files. -
mm-filter: CLI tool to apply a pipeline to an input metric map (
*.mm
), saving the result as another metric map file. -
mm-info: CLI tool to read a metric map (
*.mm
) and describe its contents. - mm-viewer: GUI tool to visualize .mm (metric map) files.
-
mm2txt: CLI tool to export the layers of a metric map (
*.mm
) as CSV/TXT. - icp-log-viewer: GUI to inspect results from ICP runs.
- icp-run: Standalone program to run ICP pipelines.
-
sm2mm: A CLI tool to convert a simple map
*.simplemap
(from a SLAM mapping session) into a metric map (*.mm
) via a configurable pipeline configuration file. -
sm-cli: A CLI tool to inspect, visualize, or modify simple maps
*.simplemap
(from a SLAM mapping session). - txt2mm: CLI tool to convert pointclouds from CSV/TXT files to mp2p_icp mm.
Key C++ classes provided by this project (see full docs):
-
mp2p_icp::metric_map_t
: A generic data type to store raw or processed point clouds, e.g. segmented, discrete extracted features. Note that filtering point clouds is intentionally left outside of the scope of this library. See MOLA for possible implementations. -
mp2p_icp::ICP_Base
: A uniform API for matching those generic point clouds. - Implementations/wrappers of different ICP algorithms under such uniform API.
- The library exposes both, complete iterative ICP algorithms, and the underlying optimal transformation estimators which are run at each ICP iteration.
Changelog for package mp2p_icp
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]{.title-ref} -> [metric_map_t]{.title-ref}
- 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
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ros_environment | |
catkin | |
ament_cmake | |
mola_common | |
mrpt_libbase | |
mrpt_libobs | |
mrpt_libposes | |
mrpt_libmaps | |
mrpt_libgui | |
mrpt_libtclap |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
Tags | No category tags. |
Version | 1.6.2 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2024-09-29 |
Dev Status | DEVELOPED |
CI status | Continuous Integration : 0 / 0 |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mp2p_icp
C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and flexible point cloud processing pipelines. mp2p_icp
is used in the mola_lidar_odometry framework:
- Main library documentation and C++ API
- License: New BSD 3-Clause (Note that each module of MOLA has its own license)
Introduction
The project provides these C++ libraries:
-
mp2p_icp_map
: Provides themp2p_icp::metric_map_t
generic metric map container. Metric map files with extension*.mm
are serializations of instances of this class. -
mp2p_icp
: With ICP algorithms. It depends onmp2p_icp_map
. -
mp2p_icp_filters
: With point cloud filtering and manipulation algorithms. It depends onmp2p_icp_map
.
And these applications:
-
kitti2mm: Converts KITTI-like
.bin
files to.mm
files. -
mm-filter: CLI tool to apply a pipeline to an input metric map (
*.mm
), saving the result as another metric map file. -
mm-info: CLI tool to read a metric map (
*.mm
) and describe its contents. - mm-viewer: GUI tool to visualize .mm (metric map) files.
-
mm2txt: CLI tool to export the layers of a metric map (
*.mm
) as CSV/TXT. - icp-log-viewer: GUI to inspect results from ICP runs.
- icp-run: Standalone program to run ICP pipelines.
-
sm2mm: A CLI tool to convert a simple map
*.simplemap
(from a SLAM mapping session) into a metric map (*.mm
) via a configurable pipeline configuration file. -
sm-cli: A CLI tool to inspect, visualize, or modify simple maps
*.simplemap
(from a SLAM mapping session). - txt2mm: CLI tool to convert pointclouds from CSV/TXT files to mp2p_icp mm.
Key C++ classes provided by this project (see full docs):
-
mp2p_icp::metric_map_t
: A generic data type to store raw or processed point clouds, e.g. segmented, discrete extracted features. Note that filtering point clouds is intentionally left outside of the scope of this library. See MOLA for possible implementations. -
mp2p_icp::ICP_Base
: A uniform API for matching those generic point clouds. - Implementations/wrappers of different ICP algorithms under such uniform API.
- The library exposes both, complete iterative ICP algorithms, and the underlying optimal transformation estimators which are run at each ICP iteration.
Changelog for package mp2p_icp
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]{.title-ref} -> [metric_map_t]{.title-ref}
- 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
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ros_environment | |
catkin | |
ament_cmake | |
mola_common | |
mrpt_libbase | |
mrpt_libobs | |
mrpt_libposes | |
mrpt_libmaps | |
mrpt_libgui | |
mrpt_libtclap |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
mrpt_local_obstacles |