PCL v1.12.0 Release Notes
-
PCL 1.12.0 enables custom index size and type, from
int16_t
touint64_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 forif 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 ofTransformationEstimationDualQuaternion
[#4425] - [segmentation] Deprecate unused
max_label
inextractLabeledEuclideanClusters
[#4105] - [surface] MLS: correct typo in
principle
by usingprincipal
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 forif 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 ofTransformationEstimationDualQuaternion
[#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:
libpcl_segmentation:
- ๐ [deprecation] Deprecate unused
max_label
inextractLabeledEuclideanClusters
[#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 usingprincipal
instead [#4505]
libpcl_visualization:
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: