changelog.md

Notable changes

New features added to PCL

  • [common] Added the ability to redirect logging to a callable. [#6244]
  • [registration] parallelize SAC-IA error metric with OpenMP [#6431]
  • [registration] Add a part of the new rigid registration method [FRICP] [#6199]

Removal of the public APIs deprecated in previous releases

  • [io][surface] Remove local source copied zlib files [#6399]

Behavior changes in classes, apps, or tools

  • [cmake] Drop C++14 compatibility [#6403]
  • [filters] Fix offset by one in RadiusOutlierRemoval and speed up radius search [#6488]

ABI changes that are still API compatible

  • [search] Add override to KdTreeNanoflann functions [#6265]

Changes grouped by module

CMake:

  • Fix MSVC_VERSION for Visual Studio 2022 [#6329]
  • Fix build with Boost 1.89.0 [#6330]
  • Enable compilation with Eigen 5.0.0 [#6354]
  • [behavior change] Drop C++14 compatibility [#6403]
  • Use same QT version as VTK. [#6406]
  • Fix searching for dll paths, instead of adding .lib path. [#6410]
  • Add x11 on linux when vtk 9.6+ [#6435]
  • CMake: Add 'USES_TERMINAL' to custom target for Ninja [#6445]
  • Provide namespaced alias targets (PCL::) in PCLConfig.cmake (#6397) [#6463]

libpcl_common:

  • Split point_types.hpp part into field_traits.(h|hpp) [#6375]
  • [new feature] Added the ability to redirect logging to a callable. [#6244]

libpcl_cuda:

  • fix cuda 13.3 errors [#6443]

libpcl_features:

  • Add multithread support to boundary estimation [#6389]
  • change SHOT estimation to a dynamic schedule [#6400]
  • Stabilize ShapeContext3D azimuth orientation [#6398]

libpcl_filters:

  • Add OpenMP Parallelization to FarthestPointSampling [#6287]
  • filters: address TODO in ModelOutlierRemoval compare content [#6401]
  • filters: address TODOs for getMinMax3D to be templated and optimized [#6409]
  • Reject out-of-grid centroid coordinates [#6465]
  • [behavior change] Fix offset by one in RadiusOutlierRemoval and speed up radius search [#6488]

libpcl_gpu:

  • Fix CUDA 12.9 transform_reduce ambiguity [#6386]
  • Fix gpu module building with cuda 13.2 [#6424]
  • gpu approx nearest unit test [#6452]

libpcl_io:

  • [removal] Remove local source copied zlib files [#6399]
  • Fix out-of-bounds read/write when parsing OBJ face indices [#6448]
  • Support large polygons in PLY output [#6464]
  • Avoid 32-bit overflow in ASCIIReader buffer sizing [#6487]
  • fix out-of-bounds read when matching IFS header keywords [#6486]

libpcl_octree:

  • OctreeSearch: also support leaf types without getPointIndicesVector()… [#6467]

libpcl_outofcore:

  • fix missing iostream include in outofcore/include/pcl/outofcore/visualization/geometry.h [#6412]
  • Remove unused linking with 'pcl_visualization' [#6444]

libpcl_registration:

  • Add const "guards" in correspondence estimation [#6346]
  • Support parallel computation for NDT [#6376]
  • [new feature] parallelize SAC-IA error metric with OpenMP [#6431]
  • Increase tolerance in FPCSInitialAlignment test [#6446]
  • Add a toggle in getFitnessScore to respect user-provided indices in Registration [#6441]
  • [new feature] Add a part of the new rigid registration method [FRICP] [#6199]
  • Extend correspondence estimation unit test with varying pointtypes [#6481]
  • Parallelize SampleConsensusPrerejective [#6484]

libpcl_sample_consensus:

  • Optimize distance computations for cylinder [#6337]
  • Fix SampleConsensusModel constructor to not use a virtual function [#6305]
  • Better Cylinder Model Sampling [#6342]
  • Better Cylinder Estimation Accuracy [#6338]
  • Refactor Ellipse3D optimization kernel to internal namespace [#6430]
  • sample_consensus: optimize Ellipse3D solver with computeDirect [#6436]
  • Fix randomly failing sample consensus test [#6475]

libpcl_search:

  • Add OpenMP threading to search [#6284]
  • [ABI break] Add override to KdTreeNanoflann functions [#6265]
  • Fix duplicate symbol errors when using KdTreeNanoflann [#6336]
  • Reduce dependency on FLANN, move towards nanoflann as default [#6332]
  • Replace more instances of KdTreeFLANN and pcl::search::KdTree [#6347]
  • Replace more instances of KdTreeFLANN and pcl::search::KdTree (Part 2) [#6357]
  • Move further towards KdTreeNanoflann [#6413]
  • Move further towards KdTreeNanoflann [#6417]
  • Extend BruteForce search to non-XYZ point types [#6457]

libpcl_segmentation:

  • Fix bug in RegionGrowing and RegionGrowingRGB [#6349]
  • Make RegionGrowingRGB faster [#6359]

libpcl_surface:

  • Fix infinite loop in ConvexHull::reconstruct [#6383]
  • [removal] Remove local source copied zlib files [#6399]
  • Improve nurbs surface fitting efficiency with Eigen sparse matrix solver [#6379]

libpcl_visualization:

  • Refactor PointcloudColorHandlerGenericField to deal with any field type [#6309]
  • PCLVisualizer: make coordinate system actor unpickable [#5719]
  • Replace deprecated VTK function [#6394]
  • Add x11 on linux when vtk 9.6+ [#6435]
  • Fix in PCLVisualizer::convertPointCloudToVTKPolyData: do not re-use v… [#6440]
  • Replace deprecated/removed VTK functions [#6456]
  • Remove unnecessary Cocoa import from vtkRenderWindowInteractorFix.mm [#6476]

PCL Apps:

  • Fix pcl_cc_tool_interface library build configuration [#6377]

PCL Tools:

  • Fix sim_test_simple tool [#6353]

CI:

  • Added new bugprone-* and readability-* clang-tidy checks [#6363]
  • Update docker image Ubuntu versions [#6404]

Miscellaneous PRs excluded from changelog

  • Bump version to 1.15.1 [#6327]
  • Bump version post release [#6328]
  • Gpu module spelling fixes [#6324]
  • Fix macos opengl-related crashes by setting QSurfaceFormat [#6318]
  • Fix uninitialized build warning [#6321]
  • Update macos on ci [#6334]
  • Remove unnecessary calculations from NDT constructor [#6333]
  • Remove an unused cufft.h include [#6322]
  • Replace exit with exception in geometry/mesh_base.h [#6341]
  • Format point_cloud_editors include folder according to clang-format [#6343]
  • Parse a file containing the files to be checked to clang-format [#6344]
  • Remove remains from when tools was part of libraries. [#6358]
  • Update vmImage for cI to solve space issue. [#6365]
  • Change pcl gpu utils to an interface library [#6364]
  • Add more bugprone-* clang-tidy checks, Part A [#6371]
  • Improve error handling of FittingSurface::initNurbsPCABoundingBox [#6381]
  • Add more bugprone-* clang-tidy checks, Part B [#6380]
  • Fix macOS CI build [#6418]
  • Fix typo in docs of getMaxBoxCoordinates functions in voxel grid [#6427]
  • Added unit test for points almost on a line, that previously resulted in NAN values. [#6426]
  • Fix typo in warning message about field casting [#6433]
  • Update Ubuntu-variety CI [#6442]
  • Update custom point type doc (4th coordinate is not set to 1) [#6362]
  • Disable tutorials since they are build by readthedocs. [#6450]
  • Add alignment unit test for IterativeClosestPointWithNormals [#6454]
  • Bump ci checkout version [#6462]
  • Fix PMF maximum window size precision [#6461]
  • Reduce docker image size [#6455]
  • Replace deprecated VTK and thrust functions, fix other problems with thrust [#6460]
  • Fix misleading comment in ndt.hpp [#6478]
  • Remove deprecated code before release 1.16 [#6472]
  • Split common/include/pcl/impl/point_types.hpp [#6367]
  • Handle zero-length maximum segments [#6490]
  • Use FindGTest instead of FindGTestSoure.cmake [#6482]
  • Use numeric_limits::lowest() instead of min() to seed running maxima [#6500]
  • validate decompressed size against point layout in readBodyBinary [#6491]
  • Reject voxel indices beyond int range in VoxelGridCovariance and VoxelGrid [#6492]