CHANGES.md
New features added to PCL
New features added to PCL
Deprecation of public APIs, scheduled to be removed after two minor releases
Removal of the public APIs deprecated in previous releases
Behavior changes in classes, apps, or tools
ABI changes that are still API compatible
sprintf to snprintf to suppress deprecated warning on macOS [#6102]__func__ and __PRETTY_FUNCTION__ defines for MSVC [#6222]New features added to PCL
pcl::Indices in VoxelGrid of PCLPointCloud2 [#5979]pcl::PointXYZLNormal to GP3 PCL_INSTANTIATE (#5981) [#5983]New features added to PCL
Deprecation of public APIs, scheduled to be removed after two minor releases
Removal of the public APIs deprecated in previous releases
Behavior changes in classes, apps, or tools
New features added to PCL
Removal of the public APIs deprecated in previous releases
Behavior changes in classes, apps, or tools
New features added to PCL
Deprecation of public APIs, scheduled to be removed after two minor releases
std::atomic instead of non-standard extensions [#4807]ndt [#5073]static_assert [#4797]Removal of the public APIs deprecated in previous releases
Behavior changes in classes, apps, or tools
pcl_{module}.pc [#4977]API changes that did not go through the proper deprecation and removal cycle
ABI changes that are still API compatible
PCL_MAKE_ALIGNED_OPERATOR_NEW to CropBox for better Eigen support [#4962]SampleConsensusModelSphere<PointT>::projectPoints properly [#5095]pcl_{module}.pc [#4977]PCL_SUBSUBSYS_DEPEND with PCL_SUBSYS_DEPEND [#5387]TARGET_PDB_FILE [#5396]PointXY specific behavior to transformPointCloud() [#4943]PointCloud structured assign [#5113]bool, std::{u}int64_t as possible point field types [#4133]PCL_MAKE_ALIGNED_OPERATOR_NEW to CropBox for better Eigen support [#4962]-FLT_MAX instead of FLT_MIN for minimum value [#5119]std::atomic instead of non-standard extensions [#4807]static_assert [#4797]using namespace thrust [#5326]ndt.h [#5080]ndt [#5073]similarity_threshold_squared_ instead of cardinality_ in… [#5236]SampleConsensusModelSphere<PointT>::projectPoints properly [#5095]This minor release brings in a lot of enhancements in CMake thanks to @larshg and @SunBlack. Enjoy a lot of bug-fixes and improvements in IO and Filters.
New features added to PCL
Deprecation of public APIs, scheduled to be removed after two minor releases
Behavior changes in classes, apps, or tools
ABI changes that are still API compatible
isNormalFinite check in ShapeContext3DEstimation [#4883]CropHull::applyFilters [#4851]extract_removed_indices [#4846]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
New features added to PCL
constexpr to static member functions for point types, add macro for if constexpr [#4735]Deprecation of public APIs, scheduled to be removed after two minor releases
TransformationEstimationDQ in favor of TransformationEstimationDualQuaternion [#4425]max_label in extractLabeledEuclideanClusters [#4105]principle by using principal instead [#4505]uniform_sampling.h [#4688]Removal of the public APIs deprecated in previous releases
concatenatePointCloud) [#4341]uniform_sampling.h [#4688]Behavior changes in classes, apps, or tools
API changes that did not go through the proper deprecation and removal cycle
std::array instead of C-array for ColorLUT [#4489]PCL_TRACKING_NORMAL_SUPPORTED [#4643]namespace pcl to free functions: aligned_{malloc/free} [#4742]ABI changes that are still API compatible
PCL_TRACKING_NORMAL_SUPPORTED [#4643]pcl_find_boost to allow compilation with Boost 1.74 [#4330]EXT_DEPS [#4353]transformPointCloud [#4398]transformPlane [#4396]std::array instead of C-array for ColorLUT [#4489]PointCloud to prevent perf regression in refactoring [#4397]namespace pcl to free functions: aligned_{malloc/free} [#4742]constexpr to static member functions for point types, add macro for if constexpr [#4735]PolygonMesh::concatenate and its unit test [#4745]nth_element [#4360]convertSMVer2Cores [#4748]Device{Array,Memory} [#4741]istringstream [#4339]TransformationEstimationDQ in favor of TransformationEstimationDualQuaternion [#4425]sample_consensus [#4261]max_label in extractLabeledEuclideanClusters [#4105]extractEuclideanClusters for smooth surfaces [#4162]principle by using principal instead [#4505]Apart from the usual serving of bug-fixes and speed improvements, PCL 1.11.1 brings in
better support for CUDA, more uniform behavior in code as well as cmake, and an
experimental feature: functor_filter.
New features added to PCL
uindex_t dependent on index_t [#4205]pcl_find_boost to allow compilation with Boost 1.73 and 1.72 [#4080]pcl::index_t while compiling [#4166]GaussianKernel::convolve{Rows,Cols} [#4092]std::vector<int> with Indices [#3989]PointCloud to conform to requirements of ReversibleContainer [#3980]uindex_t dependent on index_t [#4205]data member function to PointCloud [#4216]int to index_t for field index variables in pclBase, add pcl::UNAVAILABLE for same [#4211]resize with 2 arguments to PointCloud [#4225]max_size to PointCloud [#4254]pcl::utils::ignore() [#4269]FastBilateral{OMP} [#4134]vtkVertexBufferObject{,Mapper} [#4079]Starting with PCL 1.11, PCL uses std::shared_ptr and std::weak_ptr instead of the
boost smart pointers. The change leverages type aliases included with the 1.10.0
release. PCL 1.11 also introduces pcl::index_t which should be used for the size
of point types instead of int, std::size_t, etc. EOL for deprecated features
is also explicitly mentioned in the deprecation compile time warnings
New features added to PCL
ignore function to remove Doxygen warnings for unused arguments [#3942]boost to std [#3750]Deprecation of public APIs, scheduled to be removed after two minor releases
#undef Success in pcl_macros.h by extracting PCL_MAKE_ALIGNED_OPERATOR_NEW into memory.h [#3654]point_traits.h into type_traits.h [#3698]Removal of the public APIs deprecated in previous releases
CMakeLists.txt [#3915]Behavior changes in classes, apps, or tools
unique_ptr [#3626]API changes that did not go through the proper deprecation and removal cycle
unique_ptr [#3626]pcl::index_t; move some type declarations from pcl/pcl_macros.h to pcl/types.h [#3651]Filter and FilterIndices, move indices_/input_ from public to protected section [#3726]boost to std [#3750]setInputCloud from public API [#4026]ABI changes that are still API compatible
Keypoint. Fixes coming from clang-doxy [#3898]#undef Success in pcl_macros.h by extracting PCL_MAKE_ALIGNED_OPERATOR_NEW into memory.h [#3654]pcl::index_t; move some type declarations from pcl/pcl_macros.h to pcl/types.h [#3651]point_traits.h into type_traits.h [#3698]PCL_DEPRECATED macro to include scheduled removal version [#3808]PointIndices based on the global Indices type alias [#3822]ignore function to remove Doxygen warnings for unused arguments [#3942]PCL_DEPRECATED macro [#3945]FilterIndices derived classes [#3807]Filter and FilterIndices, move indices_/input_ from public to protected section [#3726]unique_ptr [#3626]OctreeBase::operator= [#3787]setInputCloud from public API [#4026]int -> index_t, std::vector<int> ->Indices [#3835]int -> index_t, std::vector<int> ->Indices [#3840]pcl::isFinite for compilation on VS2019 [#4056]OrganizedMultiPlaneSegmentation [#3861]TextureMapping::sortFacesByCamera from O(faces*points) to O(faces) [#3981]CMakeLists.txt [#3915]Deprecation of public APIs, scheduled to be removed after two minor releases
PointWithViewpoint ctors; make ctors more uniform in PCL point types [#3597]Removal of the public APIs deprecated in previous releases
USE_ROS macro [#3690]Behavior changes in classes, apps, or tools
pcl_train_linemod_template [#3652]PCL_ONLY_CORE_POINT_TYPES in mingw builds [#3694]/bigobj for MSVC [#3604]register_point_struct.h [#3732]USE_ROS macro [#3690]dirent with boost::filesystem [#3676]PointWithViewpoint ctors; make ctors more uniform in PCL point types [#3597]computeApproximateCovariances; fix compilation error for the same [#3711]NormalEstimationOMP [#3614]IntegralImageNormalEstimation [#3574]is_dense based on actual cloud contents in removeNaNNormalsFromPointCloud() [#3685]initRegistration [#3737]people_app [#3618]if/ifdef WIN32 issues [#3668]Grabber::toggle() method [#3615]pcl::io::savePLYFileBinary [#3601]MarchingCubes [#3718]if/ifdef WIN32 issues [#3668]pcl_train_linemod_template [#3652]pcl_train_linemod_template [#3644]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.
PolygonMesh [#3316]emplace[_back] to pcl::PointCloud [#3207]format compilation target that applies clang-format to whitelisted modules [#3188]pcl::make_shared that automatically handles aligned allocations [#3163]Deprecated:Deprecated code scheduled to be removed after two minor releases.
PointCloud and deprecate getMapping() [#3563]getFields() with output parameter in favor of overload with return value [#3401]MaskMap and deprecate several of its methods [#3399]getFieldIndex()/getFields() with first argument as cloud [#3365]PCLPointCloud2::operator+=() and update concatenation operation [#3320]OrganizedMultiPlaneSegmentation::refine() [#3302]PointCloudColorHandler::getColor() [#3187]registerCallback() overload to grabbers to support assignment of boost::functions with templated signatures [#3128]MovingLeastSquaresOMP into an alias template and deprecate [#3119]computeRSD() functions that take pointclouds by pointer [#2827]pcl_isnan, pcl_isfinite, and pcl_isinf in favor of std methods [#2798, #3457]PCLPointCloud2 [#3483, #3500]Removed:Removal of deprecated code.
SupervoxelClustering::getColoredVoxelCloud() [#3469]Behavioral changes:Changes in the expected default behavior.
pcl_uniform_sampling tool [#3461]OpenNI2Grabber constructor [#3238]PCLVisualizer [#2926]PointNormal default constructor [#2674]API changes:Changes to the API which didn't go through the proper deprecation and removal cycle.
uint64_type by std::uint64_t [#3435]boost::tuple to std::tuple [#3250]boost::function to std::function [#3079]ABI changes:Changes that cause ABI incompatibility but are still API compatible.
boost::unordered_map to std::unordered_map [#3107]pcl::visualization::Camera and related functions [#2901]boost::thread to std::thread [#3060, #3094]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]std random number generators [#2956, #2962, #3069]PCLPointCloud2 [#3483, #3500]Migration to C++14 and code modernization:boost::shared_ptr to pcl::shared_ptr [#3546]std::vectors in RangeImageBorderExtractor [#3533]std::string::c_str() [#3517]pcl::int_t to std::int_t [#3422]throw specifier [#3384]numeric_limits from standard library [#3360]std::move or const reference for parameters [#3253]boost::tuple to std::tuple [#3250]boost::bind to std::bind [#3249]cloexec option to fopen [#3223]registerCallback() overload to grabbers to support assignment of boost::functions with templated signatures [#3128]boost::unordered_map to std::unordered_map [#3107]boost::function to std::function [#3079]empty() over size() when checking container state [#3033]nullptr checks before delete [#2990]std::isnan over != comparison trick [#2977]BOOST_STATIC_ASSERT and EIGEN_ASSERT to static_assert [#2951]std::log2 over custom implementation [#2950]boost::this_thread::sleep to std::this_thread::sleep_for [#2921]boost::math::isnan to std::isnan [#2819]bool literals [#2793]std::to_string over boost::lexical_cast for integer conversions [#2785]emplace_back over push_back [#2784]=delete to disable special members [#2779]registerstorage class specifier [#2761]"" [#2758]cloexec option to fopen [#2755]override [#2728][[deprecated]] attribute [#2699]hash_map with unordered_map in 3rdparty/poisson4 [#2640]nullptr over 0 and NULL [#3004, #3005, #3006, #3007, #3008, #3009, #3010, #3011, #3012, #3013, #3014, #3015, #3016, #3017, #3018, #3019, #3020, #3021, #3022, #3023, #3024, #3025, #3026, #3027, #3028, #3029]std::chrono [#2913, #2919, #3318]boost::thread to std::thread [#3060, #3094]mutex, lock and csv to modernization [#3063, #3068, #3074, #3078, #3084, #3086, #3088, #3091, #3093, #3100]using over typedef [#3112, #3113, #3115, #3117, #3118, #3121, #3122, #3123, #3124, #3125, #3129, #3130, #3132, #3134, #3137, #3138, #3139, #3144]std math functions over C functions [#3087, #3236, #3255, #3256, #3257, #3258, #3270, #3271, #3272, #3280, #3282, #3287]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]std random number generators [#2956, #2962, #3069]pcl_isnan, pcl_isfinite, and pcl_isinf in favor of std methods [#2798, #3457]std:: prefix to standard types/functions [#3265, #3326, #3327, #3328, #3354, #3426, #3434]else after return statement [#3180, #3181, #3182, #3183, #3184, #3185, #3186]typename keyword [#2896, #2897, #2927]#pragma once over #ifndef include guards [#2617, #2707]std::size_t in loops [#3550, #3556]Modules:CMake:PCL_WARNINGS_ARE_ERRORS CMake option and enable it in Ubuntu 16.04 CI job [#3478]VERSION_GREATER_EQUAL to preserve compatibility with CMake 3.5 [#3460]surface module to the list of dependencies of examples [#3295]format compilation target that applies clang-format to whitelisted modules [#3188]COMPONENTS when finding VTK to avoid linking agains unnecessary modules [#3140]Threads::Threads instead of via -pthread flag [#3102]find_package_handle_standard_args incorrect argument in GTest finder script [#3098]CMP0072 to NEW to prefer GLVND over legacy OpenGL modules [#3066]BUNDLE option in PCL_ADD_EXECUTABLE [#3064]Boost_ADDITIONAL_VERSIONS [#3003]PCL_MAKE_PKGCONFIG [#2894]-mtune instead of -march on non-x86 CPUs [#2868]/MP flag for MSVC in case any other language than C/CXX will be used (e.g. CUDA) [#2862]VTK_INCLUDE_DIRECTORIES [#2713]MSVC_MP CMake option to adjust number of parallel build jobs [#2705]cxx_std_14 on PCL targets [#2697]CMP0074 to NEW [#2671]libpcl_2d:EIGEN_ALIGN16 positionining for point type XYZHSV [#3237]libpcl_common:PointCloud and deprecate getMapping() [#3563]RangeImage destructor as virtual [#3477]pcl::eigen33() to reduce potential errors (and remove bug) [#3441]isFinite() [#3402]getFields() with output parameter in favor of overload with return value [#3401]getFields(cloud, fields) [#3374]getFieldIndex()/getFields() with first argument as cloud [#3365]vector.reserve() from hot path in cloud concatenation [#3361]PCLPointCloud2::operator+=() and update concatenation operation [#3320]PolygonMesh [#3316]PCLBase [#3315]emplace[_back] to pcl::PointCloud [#3207]pcl::make_shared that automatically handles aligned allocations [#3163]CentroidPoint [#2875]PointNormal default constructor [#2674]libpcl_cuda:libpcl_features:computeRSD() functions that take pointclouds by pointer [#2827]NormalEstimationOMP on Windows [#2770]libpcl_filters:size_t for address computation in CropBox filter [#3418]UniformSampling [#3323]CropBox with indices; add new assertions for unit tests [#3306]FrustumCulling [#2786]PCLPointCloud2 [#3483, #3500]libpcl_gpu:uint64_type by std::uint64_t [#3435]kinfu_largescale tool [#3391]constexpr in KinFu and KinFu large scale apps [#3386]-debug option parsing in people_pcd_prob tool [#2656]libpcl_io:OpenNI2Grabber constructor [#3238]HAVE_OPENNI2 [#3191]registerCallback() overload to grabbers to support assignment of boost::functions with templated signatures [#3128]PointCloud fields [#2754]libpcl_kdtree:libpcl_keypoints:AgastKeypoint2D [#2657]libpcl_recognition:boost::filesystem::directory_iterator [#3432]MaskMap and deprecate several of its methods [#3399]pcl::LineRGBD [#2796]libpcl_registration:Registration::hasConverged() const-qualified [#3456]pcl::Registration::getFitnessScore() documentation [#3082]libpcl_sample_consensus:const qualifier to multiple methods in SAC module [#2970]pcl::SACSegmentation line fitting [#2767]libpcl_segmentation:SupervoxelClustering::getColoredVoxelCloud() [#3469]OrganizedMultiPlaneSegmentation::refine() [#3302]noexcept for boost::checked_delete<> friend [#2942]SupervoxelClustering compilation problem in MSVC 2015.3 [#2867]libpcl_simulation:SimExample::write_depth_image_uint trigerring -Wtype-limits warning [#3430]libpcl_stereo:libpcl_surface:OctNode [#3561]TextureMapping [#3549]memset for empty vector in 3rdparty/poisson4 [#3537]MarchingCubes [#3240]MovingLeastSquaresOMP into an alias template and deprecate [#3119]ConvexHull when indices are used [#2999]HAVE_QHULL [#2979]exit(0) in Poisson surface reconstruction [#2891]MovingLeastSquares [#2805]BilateralUpsampling [#2749]hash_map with unordered_map in 3rdparty/poisson4 [#2640]libpcl_visualization:ImageViewer [#3394]PointCloudColorHandler::getColor() [#3187]PCLVisualizer [#2926]pcl::visualization::Camera and related functions [#2901]PCLVisualizer::setShapeRenderingProperties() [#2900]PointCloud fields [#2754]PCL Apps:boost::filesystem::directory_iterator [#3432]stereo_ground_segmentation [#3406]std::move or const reference for parameters [#3232]organized_segmentation_demo app [#3108]render_views_tesselated_sphere app [#2909]PCL Docs:sample_consensus module [#3301]pcl::Registration::getFitnessScore() documentation [#3082]PCL Tutorials:boost::math::iround to std::lround [#2818]PCL_LIBRARIES, not PCL_***_LIBRARIES [#2799]PCL Tests:MovingLeastSquares into a separate test case [#3382]CropBox with indices; add new assertions for unit tests [#3306]find_package_handle_standard_args incorrect argument in GTest finder script [#3098]char template argument [#2980]GTEST_USE_OWN_TR1_TUPLE defines [#2828]SampleConsensusModelLine [#2768]test_registration into three binaries [#2727]PCL Tools:pcl_uniform_sampling tool [#3461]ensenso_viewer.cpp [#3035]openni_viewer/openni2_viewer if image viewer was not instantiated [#2698]CI:PCL_WARNINGS_ARE_ERRORS CMake option and enable it in Ubuntu 16.04 CI job [#3478]Modules:Uncategorized:CMake:libpcl_visualization:PCL Tutorials:PCL Tests:SHOTEstimation and SHOTColorEstimation tests [#2636]CI:New Features:Newly added functionalities.
PCLVisualizer::addText3D() that allows specifying text orientation [#2038]MovingLeastSquares::setPolynomialFit(). [#1960]Deprecated:Deprecated code scheduled to be removed after two minor releases.
MovingLeastSquares::setPolynomialFit(). [#1960]Removed:Removal of deprecated code.
Behavioral changes:Changes in the expected default behavior.
PointXYZRGBL label field is now default constructed to 0 [#2462]API changes:Changes to the API which didn't went through the proper deprecation and removal cycle.
PointCloudColorHandlerRGBAField [#2226]MovingLeastSquares::setPolynomialFit(). [#1960]ABI changes:Changes that cause ABI incompatibility but are still API compatible.
GlasbeyLUT indexing type to size_t [#2297]Modules:Uncategorized:CMake:-march=native for Clang and prevent it from being included during cross compilation. [#2416]PCL_COMPILE_OPTIONS. Expose PCL as a CMake imported target. [#2100]libpcl_2d:RandomSample. Remove io dependency from 2d. [#2141]libpcl_common:pcl::transformPlane. [#2503]UnorganizedPointCloudException in PointCloud::at [#2521]PCLBase. [#2502]header to the print output of PointCloud [#2498]BivariatePolynomialT::calculateGradient [#2479]PointRGBtoI color conversion [#2475]operator<< for Intensity32u point type [#2467]PointXYZRGBL label field is now default constructed to 0 [#2462]parse_file_extension_argument (). [#2347]transformPointCloud/WithNormals() functions [#2247]GlasbeyLUT indexing type to size_t [#2297]PCL_POINT_TYPES and PCL_FEATURE_POINTTYPES macros. [#2295]pca.hpp [#2219]libpcl_cuda:libpcl_features:MomentOfInertia instantiations consistent with the rest of the library [#2266]libpcl_filters:Filter::getRemovedIndices. [#2523]VoxelGrid boost pointer. [#2205]filter_indices.h [#2193]RandomSample. Remove io dependency from 2d. [#2141]libpcl_gpu:gpu_people code [#2199]libpcl_io:pcl::PCDReader::readHeader() change nr_points type to size_t to avoid possible int32 overflow [#2408]::posix_fallocate on Mac OSX [#2354]EnsensoGrabber uint is undefined in Visual studio. [#2223]PLYReader Cast cloud point step as 64-bit integer [#2161]OpenNI2Device Add device sensor check for IR and depth modesetting [#2150]PCDWriterchanged toff to size_t in writeBinaryCompressed [#2144]libpcl_kdtree:libpcl_keypoints:TrajkovicKeypoint2D/3D to CMake build [#2179]libpcl_ml:libpcl_octree:OctreePointCloudSearch::boxSearch() implementation. [#2457]octree_key.h suppress GCC 8 ignored-qualifier warning [#2405]libpcl_outofcore:libpcl_people:libpcl_recognition:libpcl_registration:update_visualizer_ in Registration [#2423]libpcl_sample_consensus:libpcl_search:libpcl_segmentation:libpcl_simulation:const qualifiers to RangeLikelihood getters. [#2411]libpcl_surface:ON_Curve::EvaluatePoint calculation [#2185]MovingLeastSquares::setPolynomialFit(). [#1960]libpcl_visualization:vtkTexture.h. Follow up on #2291 [#2316]addTextureMesh [#2311]PointCloudColorHandlerRGBAField [#2226]getPointCloudRenderingProperties() [#2142]PCLVisualizer::addLine signature [#2134]octree dependency to visualization [#2115]PCLVisualizer::addText3D() that allows specifying text orientation [#2038]PCL Apps:demean_cloud correct usage message. [#2443]PCL Docs:demean_cloud correct usage message. [#2443]PCL Tutorials:Eigen::Map<const Eigen::Vector3f> from Normal of pcl::PointXYZINormal [#2128]PCL Examples:PCL Tests:pcl::transformPlane. [#2503]OctreePointCloudSearch::boxSearch() implementation. [#2457]boost::posix_time. Fix compatibility with Boost 1.67. [#2422]PCL Tools:pcl_uniform_sampling tool to deal with several formats (PCD, PLY and VTK) as input or output point cloud [#2348]MovingLeastSquares::setPolynomialFit(). [#1960]CI:make_shared invocations on aligned allocated vars
[#1405]sqrtf with std::sqrt
[#1901]CMake:delayimp.lib to all MSVC version
[#1823]MSVCxx variables
[#1830]-D_FORCE_INLINES definition added for CUDA targets to prevent
issues between old versions of the CUDA Toolkit and new versions
of gcc
[#1900]-dev in between releases.
[#1905]libpcl_2d:libpcl_common:pcl::planeWithPlaneIntersection
[#1698]compute3DCentroid
[#1704]toPCLPointCloud2 is not resilient to an empty pointcloud input
[#1723]normalized() is now resilient to a 0 filled vector
[#1728]PointCloud to ensure STL container
compatibility
[#1741]fromPCLPointCloud2()
[#1813]Eigen::umeyama for Eigen 3.3+
[#1820]
[#1887]_USE_MATH_DEFINES to avoid warnings
[#1956]libpcl_cuda:libpcl_features:PFHEstimation
[#1701]libpcl_filters:ModelOutlierRemoval
[#1735]libpcl_gpu:libpcl_io:Tr on pcl::MTLReader
and fixed issue with parsing of the material's properties.
[#1599]ASCIIReader::setInputFields interface
[#1690]boost::math::isnan by pcl_isnan
[#1766]PCDWriter now have the same permissions
as the ASCII ones
[#1779]vertex_index
[#1847]pcl_converter
[#1903]libpcl_keypoints:ISSKeypoint3D
[#1815]libpcl_octree:OctreePointCloudVoxelCentroid
[#1700]libpcl_recognition:libpcl_registration:libpcl_sample_consensus:SampleConsensusModelPlane::optimizeModelCoefficient
[#1811]libpcl_segmentation:libpcl_surface:ConcaveHull::reconstruct
[#1567]libpcl_visualization:PCLVisualizerInteractorStyle
[#1776]addText3D
[#1805]PCL Apps:slot and signals keywords in QT apps for
their Q_* counterparts to present name clashes with Boost Signals
[#1898]PCL Docs:PCL Tests:PCL Tools:mesh2pcd has now an option to explicitly disable visualization
[#1768]mesh_sampling has now an option to explicitly disable visualization
[#1769]PCL Tutorials:CI:Eigen::aligned_allocator in vectors and maps that contain
vectorizable Eigen where appropriate
[#1034]
[#1052]
[#1068]
[#1182]
[#1497]libpcl_common:copy_all_fields option to the family of transformPointCloudXXX()
functions
[#805]EventFrequency to measure frequency of a certain event
[#850]UniqueShapeContext1960 point type
[#856]transformPointWithNormal()
[#908]copyPointCloud() for empty clouds
[#933]PointXYZLNormal with position, normal, and label
fields
[#962]PointDEM to represent Digital Elevation Maps
[#1021]getAngle3D()
[#1035]TimeTrigger
[#1074]TimeTrigger on Windows with Boost < 1.55
[#1086]TimeTrigger::registerCallback
[#1087]PCA not triggering recomputation when input indices are
changed
[#1167]PointXYZRGBAtoXYZHSV and
PointXYZRGBtoXYZHSV conversion functions
[#1273]const qualifiers where appropriate in point type conversion functions
[#1274]PCA
[#1328]PointWithRange to the list of core point types
[#1352]getMaxDistance() (this affected computation of OUR-CVFH
features)
[#1449]operator== to PCLHeader class
[#1508]libpcl_features:ROPSEstimation feature
[#993]ROPSEstimation
[#1000]CRHEstimation where internal spatial data vector was not
zero-initialized
[#1151]NormalEstimation to mark cloud as non-dense when normal computation
fails
[#1239]computePointPFHRGBSignature()
[#1331]PFHEstimation
[#1335]libpcl_filters:RadiusOutlierRemoval performance by using nearest-K search when the
input point cloud is dense
[#709]BoxClipper3D::clipPlanarPolygon3D()
[#911]Filter class to allow using same point cloud as input and
output (effective for every filtering algorithm)
[#1042]CropBox performance by caching the result of transform matrix
identity test
[#1210]PassThrough filter to write a user-supplied value in place of bad
points
[#1290]VoxelGrid centroid computation
[#1415]ExtractIndices (for PCLPointCloud2 cloud type) to respect
keep_organized_ flag
[#1462]Convolution3D
[#1527]libpcl_gpu:hasShifted() in KinFu large scale
[#944]-pcd flag
in KinFu app
[#1018]PeoplePCDApp::convertProbToRGB()
[#1104]gpu_people
[#1194]kinfu_large_scale with CUDA ≥ 6.0
[#1225]kinfu_large_scale
[#1233]kinfu_large_scale kernels
[#1263]plot_camera_poses.m script in KinFu project
[#1311]--viz flag in KinFulibpcl_io:RobotEyeGrabber class to handle new packet format
[#982]OpenNI2Grabber
[#992]OpenNIGrabber to use depth camera parameters instead of color camera
parameters for point reprojection
[#994]savePLYFile and
savePLYFileBinary
[#1057]
[#1058]OpenNIGrabber
[#1090]OpenNIGrabber destructor where wrong callback handle was
unregistered
[#1094]PCDGrabber destructor
[#1127]HDLGrabber
[#1130]OpenNI2Grabber::convertToXYZRGBPointCloud()
[#1248]pcl::io::load() and pcl::io::save() to a new file
"io/auto_io.h"
[#1294]OpenNI2Grabber on msvc14
[#1310]PCDGrabber
[#1354]PCDWriter to not fail when the filesystem does not support setting
file permissions
[#1374]MTLReader reading function
[#1380]PXCGrabber (superseded by DepthSenseGrabber)
[#1395]loadPLYFile() to support NaN values
[#1433]char and uchar scalars in PLY files
[#1443]savePolygonFile* functions
[#1445]libpcl_keypoints:ISSKeypoint3D
[#1022]UniformSampling to the filters module
[#1411]HarrisKeypoint2D
[#1501]SIFTKeypoint to preserve point cloud viewpoint
[#1508]libpcl_octree:const qualifiers in OctreePointCloud::getVoxelBounds()
[#1016]Octree iterator to use unsigned longs in key computations to
reduce chance of overflows
[#1297]OctreePointCloudOccupancy on gcc
[#1461]libpcl_outofcore:libpcl_people:HOG (use new/delete consistently)
[#1099]libpcl_recognition:recognition module
[#1109]
[#1110]LineRGBD::refineDetectionsAlongDepth()
[#1117]LINEMOD::detectTemplatesSemiScaleInvariant()
[#1184]libpcl_registration:GeneralizedIterativeClosestPoint to return transformed input point
cloud after alignment
[#887]setInputFeatureCloud and
nearestNeighborSearch symbols in PPFRegistration
[#891]
[#907]pcl_registration module with MSVC2010
[#1014]SampleConsensusPrerejective
[#1037]IncrementalRegistration class that allows to register a stream
of clouds where each cloud is aligned to the previous cloud
[#1202]
[#1451]KdTreeReciprocalPtr
[#1204]GeneralizedIterativeClosestPoint
[#1262]GeneralizedIterativeClosestPoint6D
[#1304]MetaRegistration class that allows to register a stream of
clouds where each cloud is aligned to the conglomerate of all previous clouds
[#1426]CorrespondenceRejectorSurfaceNormal
[#1536]libpcl_sample_consensus:SACMODEL_PARALLEL_LINE to match the name (instead of
searching for lines perpendicular to a given axis)
[#969]getClassName() function to all SAC models
[#1071]SampleConsensusModel::computeVariance() by up to 10
times
[#1285]SacModelCone and SacModelCylinder
[#1299]SAC_SAMPLE_SIZE map
[#1367]
[#1396]libpcl_search:OrganizedNeighbor::estimateProjectionMatrix()
[#1176]libpcl_segmentation:LCCP segmentation algorithm
[#718]
[#1287]
[#1389]SupervoxelClustering fully deterministic and made some internal
refactoring
[#912]OctreePointCloudAdjacency::VoxelData class from
header to implementation files
[#919]SupervoxelClustering::getColoredCloud()
[#941]ExtractPolygonalPrismData; both explicitly and
implicitly closed polygons are supported again
[#1044]setConditionFunction() in
ConditionalEuclideanClustering that takes boost::function
[#1050]SupervoxelClustering to use the depth dependent transform by
default only if the input cloud is organized; added a function to force use
of the transform, and removed corresponding parameter from the constructor
[#1115]OrganizedConnectedComponentSegmentation
[#1264]ApproximateProgressiveMorphologicalFilter in the case of
non-default cell size
[#1293]RegionGrowing::validatePoint()
[#1327]SupervoxelClustering::getSeedResolution()
[#1339]libpcl_stereo:DisparityMapConverter class for converting disparity maps into
point clouds
[#1021]DigitalElevationMapBuilder class for building Digital Elevation
Maps from disparity maps
[#1021]libpcl_surface:TextureMapping to not use hard-coded point types
[#929]getHullPointIndices in concave and convex hull classes
to retrieve indices of points that form the computed hull
[#1213]OrganizedFastMesh class
[#1262]PCL_EXPORTS attributes for OpenNURBS classes
[#1315]MeshSmoothingLaplacianVTK
[#1424]libpcl_tracking:PyramidalKLTTracker
[#1214]
[#1223]KLDAdaptiveParticleFilterOMPTracker
[#1392]libpcl_visualization:PointCloudColorHandler for "label" field
[#849]setSize() and setPosition() functions in PCLVisualizer
[#923]PCLVisualizer producing empty screenshots on some system
configurations
[#956]removeAllCoordinateSystems() in PCLVisualizer
[#965]PCLVisualizer::addPointCloudPrincipalCurvatures() templated on point
and normal type
[#965]PCLVisualizer::updatePolygonMesh()
[#977]ImageViewer::addMask()
[#990]ImageViewer
[#995]ImageViewer not displaying anything with VTK 6
[#1009]ImageViewer to work around a bug in VTK 6.1
[#1017]PCLVisualizer::renderView()
[#1019]PCLVisualizer::renderView()
[#1026]renderViewTesselatedSphere when generated vertices were not
guaranteed to stay on the unit sphere
[#1043]ImageViewer
[#1049]ImageViewer
[#1051]RenderViewsTesselatedSphere::generateViews() related
to handling of multiple VTK versions
[#1056]
[#1067]
[#1072]PCLVisualizer to use PointCloudColorHandlerRGBAField for
PointXYZRGBA clouds by default
[#1064]PointCloudColorHandlerLabelField where red and blue channels
were swapped
[#1076]PCLPlotter to ignore NaN values in histogram computation
[#1120]
[#1126]PCLVisualizer window
[#1125]PCLVisualizer to "surface"
[#1132]PCLVisualizer
[#1142]PointCloudColorHandlerLabelField
[#1156]PCLVisualizer::contains() to check if a cloud, shape, or coordinate
axes with given id already exist
[#1181]PCLVisualizer
[#1241]
[#1321]
[#1323]PCLVisualizer by always checking result of
vtkSafeDownCast calls
[#1245]addPointCloud() to use PointCloudColorHandlerRGBField when the
cloud has color field
[#1295]
[#1325]PCLVisualizer not to disable shading when changing shape's color
[#1300]PCLVisualizer::wasStopped() with VTK6 on OSX
[#1436]PCL Apps:point_cloud_editor with Qt5
[#935]dominant_plane_segmentation and manual_registration
with Boost 1.57
[#1062]
[#1063]PCL Examples:PCL Tools:pcl_viewer
[#849]pcl_viewer
[#1154]pcl_mesh_sampling tool
[#1155]-D) and loop count (-c) parameters to the LUM tool
[#1291]VoxelGrid in mesh_sampling tool
[#1366]libpcl_common:BearingAngleImage class
[#198]pcl::CPPFSignature point type
[#296]getRGBAVector4i(), getBGRVector3cMap(), and getBGRAVector4cMap()
to all point types containing RGB/RGBA fields
[#450]descriptorSize() to all point types with descriptors
[#531]CentroidPoint class
[#586]libpcl_features:MomentOfInertiaEstimation and ROPSEstimation features
[#319]OURCVFHEstimation::computeRFAndShapeDistribution()
[#738]OURCVFHEstimation::computeFeature()
[#811]const InterestPoint& explicitly
[#1541]libpcl_filters:VoxelGrid
[#434]GridMinimum filter
[#520]ModelOutlierRemoval class that filters points in a cloud based on the
distance between model and point
[#702]libpcl_io:PCLPointCloud2 from OBJ files
[#363]PCDGrabber
[#582]LZFImageWriter
[#867]PLYReader which lead to deformation of point clouds when
displayed in CloudViewer or PCLVisualizer
[#879]libpcl_kdtree:KdTreeFLANN
[#618]libpcl_keypoints:Keypoint::getKeypointsIndices ()
[#318]libpcl_octree:OctreePointCloudAdjacency::computeNeighbors()
[#455]OctreePointCloudAdjacency building by disabling dynamic key
resizing
[#332]OctreePointCloudAdjacency
[#723]libpcl_people:libpcl_recognition:ObjRecRANSAC::addModel()
[#269]LINEMOD::loadTemplates() (useful for object recognition systems that
store templates for different objects in different files)
[#358]libpcl_registration:SampleConsensusInitialAlignment::hasConverged()
[#339]JointIterativeClosestPoint
[#344]GeneralizedIterativeClosestPoint6D that integrates Lab color space
information into the GICP algorithm
[#491]SampleConsensusPrerejective
[#741]TransformationEstimationSVDScale
[#885]libpcl_sample_consensus:SampleConsensusModelNormalParallelPlane with
SampleConsensusModelNormalPlane to avoid code duplication
[#696]libpcl_search:search::KdTree can now be used with different KdTree implementations
[#81]Ptr typdef in KdTree
[#820]libpcl_segmentation:GrabCut segmentation and a show-case application for 2D
[#330]RegionGrowingRGB::assembleRegion() to speed up the algorithm
[#538]RegionGrowing
[#617]SupervoxelClustering
[#625]Region3D class
[#653]OrganizedConnectedComponentSegmentation
[#802]libpcl_surface:EarClipping where computation failed if all vertices have
the same x or y component
[#130]MovingLeastSquares
[#785]libpcl_tracking:HSVColorCoherence
[#390]libpcl_visualization:PointCloudColorHandlerRGBAField that takes into
account alpha channel
[#306]PCLVisualizer crashes on OS X
[#384]ImageViewer::markPoints()
[#439]setWindowPosition() and setWindowName() to PCLPlotter
[#457]PCLVisualizer::updateCoordinateSystemPose()
[#569]PCLVisualizer
[#686]PCLVisualizer
[#703]PCLVisualizer::getShapeActorMap() function
[#725]PCLVisualizer
[#762]PointCloudColorHandlerHSVField
[#772]PCLVisualizer::addCube()
[#846]PCL Tools:pcl_viewer to use RGB color handler as default
[#556]pcl_morph to apply dilate/erode/open/close
operations on the Z dimension
[#572]pcl_generate to generate random clouds
[#599]pcl_grid_min to find grid minimums
[#603]pcl_local_max to filter out local maxima
[#604]pcl_png2pcd converter
[#680]pcl_openni_pcd_recorder
[#676]pcl_openni_pcd_recorder
[#673]pcl_viewer
[#693]pcl_viewer
[#703]pcl_pcd2png tool to be able to paint pixels corresponding to
infinite points with black. Added Glasbey lookup table to paint labels with
a fixed set of highly distinctive colors.
[#767]pcl_obj2pcd tool
[#816]PCL Apps:libpcl_common:PCL Apps:libpcl_recognition:libpcl_keypointslibpcl_outofcore:libpcl_search:FlannSearch: FLANN KMeans Tree can now be uses as the search algorithmlibpcl_visualization:libpcl_tools:libpcl_io:The most notable overall changes are:
PCL Tools:libpcl_common:libpcl_filter:libpcl_visualization:libpcl_octree:libpcl_io:libpcl_features:libpcl_segmentation:libpcl_surface:libpcl_keypoints:libpcl_geometry:libpcl_search:libpcl_tracking:libpcl_sample_consensus:libpcl_registration:The most notable overall changes are:
libpcl_tracking)OrganizedNeighbor and BruteForceSearch in libpcl_searchlibpcl_commonCopyIfFieldExists) for copying out specific data out of a PointT field. See test_common.cpp for usage exampleslibpcl_filterslibpcl_kdtreelibpcl_searchadapted use of flann::Matrix to new semantics of the 'stride' parameter, fixing incorrect results and a crash in FlannSearch
changes that affect pcl_features, pcl_search, pcl_octree, pcl_registration, pcl_surface:
added an implementation of KdTreeFLANN for PointCloudEigen::MatrixXf data structures
FlannSearch: don't include flann/matrix.h, move all FLANN includes to impl/flann_search.hpp. Also adapt max_nn parameter in radius search to change r3962 (pass 0 to search for all neighbors instead of -1)
completely new and shiny BruteForceSearch and OrganizedNeighbor classes
libpcl_octreelibpcl_sample_consensuslibpcl_iosaveVTKFile method helper for saving sensor_msgs::PointCloud2 dataPointXYZRGBA callbacks for OpenNIGrabber and PCLVisualizerlibpcl_surfacelibpcl_featuressetInputCloudWithNormals, which was deviating from the FeatureEstimation API is now replaced with patched setInputCloud and setInputNormals, thus no longer causing an error. However, we are confident with this change as the API was broken, so this is a bug fix.PointCloud<MatrixXf> feature estimation and I/O regarding the fields count propertylibpcl_registrationlibpcl_segmentationsetDistanceFromOrigin to SACSegmentationFromNormals for SACMODEL_NORMAL_PARALLEL_PLANE (thanks A. Barral)libpcl_visualizationPointXYZRGBA callbacks for OpenNIGrabber and PCLVisualizeraddPolygonMesh when the input cloud would be empty, as well as #563 : PCLVisualizer::addPolygonMesh crash (thanks Mourad!)removeShape is called, to preserve API backward compatibility (a PolygonMesh is not treated as a CloudActor inside PCLVisualizer)addPointCloud method for sensor_msgs::PointCloud2 data (useful to bypass the conversion to XYZ for pcd_viewer)PCL_VISUALIZER_IMMEDIATE_RENDERING for processing large datasetspcd_viewer to consume less memory by skipping the intermediate conversion to PointCloud<PointXYZ>, clearing the PointCloud2 data once converted to VTK, and enabling intermediate modesetPosition to pcl::visualization::ImageViewer for allowing the image viewer to be moved somewhere else on screenopenni_image viewer tool to display both RGB and depth imagesThe most notable overall changes are:
-DEIGEN_DEFAULT_TO_ROW_MAJOR (Eigen defaults to column major). Be careful if your code was using 1D index operators, as they might be broken! See http://eigen.tuxfamily.org/dox/TopicStorageOrders.html and http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2011/12/msg00062.html.libpcl_commonpcl::computeCovarianceMatrixNormalized did not normalize for each implementationat(u,v) should return a const referenceInitFailedException and UnorganizedPointCloudException. Created PCL_EXCEPTION helper macroisTrivial to pcl::PointRepresentation which allows avoiding copy operations in special cases, thus speeding up operations like rep->isValid (p)eigen33 for smallest eigenvalue/vector and only eigenvalues versionPointCloudColorHandlerHSVField implementationpcl::transformPointCloudPointCloud's in range inserter: width and height were not updatedPCL_MAJOR_VERSION and PCL_MINOR_VERSION #defines per Ryan's requestgetMatrixXf advanced user API call to return the correct values now that we are forcing Eigen Matrices to be row major in 1.xwin32_macros.h into pcl_macros.hisFinite method to check for x/y/z = NaN in point_types.hpppcl/ros/point_traits.h into pcl/point_traits.h and pcl/ros/for_each_type.h to pcl/for_each_type.h (these headers are for internal use only and should have never been imported by user code - however pcl_ros in perception_pcl_unstable will need to be modified when following trunk after this revision, as that is the only external piece of code that should import these headers)pcl::PointCloud<T> (cloud, indices) that was incompletepcl::PointCloud<T>pcl::PointCloud<T>libpcl_commonpcl::PointCloud<Eigen::MatrixXf> - for advanced users only! (expect the API to change in trunk if needed)NdCopyPointEigenFunctor and NdCopyEigenPointFunctor from voxel_grid.h to point_cloud.hCloudProperties class for optional properties for pcl::PointCloud<Eigen::MatrixXf>, and moved sensor_origin_ and sensor_orientation_ there (as properties.sensor_origin and properties.sensor_orientation), and removed header, while keeping header.stamp as properties.acquisition_timePointCloudSpring classPointCorrespondence and Correspondence into the same thing, per issue #458ChannelProperties in preparation for 2.0boost::shared_ptr<const std::vector> >getMatrixXfMap in DEBUG mode, as it was failing due to eigen's strictness on aligned/unaligned data, and added const+non consts versionslibpcl_filtersrandom_sample.cpp; The PointCloud2 filter wasn't working causing the unit test to failPointT and PointCloud2 point cloudspcl::CropBox doesn't update width and height member of output point cloudCropBox + VoxelGrid filters, order changes behaviour (using openni grabber)CropHull filter for filtering points based on a 2D or 3D convex or concave hull. The ray-polygon intersection test is used, which relies on closed polygons/surfacesColorFilter class (obsolete, and it was never implemented - the skeleton was just lurking around)PassThrough, VoxelGrid and Filterset/getFilterLimits, set/getFilterFieldName, and get/setFilterLimitsNegative from Filter into VoxelGrid and PassThrough, as they were the only filters using it. The rest were not, thus leading to user confusion and a bloated API.libpcl_kdtreepcl::search::Search and pcl::kdtree:KdTreelibpcl_searchOrganizedNeighbor where one of the radiusSearch signatures was working only if the cloud is not organized (#420 - thanks Hanno!)pcl::search:OrganizedNeighbor to be back functional, radiusSearch is working back, 4-6x faster then KdTree, Knearest still need to implement thispcl::search::FlannSearch: fixed style of class and tests, moved impl to hppOrganizedNearestNeighbor as well as implementing one of the missing radiusSearch methodslibpcl_octreegetVoxelBounds to octree iterator & removed result vector reserveslibpcl_octree and silenced all Doxygen warningslibpcl_sample_consensusSACMODEL_PARALLEL_LINES (thanks Benergy)libpcl_iois_dense flag was not set appropriately when reading data from a binary file (thanks Updog!)PLYWriter class where the element camera was not correctly set thus leading to crashes in Meshlab (thanks Bruno!)PolygonMesh and unpacking RGBpcl::io::saveOBJFile) file exporter (thanks Robert!)PolygonMeshOpenNIGrabber to output PointCloud<Eigen::MatrixXf> datasetsgenerateHeaderEigen and writeBinaryCompressedEigen. Performance improvements to 30Hz I/OPLYWriterlipcl_keypointsHarris3D corner detectorlibpcl_surfaceMarchingCubes's getIndexIn1D which led to the result variable to overflow when the data_size was larger than something around 2^10 (thanks Robert!)MovingLeastSquaresOMP OpenMP implementationMeshProcessingreconstruction and performReconstruction in SurfaceReconstruction to output a PointCloud<T> and vector<Vertices> as wellMeshConstruction per API design decision to split the surface reconstruction methods into topology preserving (EarClipping, OrganizedFastMesh, GreedyProjectionTriangulation) and the rest. The new class implements a reconstruction/performReconstructionforPolygonMesh(for backwards compatibility purposes) and a faster set of the same methods forvector<Vertices>`GreedyProjectionTriangulation by making it inherit from the new MeshConstruction base class, and removed a lot of old buggy codeperformReconstruction (PointCloud<T> &, vector<Vertices> &) per the new SurfaceReconstruction APIOrganizedFastMesh where the x/y/z indices were assumed to be 0/1/2, and made it part of the MeshConstruction APIOrganizedFastMesh. Now in 30Hz+ flavor.EarClipping refactorization and improved the efficiency of the algorithm considerablyConvexHull and ConcaveHull to inherit from the new MeshConstruction classmesh_processing.h to processing.h and performReconstruction/reconstruct to performProcessing/process for the new MeshProcessing APIlibpcl_featuresIntegralImage2Dim : setting first line to zero was buggy producing undefined output data.PrincipalCurvaturesEstimation where the pc1 and pc2 magnitudes were not normalized with respect to the neighborhood size, thus making comparisons of different neighborhoods impossible (thanks Steffen!)ShapeContext3DEstimation computation and unit tests by switching from stdlib.h's random () to Boost.IntensityGradient: need to demean also intensity values, otherwise its assumed that the hyperplane goes always through origin which is not truecompute in pcl::Feature to save the output in an PointCloud<Eigen::MatrixXf>. Added partial specialization on Eigen::MatrixXf to all features and implemented computeFeature (PointCloud<MatrixXf> &output)is_dense for some features, implemented NaN output for most (per http://dev.pointclouds.org/issues/457)setUseInternalCache method for PFHEstimation to use the internal cache on demand only. Other fixes to PFH/FPFH/PPF signatures (histogram sums were not adding up to 100.0 in some cases)libpcl_registrationfixed some bugs in ELCH, thanks Frits for pointing them out
Big ELCH cleanup.
added 2D implementation of Normal Distributions Transform for registration (Biber, Strasser; 2003), including example tool program.
reworked internal Registration API: Remove private computeTransformation without guess, make computeTransformation with guess abstract, Adapt all classes implementing Registration accordingly.
implemented SampleConsensusInitialAlignment with initial guess (thanks Dennis Guse)
cleaned up the CorrespondenceRejector API, per #375
apply Mourad's patch for #454; add more doc comments
libpcl_visualizationpcl::visualization::PointPickingCallback where iren->GetMousePosition () didn't seem to work on some VTK versions/systems, so we replaced it instead with iren->GetEventPosition () (#444 - thanks Adam!)PointCloudColorHandlerRGBField<sensor_msgs::PointCloud2> where one of the offsets for Z was incorrectly calculated thus leading to erroneous data (#404 - thanks Lucas!)setShapeRenderingProperties when the user tries to control the color of the object precisely (maybe add a different lighting on/off property later?)pcl::visualization::PCLVisualizer::setShapeRenderingProperties vtk5.2, default in ubuntu LTS, doesn't support the SetLighting method on vtkActorPointCloudColorHandlerRGBField where using an "rgba" field was causing an error in pcd_viewer (#428 - thanks Maurice!)PointCloudColorHandlerHSVFieldPointPickingCallback behavior on Windows 7: iren->GetShiftKey () returns 4 instead of 1 (thanks bepe)updateFeatureHistogram functionality to PCLHistogramVisualizer, per #456 (thanks Asil!)removePolygonMesh to make the API more user friendly (addPolygonMesh was already existing, but the polygon meshes were removed using removeShape until now)CloudActor structures internally, so that we can use different colors per vertexupdatePolygonMesh and improved the efficiency of addPolygonMesh for fast online rendering (i.e., produced via OrganizedFastMesh)PointCloudColorHandlerRGBField where using an "rgba" field was causing an error in pcd_viewer (thanks Maurice!)PointCloudColorHandlerRGBField<sensor_msgs::PointCloud2> where one of the offsets for Z was incorrectly calculated thus leading to erroneous data (thanks Lucas!)
fixed bug #420: in OrganizedNeighbor where one of the radiusSearch signatures was working only if the cloud is not organized (thanks Hanno!)toROSMsg referenced the address of a temporary returnCropBox did not update width and height member of output point cloudis_dense flag was not set appropriately when reading data from a binary file (thanks Updog!)PLYWriter class where the element camera was not correctly set thus leading to crashes in Meshlab (thanks Bruno!)PrincipalCurvaturesEstimation where the pc1 and pc2 magnitudes were not normalized with respect to the neighborhood size, thus making comparisons of different neighborhoods impossible (thanks Steffen!)setShapeRenderingProperties when the user tries to control the color of the object precisely
fixed bug in PointCloudColorHandlerRGBField<sensor_msgs::PointCloud2> where y_point_offset and z_point_offset were not incrementedcomputeCovarianceMatrixNormalizedextractEuclideanClustersPassThrough where NaN values were not correctly replaced by the user-specified valueFrom 1.3 we are constructing the Changelist for each library separately, as they can in theory be mixed and matched with older versions (though we officially do not support this yet). The most notable overall changes are:
libpcl_search) that has a more uniform API for nearest neighbor searches and stripped the unneeded functionality from libpcl_kdtree and libpcl_octree. Search now wraps KdTree and Octree for NN calls. This is a MINOR API BREAKING CHANGE. To change your code switch from:pcl::KdTree -> pcl::Search (if the purpose is to use one of its children for search)
pcl::KdTreeFLANN -> pcl::search::KdTree
pcl::OrganizedDataIndex -> pcl::search::OrganizedNeighbor
libpcl_commonsetIndices method that computes indices of points in a region of interestdemeanPointCloud with indices as PointIndices as wellpcl::Correspondences) and adapted all registration modules => be sure to use pcl::Correspondences instead of std::vector<pcl::Correspondence>ScodeTime derived from StopWatchgetRejectedQueryIndices, wrong output when order of correspondences have been changedgetRejectedQueryIndices to pcl/common/correspondence.hgetRemainingCorrespondences-functions as DEPRECATED, we should replace them with purely stateless version outside the class bodyPolynomialCalculationsT (#388 - thanks Julian!)PCL_DEPRECATED macro, closes #354.PointXYZHSV type and the conversions for itlibpcl_searchKdTree to pcl::Search: moved OrganizedDataIndex and OrganizedNeighbor classes to libpcl_searchnearestKSearch and radiusSearch for situations when PointT is different than the one the KdTree object was created with (e.g., KdTree<PointT1> vs nearestKSearch (PointT2 &p...)getApproximateIndices where given a reference cloud of point type T1 we're trying to find the corresponding indices in a different cloud of point type T2radiusSearch/nearestKSearch/approxNearestSearch call with a PointCloudConstPtr, the octree was getting recreated. Changed the API to be consistent with the rest of PCL (including pcl_search and pcl_kdtree) where we pass in a PointCloud instead of a PointCloudConstPtr which simply calls searchMethod (cloud[i], ...)approxNearestSearch methods from the base pcl::Search class as they did not belong therelibpcl_iostringstream instead of atof because of locale issues in IO (note that we can't use the ifstream directly because we have to check for the nan value)setMapSynchronization for pcl::PCDWriter. When set, msync() will be called before munmap() in the pcl::PCDWriter::write* calls, which guarantees data reliability. Though I/O performance is 300% better when unset, data corruption might occur on NFS systems, as indicated by http://www.pcl-developers.org/PCD-IO-consistency-on-NFS-msync-needed-td4885942.html.writeBinaryCompressed functionality for general purpose sensor_msgs::PointCloud2 data (which is still our generic data container in PCL 1.x)PCDReader (most likely introduced a few releases ago due to code refactorization) where the data was incorrectly copied if a PCD ASCII file had a field with multiple count elements (field.count) as first. Binary files are not affected by this bug. Added an unit test to catch this in the future.openni_grab_frame (added optional command line options, optional output filename, chose output format)openni_grabber, since it is corruptedlibpcl_keypointsSIFTKeypoint more flexible by saving scale only when the output point type contains "scale" (the catch is that all point types must be correctly declared via our macros - see the modifications in test_keypoints.cpp). This allows us to use a SIFTKeypoint<PointXYZRGB, PointXYZRGB> and thus removes the constraint on using copyPointCloud afterwards.SIFTKeypoint where width/height were not correctly setlibpcl_featuresSHOTEstimationKdTree to pcl::Searchlibpcl_filtersFilterIndices functionality #315RandomSample filter which makes use of indices #323ApproximateVoxelGridlibpcl_octreegenVoxelBounds to octree pointcloud classgetIntersectedVoxelCentersRecursivegetIntersectedVoxelCentersRecursivegetIntersectedVoxelIndices for getting indices of intersected voxels and updated unit testradiusSearch/nearestKSearch/approxNearestSearch call with a PointCloudConstPtr, the octree was getting recreated. Changed the API to be consistent with the rest of PCL (including pcl_search and pcl_kdtree) where we pass in a PointCloud instead of a PointCloudConstPtr which simply calls searchMethod (cloud[i], ...)approxNearestSearch methods from the base pcl::Search class as they did not belong therelibpcl_registrationCorrespondenceRejectorSampleConsensus: getRemainingCorrespondences tried to nput_ although it should only use the given input correspondencesTransformationEstimationLM on correspondence vectorspcl::Correspondences) and adapted all registration modules --> be sure to use pcl::Correspondences instead of std::vector<pcl::Correspondence>vector<Correspondence> and Correspondences. The latter is to be preferred as it contains the Eigen aligned allocator.WarpPointRigid to preserve the value of the 4th coordinate when warping; Re-enabled missing unit tests for ICP and ICP-NLWarpPointRigid3D and TransformationEstimationLMnearestKSearch, the RANSAC-based rejection scheme would fail (thanks to James for reporting this)TransformationEstimationPointToPlaneLLS class that uses a Linear Least-Squares approximation to minimize the point-to-plane distance between two point cloudslibpcl_sample_consensuslibpcl_surfaceMarchingCubeslibpcl_segmentationlibpcl_visualizationsaveScreenshot was not correctly initialized with the proper renderer, thus not saving the dataOnChar that we cover in OnKeyDownremoveAllShapes and removeAllPointClouds per #353deleteText3D to removeText3D to consolidate the APIvector<Correspondence> and Correspondences. The latter is to be preferred as it contains the Eigen aligned allocator.PCLHistogramVisualizer API by moving to a vtk interactor instead of ours, and removed unnecessary calls such as saveScreenShot (never used with the histogram visualizer, and most likely buggy), wasStopped and resetStoppedFlag (never used).PCLVisualizerInteractor and switched back to a better default vktWindowRenderInteractor for VTK >= 5.6. Adjusted and fixed the internal API. No public API changes were made (except the removal of the PCLVisualizerInteractor class which was never meant to be used externally anyway).ImageViewer class properly and demonstrated it in a single thread via openni_viewer. The other tool (openni_viewer_simple) will not work due to CloudViewer starting its own thread and thus clashing on the same OpenGL context.markPoint to ImageViewer to mimic older wxWidgets-based codePCLVisualizerInteractorStyle where mouse events were not properly mapped in Qt (#389 - thanks Adam!)renderViewTesselatedSphereEliminated the transform.h header file < API breaking change > (r2517)
the following functions have moved to transforms.h:
transformXYZ (renamed to transformPoint)getTransformedPointCloud (replaced with transformPointCloud)the following methods have been replaced with built-in Eigen methods:
operator<< (use .matrix () )getRotationOnly ( .rotation () )getTranslation ( .translation () )getInverse ( .inverse () )the following functions have move to eigen.h:
getTransFromUnitVectorsZYgetTransFromUnitVectorsZYgetTransFromUnitVectorsXYgetTransFromUnitVectorsXYgetTransformationFromTwoUnitVectorsgetTransformationFromTwoUnitVectorsgetTransformationFromTwoUnitVectorsAndOrigingetEulerAnglesgetTranslationAndEulerAnglesgetTransformationgetTransformationsaveBinaryloadBinaryMade major changes in pcl::registration (r2503)
TransformEstimation objects (TransformEstimationSVD and TransformEstimationLM in particular) rather than the older estimateRigidTransformationSVD code. Each class inheriting from pcl::Registration can pass in a different estimator via setTransformationEstimationTransformEstimationSVD codeTransformEstimationLM by moving away code from IterativeClosestPointNonLinear (which now uses the transformation object)replaced the io/io.h header file with common/io.h (for backwards compatibility, io/io.h will remain, but its use is deprecated)
added unit test for lineWithLineIntersection (r2514)
improved the VTK installation from source documentation for MacOS (r2589)
updated the tutorials regarding usage of FindPCL.cmake vs. PCLConfig.cmake (r2567)
added a new PointCloud constructor for copying a subset of points (r2562)
made wxwidgets an optional dependency for visualization (r2559)
added feature #334 (Enabling a library should enable all its library dependencies in CMake) implementation, (r2551)
added an internal estimateRigidTransformationSVD method to SampleConsensusModelRegistration (r2502)
added a PCL_VISUALIZER_REPRESENTATION property for setShapeRenderingProperties with three possible values:
PCL_VISUALIZER_REPRESENTATION_POINTS for representing data as points on screenPCL_VISUALIZER_REPRESENTATION_WIREFRAME for representing data as a surface wireframe on screenPCL_VISUALIZER_REPRESENTATION_SURFACE for representing data as a filled surface on screen
(r2500)optimized performance of BoundaryEstimation (approximately 25% faster) (r2497)
added reference citation to estimateRigidTransformationSVD (r2492)
added a new keypoint for uniformly sampling data over a 3D grid called UniformSampling (r2413)
added a destructor to VoxelGrid<sensor_msgs::PointCloud2> (r2412)
optimized the performance of SampleConsensusModelLine (r2404)
changed the behavior of toc_print and toc from pcl::console:TicToc to return milliseconds (r2402)
added a new model, SAC_MODEL_STICK, for 3D segmentation (r2400)
added 2x point picking to PCLVisualizer; use Alt + Mouse Left click to select a pair of points and draw distances between them (r2388)
added two new functions (pcl::getMaxSegment) for determining a maximum segment in a given set of points (r2386)
moved filters/test/test_filters to test/test_filters (r2365)
renamed the binary executable in the compression.rst tutorial (r2345)
Updated library dependencies
libfeatures dependency for `libpcl_surface (r2337)libpcl_io dependency from libpcl_surface (r2354)libpcl_io dependency from libpcl_keypoints (r2364)libpcl_io dependency for libpcl_filters (r2365)libpcl_io dependency for libpcl_registration (r2372)added a new function, pcl::concatenateFields for concatenating the fields of two sensor_msgs::PointCloud2 datasets (1933)
added a new countWithinDistance method to SampleConsensusModel (r2326), and optimized RANSAC and RRANSAC by replacing calls to selectWithinDistance with countWithinDistance (r2327)
added feature #330: new PCLVisualizer::addCube and pcl::visualization::createCube methods (r2322)
added correspondence.h to the includes in common/CMakeLists.txt (r2260)
implemented defaults for the search method, per http://www.pcl-developers.org/defaults-for-search-method-td4725514.html (r2219,r2220,r2222,r2225,r2226,r2228)
exposed pcl::PCLVisualizer::saveScreenshot (const std::string &filename) (r2095)
enabled pcd_io.hpp (r2085)
added a new faster binary writer + cloud/indices (r2080)
added pcl::RGB structure and switched bitshifting RGB code to use the pcl::RGB structure's members (r2077,r2078)
added a new IOException class for read/write exceptions (r2068)
added missing set/getAngleThreshold for BoundaryEstimation. Made class parameter protected. (r2067)
added functions in pcl::console for parsing CSV arguments of arbitrary length (r2052)
added new functionality to OrganizedFastMesh (r1996); Now support for modes:
improved OrganizedFastMesh's removal of unused points (r1996)
CMake changes (r2592)
fixed bugs in PointCloud
swap(), the point data was swapped, but the width and height fields were not (r2562)push_back(), adding points did not update the width/height of the point cloud (r2596)insert()/erase(), inserting or erasing points did not update the width/height of the point cloud (r2390)fixed bugs in SampleConsensusModelRegistration
fixed a bug in BoundaryEstimation in case "angles" is empty (r2411)
fixed a bug in OrganizedFastMesh's adaptive cut triangulation; added a new unit test (r2138)
fixed a bug in the openni_image viewer tool (r2511)
fixed problems with Windows/MacOS ALT bindings in PCLVisualizer (r2558)
fixed issues
FPFHEstimation for non-trivial indices) (r2528)pcd_viewer reset the camera viewpoint when no camera given) (r1915)setSearchSurface was given) (r2395)ConditionalRemoval) (r2433)empty() member function of a point cloud is not const) (r2440)GreedyProjectionTriangulation::setMaximumSurfaceAgle()) (r2556)added missing include in correspondence_rejection.h (r2393)
corrected the headers included by sample_consensus/sac_model.h (r2550)
removed duplicate content of NSIS.template.in (r2601)
fixed various casting related compiler warnings (r2532)
corrected typos in
issues fixed: #224, #277, #288, #290, #291, #292, #293, #294, #295, #296, #297, #299, #302, #318, #319, #324, #325, #329
Additional fixes:
new 3D features:
improved documentation:
new surface triangulation methods:
new registration methods:
new general purpose classes/methods:
optimizations:
new applications:
issues fixed: #75, #106, #118, #126, #132, #139, #156, #182, #184, #189, #197, #198, #199, #201, #202, #203, #210, #213, #211, #217, #223, #225, #228, #230, #231, #233, #234, #240, #247, #250, #251, #254, #255, #257, #258, #259, #261, #262, #264, #265, #266, #267, #268, #269, #273, #276, #278, #279, #281, #282, #283
please note that version 1.0.0 had a flaw when creating ASCII pcd files. This version includes the tool pcd_convert_NaN_nan to fix this
IntegralImageNormalEstimationConditionalRemovalFilter where the keep_organized condition was reversedBorderDescription and Histogram<2> from the list of explicit template instantiationsPointXY point registration macrosExtractIndicesSelf unit testThe version numbers below belong to the perception_pcl stack in ROS, which coordinated both the release of PCL, as well as the release of the ROS PCL wrappers. From 1.0 onwards PCL got separated from ROS, and the release process of perception_pcl and PCL diverged.
[[flann]]
Updated to version 1.6.8
[[pcl]]
bug fix in pcl::PassThrough filter, where the output data size was not set correctly when keep_organized was set to false
bug fix in pcl::GreedyProjectionTriangulation, where point distances were incorrect, thus poroducing too many holes points during reconstruction ()
added more elaborate unit tests for surface reconstruction
Added possibility to restrict no of returned interest points to pcl::NarfKeypoint
Added parameter to control no of openmp threads to pcl::NarfKeypoint
[[pcl_ros]]
added the keep_organized option to pcl_ros::Passthrough (#4627)
[[pcl]]
removed ConvexHull2D (API breaking change!) You need to change your code. From:
pcl::ConvexHull2D<...> ...;
to
pcl::ConvexHull<...> ...;
added a new general purpose 2D/3D ConvexHull class based on QHull
added a new general purpose 2D/3D ConcaveHull class based on QHull
added helper transformPointCloud method for cloud+indices as input
fixed: segfaults when ICP finds no correspondences (#4618)
improved the PCD I/O capabilities (for binary PCD) to deal with SSE padding
Added possibility to create a RangeImagePlanar from a point cloud
Corrected is_dense to false in all range images.
Reimplemented big parts of the NARF keypoint extraction - should be more reliable now (and unfortunately slower) - uses polynomials to search maxima now.
Added helper classes for polynomial approximations to common
Added a new RANSAC-like algorithm: PROSAC (much faster when there is a confidence for the matches)
Fixed normalization factor in the VFH's scale component.
Made MLS more flexible: output has all fields the input has, only with XYZ smoothed, and normals are provided separately (and optionally)
Added multi-scale calculation to NARF keypoint to make it faster again, fixed a bug in BorderExtractor and fixed some issues in RangeImagePlanar.
Added functions in common to compute max distance from a point to a pointcloud. Fixed distance component of VFH, normalization is now also invariant to rotation about the roll axis.
Added pcl::PointSurfel to known point types.
eigen-decomposition for symmetric positive-semi-definite 3x3 matrices: 1) bug fix so eigenvects are orthogonal, 2) is more robust for degenerated cases
[[pcl_ros]]
[[pcl]]
optimizations for dense dataset (no checking for isfinite inside the loop unless is_dense is false)
improved eigen decomposition pcl::eigen33 by better handling degenerate cases. Normal estimation should work better now.
more 32bit alignment fixes
improved Doyxgen documentation
added POINT_CLOUD_REGISTER_POINT_STRUCT for Narf36
fixed a minor bug in poses_from_matches where a distance was not computed correctly
disabled TBB classes until 1.0 comes out
fixed a few bugs in ICP_NL registration (thanks Mike!)
enforced const-ness for pcl::ArrayXfMap and pcl::VectorXfMap, by creating pcl::ArrayXfMapConst and pcl::VectorXfMapConst for maps over const types
improved Windows support
fixed a bug in StatisticalOutlierRemoval where the output data array was set incorrectly.
fixed a boost::split bug in pcd_io, for cases when point data starts with spaces or tabs
finalized the surface reconstruction (pcl::SurfaceReconstruction) API
added a new method for surface reconstruction using grid projections (pcl::GridProjection)
added a new generalized field value filter (pcl::ConditionalRemoval)
cleaned up normal estimation through integral images
PCL rift.hpp and point_types.hpp fixed for Windows/VS2010
fixed all is_dense occurrences
unmanged all Eigen3:: calls to Eigen::
changed all !isnan checks to isfinite in order to catch INF/-INF values
added vtk_io tools for saving VTK data from PolygonMesh structures
fixed SACSegmentation::SACMODEL_CIRCLE2D: to accept setRadius limits
use SACSegmentation when the model doesn't fit SACSegmentationFromNormals (assert fix)
[[pcl_ros]]
added a mutex for configuration parameters and filter computation, to prevent changing parameters while the algorithm is running. Alternative: copy parameters before the compute loop.
pcd_to_pointcloud has been updated to take a private parameter "frame_id" which is used in publishing the cloud
unmangled all Eigen3:: calls to Eigen::
Document cloud to image conversion.
Removed the tool from pcl , and moved to pcl_ros
[[flann]]
Updated to version 1.6.7
[[pcl]]
improved doxygen documentation overall
added support for indices for SampleConsensus models (previously broken)
fixed a grave bug in ProjectInliers, where row_step was not correctly set thus leading to (de)serialization issues in the new ros::Subscriber<PointCloud<T> > scheme
RangeImagePlanar can now also be created from a depth image.
Fixed a bug in RangeImagePlanar.
Fixed possible segmentation fault in RangeImageBorderExtractor.
RangeImage now has is_dense=false, since there typically are NANs in there.
Added Correspondence as a structure representing correspondences/matches (similar to OpenCV's DMatch) containing query and match indices as well as the distance between them respective points.
Added CorrespondenceEstimation for determining closest point correspondence, feature correspondences and reciprocal point correspondences.
Added CorrespondenceRejection and derivations for rejecting correspondences, e.g., based on distance, removing 1-to-n correspondences, RANSAC-based outlier removal (+transformation estimation).
Further split up registration.h and added transformation estimation classes, e.g., for estimating rigid transformation using SVD.
Added sensor_msgs::Image image; pcl::toROSMsg (cloud, image);See tools/convert_pcd_image.cpp for a sample.
Added a new point type, PointWithScale, to store the output of SIFTKeypoint detection.
Fixed a minor bug in the error-checking in SIFTKeypoint::setScales(...)
Fixed small bug in MovingLeastSquares
Fixed small bug in GreedyProjectionTriangulation
Added unit tests for RSDEstimation, MovingLeastSquares and GreedyProjectionTriangulation
Fixed and improved multiple point to line distance calculations, and added it to distance.h and unit testing
[[pcl_ros]]
Fixed a grave bug introduced in 0.7 where the NullFilter approach doesn't work
Implemented the exact time synchronizer path for PointCloudConcatenateDataSynchronizer
replaced subscribers/publishers in surface, segmentation, and feature nodelets from sensor_msgs::PointCloud2 to pcl::PointCloud<T>, thus reducing complexity and getting rid of all the intermediate from/toROSMsg (de)serializations
moved away from storing state in the nodelets. The right way to do it is: callback -> PointCloud -> process -> publish, without storing the PointCloud as a member into the base class
introduced a mandatory emptyPublish which nodelets should use to send an empty result with the header frame_id and stamp equal with the input's.
[[flann]]
Makefile patch for LateX PDF build
[[pcl]]
fixed roslib/Header warnings by enabling std_msgs/Header if ROS_VERSION > 1.3.0
working on PCL port to Android - mainly CMake scripts, and a few #if ANDROID statements.
_pcl::VoxelGrid _now saves and gives access to the created voxel grid, with lots of helper functions
[[pcl_ros]]
dropped pcl_ros::Subscriber due to the changes introduced in 0.7
[[eigen3]]
removing eigen3 as it's already present in geometry (unstable) and geometry_experimental (cturtle)
[[pcl]]
added general purpose getMinMax() method for n-dimensional histograms (r34915).
more 32bit architecture alignment fixes
fixing \r string splitting issues on Windows systems for PCDReader (r34830).
Added new range image class RangeImagePlanar. E.g., for direct usage with kinect disparity images.
added the option to keep the data organized after filtering with pcl::PassThrough and replace values in place rather than removing them (r34776)
removed boost::fusion macros
moving the Feature estimation architecture to the new PCL structure
moved sorted_ as a parameter in the KdTree base class
added PCL_INSTANTIATE macros that easily instantiate a specific method/class given a set of point types
Better checks for is_dense plus bugfixes.
Added RSD (Radius Signature Descriptor) feature.
Updated the entire PCL tree to use FLANN as a default KdTree
Optimized the KdTreeFLANN::radiusSearch so it doesn't do any memory allocation if the indices and distances vectors passed in are pre-allocated to the point cloud size.
Changed KdTree::radiusSearch method signature to return int (number of neighbors found) instead of bool
added new pcl::View<T> class that holds a PointCloud, an Image, and a CameraInfo message (r34575)
Moving the Surface reconstruction framework to the new structure (r34547)
Moving the Segmentation framework to the new structure (r34546)
Creating a libpcl_sample_consensus and moving the SAC methods and estimators to the new structure (r34545)
moving Filter to the new structure (r34544)
Creating a libpcl_kdtree and moving the KdTree to the new structure (r34543)
added support for PCD v0.7 files (+VIEWPOINT), minor API changes and consolidations
adding a sensor origin + orientation for pcl::PointCloud<T> (r34519)
Improved Boost CMake macros
[[pcl_ros]]
greatly simplified the PointCloudConcatenateDataSynchronizer nodelet (r34900).
pcl::PointCloud<T> works natively with ros::Publisher and ros::Subscriber. Separate pcl_ros::Publisher and pcl_ros::Subscriber are no longer necessary.
[[flann]]
Updated to FLANN 1.6.6
Updated to FLANN 1.6.5.
Updated to FLANN 1.6.4
Updated to FLANN 1.6.3
[[pcl_tf]]
Moved functionality to pcl_ros. RIP.
[[ann]]
Removed ANN as a dependency. RIP.
[[cminpack]]
updated cminpack to 1.1.1
fedora rosdep fixes
Patch for building and installing cminpack correctly (thanks to Nicholas)
[[pcl]]
sort clusters in ExtractEuclideanCluster in descending order before returning (r34402)
VoxelGrid patch for handling RGB colors (thanks to Yohei)
lots of work to make PCL compile in Windows (thanks to Stefan)
bumping up the ASCII precision from 5 to 7 on PCD I/O operations
moved PCL to the new stack: perception_pcl
header include cleanup for faster compiles
switched StatisticalOutlierRemoval to FLANN
Updated kdtree_flann to use the C++ bindings from FLANN
[[pcl_tutorials]]
Added new tutorial to visualize the NARF descriptor and look at descriptor distances.
fixed a problem that was preventing tutorials to be built on MacOS (r34287)
[[flann]]
Updated to latest version of FLANN (1.6.2)
Updated to latest version of FLANN (1.6.1)
Updated to latest version of FLANN (1.6)
[[cminpack]]
Updated cminpack to version 1.1.0
Updated cminpack to version 1.0.90 (r34303)
Fixed a portability issue where the library was copied as .so, while MacOS systems need .dylib, thanks to Cyril per #4596 (r34286)
[[pcl_ros]]
Fixed a portability issue where uint was used without being defined on MacOS systems, thanks to Cyril per #4596 (r34285)
Patch for ConvexHull2D to publish PolygonStamped (thanks to Ryohei)
[[pcl]]
got rid of ROS_ASSERTS in favor of ROS_ERROR + return (true/false)
improvements on CMake build scripts and custom-made ROS header includes to make PCL work outside of ROS
pow() fixes for macos (#4568)
fixing a bug where if inliers are always 0, we get stuck in an (almost) infinite loop in Sample Consensus methods (r34191)
SegmentDifferences is now optimized for null targets (simply copy the input)
Changed operator(x,y) in PointCloud to return references, both const and non-const.
set the default behavior of ExtractIndices to return the complete point cloud if the input indices are empty and negative is set to true
resize the clusters to 0 on failed initCompute for EuclideanClusterExtraction
fixed all filtering methods to return empty datasets (points/data.size () = 0, width = height = 0) on failures and make sure that header (+fields for PointCloud2) are always copied correctly in all cases (r34099).
make sure header and fields are copied even if the indices are invalid for ProjectInliers
fixed error message typo in conversions.h
fixing the meaning of is_dense per #4446
[[pcl_ros]]
added min_inliers as the minimum number of inliers a model must have in order to be considered valid for SACSegmentation
added a SegmentDifferences nodelet
fixed a grave bug in Filter where the output TF frame was not always set correctly (r34159)
added eps_angle as a dynamic reconfigure parameter to SACSegmentation
added error output on invalid input for all nodelets
Allow pcl_ros publishers to take shared pointers - fix #4574 (r34025)
change the default behavior of isValid from data.empty || width * height = 0, to width * height * step = data.size for PCLNodelet
make sure data is published even if empty
making sure publishing with a rate of 0 works for pcd_to_pointcloud
added TF transform capabilities to bag_to_pcd
Enforce that the TF frame and the timestamp are copied before publish
[[pcl_tf]]
got rid of unneeded transforms (if target_frame = input.header.frame_id, simply return the input)
[[pcl_visualization]]
removed -DNDEBUG which was causing some weird random bugs (-cam "..." was one of them) (r33984)
fixing an issue with VTK exports which lead to 3rd party user packages needing to know and explicitly import VTK (r33980)
[[pcl_ros]]
removed the vtk metapackage (replaced with findVTK macros)
[[pcl_ros]]
adding EIGEN_MAKE_ALIGNED_OPERATOR_NEW to all nodelets to make sure that we are aligned on 32bit architectures
[[pcl]]
changes needed for the eigen3 upgrade (Eigen3::Transform3f -> Eigen3::Affine3f)
Added SIFTKeypoint keypoint detection algorithm for use on xyz+intensity point clouds.
Fixed a bug in Registration::FeatureContainer::isValid () where the source and target feature clouds were required (incorrectly) to be the same size
added NARF features (descriptor) to features, updated NARF keypoints, made RangeImageBorderExtractor derived from Feature.
added set/get AllFields/AllData helper methods to ProjectInliers (r33284)
added helper bool getFilterLimitsNegative () to Filter (r33283)
added helper set/get LocatorType methods to EuclideanClusterExtraction (r33282)
added missing dependency on roscpp
added a check for insufficient number of points when fitting SAC models to avoid infinite loops (r33195)
added makeShared () to pcl::PointCloud<T>, and fixed the Ptr/ConstPtr typedefs (r33147)
fixed a bug in SamplesConsensusModelRegistration where the sample selection could get stuck in an infinite loop
added line to line intersection routines (r33052)
corrected transformPointCloudWithNormals in transforms.hpp to properly handle normals
[[pcl_ros]]
switching rosrecord API to rosbag (r33602)
Complete refactorization of PCL_ROS nodelets. Got rid of multiple inheritance in favor of delegation. Using template specializations now the code compiles faster and GCC processes occupy less RAM during compilation.
new PointCloudConcatenateDataSynchronizer nodelet: concatenates PointCloud2 messages from different topics (r33241)
added a max_clusters int_t nodelet option to EuclideanClusterExtraction: The maximum number of clusters to extract (r33258)
added a filter_limit_negative bool_t nodelet option to Filter. Set to true if we want to return the data outside [filter_limit_min; filter_limit_max] (r33257).
fixed bug in PassThrough nodelet that prevented dynamic reconfigure from setting the FilterFieldName properly.
added implementation of MovingLeastSquares nodelet
[[eigen3]]
upgraded to eigen3-beta2
[[cminpack]]
Updated cminpack to 1.0.4 (r33419)
[[pcl_tutorials]]
added/updated tutorials for range image creation, range image visualization, range image border extraction, NARF keypoint extraction and NARF descriptor calculation.
[[point_cloud_converter]]
added missing dependency on roscpp (r33045)
[[pcl]]
fixed a bug in ProjectInliers for 32bit architectures (r33035)
Added unit tests for computeCovarianceMatrixNormalized (r32985)
making PointCloud2/PointCloud typedefs consistent (r32989)
field W is no longer needed in pcl::PointNormal, as it was only used for SSE optimization. Same for pcl::PointXYZW, which means we can remove them (r32960)
[[point_cloud_converter]]
Changed INFO to DEBUG on print statements
[[pcl_tf]]
added code to check for TF exceptions
[[pcl_ros]]
changes to consistently output/publish empty datasets + made sure all inputs are checked for validity in each nodelet before processing (r32993)
added dynamic_reconfigure TF input_frame/output_frame parameters to pcl_ros::Filter (r32990)
[[pcl]]
fixed a bug in ExtractPolygonalPrismData that got introduces in r31172
added new 3D Keypoint extraction base class and the NARF interest points.
added iterator, const_iterator, begin, end for pcl::PointCloud
fixed bug in radius search of kdtree, that occurred when indices_ is used
renamed sac_model_oriented_[line|plane] to *parallel_line and *perpendicular_plane to be more clear
added a new SAC model for finding planes that are parallel to a given axis. Useful for e.g. finding vertical planes (parallel to "up" axis)
added a smarter sample selection to SampleConsensusModelRegistration that uses a minimum distance between samples based on the principal directions/magnitudes of the dataset (r32873)
enabling SSE optimizations by default for all libraries
normalized covariance matrix estimation pcl::computeCovarianceMatrixNormalized (r32872)
Added methods to pcl::Registration for finding point correspondences between pairs of feature clouds
fixed a bug in pcl::SampleConsensusModelLine where the number of iterations was not correctly checked/set in getSamples
Added missing includes in icp_nl.h
[[pcl_ros]]
changing the order of the members to allow nodelet unloading (r32941)
enabling SSE optimizations for all libraries (r32909)
enabling parameter setting via dynamic_reconfigure for StatisticalOutlierRemoval filter (r32876)
set the default number of '''gcc''' build processes to 2, to avoid large memory allocation thus rendering the machine unusable during compilation
[[flann]]
upgraded to FLANN 1.5
[[pcl]]
fixed a grave bug that caused 32bit architectures to exhibit errors regarding eigen alignment issues (32769)
fixed a bug with isBoundaryPoint() and pcl::BoundaryEstimation::computeFeature() relating to the use of different surface_ and input_clouds and/or non-default indices_, and added a new way of calling isBoundaryPoint()
fixed the problem of mls.hpp depending on eigen 2
added computeCovarianceMatrixNormalized methods <<Ticket(ros-pkg 4171)>>
Renamed namespace of eigen3 to Eigen3 to prevent conflicts with eigen2
[[laser_scan_geometry]]
fixed #4437 where PointCloud2 projectLaser fails when laser intensity is off (32765)
[[pcl_tf]]
fixed #4414 where lookupTransform was being called without tf_listener object (32764)
[[pcl]]
VectorAverage uses fast spezialized PCA method now for dimension=3
new version of VoxelGrid filter that downsamples data faster and doesn't use as much memory (the previous version could easily cause std::bad_alloc exceptions)
fixed a major bug where: 1) PointCloud2 structures were being sent with extra unusued (padding) data (i.e., directly copied from pcl::PointCloud<T>); 2) writing PCD files in binary mode resulted in corrupted files (r32303)
fixed a bug where the fields were not cleared on pcl::getFields (pcl::PointCloud<T>) (r32293)
fixed a bug where PCDWriter was writing to the same file instead of creating new ones
improvements in non linear registration (reduced the number of estimates from 7 to 6, SSE optimizations, etc)
reduced the number of operations for covariance matrix estimation from 18N to 10N+3 => big speedup increase together with pcl::eigen33 !
Big patch for PCL to work with Eigen3. Fixed alignment issues for Sample Consensus models. Added a faster (experimental) eigen decomposition method from Eigen3 trunk.
fixed a bug where the axis_ was not properly aligned on 32bit architectures thus causing an assert
Added ICP functionalities to range image, add new helper functions header file_io, minor fixes.
[[pcl_tf]]
Added function to just transform a point cloud using an Eigen matrix.
[[pcl_visualization]]
fixed a bug where NaN values invalidated certain color handlers
Range image example uses viewpoint information from file now
[[eigen3]]
added Eigen3 library
[[pcl]]
added copyPointCloud (sensor_msgs::PointCloud2 &in, indices, sensor_msgs::PointCloud2 &out)
[[pcl_visualization]]
fixed a bug in PCLVisualizer where NULL scalars were causing a segfault
[[pcl_ros]]
changed the default max queue size to 3
added implementations for approximate time synchronizers
ExtractPolygonalPrismData can now rotate the hull in the point cloud frame using TF
[[pcl_tf]]
transforms.cpp add missing out.header.frame_id = target_frame;
[[laser_scan_geometry]]
Max range handling from Hokuyo should work properly now.
[[pcl]]
added a Huber kernel to LM optimization
fixed a bug where the order of setInputCloud and setPointRepresentation triggered an assert condition (31938)
added a Sample Consensus model for outlier rejection during ICP-like registration
added implementations of the intensity-domain spin image and Rotation Invariant Feature Transform, as described in "A sparse texture representation using local affine regions," by Lazebnik et al. (PAMI 2005).
added a templated N-dimensional histogram point type
Updated code to work with point wrapper registration.
[[pcl_visualization]]
scale the colors lookup table to the color handler limits (31942)
fixed a bug where the screenshot function was not using the last updated screen
addPointCloudPrincipalCurvatures renders the principal curvatures of a point cloud on screen + set color properties
[[pcl]]
SSE improvements in *PFHEstimation
more SSE improvements in computeCentroid, computeCovarianceMatrix, etc
several improvements regarding SSE optimizations in SACModelPlane
make all data points that deal with XYZ SSE aligned (31780)
work on improving the VFH signatures (changed the signature from 263 to 308, added distances)
[[pcl_visualization]]
fixed a silly X11 include bug, where Bool was defined globally therefore breaking BOOST_FOREACH
added font size property setter for text actors
new PCLVisualizer::addText method for adding texts to screen (r31822)
implemented window position ordering and range min/max for PCLHistogramVisualizer (r31805)
implemented a basic histogram visualizer for multi-dimensional count=1 features (e.g., VFH)
[[pcl_tutorials]]
added a tutorial for online PointCloud2 message viewing
[[pcl]]
fixed another bug where internal matrices were not always cleared in FPFH/VFH estimation
fixed a few bugs regarding sizeof(PointT)=16 for demeanPointCloud (r31762)
fixed a grave bun in FPFHOMP/VFH estimation where the matrices were not correctly initialized on consequent runs (r31757)
introduced PCL exceptions, and added checks for conversion and cloud.at (u, v) operations
[[pcl_ros]]
fixed a bug where SACSegmentation was accepting two parameters with the same name (distance_threshold vs model_threshold)
disable empty data publishing in PCDReader
[[pcl_visualization]]
added lookup table to the renderer
[[cminpack]]
enabled shared library by default
[[pcl]]
added a convenience method in pcl::io::loadPCDFileHeader for loading up files fast and checking their fields, data types and sizes, etc (r31740)
added implementation of the Sample Consensus Initial Alignment (SAC-IA) algorithm described in "Fast Point Feature Histograms (FPFH) for 3D Registration," Rusu et al., (ICRA 2009)
moved the estimateRigidTransformationSVD methods out of IterativeClosestPoint and made them static functions defined in registration.h.
[[pcl_visualization]]
fixed the minmax color handler visualization (r31710)
few addPointCloud convenience method for geometry handlers + bugfix in pcd_viewer (the last field was added twice as a color handler when more than one geometry handler was available)
addPointCloudNormals displays surface normals on screen (PCLVisualizer)
added -normals and -normals_scale options to pcd_viewer
[[pcl_ros]]
grave bug fixed in PointCloudConcatenateFieldsSynchronizer where data was not correctly copied (r31708)
PCDReader nodelet uses a latched topic to publish data
[[pcl]]
pairwise registration tutorial now has on-screen visualization (r31698)
new laser scan geometry for LaserScan->PointCloud2 conversion
added general purpose transformation routines for sensor_msgs::PointCloud2 using TF (r31678)
added basic shapes (line, sphere, cylinder, polygon, etc), split rendering properties for shapes and point clouds (r31665)
fixed a few bugs regarding fields.count
small bug fix where triples on the parameter server didn't match with the value in dynamic reconfigure (VoxelGrid)
added a convenience method for conversion from PointCloud2 (xyz) to Eigen format
added a method to get the radius of a circumscribed circle
added methods for saving/loading camera parameters in PCL Visualizer (c, j, -cam)
added -multiview to pcd_viewer; PCLVisualizer can now create and use different viewports (r31600)
[[pcl]]
tiny bug fixes for cturtle
[[pcl]]
work to improve the PCL Visualization package, standalone pcd_visualizer completed
added cloud(u,v) accessors for organized datasets.
added constrained implementations (maximum distance between correspondences) for registration methods
added PCD file format v.6 which includes field count (r31367)
added a PointRepresentation class for spatial search methods that allows the user to specify what dimensions are important
added a maximum distance threshold for point correspondences in registration
fixed IterativeClosestPoint registration, added a L1 kernel to icp_nl, and unit tests (31283)
added a new segmentation method for obtaining the differences between two point clouds (r31281)
[[pcl]]
test build fixes
made BAGReader inherit directly from nodelet::Nodelet
[[pcl]]
added PCL_ROS package for all PCL_ROS interactions. Moved all nodelets and all ROS specific interfaces from PCL to PCL_ROS.
moved vectorAverage to common
added class to calculate transformation from corresponding points to common
added index remapping for the kdtrees so that NAN points are automatically ignored.
Split kdtrees in h and hpps
Added some new functionality to range images and fixed bugs in creation process.
separated the PCL tutorials from the library into a separate package (pcl_tutorials)
added a PCD Visualizer and implemented several point cloud visualization techniques (handlers) for geometry and color
added getFieldsList (PCL/io) for a pcl::PointCloud
added VTK as a dependency for visualization in an attempt to be compatible with older Linux distributions
[[pcl]]
added radius search for organized_data
fixed some bugs in the range image class
structural changes in range images related classes
split point_types.h in point_types.h and point_types.hpp and added output operators for all points
Added angles.h, norms.h, time.h, transform.h and common_headers.h (which includes all the others) to provide some basic functions for convenience.
Added border_extraction for range images
Added vectorAverage to features, which calculates mean and covariance matrix incrementally without storing added points.
Added macros.h, which provides some basic macros for convenience.
added an initial PCL Visualizer implementation
replaced rosrecord with rosbag for all PCL tools
added cluster_max size to Euclidean Clustering (r30210)
adding cylinder direction axis constraints + sphere min/max radius constraints for model segmentation (r30195)
fixed a grave bug which was preventing objects containing ANN trees to be used in multiple threads (r30194)
fixed a bug where patches for ANN 1.1.2 were not applied correctly (r30193)
all nodelets now have use_indices and max_queue_size checked at startup via PCLNodelet base class
switched from rosrecord to the rosbag API for BAGReader
enable max_queue_size parameter (default to 1) for all nodelets
set the indices/distances to 0 if the search failed for ANN trees (r30130)
PCD reader fix when an invalid file name is given (r30004)
added range image class (r29971)
added axis and eps_angle as ROS parameters for segmentation (r29938)
setting the maximum number of clusters that are to be published via max_clusters (r29935)
fixed a grave bug where SACModelOrientedPlane was performing an infinite loop inside selectWithinDistance (r29934)
[[pcl]]
simplified API in point_cloud_converter
new general purpose 3D point in 2D polygon check method (r29645)
added a getPointsInBox() method
fixed a bug where some points were not considered as being part of the polygonal prism due to polygonal bound checking errors (r29597)
added a PointXYZI type to represent intensity data.
updating flann to 1.5_pre2 (r29549)
added MovingLeastSquares tutorial (r29539)
[[pcl]]
getMinMax3D<T> methods now reside in common
fixed a major bug in VoxelGrid where centroids were not initialized correctly
fixed a bug where NdCopyEigenPointFunctor and NdCopyPointEigenFunctor were given incorrect values
reorganizing the library for faster compilation
fix for linker errors when linking together multiple translation units that include the same point type registration. Static tag name strings would be defined more than once. #4071 (r29435)
[[pcl]]
added parameter sets for Filter, VoxelGrid, ExtractIndices (r29229)
refactorized the dynamic reconfigure parametrization for nodelets
added tutorial/sample for cylinder segmentation via SAC (r29224)
introduced bad model handling in the sample consensus loop (r29218)
added the field name to the dynamic reconfigure parameter list for Filters (r29211)
improved NaN handling in kdtrees (r29204)
fixed a bug where PassThrough was incorrectly declared as a nodelet (r29202)
added tutorial/sample for the ConvexHull2D algorithm (r29198)
added set/get radius limits (to be extended), implemented radius limits for cylinder models, and better RANSAC model checking (r29194)
default input topic on pointcloud_to_pcd changed from "tilt_laser_cloud" to "input" (r29137)
CMakeLists split into individual files for better organization
fixed a couple of boost linking errors on some machines
transformed point_cloud_converter from a node into a library+node so it can be reused elsewhere
added a command line tool for concatenating PCD files (r29035)
added an implementation of the Viewpoint Feature Histogram (VFH) (r29032)
[[pcl]]
added tutorial/sample for the ExtractIndices filter (r28990)
added tutorial/sample for the VoxelGrid filter (r28986)
added tutorial/sample for the StatisticalOutlierRemoval filter (r28985)
added templated version of loadPCDFile (r28978) and PCDReader::read
added unit tests for the StatisticalOutlierRemoval filter (r28971)
added unit tests for the ProjectInliers filter (r28970)
added unit tests for the VoxelGrid filter (r28969)
added negative limits and fixed a bug where the centroid was not correctly initialized in VoxelGrid (r28967)
added unit tests for the PassThrough filter (r28966)
added unit tests for PCL filters: RadiusOutlierRemoval and ExtractIndices (r28961)
added extra unit tests for concatenate points/fields (r28959)
added tutorial/sample code for BAGReader (r28955)
[[pcl]]
added a few nodelet tests (talker, listener, pingpong)
added unit tests for BAGReader (r28924)
added an implementation for BAGReader (r28922)
added unit tests for PCDReader/PCDWriter
fixed a few bugs where certain include headers were not exposed properly
added an implementation of a statistical outlier removal filter (r28886)
added an implementation of radius outlier removal filter (r28878)
fixed a bug (#3378) where the output file name in several tools was incorrect (r28858)
added an implementation of non-linear ICP (28854)
fixed a bug where the min/max estimation was incorrect for sensor_msgs/PointCloud2 types in voxel_grid (r28846)
[[pcl]]
final transformation is now accessible after registration (r28797)
added filter_limit_negative to switch between inside/outside interval (r28796)
added =/+= operator to PointCloud<PointT> (r28795)
added a set of tutorials for IO, Segmentation, Filtering
fixed a very ugly bug regarding covariance matrices having 0 elements (r28789)
IterativeClosestPoint tested and works (r28706)
added set/get maximum distance for organized data index and virtualized the ANN radiusSeach (r28705)
added demeaning methods to registration/transforms.h
updated ANN library to 0.1.2
fixed a major bug in ExtractPolygonalPrismData where distances were incorrectly checked
added plane normal flip via viewpoint to ExtractPolygonalPrismData
added axis and eps_angle (set/get) to SACSegmentationFromNormals
added methods for transforming PointCloud datasets containing normals
[[pcl]]
added a first draft implementation of tf_pcl
added missing descriptions to PCL nodelets list
fixed a few bugs in voxel_grid where the offset was not incremented correctly (r28559)
added a new passthrough filter
fixed a few bugs regarding Eigen/Boost's make_shared (r28551)
solved numerical instability issue in MLS, preferred the solution using doubles over the one using SVD (r28502). MLS works great now.
simplified the registration API (still in progress)
changed point_cloud_converter to accept 2 input and 2 output topics, thus fixing the "subscribe when nothing is being published" problem (r28540)
[[pcl]]
fixed a very nasty bug in VoxelGrid where leaves were not properly initialized (r28404)
fixed extractEuclideanClusters (was not working correctly)
added min/max height for polygonal prism data extraction (r28325)
added a bag_to_pcd tool that doesn't need ROS to convert BAG files to PCD (r28469)
fixed a bug where PCL classes couldn't be used unless ros::init was called first
classes now inherit from PCLNodelet and PCLBase
setInputCloud and setIndices are defined in PCLBase now, and used everywhere
fixed a bug where kdtree structures were incorrectly created
added get/set helper methods everywhere
PointCloud2 structures can now contain NaN (Not a Number) values, so extra checks have been added in a lot of places
added new distance methods to sample consensus models
removed ROS_DEBUG statements in the feature constructors
indices can now be set via pcl::PointIndices too
fixed a bug where the surface was not getting re-initialized in Feature (r28405)
added explicit checks for invalid covariance matrices (r28306)
fixed a bug where indices are created to mimic the input point cloud data but never reset (r28306)
cleaned the C++ API documentation
initial MLS port (untested)
[[pcl]]
initial release