Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |
System Dependencies
Launch files
Messages
Services
Plugins
Recent questions tagged mp2p_icp at Robotics Stack Exchange
Package Summary
| Version | 2.6.0 |
| License | BSD-3-Clause |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mp2p_icp.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-02-23 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
| EOL Distro | Last release |
|---|---|
| ROS1 Noetic (u20.04) | |
| ROS 2 Iron (u22.04) |
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_tgeneric metric map container and related utilities for working with point cloud data structures. Metric map files with extension*.mmare serializations of instances of this class. -
mp2p_icp: With ICP algorithms, matchers (point-to-point, point-to-plane, point-to-line, covariance-to-covariance, adaptive), solvers (Horn, OLAE, Gauss-Newton), and quality evaluators. It depends onmp2p_icp_map. -
mp2p_icp_filters: With point cloud filtering and manipulation algorithms including decimation, voxelization, statistical outlier removal, edge/plane extraction, and various geometric transformations. It depends onmp2p_icp_map.
Command-Line Applications
The full repository also includes these applications (see apps/ directory):
Data Conversion Tools
-
kitti2mm: Converts KITTI dataset LIDAR binary files (
.bin) with (X,Y,Z, Intensity) data into mp2p_icp metric map files (.mm). Supports custom layer names, numeric IDs, and label strings. -
txt2mm: Converts plain-text point cloud data (TXT/CSV) into metric map (
.mm) files. Supports multiple formats: XYZ, XYZI, XYZIRT, XYZRGB, with configurable column mapping and layer names. -
sm2mm: Converts a simple map (
.simplemap) from a SLAM mapping session into a metric map (.mm) using a configurable processing pipeline. Essential for post-processing SLAM outputs into structured metric representations.
Data Export Tools
-
mm2ply: Exports metric map layers to PLY point cloud files. Supports both ASCII and binary formats, selective field export, and preserves all point attributes (coordinates, colors, intensities, etc.).
-
mm2txt: Exports metric map layers as space-delimited CSV/TXT files with header rows. Ideal for data analysis in spreadsheet applications or custom processing pipelines. Supports selective layer and field export.
-
mm2las: Exports metric maps to industry-standard LAS 1.4 format with Point Format 8 support. Includes automatic color mapping, extra dimensions for custom fields. Compatible with CloudCompare, QGIS, and ArcGIS.
Map Processing & Analysis Tools
-
mm-filter: Applies mp2p_icp_filters pipelines to metric map files. Can operate in pipeline mode (applying complete YAML-defined filter chains) or rename mode (simply renaming layers). Supports custom plugin loading.
-
mm-info: Displays a summary of metric map contents including layers, point counts, and metadata.
-
mm-georef: Extracts or injects geo-referencing information between metric map files (
.mm) and standalone georeferencing files (.georef).
Visualization Tools
-
mm-viewer: GUI application to visualize metric map (
.mm) files. Supports loading additional 3D scenes and trajectory files in TUM format. -
icp-log-viewer: Interactive GUI for debugging ICP pipelines. Visualizes ICP log files (
.icplog) with autoplay mode and detailed inspection of registration results. Essential for understanding and optimizing ICP algorithm performance.
ICP Execution Tools
- icp-run: Standalone program to execute ICP pipelines from the command line.
SimpleMaps Manipulation
-
sm-cli: Swiss-army knife for simple map (
.simplemap) manipulation. Commands include:info(analyze contents),cut(extract by keyframe index),trim(extract by bounding box),join(merge maps),level(make horizontal),tf(apply SE(3) transform),export-keyframes(save trajectories as TUM), andexport-rawlog(convert to RawLog format).
Key Features and Components
Key C++ classes provided by this project (see full documentation):
Core Data Structures
-
mp2p_icp::metric_map_t: A generic data type to store raw or processed point clouds, including support for multiple layers, segmented data, and discrete extracted features.
ICP Algorithms and Matchers
-
mp2p_icp::ICP: A uniform API for matching generic point clouds with support for:- Point-to-Point matching (various distance metrics)
- Point-to-Plane matching (planes extracted from point clouds)
- Point-to-Line matching (edges/lines extracted from point clouds)
- Covariance-to-Covariance matching (Gaussian distributions)
- Adaptive matching (automatically selects best matcher)
Solvers
- Horn’s method: Closed-form solution for point-to-point alignment
- OLAE (Optimal Linear Attitude Estimator): For attitude/rotation estimation
- Gauss-Newton: Iterative solver for complex matching scenarios
Filters and Generators
The mp2p_icp_filters library provides extensive filtering capabilities:
-
Decimation:
FilterDecimate,FilterDecimateVoxels,FilterDecimateAdaptive -
Outlier removal:
FilterSOR(Statistical Outlier Removal),FilterVoxelSOR
File truncated at 100 lines see the full file
Changelog for package mp2p_icp
2.6.0 (2026-02-16)
- Merge pull request #42 from MOLAorg/feat/filter-remove-several-point-fields FilterRemovePointCloudField now accepts multiple fields
- FilterRemovePointCloudField now accepts multiple fields
- Merge pull request #41 from MOLAorg/feat/functor-save-log-file Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Add functor_should_generate_debug_file to override the decision of whether to write .icplog files
- Merge pull request #40 from MOLAorg/feat/new-clear-remove-field-filters Add new filters: FilterClear and FilterRemovePointCloudField
- Add new filters: FilterClear and FilterRemovePointCloudField
- docs: refer to the online pipeline editor
- docs: add missing docs for FilterRenameLayer
- Contributors: Jose Luis Blanco-Claraco
2.5.0 (2026-02-04)
- Merge pull request #39 from MOLAorg/feat/permit-missing-externals sm2mm: Add optional flag --permit-missing-externals
- sm2mm: Add optional flag --permit-missing-externals
- Merge pull request #38 from MOLAorg/feat/mls-optimizations FilterMLS performance optimizations
- Merge pull request #37 from MOLAorg/feat/use-zstd Use ZStd compression by default (for MRPT>=2.15.7)
- docs: sm2mm add "--compression-method"
- Explicitly include mrpt/core/Clock.h where used
- Use ZStd compression by default (for MRPT>=2.15.7)
- Merge pull request #36 from MOLAorg/feat/mm2txt-missing-fields-dont-emit mm2txt, mm2ply: don't emit columns of zeros for missing user-given fields
- Merge pull request #35 from MOLAorg/feat/mm2txt-ignore-fields mm2txt and mm2ply: Add new option --ignore-missing-fields
- Merge pull request #34 from MOLAorg/feat/mm2txt-mm2ply-more-precision Exploit the maximum float32/float64 precision in exported txt formats
- Merge pull request #33 from MOLAorg/feat/sm2mm-new-options Feat/sm2mm-new-options
- sm2mm cli app: add new flags for downsampling options
- sm2mm: add new downsample options and refactor into update_velocity_buffer_from_obs()
- Contributors: Jose Luis Blanco-Claraco
2.4.1 (2026-01-27)
- Add more unit tests
- Update README to keep it in sync with the provided apps and libraries
- Merge pull request #29 from MOLAorg/fix/cov Fix bugs in covariance estimation for some cases
- fix covariance estimation bugs; add unit tests for cov2cov
- Update commit for mola_common
- Merge pull request #28 from MOLAorg/feat/mm-viewer-3d-layers mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- mm-viewer: add CLI flags to load overlaid 3D scenes for visualization
- Contributors: Jose Luis Blanco-Claraco
2.4.0 (2026-01-21)
- Merge pull request #27 from MOLAorg/feat/new-filter-voxel-sor
- Add new unit test for class factory
- Add new FilterVoxelSOR filter
- Merge pull request #26 from MOLAorg/feat/mm2las
- Add mm2las CLI tool
- Contributors: Jose Luis Blanco-Claraco
2.3.1 (2026-01-14)
- Merge pull request #25 from MOLAorg/feat/naive-decimate Add trivial FilterDecimate for fast downsampling without spatial awareness
- lint fixes
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_environment | |
| catkin | |
| mola_common | |
| mrpt_libbase | |
| mrpt_libobs | |
| mrpt_libposes | |
| mrpt_libmaps | |
| mrpt_libgui | |
| mrpt_libtclap | |
| mola_imu_preintegration |