From 473914d20f115d444ccf9d304470a2b5ee772275 Mon Sep 17 00:00:00 2001 From: MaximSmolskiy Date: Sun, 10 Aug 2025 19:25:35 +0300 Subject: [PATCH 1/2] Fix pclomp::GICP for humble --- include/pclomp/gicp_omp.h | 34 +++++++++++++++++++++++++++++++- include/pclomp/gicp_omp_impl.hpp | 29 +++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/include/pclomp/gicp_omp.h b/include/pclomp/gicp_omp.h index c71d77e..a181cef 100644 --- a/include/pclomp/gicp_omp.h +++ b/include/pclomp/gicp_omp.h @@ -119,7 +119,9 @@ class GeneralizedIterativeClosestPoint : public pcl::IterativeClosestPoint=, 1, 11, 0) + BFGSSpace::Status checkGradient(const Vector6d & g) override; +#endif const GeneralizedIterativeClosestPoint * gicp_; }; diff --git a/include/pclomp/gicp_omp_impl.hpp b/include/pclomp/gicp_omp_impl.hpp index 8a1409f..1cf4ac6 100644 --- a/include/pclomp/gicp_omp_impl.hpp +++ b/include/pclomp/gicp_omp_impl.hpp @@ -233,7 +233,11 @@ void pclomp::GeneralizedIterativeClosestPoint:: if (result) { break; } +#if PCL_VERSION_COMPARE(<, 1, 11, 0) result = bfgs.testGradient(gradient_tol); +#else + result = bfgs.testGradient(); +#endif } while (result == BFGSSpace::Running && inner_iterations_ < max_inner_iterations_); if ( result == BFGSSpace::NoProgress || result == BFGSSpace::Success || @@ -388,6 +392,31 @@ inline void pclomp::GeneralizedIterativeClosestPoint:: gicp_->computeRDerivative(x, R, g); } +#if PCL_VERSION_COMPARE(>=, 1, 11, 0) +//////////////////////////////////////////////////////////////////////////////////////// +template +inline BFGSSpace::Status pclomp::GeneralizedIterativeClosestPoint< + PointSource, PointTarget>::OptimizationFunctorWithIndices::checkGradient(const Vector6d & g) +{ + auto translation_epsilon = gicp_->translation_gradient_tolerance_; + auto rotation_epsilon = gicp_->rotation_gradient_tolerance_; + + if ((translation_epsilon < 0.) || (rotation_epsilon < 0.)) + return BFGSSpace::NegativeGradientEpsilon; + + // express translation gradient as norm of translation parameters + auto translation_grad = g.head<3>().norm(); + + // express rotation gradient as a norm of rotation parameters + auto rotation_grad = g.tail<3>().norm(); + + if ((translation_grad < translation_epsilon) && (rotation_grad < rotation_epsilon)) + return BFGSSpace::Success; + + return BFGSSpace::Running; +} +#endif + //////////////////////////////////////////////////////////////////////////////////////// template inline void From 84d5c816e708de09492edff866f28b404ffefda5 Mon Sep 17 00:00:00 2001 From: Amadeusz Szymko Date: Thu, 8 Jan 2026 01:14:08 +0900 Subject: [PATCH 2/2] feat: add missing inclusion for jazzy compatibility Signed-off-by: Amadeusz Szymko --- include/pclomp/ndt_omp.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/pclomp/ndt_omp.h b/include/pclomp/ndt_omp.h index 8706215..c935c52 100644 --- a/include/pclomp/ndt_omp.h +++ b/include/pclomp/ndt_omp.h @@ -51,6 +51,8 @@ #include +#include + namespace pclomp {