PCL v1.12.0 Release Notes

  • PCL 1.12.0 enables custom index size and type, from int16_t to uint64_t, allowing ๐Ÿ‘‰ users to have as small or large clouds as they wish. 1.12 also comes with improved ๐Ÿ‘Œ support for VTK and CUDA, along with making existing functionality more user friendly.

    ๐ŸŽ This is all on top of the usual bug-fixes and performance improvements across the board

    Notable changes

    ๐Ÿ†• New features added to PCL

    • [sample_consensus] Add SIMD implementations to some countWithinDistance functions [#3519]
    • [io] Enable Real Sense 2 grabber for all platforms [#4471]
    • [visualization] add ellipsoid shape to pcl_visualizer [#4531]
    • [common] Add constexpr to static member functions for point types, add macro for if constexpr [#4735]
    • [ci] Use windows docker image in CI. [#4426]
    • [common] Add pcl log stream macros [#4595]

    ๐Ÿ—„ Deprecation of public APIs, scheduled to be removed after two minor releases

    • [common] Modify index type for vertices [#4256]
    • [gpu] Add square distances to GPU knnSearch API [#4322]
    • [gpu] Add square distances to ApproxNearestSearch [#4340]
    • ๐Ÿ—„ Deprecate unused ease-of-internal-use headers [#4367]
    • [registration] Deprecate TransformationEstimationDQ in favor of TransformationEstimationDualQuaternion [#4425]
    • [segmentation] Deprecate unused max_label in extractLabeledEuclideanClusters [#4105]
    • [surface] MLS: correct typo in principle by using principal instead [#4505]
    • ๐Ÿ—„ Deprecate unneeded meta-headers [#4628]
    • [apps][tracking] pyramidal klt: switch keypoints_status_ to int vector [#4681]
    • ๐Ÿšš Properly remove remaining items deprecated for version 1.12, deprecate uniform_sampling.h [#4688]
    • [recognition] Add deprecation for incorrectly installed headers [#4650]

    Removal of the public APIs deprecated in previous releases

    • โœ‚ Remove deprecated items as scheduled in preparation of v1.12 (except concatenatePointCloud) [#4341]
    • [apps] Remove unused code in persistence_utils.h [#4500]
    • ๐Ÿšš Properly remove remaining items deprecated for version 1.12, deprecate uniform_sampling.h [#4688]

    Behavior changes in classes, apps, or tools

    • [registration] Don't move, or copy ICP [#4167]
    • [common] Fix PointXYZRGBA ctor, set A as 255 by default [#4799]

    API changes that did not go through the proper deprecation and removal cycle

    • [common] modify index type for PCLImage [#4257]
    • [registration] Don't move, or copy ICP [#4167]
    • [kdtree] KdTree: handle 0 or negative k for nearestKSearch [#4430]
    • [common] Use std::array instead of C-array for ColorLUT [#4489]
    • [tracking] Use SFINAE instead of relying on macro PCL_TRACKING_NORMAL_SUPPORTED [#4643]
    • [gpu] Export and template extract clusters [#4196]
    • [common] Added namespace pcl to free functions: aligned_{malloc/free} [#4742]

    ABI changes that are still API compatible

    • [registration] Refactoring and Bugfix of NDT [#4180]
    • [common] modify index types for PCLPointCloud2 [#4199]
    • [common] Modify index type for vertices [#4256]
    • [common] Modify index type for PCLPointField [#4228]
    • [surface] Enabled multithreading in Poisson surface reconstruction [#4332]
    • [io] Allow file_io to read large point clouds depending on PCL config [#4331]
    • [sample_consensus] Allow user to apply arbitrary constraint on models in sample consensus [#4260]
    • [tracking] Use SFINAE instead of relying on macro PCL_TRACKING_NORMAL_SUPPORTED [#4643]
    • [features] Move the init of static variables to library load time [#4640]
    • [octree] Octree2BufBase: Fix bug that contents from previous buffer appear in current buffer [#4642]

    ๐Ÿ”„ Changes grouped by module

    CMake:

    • Update pcl_find_boost to allow compilation with Boost 1.74 [#4330]
    • Variable needs to be expanded when checking for EXT_DEPS [#4353]
    • Update pcl_find_cuda.cmake to contain all supported architectures [#4400]
    • โž• Add support for VTK 9 [#4262]
    • ๐Ÿ”จ Refactor cmake find script of libusb [#4483]
    • โž• Add AVX for windows [#4598]
    • โž• Add SSE definitions for SSE 4.1 and 4.2 [#4596]

    libpcl_common:

    • [ABI break] modify index types for PCLPointCloud2 [#4199]
    • [API break] modify index type for PCLImage [#4257]
    • ๐Ÿ—„ [ABI break][deprecation] Modify index type for vertices [#4256]
    • [ABI break] Modify index type for PCLPointField [#4228]
    • ๐Ÿ‘ Allow PCL_DEPRECATED to detect and help remove deprecations before release [#4336]
    • ๐Ÿ‘ Allow conversion of PointCloud with more than 32-bit size rows/columns [#4343]
    • ๐Ÿ‘Œ Improve routing for transformPointCloud [#4398]
    • Correct typo in transformPlane [#4396]
    • [API break] Use std::array instead of C-array for ColorLUT [#4489]
    • Set header in two toPCLPointCloud2 functions [#4538]
    • โž• Add more operators to PointCloud to prevent perf regression in refactoring [#4397]
    • ๐Ÿ‘‰ Make sure that organized point clouds are still organized after transformPointCloud [#4488]
    • [API break] Added namespace pcl to free functions: aligned_{malloc/free} [#4742]
    • [new feature] Add constexpr to static member functions for point types, add macro for if constexpr [#4735]
    • ๐Ÿ›  Fix PolygonMesh::concatenate and its unit test [#4745]
    • [behavior change] Fix PointXYZRGBA ctor, set A as 255 by default [#4799]
    • โœ‚ Remove pseudo-template-instantiations in eigen.h to reduce compilation time [#4788]
    • [new feature] Add pcl log stream macros [#4595]

    libpcl_features:

    • [ABI break] Move the init of static variables to library load time [#4640]
    • ๐Ÿ‘‰ Use correct cloud for checking finite-ness in fpfh [#4720]

    libpcl_filters:

    • ๐Ÿ‘Œ Improve performance of median filter by using nth_element [#4360]
    • ๐Ÿ›  Fix the covariance calculation as suggested by @zxd123 [#4466]
    • Filters: fix wrong initialization of covariance in VoxelGridCovariance [#4556]
    • ๐Ÿ›  Fix application of setMinimumPointsNumberPerVoxel for PCLPointCloud2 implementation of VoxelGrid [#4389]
    • โž• Adding tests for CropHull and using hull_cloud instead of input in getHullCloudRange [#3976]

    libpcl_gpu:

    • ๐Ÿ—„ [deprecation] Add square distances to GPU knnSearch API [#4322]
    • ๐Ÿ—„ [deprecation] Add square distances to ApproxNearestSearch [#4340]
    • [API break] Export and template extract clusters [#4196]
    • โšก๏ธ Update support for CUDA arch in CMake and convertSMVer2Cores [#4748]
    • โž• Add ability to download contiguous chunk of memory to host using Device{Array,Memory} [#4741]
    • Speeding up GPU clustering using smarter download strategy and memory allocations [#4677]

    libpcl_io:

    • [ABI break] Allow file_io to read large point clouds depending on PCL config [#4331]
    • ๐Ÿ‘Œ Improve PCD read performance (more than 50%) by reusing istringstream [#4339]
    • [new feature] Enable Real Sense 2 grabber for all platforms [#4471]
    • Throw error if the device bluffs about its capability [#4141]
    • ๐Ÿ›  Fix crash in Dinast Grabber due to bad initialization of device handle [#4484]
    • PLY face definition accepts uint fields as well [#4492]
    • Prevent segfault in vtk2mesh [#4581]
    • ๐Ÿ‘ป Prevent exception in PCDReader for misformed PCD files [#4566]
    • Enable arbitary size Indices for Octree module [#4350]
    • ๐Ÿ›  Fix addition of Carriage Return to PCD files. [#4727]
    • ๐Ÿ‘Œ Support Ensenso SDK 3.0 for ensenso_grabber [#4751]
    • Specify no face elements in PLY files (from point cloud) to make them interoperable with VTK [#4774]

    libpcl_kdtree:

    • [API break] KdTree: handle 0 or negative k for nearestKSearch [#4430]

    libpcl_ml:

    • ๐Ÿ›  Fix un-initialized centroids bug (k-means) [#4570]

    libpcl_octree:

    • Enable arbitary size Indices for Octree module [#4350]
    • ๐Ÿ›  Fix problems in octree search functions when using dynamic depth [#4657]
    • [ABI break] Octree2BufBase: Fix bug that contents from previous buffer appear in current buffer [#4642]

    libpcl_outofcore:

    • ๐Ÿ›  Fix compile issue due to missing include under MSVC 2019 [#4755]

    libpcl_recognition:

    • ๐Ÿ—„ [deprecation] Add deprecation for incorrectly installed headers [#4650]

    libpcl_registration:

    • [ABI break] Refactoring and Bugfix of NDT [#4180]
    • [API break][behavior change] Don't move, or copy ICP [#4167]
    • ๐Ÿ—„ [deprecation] Deprecate TransformationEstimationDQ in favor of TransformationEstimationDualQuaternion [#4425]
    • ๐Ÿ›  Fix force no recompute [#4535]
    • Skip non-finite points for Pyramid Feature Matching [#4711]

    libpcl_sample_consensus:

    • [ABI break] Allow user to apply arbitrary constraint on models in sample consensus [#4260]
    • ๐Ÿ‘Œ Improve logging errors during sample consensus model registration [#4381]
    • [new feature] Add SIMD implementations to some countWithinDistance functions [#3519]
    • Faster sample consensus functions [#4424]
    • ๐Ÿ›  Fix and improve MLESAC [#4575]
    • ๐Ÿ‘Œ Improve logging in module sample_consensus [#4261]

    libpcl_search:

    • Faster organized search [#4496]
    • โž• Add access to boxSearch [#4282]

    libpcl_segmentation:

    • ๐Ÿ—„ [deprecation] Deprecate unused max_label in extractLabeledEuclideanClusters [#4105]
    • ๐Ÿ›  Fix the dotproduct calculation in extractEuclideanClusters for smooth surfaces [#4162]
    • ๐Ÿ‘‰ Make euclidean clustering with normals faster [#4551]

    libpcl_surface:

    • [ABI break] Enabled multithreading in Poisson surface reconstruction [#4332]
    • โž• Add stdlib header for malloc in poisson (bugfix for gcc-5) [#4376]
    • โšก๏ธ Always update counter and prevent overflow access in poisson4 octree [#4316]
    • Add missing include to nurbs_solve_umfpack.cpp [#4571]
    • ๐Ÿ—„ [deprecation] MLS: correct typo in principle by using principal instead [#4505]

    libpcl_visualization:

    • โž• Add support for VTK 9 [#4262]
    • [new feature] add ellipsoid shape to pcl_visualizer [#4531]

    PCL Apps:

    • [removal] Remove unused code in persistence_utils.h [#4500]
    • ๐Ÿ—„ [deprecation] pyramidal klt: switch keypoints_status_ to int vector [#4681]

    ๐Ÿ“„ PCL Docs:

    • ๐Ÿ“š Update documentation to be coherent with the style guide [#4771]

    PCL Tutorials:

    • ๐Ÿšš Replace PassThrough with removeNaNFromPointCloud in 3 tutorials [#4760]

    PCL Tools:

    • ๐Ÿ›  Fix virtual scanner [#4730]

    CI:

    • ๐Ÿ Make windows build on c:\ drive to fix out-of-disk-space errors [#4382]
    • [new feature] Use windows docker image in CI. [#4426]