PCL v1.10.0 Release Notes

Release Date: 2020-01-19 // about 4 years ago
  • ๐Ÿš€ Starting with PCL 1.10, to ensure compatibility with future PCL releases, please ๐Ÿ‘‰ use pcl::make_shared and the Class::Ptr + Class::ConstPtr type-alias instead of using direct names like {boost, std}::shared_ptr or {boost, std}::make_shared. There is also pcl::shared_ptr which offers the same abstraction for non-PCL types.

    New Features:

    ๐Ÿ†• Newly added functionalities.

    • [sample_consensus] Add parallel RANSAC implementation with OpenMP [#3514]
    • [registration] Add linear least squares version of symmetric objective function for ICP [#3390]
    • [common] Add concatenate operation for PolygonMesh [#3316]
    • [common] Add emplace[_back] to pcl::PointCloud [#3207]
    • [cmake] Add format compilation target that applies clang-format to whitelisted modules [#3188]
    • [common] Add pcl::make_shared that automatically handles aligned allocations [#3163]
    • [modernization][cmake] Enable C++ 14 flags [#2690]
    • [io] Add RSSDK 2.0 (librealsense2) grabber [#2214]

    ๐Ÿ—„ Deprecated:

    ๐Ÿš€ Deprecated code scheduled to be removed after two minor releases.

    • [common] Revert smart pointer type change in PointCloud and deprecate getMapping() [#3563]
    • [common] Deprecate getFields() with output parameter in favor of overload with return value [#3401]
    • [recognition] Refactor MaskMap and deprecate several of its methods [#3399]
    • [common] Deprecate getFieldIndex()/getFields() with first argument as cloud [#3365]
    • [common] Add PCLPointCloud2::operator+=() and update concatenation operation [#3320]
    • [segmentation] Delete unused params in OrganizedMultiPlaneSegmentation::refine() [#3302]
    • [visualization] Add new overload of PointCloudColorHandler::getColor() [#3187]
    • [modernization][io] Add registerCallback() overload to grabbers to support assignment of boost::functions with templated signatures [#3128]
    • [surface] Convert MovingLeastSquaresOMP into an alias template and deprecate [#3119]
    • [kdtree] Remove unnecessary FLANN includes, deprecate "kdtree/flann.h" header [#2993]
    • [features] Deprecate computeRSD() functions that take pointclouds by pointer [#2827]
    • [modernization] Deprecate pcl_isnan, pcl_isfinite, and pcl_isinf in favor of std methods [#2798, #3457]
    • [filters] Restructure and add functionality to filters templated on PCLPointCloud2 [#3483, #3500]

    ๐Ÿšš Removed:

    ๐Ÿ—„ Removal of deprecated code.

    • [segmentation] Remove SupervoxelClustering::getColoredVoxelCloud() [#3469]
    • [io] Remove FZ-API [#2747]

    Behavioral changes:

    ๐Ÿ”„ Changes in the expected default behavior.

    • [sample_consensus] Set default min and max angle for SAC cone models [#3466]
    • [tools] Do not discard data fields in pcl_uniform_sampling tool [#3461]
    • [common] Disable colored output for non-interactive terminals [#3310]
    • [io] Add support for device URI in OpenNI2Grabber constructor [#3238]
    • [common] Enforce right-hand-rule on PCA eigenvectors [#2946]
    • [visualization] Improve c/C command in PCLVisualizer [#2926]
    • [registration] Fix ICP misbehavior in the "failure after maximum iterations" mode [#2892]
    • [common] Initialize curvature in PointNormal default constructor [#2674]

    API changes:

    ๐Ÿ”„ Changes to the API which didn't go through the proper deprecation and removal cycle.

    • [gpu] Replace uint64_type by std::uint64_t [#3435]
    • [modernization] Migrate from boost::tuple to std::tuple [#3250]
    • [modernization] Migrate boost::function to std::function [#3079]

    ABI changes:

    ๐Ÿ”„ Changes that cause ABI incompatibility but are still API compatible.

    • [modernization] Migrate from boost::unordered_map to std::unordered_map [#3107]
    • [modernization] Migrate to standard library type traits [#3105]
    • [visualization] Minor refactoring of pcl::visualization::Camera and related functions [#2901]
    • [modernization] Migrate from boost::thread to std::thread [#3060, #3094]
    • [modernization] Prefer using Ptr typedefs and migrate to std smart pointers in non-API code [#2804, #2821, #2823, #2929, #3061, #3141, #3142, #3217, #3474, #3482, #3486, #3489, #3497]
    • [modernization] Migrate to std random number generators [#2956, #2962, #3069]
    • [filters] Restructure and add functionality to filters templated on PCLPointCloud2 [#3483, #3500]

    Migration to C++14 and code modernization:

    Modules:

    CMake:

    • Set compile features on imported PCL targets [#3567]
    • Create CMake imported targets for header-only modules [#3495]
    • โš  Add PCL_WARNINGS_ARE_ERRORS CMake option and enable it in Ubuntu 16.04 CI job [#3478]
    • Avoid using VERSION_GREATER_EQUAL to preserve compatibility with CMake 3.5 [#3460]
    • โœ‚ Remove policy push/pop from "PCLConfig.cmake" file [#3431]
    • ๐Ÿ›  Fix link-type keywords in linked libraries in "PCLConfig.cmake" with CMake >= 3.11 [#3341]
    • โšก๏ธ Update prefix hints in GTest finder script [#3331]
    • ๐Ÿšš PCL All-in-one Installer: add process to add/remove VTK path [#3322]
    • โž• Add surface module to the list of dependencies of examples [#3295]
    • โž• Add missing install rule for "2d/kernel.hpp" header [#3278]
    • [new-feature] Add format compilation target that applies clang-format to whitelisted modules [#3188]
    • ๐Ÿ‘‰ Use COMPONENTS when finding VTK to avoid linking agains unnecessary modules [#3140]
    • โž• Add thread library of the system by Threads::Threads instead of via -pthread flag [#3102]
    • ๐Ÿ“ฆ Fix find_package_handle_standard_args incorrect argument in GTest finder script [#3098]
    • ๐Ÿ›  Fix compound target's target registration [#3090]
    • Set CMP0072 to NEW to prefer GLVND over legacy OpenGL modules [#3066]
    • โž• Improve parsing of BUNDLE option in PCL_ADD_EXECUTABLE [#3064]
    • ๐Ÿš€ Change debug/release targets postfix on Windows [#3055]
    • โž• Add version info on Windows for DLLs/Exe [#3054]
    • Modernize some CMake macros (Increases minimum required CMake version to 3.5) [#3044]
    • โž• Add newer Boost versions to Boost_ADDITIONAL_VERSIONS [#3003]
    • ๐Ÿ‘‰ Refactor PCL_MAKE_PKGCONFIG [#2894]
    • โฌ†๏ธ Bump Eigen minimum version to 3.1 [#2893]
    • ๐Ÿ‘Œ Improve compatibility with latest VTK [#2885]
    • PCL All-in-one Installer: add quiet flag to msiexec installs [#2873]
    • ๐Ÿ‘‰ Use -mtune instead of -march on non-x86 CPUs [#2868]
    • Prevent adding /MP flag for MSVC in case any other language than C/CXX will be used (e.g. CUDA) [#2862]
    • โž• Add support for Visual Studio 2019 [#2826]
    • โฌ‡๏ธ Drop MSVC 2013 (and below) support [#2817]
    • โฌ‡๏ธ Drop GCC 4 support [#2760]
    • Mark include directories of 3rd-party libraries as system includes [#2733]
    • ๐Ÿ›  Fix Qt5 CMake issue [#2719]
    • โฌ‡๏ธ Reduce unnecessary nesting in "CMakeLists.txt" [#2718]
    • โฌ‡๏ธ Drop Qt4 support [#2716]
    • Remove unnecessary VTK_INCLUDE_DIRECTORIES [#2713]
    • โž• Add MSVC_MP CMake option to adjust number of parallel build jobs [#2705]
    • Set interface compile features to cxx_std_14 on PCL targets [#2697]
    • Reorganize and beautify project generation for IDEs [#2691]
    • [new-feature] Enable C++ 14 flags [#2690]
    • โœ‚ Remove vendored "FindGLEW.cmake" and adopt imported targets; rename "FindGTest.cmake" to prevent name clash [#2679]
    • โž• Add compound CMake targets for examples, tools, and apps [#2673]
    • Set CMake policy CMP0074 to NEW [#2671]
    • โœ‚ Remove conditional code for no longer supported versions of CMake [#2667]
    • ๐Ÿ—„ Raise minimum required Boost version to 1.55; fix deprecated Boost endians [#2801]
    • Modernize FLANN finder script [#2740, #2861, #2905, #2910, #3157, #3202, #3220, #3317]

    libpcl_2d:

    • ๐Ÿ›  Fix EIGEN_ALIGN16 positionining for point type XYZHSV [#3237]

    libpcl_common:

    • ๐Ÿ—„ [deprecation] Revert smart pointer type change in PointCloud and deprecate getMapping() [#3563]
    • Define RangeImage destructor as virtual [#3477]
    • ๐Ÿ”จ Refactor pcl::eigen33() to reduce potential errors (and remove bug) [#3441]
    • ๐Ÿ‘‰ Use generic detection idiom in isFinite() [#3402]
    • ๐Ÿ—„ [deprecation] Deprecate getFields() with output parameter in favor of overload with return value [#3401]
    • ๐Ÿ”จ Refactor polynomial calculations and remove memory leak [#3392]
    • โœ‚ Removes deprecated usage of getFields(cloud, fields) [#3374]
    • ๐Ÿ—„ [deprecation] Deprecate getFieldIndex()/getFields() with first argument as cloud [#3365]
    • โœ‚ Remove vector.reserve() from hot path in cloud concatenation [#3361]
    • ๐Ÿ—„ [deprecation] Add PCLPointCloud2::operator+=() and update concatenation operation [#3320]
    • [new-feature] Add concatenate operation for PolygonMesh [#3316]
    • Simplify the resize logic in PCLBase [#3315]
    • [behavior] Disable colored output for non-interactive terminals [#3310]
    • [new-feature] Add emplace[_back] to pcl::PointCloud [#3207]
    • [new-feature] Add pcl::make_shared that automatically handles aligned allocations [#3163]
    • [behavior] Enforce right-hand-rule on PCA eigenvectors [#2946]
    • ๐Ÿ›  Fix a bug in CentroidPoint [#2875]
    • [behavior] Initialize curvature in PointNormal default constructor [#2674]

    libpcl_cuda:

    • โœ‚ Remove code for CUDA below 7.5, update version checks [#3152]
    • โž• Add missing include to support CUDA 10.1 [#2883]
    • โฌ‡๏ธ Drop CUDA 7.0 (and below) support [#2736]

    libpcl_features:

    • ๐Ÿ›  Fix numerical issue in GASD estimation [#3498]
    • ๐Ÿ—„ [deprecation] Deprecate computeRSD() functions that take pointclouds by pointer [#2827]
    • ๐Ÿ›  Fix data race in NormalEstimationOMP on Windows [#2770]

    libpcl_filters:

    • ๐Ÿ”€ Merge pull request #3540 from facontidavide/fix_filter [#3540]
    • ๐Ÿ›  Fix incorrect switch fallthrough in convolution operator [#3429]
    • ๐Ÿ‘‰ Use size_t for address computation in CropBox filter [#3418]
    • ๐Ÿšš Fix a bug in removed index extraction in UniformSampling [#3323]
    • ๐Ÿ›  Fix CropBox with indices; add new assertions for unit tests [#3306]
    • ๐Ÿ›  Use fixed-size Eigen block expressions in FrustumCulling [#2786]
    • ๐Ÿ—„ [abi][deprecation] Restructure and add functionality to filters templated on PCLPointCloud2 [#3483, #3500]

    libpcl_gpu:

    • ๐Ÿ›  Fix building of KinFu Large Scale app with Visual Studio [#3504]
    • [api] Replace uint64_type by std::uint64_t [#3435]
    • โž• Add OpenNI2 support to kinfu_largescale tool [#3391]
    • ๐Ÿ‘‰ Use constexpr in KinFu and KinFu large scale apps [#3386]
    • โœ‚ Remove duplicated and unused "cutil_math.h" [#3264]
    • Drop unnecessary CUDA_ARCH checks [#3154]
    • โœ‚ Remove code for CUDA below 7.5, update version checks [#3152]
    • โœ‚ Remove unused timer routines in "NCV.cu" [#3135]
    • โž• Add sync variants to CUDA vote functions to support PTX/ARCH >= 7.0 [#2981]
    • Fix -debug option parsing in people_pcd_prob tool [#2656]

    libpcl_io:

    • ๐Ÿ“œ Make PLY parser more tolerant towards files not adhering to standard [#3542]
    • ๐Ÿ›  Fix a bug in binary header generation for PCD files [#3522]
    • [behavior] Add support for device URI in OpenNI2Grabber constructor [#3238]
    • Include "pcl_config.h" before checking HAVE_OPENNI2 [#3191]
    • ๐Ÿ–จ Print descriptive error if PLY file not found [#3143]
    • ๐Ÿ—„ [deprecation] Add registerCallback() overload to grabbers to support assignment of boost::functions with templated signatures [#3128]
    • ๐Ÿ›  Fix preallocation of memory in PLY reader [#2800]
    • ๐Ÿ›  Fix possible integer overflow while iterating PointCloud fields [#2754]
    • [removal] Remove FZ-API [#2747]
    • ๐Ÿ‘Œ Improve loading of massive PLY files [#2715]
    • [new-feature] Add RSSDK 2.0 (librealsense2) grabber [#2214]
    • ๐Ÿ›  Fix callback signatures in some grabbers [#3216, #3225]

    libpcl_kdtree:

    • ๐Ÿ—„ [deprecation] Remove unnecessary FLANN includes, deprecate "kdtree/flann.h" header [#2993]

    libpcl_keypoints:

    • โœ‚ Removed all duplicated branches in AgastKeypoint2D [#2657]

    libpcl_recognition:

    • ๐Ÿ‘‰ Use range-based for loops with boost::filesystem::directory_iterator [#3432]
    • ๐Ÿ—„ [deprecation] Refactor MaskMap and deprecate several of its methods [#3399]
    • โž• Add missing include in "trimmed_icp.h" [#3286]
    • ๐Ÿ‘‰ Use I/O helper method in pcl::LineRGBD [#2796]

    libpcl_registration:

    • ๐Ÿ‘‰ Make Registration::hasConverged() const-qualified [#3456]
    • ๐Ÿ›  Fix debug message by reordering statements in GICP [#3398]
    • [new-feature] Add linear least squares version of symmetric objective function for ICP [#3390]
    • ๐Ÿ›  Fix the OpenMP errors/warnings in "ia_fpcs.hpp" [#3389]
    • ๐Ÿ›  Fix pcl::Registration::getFitnessScore() documentation [#3082]
    • [behavior] Fix ICP misbehavior in the "failure after maximum iterations" mode [#2892]

    libpcl_sample_consensus:

    • [new-feature] Add parallel RANSAC implementation with OpenMP [#3514]
    • [behavior] Set default min and max angle for SAC cone models [#3466]
    • โž• Add const qualifier to multiple methods in SAC module [#2970]
    • ๐Ÿ›  Fix regression in pcl::SACSegmentation line fitting [#2767]

    libpcl_segmentation:

    • [removal] Remove SupervoxelClustering::getColoredVoxelCloud() [#3469]
    • ๐Ÿ—„ [deprecation] Delete unused params in OrganizedMultiPlaneSegmentation::refine() [#3302]
    • โž• Add noexcept for boost::checked_delete<> friend [#2942]
    • ๐Ÿ›  Fix SupervoxelClustering compilation problem in MSVC 2015.3 [#2867]

    libpcl_simulation:

    • Fix bug in SimExample::write_depth_image_uint trigerring -Wtype-limits warning [#3430]

    libpcl_stereo:

    • ๐Ÿ”€ Merge pull request #3566 from kunaltyagi/stereo [#3566]

    libpcl_surface:

    • ๐Ÿ›  Fix undefined behaviour in OctNode [#3561]
    • ๐Ÿ›  Fix memory leak in TextureMapping [#3549]
    • Prevent memset for empty vector in 3rdparty/poisson4 [#3537]
    • โœ‚ Remove incorrect tree update in MarchingCubes [#3240]
    • ๐Ÿ—„ [deprecation] Convert MovingLeastSquaresOMP into an alias template and deprecate [#3119]
    • ๐Ÿ›  Fix a bug in ConvexHull when indices are used [#2999]
    • โœ… Include "pcl_config.h" before testing HAVE_QHULL [#2979]
    • Throw exceptions instead of exit(0) in Poisson surface reconstruction [#2891]
    • Add check for invalid plane coefficients in MovingLeastSquares [#2805]
    • ๐Ÿ›  Fix the size of the lookup table in BilateralUpsampling [#2749]
    • Replace hash_map with unordered_map in 3rdparty/poisson4 [#2640]

    libpcl_visualization:

    • โž• Add a flag to disable window autoresizing in ImageViewer [#3394]
    • ๐Ÿ—„ [deprecation] Add new overload of PointCloudColorHandler::getColor() [#3187]
    • [behavior] Improve c/C command in PCLVisualizer [#2926]
    • โš  Disable VTK warning display with OpenGL rendering backend [#2912]
    • [abi] Minor refactoring of pcl::visualization::Camera and related functions [#2901]
    • ๐Ÿ›  Fix a bug in PCLVisualizer::setShapeRenderingProperties() [#2900]
    • ๐Ÿ›  Fix possible integer overflow while iterating PointCloud fields [#2754]
    • Raise minimum VTK version to 6.2 [#2685]

    PCL Apps:

    • ๐Ÿ›  Fix memory leaks in OpenNI apps [#3553]
    • ๐Ÿ‘‰ Use range-based for loops with boost::filesystem::directory_iterator [#3432]
    • Do not use deprecated function in stereo_ground_segmentation [#3406]
    • โž• Add missing std::move or const reference for parameters [#3232]
    • Remove magic numbers from organized_segmentation_demo app [#3108]
    • Add missing include render_views_tesselated_sphere app [#2909]
    • โœ‚ Remove Qt version checks [#2762]
    • Cleanup Qt includes in Modeler app [#2756]
    • Cleanup Qt includes in CloudComposer app [#2744]
    • ๐Ÿ›  Fix MSVC compile issues in CloudComposer app [#2712]
    • ๐Ÿ›  Fix Modeler app with OpenGL2 rendering backend [#2653]

    ๐Ÿ“„ PCL Docs:

    • ๐Ÿ›  Fix and improve documentation in sample_consensus module [#3301]
    • ๐Ÿ›  Fix pcl::Registration::getFitnessScore() documentation [#3082]
    • ๐Ÿ›  Fix source file name path stripping in Doxygen [#2714]

    PCL Tutorials:

    • ๐Ÿ›  Fix "CMakeLists.txt" in VFH tutorial [#3449]
    • โšก๏ธ Update information about types with RGBA data in tutorial [#3294]
    • โž• Add a note about adjusting passthrough limits in template alignment tutorial [#3193]
    • โž• Add missing shell command in "Building PCL" tutorial [#2996]
    • ๐Ÿ›  Fix cube rendering properties in "Moment of Inertia" tutorial [#2880]
    • Migrate from boost::math::iround to std::lround [#2818]
    • Link with PCL_LIBRARIES, not PCL_***_LIBRARIES [#2799]

    โœ… PCL Tests:

    • ๐Ÿšš Move OMP version of MovingLeastSquares into a separate test case [#3382]
    • ๐Ÿ›  Fix CropBox with indices; add new assertions for unit tests [#3306]
    • ๐Ÿ“ฆ Fix find_package_handle_standard_args incorrect argument in GTest finder script [#3098]
    • โœ… Do not test buffers instantiated with char template argument [#2980]
    • ๐Ÿ‘‰ Remove GTEST_USE_OWN_TR1_TUPLE defines [#2828]
    • โž• Add a new test for SampleConsensusModelLine [#2768]
    • โœ… Split test_registration into three binaries [#2727]

    PCL Tools:

    • [behavior] Do not discard data fields in pcl_uniform_sampling tool [#3461]
    • โž• Add missing includes in ensenso_viewer.cpp [#3035]
    • Do not terminate openni_viewer/openni2_viewer if image viewer was not instantiated [#2698]

    CI:

    • โš  Add PCL_WARNINGS_ARE_ERRORS CMake option and enable it in Ubuntu 16.04 CI job [#3478]
    • โž• Add a new Azure pipeline for Ubuntu 19.10 [#3446]
    • โž• Add formatting job on CI [#3420]
    • โž• Add Dockerfiles for images used on CI [#3350]
    • โœ… Publish test results on Azure pipelines [#2948]
    • ๐Ÿ— Build tutorials on Azure Pipelines [#2696]