Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
jazzy

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
kilted

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
lyrical

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
rolling

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mp2p_icp_core package from mp2p_icp repo

mp2p_icp mp2p_icp_core mp2p_icp_viz

ROS Distro
humble

Package Summary

Version 2.14.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-09-08
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

C++ libraries for multi primitive-to-primitive (MP2P) ICP algorithms and point cloud processing pipelines, plus headless CLI applications. No GUI/display dependencies; see mp2p_icp_viz for the GUI apps.

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.
README
No README found. See repository README.
CHANGELOG

Changelog for package mp2p_icp_core

2.14.0 (2026-09-05)

  • Point matchers (Matcher_Points_DistanceThreshold, Matcher_Points_Blend): fixed a nondeterministic pairing order caused by parallel reduction depending on TBB thread scheduling; the correspondence list is now a function of the input alone, regardless of thread count.
  • Solver_GaussNewton: the robust kernel now receives a whitened residual (using the existing pair weight as the whitening factor) instead of a raw metric or Mahalanobis norm, so [robustKernelParam]{.title-ref} means the same number of sigmas for every pair type. Bit-identical for pipelines using default weights.
  • GravityPrior: report the fraction of the final rotational information the prior actually contributed, via new [gravity_information_share]{.title-ref} field in [OptimalTF_Result]{.title-ref} and [Results]{.title-ref} (negative when no prior was given); this value is now also persisted across serialization ([Results]{.title-ref} format v1) and reset at the start of each solve.
  • New FilterPlanePatches: extracts large planar patches (equation, centroid, area, point count) into [metric_map_t::planes]{.title-ref}, complementing FilterEdgesPlanes' per-point labeling. Deterministic greedy extraction seeded by per-point normals. [metric_map_t]{.title-ref} serialization goes to v6.
  • FilterVoxelReduction: made the downsampling order-independent (selection no longer depends on input point order) and tightened bounds on [range_min]{.title-ref} and [normal_agreement_deg]{.title-ref}.
  • Contributors: Jose Luis Blanco-Claraco

2.13.1 (2026-08-25)

  • Merge pull request #94 from MOLAorg/feat/mm-filter-generators-create-layer mm-filter: create new metric map layers via generators:

  • Fix stale doc URLs missing the mp2p_icp_core path segment These sm2mm/mm-filter demo comments and the sm2mm.h docstring still pointed at pre-split paths (apps/sm2mm, apps/mm-filter, top-level demos/), left over from the mp2p_icp_core/mp2p_icp_viz package split. Same class of issue as flagged in review for the new demo added in this branch; fixing the other pre-existing occurrences found by a repo-wide search.

  • Address review: fix demo URL, doc precedence, and unresolved formula check

    • Fix stale doc link in the new demo (missing mp2p_icp_core path segment).

    - CreateMetricMapFromDefinition(): docs said "exactly one" of the two definition sources must be given, but the implementation actually prefers metricMapDefinitionIniFile if both are non-empty; reword to match.

    - Generator::createTargetLayerIfNeeded(): call Parameterizable::checkAllParametersAreRealized() before creating the map, matching the guard Generator::process() already has. Without it, a metric_map_definition formula (e.g. "$f{...}") referencing a variable that's never bound in this code path (createTargetLayerIfNeeded has no attached ParameterSource) would silently serialize as its unresolved 0.0 placeholder instead of raising a clear error.

  • Let mm-filter pipelines create new metric map layers via generators: mm-filter operates on an already-built .mm file, so it had no way to instantiate a brand-new layer of an arbitrary mrpt::<maps::CMetricMap> subclass (e.g. mola::KeyframePointCloudMap): that logic lived inside Generator, and only ran as a side effect of processing an observation, which mm-filter does not have. Factor the map-creation logic (TSetOfMetricMapInitializers + CMultiMetricMap, driven by a metric_map_definition YAML block) out of Generator::implProcessCustomMap() into a standalone mp2p_icp_filters::CreateMetricMapFromDefinition(), and expose it via a new Generator::createTargetLayerIfNeeded(), callable without any observation at hand. mm-filter now optionally parses a generators: section (same schema as sm2mm) and uses it only to pre-create each generator's target_layer if missing, before running filters:. A plain FilterMerge step can then insert an existing point cloud layer into it, closing the gap reported in MOLAorg/mola#147.

  • Add feature-detection macro for nn_visit_pt2pl_candidates() Downstream code (e.g. mola) needs to build against both this and older mp2p_icp releases still distributed via ROS binary repos, which predate NearestPlaneCapable::nn_visit_pt2pl_candidates() and the PlaneCandidate/plane_candidate_visitor_t types.

  • Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco

2.13.0 (2026-08-21)

  • Merge pull request #91 from MOLAorg/feat/ndt-blend-matcher Add Matcher_NDT_Blend: a smooth

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mp2p_icp_core at Robotics Stack Exchange