All Versions
63
Latest Version
Avg Release Cycle
124 days
Latest Release
200 days ago

Changelog History
Page 3

  • v1.4.0

    December 31, 2011

    The most notable overall changes are:

    libpcl_common

    • โž• added float union to the pointXYZRGBL type, in order to aid PCD_viewer compatibility
    • ๐Ÿ›  bugfix: pcl::computeCovarianceMatrixNormalized did not normalize for each implementation
    • ๐Ÿ›  fixed bug #421: at(u,v) should return a const reference
    • โž• added InitFailedException and UnorganizedPointCloudException. Created PCL_EXCEPTION helper macro
    • โž• added the GFPFH global descriptor point type
    • โž• added gaussian kernel class and utilities
    • โž• added isTrivial to pcl::PointRepresentation which allows avoiding copy operations in special cases, thus speeding up operations like rep->isValid (p)
    • โž• added eigen33 for smallest eigenvalue/vector and only eigenvalues version
    • โž• added PointCloudColorHandlerHSVField implementation
    • โœ‚ deleted wrong definition of density in pcl::transformPointCloud
    • โž• added copy constructor for PCLBase
    • ๐Ÿ›  fixed PointCloud's in range inserter: width and height were not updated
    • added PCL_MAJOR_VERSION and PCL_MINOR_VERSION #defines per Ryan's request
    • ๐Ÿ›  fixed the getMatrixXf advanced user API call to return the correct values now that we are forcing Eigen Matrices to be row major in 1.x
    • moved the content of win32_macros.h into pcl_macros.h
    • โž• added an isFinite method to check for x/y/z = NaN in point_types.hpp
    • moved internal headers from pcl/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)
    • ๐Ÿ›  fixed one of the constructors for pcl::PointCloud<T> (cloud, indices) that was incomplete
    • no longer checking "frame_id" parameters in header for operator += in pcl::PointCloud<T>
    • โž• added operator + for pcl::PointCloud<T>
    • ๐Ÿ‘Œ improved doxygen documentation all around libpcl_common
    • added new specialization for pcl::PointCloud<Eigen::MatrixXf> - for advanced users only! (expect the API to change in trunk if needed)
    • moved NdCopyPointEigenFunctor and NdCopyEigenPointFunctor from voxel_grid.h to point_cloud.h
    • added CloudProperties 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_time
    • ๐Ÿ›  fixed the copy constructor (vector -> vector) and added an implementation for the + operator
    • โž• added a general convolution class. Convolution handles point cloud convolution in rows, columns and horizontal directions. Convolution allows for 3 policies: zero padding (default), borders mirroring and borders duplicating through PointCloudSpring class
    • โ™ป๏ธ refactorized PointCorrespondence and Correspondence into the same thing, per issue #458
    • โž• added ChannelProperties in preparation for 2.0
    • ๐Ÿ›  fixed bug #445: Overloaded the setIndices method in PCLBase so that it can accept boost::shared_ptr<const std::vector> >
    • โœ… disabled unit test for getMatrixXfMap in DEBUG mode, as it was failing due to eigen's strictness on aligned/unaligned data, and added const+non consts versions

    libpcl_filters

    • ๐Ÿ›  fixed bug in random_sample.cpp; The PointCloud2 filter wasn't working causing the unit test to fail
    • ๐Ÿ‘ crop_box filter now supports PointT and PointCloud2 point clouds
    • โž• added a normal space sampling filter
    • ๐Ÿ›  fixed bug #433: pcl::CropBox doesn't update width and height member of output point cloud
    • ๐Ÿ›  fixed bug #423 CropBox + VoxelGrid filters, order changes behaviour (using openni grabber)
    • โž• add 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/surfaces
    • โž• added clipper3D interface and a draft plane_clipper3D implementation
    • โœ‚ removed spurious old ColorFilter class (obsolete, and it was never implemented - the skeleton was just lurking around)
    • ๐Ÿ‘ better Doxygen documentation to PassThrough, VoxelGrid and Filter
    • ๐Ÿšš moved the set/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_kdtree

    • ๐Ÿ›  fixed bug #442: reversed template parameters preventing use of nearestKSearchT and radiusSearchT in pcl::search::Search and pcl::kdtree:KdTree
    • fixed a bug in OrganizedNeighbor where one of the radiusSearch signatures was working only if the cloud is not organized (#420 - thanks Hanno!)
    • โšก๏ธ updated pcl::search:OrganizedNeighbor to be back functional, radiusSearch is working back, 4-6x faster then KdTree, Knearest still need to implement this
    • ๐Ÿ’… changed pcl::search::FlannSearch: fixed style of class and tests, moved impl to hpp
    • cleaning up OrganizedNearestNeighbor as well as implementing one of the missing radiusSearch methods
    • ๐Ÿ‘Œ improved documentation for libpcl_search and silenced all Doxygen warnings
    • โœ‚ removed auto (it needs to be completely rewritten and was left in a very bad state)
    • made sure all the output of the search method is consistently returning 0 in case the nearest neighbor search failed and not -1
    • ๐Ÿš€ updated kdtree wrapper code for the latest FLANN release

    libpcl_octree

    • โž• added method getVoxelBounds to octree iterator & removed result vector reserves
    • ๐Ÿ‘Œ improved documentation for libpcl_octree and silenced all Doxygen warnings

    libpcl_sample_consensus

    • fixed an omission of the sample size declaration for SACMODEL_PARALLEL_LINES (thanks Benergy)
    • โœ… replaced rand () with boost random number generators and fixed all failing unit tests
    • โ†ช workaround to get rid of infinite loops if no valid model could be found

    libpcl_io

    • โ™ป๏ธ refactorization and consistent code indentation + make sure the timestamp is not set if we use PCL in ROS
    • ๐Ÿ›  fixed an older issue where the is_dense flag was not set appropriately when reading data from a binary file (thanks Updog!)
    • ๐Ÿ›  fixed an issue in the PLYWriter class where the element camera was not correctly set thus leading to crashes in Meshlab (thanks Bruno!)
    • the VTK library loads vertex colors in PLY files as RGB. Added that to the polymesh loader.
    • ๐Ÿ›  fixed 2 bugs in writing PolygonMesh and unpacking RGB
    • ๐Ÿ›  fixed a bug in the .OBJ exporter to strip the path from the material library filename (thanks Robert!)
    • โž• added support for exporting vertex normals to the .OBJ (pcl::io::saveOBJFile) file exporter (thanks Robert!)
    • ๐Ÿ›  fixed a 32bit/64bit issue in pointcloud compression
    • โž• added method to write obj files from PolygonMesh
    • โž• added serial number support for Windows using mahisorns patch. Thanks to mahisorn
    • overloaded callbacks for OpenNIGrabber to output PointCloud<Eigen::MatrixXf> datasets
    • โž• added the possibility to write binary compressed Eigen data to disk using two new methods: generateHeaderEigen and writeBinaryCompressedEigen. Performance improvements to 30Hz I/O
    • fix for #463 (Missing Symbol rgb_focal_length_SXGA_)
    • ๐Ÿ›  fix: rgb values need to be packed before saving them in PointCloud2 for PLYWriter
    • โž• added example code for accessing synchronized image x depth data
    • added support for the Stanford range_grid element and obj_info for PLY files. If you chosse to use range_grid instead of camera then only valid vertices will be written down to the PLY file.

    lipcl_keypoints

    • โž• added refine method for Harris3D corner detector
    • rewrote big parts of the NARF keypoint extraction. Hopefully fixing some stability issues. Unfortunately still pretty slow for high resolution point clouds.
    • ๐Ÿ›  fixed bug #461 (SIFT Keypoint result cloud fields not complete); cleaned up the line-wrapping in the error/warning messages

    libpcl_surface

    • ๐Ÿ›  fixed a bug in MarchingCubes's getIndexIn1D which led to the result variable to overflow when the data_size was larger than something around 210 (thanks Robert!)
    • reviewed and slightly modified mls implementation. Added MovingLeastSquaresOMP OpenMP implementation
    • ๐Ÿ†• new architecture for the mesh processing algorithms using VTK: MeshProcessing
    • overloaded reconstruction and performReconstruction in SurfaceReconstruction to output a PointCloud<T> and vector<Vertices> as well
    • โž• added a new class called MeshConstruction per API design decision to split the surface reconstruction methods into topology preserving (EarClipping,OrganizedFastMesh,GreedyProjectionTriangulation) and the rest. The new class implements areconstruction/performReconstructionforPolygonMesh(for backwards compatibility purposes) and a faster set of the same methods forvector`
    • โ™ป๏ธ refactorized GreedyProjectionTriangulation by making it inherit from the new MeshConstruction base class, and removed a lot of old buggy code
    • overloaded performReconstruction (PointCloud<T> &, vector<Vertices> &) per the new SurfaceReconstruction API
    • ๐Ÿ›  fixed a bug in OrganizedFastMesh where the x/y/z indices were assumed to be 0/1/2, and made it part of the MeshConstruction API
    • optimizations for OrganizedFastMesh. Now in 30Hz+ flavor.
    • ๐Ÿ›  fixed a segfault from last night's EarClipping refactorization and improved the efficiency of the algorithm considerably
    • โšก๏ธ updated ConvexHull and ConcaveHull to inherit from the new MeshConstruction class
    • ๐Ÿ“‡ renamed mesh_processing.h to processing.h and performReconstruction/reconstruct to performProcessing/process for the new MeshProcessing API

    libpcl_features

    • ๐Ÿ›  fixed bug #439: 3DSC unit test fails on MacOS
    • ๐Ÿ›  fixed IntegralImage2Dim : setting first line to zero was buggy producing undefined output data.
    • fixing an issue in 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!)
    • ๐Ÿ›  fixed ShapeContext3DEstimation computation and unit tests by switching from stdlib.h's random () to Boost.
    • ๐Ÿ›  fixed a bug in IntensityGradient: need to demean also intensity values, otherwise its assumed that the hyperplane goes always through origin which is not true
    • overloaded compute 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)
    • major doxygenization work
    • โž• added optimization checks for is_dense for some features, implemented NaN output for most (per http://dev.pointclouds.org/issues/457)
    • โž• added new unit tests for the Eigen::MatrixXf output
    • ๐Ÿ›  fixing the MacOS GCC 4.2.1 compiler segfault by removing the OpenMP #pragma (related to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35364 ?).
    • ๐Ÿ›  fixed bug #468: refactored to make floor explicit.
    • โž• added a 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)
    • major improvements for integral images + added template specialization for one dimensional integral images

    libpcl_registration

    • ๐Ÿ›  fixed some bugs in ELCH, thanks Frits for pointing them out
    • Big ELCH cleanup.

      • elch.h (API changes):
      • Use Boost bundled properties for LoopGraph, every vertex stores a pointer to the corresponding point cloud in graph[vertex].cloud.
      • loop_graph_ is now stored as a shared_ptr.
      • loop_start_ and loop_end_ are saved as ints for now (will change in the future).
      • loop_transform_ is not stored as a pointer (may change in the future).
      • elch.hpp:
      • Remove call to PCLBase::initCompute() as ELCH doesn't use a single input cloud or indices.
      • Change loopOptimizerAlgorithm to use start and end of the loop as stored in the object.
      • Adapt to API changes in elch.h.
    • โž• 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_visualization

    • ๐Ÿ›  fixed an issue in pcl::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!)
    • ๐Ÿ›  fixed a bug in PointCloudColorHandlerRGBField<sensor_msgs::PointCloud2> where one of the offsets for Z was incorrectly calculated thus leading to erroneous data (#404 - thanks Lucas!)
    • set the lighting off on setShapeRenderingProperties when the user tries to control the color of the object precisely (maybe add a different lighting on/off property later?)
    • โช revert pcl::visualization::PCLVisualizer::setShapeRenderingProperties vtk5.2, default in ubuntu LTS, doesn't support the SetLighting method on vtkActor
    • ๐Ÿ›  fixed an issue in PointCloudColorHandlerRGBField where using an "rgba" field was causing an error in pcd_viewer (#428 - thanks Maurice!)
    • โž• added PointCloudColorHandlerHSVField
    • ๐Ÿ›  fixed the PointPickingCallback behavior on Windows 7: iren->GetShiftKey () returns 4 instead of 1 (thanks bepe)
    • โž• added updateFeatureHistogram functionality to PCLHistogramVisualizer, per #456 (thanks Asil!)
    • โž• added patch from Adam Stambler (Bug #396)
    • โž• added removePolygonMesh to make the API more user friendly (addPolygonMesh was already existing, but the polygon meshes were removed using removeShape until now)
    • made the polygon meshes actually implement CloudActor structures internally, so that we can use different colors per vertex
    • โž• added updatePolygonMesh and improved the efficiency of addPolygonMesh for fast online rendering (i.e., produced via OrganizedFastMesh)
  • v1.3.1

    November 30, 2011
    • ๐Ÿ›  fixed bug #428: in PointCloudColorHandlerRGBField where using an "rgba" field was causing an error in pcd_viewer (thanks Maurice!)
    • ๐Ÿ›  fixed bug #404: in 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!)
    • ๐Ÿ›  fixed bug #421: toROSMsg referenced the address of a temporary return
    • ๐Ÿ›  fixed bug #422: SHOT estimation did not work with different surface than keypoints
    • ๐Ÿ›  fixed bug #430: an infinite loop in SAC methods if no valid model could be found
    • ๐Ÿ›  fixed bug #433: CropBox did not update width and height member of output point cloud
    • โž• added missing using declarations for shot
    • added a missing include file to transformation_estimation_point_to_plane.h;
    • added transformation_estimation_point_to_plane_lls.h/hpp to the CMakeLists file
    • ๐Ÿ›  fixed an issue where the is_dense flag was not set appropriately when reading data from a binary file (thanks Updog!)
    • ๐Ÿ›  fixed a bug in the PLYWriter class where the element camera was not correctly set thus leading to crashes in Meshlab (thanks Bruno!)
    • fixed a bug in 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!)
    • set the lighting off on 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 incremented
    • fixed a bug in tools/compute_cloud_error
    • fixed a crash in test_ii_normals.cpp
    • โœ‚ removed unnecessary header from point_correspondence.h
    • ๐Ÿ›  fixed unnormalized covariance matrix in computeCovarianceMatrixNormalized
    • โž• added missing include in std_msgs/Header.h
    • โž• added error checking for radius search in extractEuclideanClusters
    • ๐Ÿ›  fixed a bug in PassThrough where NaN values were not correctly replaced by the user-specified value
    • ๐Ÿ›  fixed a bug in ply_io when writing PolygonMesh
    • ๐Ÿ›  fixed a bug in ply_io when unpacking rgb values
  • v1.3

    October 31, 2011

    ๐Ÿ‘ From 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:

    • โœ‚ removed wxWidgets as a dependency from PCL and implemented the Image visualization classes using VTK
    • โœ‚ removed cminpack as a dependency from PCL and implemented the LM optimization functionality using Eigen
    • added a new library called PCL Search (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
    • ๐Ÿ‘Œ improved MacOS support
    • ๐Ÿ‘Œ improved documentation and unit tests
    • โž• added lots of application examples and demos. Note: not all have a complete functionality... we will try to clean this up in 1.4 and future releases.

    ๐Ÿ‘ท Build system changes

    • define PCL_ROOT environment variable using the NSIS installer
    • โœ… removing test+python from the dependency graph
    • ๐Ÿ›  fixed bug #374
    • โœ‚ remove cminpack from PCLConfig.cmake cmake and 3rdparty (switched to Eigen's Levenberg-Marquardt implementation)
    • ๐Ÿ“ฆ update NSIS.template.in : use CPACK_PACKAGE_INSTALL_REGISTRY_KEY as the registry key
    • โž• added the capability to build an all-in-one installer
    • ๐Ÿ›  fixed the build system to work 100% on Android and MacOS

    libpcl_common

    • โž• add overriding for operator[] to shorten code
    • โž• add a setIndices method that computes indices of points in a region of interest
    • โž• add demeanPointCloud with indices as PointIndices as well
    • โž• added eigen allocator to correspondence vectors (pcl::Correspondences) and adapted all registration modules => be sure to use pcl::Correspondences instead of std::vector<pcl::Correspondence>
    • ๐Ÿ›  fixed a few doxygen errors
    • โž• added simple stop watch for non-scoped function time measurements and made ScodeTime derived from StopWatch
    • ๐Ÿ›  fixed a bug in getRejectedQueryIndices, wrong output when order of correspondences have been changed
    • ๐Ÿšš moved getRejectedQueryIndices to pcl/common/correspondence.h
    • โž• added more doxygen documentation to the registration components
    • ๐Ÿ—„ marked all getRemainingCorrespondences-functions as DEPRECATED, we should replace them with purely stateless version outside the class body
    • ๐Ÿ›  fixed a const missing in PolynomialCalculationsT (#388 - thanks Julian!)
    • โž• add PCL_DEPRECATED macro, closes #354.
    • โž• added PointXYZHSV type and the conversions for it
    • โž• added check for endianness for the Android platform
    • ๐Ÿšš BIG changes introduced - migration from KdTree to pcl::Search: moved OrganizedDataIndex and OrganizedNeighbor classes to libpcl_search
    • โž• added new templated methods for nearestKSearch and radiusSearch for situations when PointT is different than the one the KdTree object was created with (e.g., KdTree vs nearestKSearch (PointT2 &p...)
    • โž• added two new methods for 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 T2
    • โ™ป๏ธ refactorized a lot of code in search and octree to make it look more consistent with the rest of the API
    • fixed a bug in octree_search which was semantically doing something bad: for each radiusSearch/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.points[i], ...)
    • minor code optimizations
    • renamed organized_neighbor.h header in pcl_search (unreleased, therefore API changes OK!) to organized.h
    • disabled the auto-search tuning as it wasn't really working. must clean this up further
    • โœ‚ remove all approxNearestSearch methods from the base pcl::Search class as they did not belong there

    libpcl_io

    • ๐Ÿ‘‰ use stringstream 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)
    • โž• added locale independent PCD ASCII i/o
    • ๐ŸŽ implemented 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.
    • โž• added new writeBinaryCompressed functionality for general purpose sensor_msgs::PointCloud2 data (which is still our generic data container in PCL 1.x)
    • โž• added additional unit tests for binary_compressed
    • ๐Ÿ›  fixed a grave bug in 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.
    • added functionality for openni_grab_frame (added optional command line options, optional output filename, chose output format)
    • ๐Ÿ”„ changed to new location of samplesconfig.xml for OpenNI
    • โž• added signal and slot blocking into grabber. Using blocking to skip first frame in openni_grabber, since it is corrupted
    • โž• added PLY format file support in binary and ascii mode (requires boost::iostreams library)

    libpcl_keypoints

    • โž• added 3D versions of Harris/Noble/Lowe/Tomasi and Curvature-based keypoint detection... scale space still missing
    • ๐Ÿ‘€ work on making SIFTKeypoint 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.
    • ๐Ÿ›  fixed an issue in SIFTKeypoint where width/height were not correctly set

    libpcl_features

    • โœ… specialize std::vector for Eigen::Matrix4f (alignment issue with msvc 32bit) in SHOTEstimation
    • โž• added a faster (eigen-based) integral image calculation => sped up normal estimation to 15Hz
    • โž• added Unique Shape Context (USC) feature descriptor
    • โž• added Shape Context 3D feature descriptor
    • ๐Ÿ›  fixed a bug in the normalization factor of VFH for the distance component (only affecting if set distance component is true)
    • ๐Ÿ›  fixed a few bugs regarding Windows build introduced in earlier commits
    • BIG changes introduced - migration from KdTree to pcl::Search
    • merged libpcl_range_image_border_extractor into libpcl_features. There's absolutely no reason why we should have 2 libraries generated from the features module.

    libpcl_filters

    • โž• added FilterIndices functionality #315
    • โž• added a RandomSample filter which makes use of indices #323
    • โž• added a new (very fast) class for data decimation: ApproximateVoxelGrid
    • ๐Ÿ›  fix for #369 (StatisticalOutlierRemoval crash when input dataset is empty)
    • implemented feature request #346

    libpcl_octree

    • โž• added function genVoxelBounds to octree pointcloud class
    • โž• added octree neighbor search class
    • โž• added octree-ray-tracing patch to octree_search class
    • buxfix in octree ray traversal function getIntersectedVoxelCentersRecursive
    • โž• added unit test for getIntersectedVoxelCentersRecursive
    • โž• added method getIntersectedVoxelIndices for getting indices of intersected voxels and updated unit test
    • โ™ป๏ธ refactorized a lot of code in search and octree to make it look more consistent with the rest of the API
    • fixed a bug in octree_search which was semantically doing something bad: for each radiusSearch/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.points[i], ...)
    • minor code optimizations
    • renamed organized_neighbor.h header in pcl_search (unreleased, therefore API changes OK!) to organized.h
    • disabled the auto-search tuning as it wasn't really working. must clean this up further
    • โœ‚ remove all approxNearestSearch methods from the base pcl::Search class as they did not belong there

    libpcl_registration

    • ๐Ÿ›  fixed a minor bug in CorrespondenceRejectorSampleConsensus: getRemainingCorrespondences tried to nput_ although it should only use the given input correspondences
    • โž• added missing implementation for TransformationEstimationLM on correspondence vectors
    • โž• added eigen allocator to correspondence vectors (pcl::Correspondences) and adapted all registration modules --> be sure to use pcl::Correspondences instead of std::vector<pcl::Correspondence>
    • ๐Ÿ›  fixing the API: a few left inconsistencies between vector<Correspondence> and Correspondences. The latter is to be preferred as it contains the Eigen aligned allocator.
    • โž• added new ELCH loop correction API (New pcl::registration::ELCH class (WIP), add Registration::Ptr typedef)
    • โž• added unit tests for the (new) registration API and all registration components
    • ๐Ÿ“š Further cleaning up registration code and writing documentation.
      • fixed bug in getRejectedQueryIndices, wrong output when order of correspondences have been changed
      • moved getRejectedQueryIndices to pcl/common/correspondence.h
      • added more doxygen documentation to the registration components
      • marked all "getRemainingCorrespondences"-functions as DEPRECATED, we should replace them with purely stateless version outside the class body
    • โšก๏ธ Update: remove ciminpack dependency and rely on eigen for LM
    • ๐Ÿ›  Fixed a bug in ICP-NL by modifying WarpPointRigid to preserve the value of the 4th coordinate when warping; Re-enabled missing unit tests for ICP and ICP-NL
    • โž• Added point-to-plane ICP
    • added nr_iterations_ and max_iterations_ to the initializer list (were missing)
    • ๐Ÿ›  Fixed bugs in WarpPointRigid3D and TransformationEstimationLM
    • ๐Ÿ›  fixed a problem where if no correspondences would be found via nearestKSearch, the RANSAC-based rejection scheme would fail (thanks to James for reporting this)
    • ๐Ÿ”„ changed the default LM implementation to use L2 instead of L2SQR
    • โž• Added a new TransformationEstimationPointToPlaneLLS class that uses a Linear Least-Squares approximation to minimize the point-to-plane distance between two point clouds
    • โž• Added the ability to specify the error function to be minimized in SAC-IA (see Feature #362)

    libpcl_sample_consensus

    • reimplemented the Levenberg Marquardt code that was using cminpack with Eigen, thus dropping the cminpack dependency for PCL

    libpcl_surface

    libpcl_segmentation

    • โž• added a labeled cluster euclidean segmentation method

    libpcl_visualization

    • ๐Ÿ›  fixed an issue where saveScreenshot was not correctly initialized with the proper renderer, thus not saving the data
    • ๐Ÿ‘Œ supporting fontsize in addText (per feature #365)
    • ๐Ÿ›  fixing the interactor style by ignoring all combinations in OnChar that we cover in OnKeyDown
    • โž• added removeAllShapes and removeAllPointClouds per #353
    • ๐Ÿšš renamed deleteText3D to removeText3D to consolidate the API
    • ๐Ÿ›  fixing the API: a few left inconsistencies between vector<Correspondence> and Correspondences. The latter is to be preferred as it contains the Eigen aligned allocator.
    • โž• added patch from Lucas Walter to fix pcl::visualization::PCLVisualizer::removeAllPointClouds and removeAllShapes
    • ๐Ÿ›  fixed a few doxygen errors
    • ๐Ÿšš cleaned up the 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).
    • โœ‚ removed 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).
    • cleaned up and implemented the 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.
    • ๐Ÿ›  fixed the correct order in initializer list for ImageViewer
    • โœ‚ removed wxWidgets completely from the codebase
    • โž• added implementation for markPoint to ImageViewer to mimic older wxWidgets-based code
    • ๐Ÿ›  fixed an issue in PCLVisualizerInteractorStyle where mouse events were not properly mapped in Qt (#389 - thanks Adam!)
    • โž• added an extra field of view to the camera paramers (#392 - thanks Adam!)
    • ๐Ÿ›  small bugfix when the radius_sphere was different than 1 for renderViewTesselatedSphere
  • v1.2

    September 30, 2011

    โž• Additions, improvements, and optimizations

    • Eliminated 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:
      • getTransFromUnitVectorsZY
      • getTransFromUnitVectorsZY
      • getTransFromUnitVectorsXY
      • getTransFromUnitVectorsXY
      • getTransformationFromTwoUnitVectors
      • getTransformationFromTwoUnitVectors
      • getTransformationFromTwoUnitVectorsAndOrigin
      • getEulerAngles
      • getTranslationAndEulerAngles
      • getTransformation
      • getTransformation
      • saveBinary
      • loadBinary
    • Made major changes in pcl::registration (r2503)

      • all registration code now uses 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 setTransformationEstimation
      • simplified TransformEstimationSVD code
      • implemented TransformEstimationLM 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 screen
      • PCL_VISUALIZER_REPRESENTATION_WIREFRAME for representing data as a surface wireframe on screen
      • PCL_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

      • removed the libfeatures dependency for `libpcl_surface (r2337)
      • removed the libpcl_io dependency from libpcl_surface (r2354)
      • removed libpcl_io dependency from libpcl_keypoints (r2364)
      • removed libpcl_io dependency for libpcl_filters (r2365)
      • removed 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)

    • 0๏ธโƒฃ 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:

      • fixed triangle meshing (left and right) that create quads and always cut them in a fixed direction,
      • adaptive meshing that cuts where possible and prefers larger differences in 'z' direction, as well as
      • quad meshing
    • ๐Ÿ‘Œ improved OrganizedFastMesh's removal of unused points (r1996)

    • CMake changes (r2592)

      • changed the install dir of PCLConfig.cmake in Windows
      • renamed CMAKE_INSTALL_DIR into PCLCONFIG_INSTALL_DIR
      • NSIS installer will add a key in Windows Registry at HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\PCL to help CMake find PCL (CMake >= 2.8.5) (NSIS.template.in)
      • reordered CMAKE_MODULE_PATH entries, for CMake to pick up our NSIS.template.in
      • fixed CPACK_PACKAGE_INSTALL_REGISTRY_KEY value

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  fixed bugs in PointCloud

      • in swap(), the point data was swapped, but the width and height fields were not (r2562)
      • in push_back(), adding points did not update the width/height of the point cloud (r2596)
      • in insert()/erase(), inserting or erasing points did not update the width/height of the point cloud (r2390)
    • ๐Ÿ›  fixed bugs in SampleConsensusModelRegistration

      • if target_ wasn't given, would crash with a boost shared uninitialized error (r2501)
      • homogeneous coordinates were wrong (r2502)
    • ๐Ÿ›  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

      • #139 (FPFHEstimation for non-trivial indices) (r2528)
      • #303 (make pcd_viewer reset the camera viewpoint when no camera given) (r1915)
      • #338 (cylinder segmentation tutorial was referring to a different file) (r2396)
      • #339 (the direction of the normal was wrongly estimated when setSearchSurface was given) (r2395)
      • #340 (keep_organized_ bug in ConditionalRemoval) (r2433)
      • #342 (Allow QT to be used with PCL Visualizer) (r2489)
      • #343 (empty() member function of a point cloud is not const) (r2440)
      • #350 (Misspelling in 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

      • Windows tutorial (CMAKE_INSTALL_DIR => CMAKE_INSTALL_PREFIX) (r2595)
      • registration/icp.h documentation (reg => icp) (r2515)
      • several apps/tools console messages (wotks => works) (r2491)
      • how_features_work.rst tutorial (Muechen => Muenchen) (r2484)
  • v1.1.1

    August 31, 2011
    • ๐Ÿ›  issues fixed: #224, #277, #288, #290, #291, #292, #293, #294, #295, #296, #297, #299, #302, #318, #319, #324, #325, #329
    • โž• Additional fixes:

      • fixed a segfault in PCLVisualizer::addPointCloudNormals
      • fixed PCLVisualizer hanging on 'q' press
      • fixed a bug in MLS
      • fixed a bug in test_io
      • fixed a bug in PointCloudColorHandlerGenericField
      • fixed a bug when writing chars to ASCII .PCD files
      • fixed several errors "writing new classes" tutorial
      • added missing parameter setter in the "concave hull" tutorial
  • v1.1.0

    July 18, 2011
    • ๐Ÿ†• new 3D features:

      • SHOT (Signature of Histograms of Orientations)
      • PPF (Point-Pair Features)
      • StatisticalMultiscaleInterestRegionExtraction
      • MultiscaleFeaturePersistence
    • ๐Ÿ‘Œ improved documentation:

      • sample consensus model coefficients better explained
      • new tutorials (RadiusOutlierRemoval, ConditionalRemovalFilter, ConcatenateClouds, IterativeClosestPoint, KdTreeSearch, NARF Descriptor visualization, NARF keypoint extraction, ConcaveHull, PCLVisualizer demo)
    • ๐Ÿ†• new surface triangulation methods:

      • MarchingCubes, MarchingCubesGreedy
      • OrganizedFastMesh
      • SurfelSmoothing
      • SimplificationRemoveUnusedVertices
    • ๐Ÿ†• new registration methods:

      • PyramindFeatureMatching
      • CorrespondenceRejectorSampleConsensus
    • ๐Ÿ†• new general purpose classes/methods:

      • Synchronizer
      • distance norms
      • TextureMesh
      • PointCloud.{isOrganized, getMatrixXfMap)
      • SACSegmentation now works with PROSAC too
      • PCDViewer now reads VTK files
      • new Mouse and Keyboard events for PCLVisualizer
      • PCLVisualizer.{addText3D, addCoordinateSystem (Eigen::Matrix4f), deleteText3D, updatePointCloud, renderViewTesselatedSphere, resetCameraViewpoint, getCameras, getViewerPose}
      • ONIGrabber, DeviceONI
      • ImageRGB24, IRImage
      • generic FileReader + FileWriter
    • optimizations:

      • faster pipelinening by not recreating a fake set of indices everytime
      • rendering optimizations for PCLVisualizer
      • copyPointCloud is now faster and can copy the intersections of the fields in both input datasets
      • VoxelGrid is now ~20Hz for Kinect data
    • ๐Ÿ†• new applications:

      • VFH NN classification
      • 3D concave hulls
      • 3D convex hulls
      • ICP registration
      • Planar segmentation
      • Stream compression
      • Range image viewer
      • Voxel Grid
      • IntegralImage normal estimation
    • ๐Ÿ›  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

  • v1.0.1

    June 29, 2011

    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

    • โž• added VTK file visualization to pcd_viewer
    • hiding the cminpack/FLANN headers, thus reducing compile time for user code
    • ๐Ÿ›  fixed IntegralImageNormalEstimation
    • โšก๏ธ tutorial updates and fixes + new tutorials. Changed tutorial structure to split CPP files from RST text.
    • ๐Ÿ‘ better doxygen documentation for many functions
    • ๐Ÿ›  fixed a bug in ConditionalRemovalFilter where the keep_organized condition was reversed
    • โœ‚ removed BorderDescription and Histogram<2> from the list of explicit template instantiations
    • โž• added PointXY point registration macros
    • โž• added ExtractIndicesSelf unit test
    • ๐Ÿ›  fixed a lot of alignment issues on 32bit architectures
    • PCD ascii files now have each individual line trimmed for trailing spaces
    • internal changes for PCDReader/PCDWriter, where NAN data is represented as "nan"
    • ๐Ÿ— sped up compilation with MSVC by adding /MP for multiprocessor builds
    • โž• added a voxel grid command line tool filter
    • ๐Ÿ›  issues fixed: #242, #207, #237, #215, #236, #226, #148, #214, #218, #216, #196, #219, #207, #194, #192, #183, #178, #154, #174, #145, #155, #122, #220
    • โž• added support for PathScale pathcc compiler
    • โž• added support for Intel icc C++ compiler
    • โž• added support for GCC 4.6 C++ compiler
    • โž• added preliminary support for Clang C++ compiler
    • FindPCL.cmake and PCLConfig.cmake completed
  • v1.0.0

    May 11, 2011
    • ๐Ÿ‘ท completely standalone build system using CMake (not dependent on ROS anymore)
    • ๐ŸŽ tested on Win32/Win64, Linux (32/64) and MacOS (installers provided for all 3rd party dependencies and PCL)
    • separated the entire codebase into multiple libraries that depend on each other. separate CMake declarations for each individual library.
    • provide a FindPCL.cmake to ease integration
    • ๐Ÿ“š many new unit tests + tutorials + improved Doxygen documentation (check http://www.pointclouds.org/documentation and http://docs.pointclouds.org)
    • ๐Ÿ†• new liboctree interface for nearest neighbor/radius search with Octrees, change detection, and Point Cloud compression!
    • โž• added concave/convex hulls using QHull (dropped our old ConvexHull2D class)
    • ๐Ÿ›  pcl::Registration improvements and bugfixes, sped up inner loops, added alignment methods with initial guess
    • ๐Ÿ›  pcl::visualization bugfixes: multiple interactors are now possible, better threading support, sped up visualization (2-3x), addPolygonMesh helper methods
    • ๐Ÿ†• new grabber interface for OpenNI-compatible camera interface: all 3 OpenNI cameras are supported (Kinect, Asus XTionPRO, PSDK)
    • ๐Ÿ†• new grabber interface for streaming PCD files
    • ๐Ÿ›  pcl::io bugfixes for PCD files using binary mode
    • ROS_ macros are no longer valid, use PCL_ instead for printing to screen
    • ๐Ÿ†• new PCA implementation, up to 4-5 times faster eigen decomposition code
    • ๐Ÿ†• new CVFH feature, with higher performance than VFH for object recognition
  • v0.10.0

    February 25, 2010
    • Re-versioned 0.9.9 to follow patch-versioning semantics.
  • v0.9.9

    February 22, 2010
    • [[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]]

      • MovingLeastSquares nodelet improvements
      • Changed serialization of point clouds to ship the data as-is over the wire, padding included (#4754). Implemented subscriber-side optimizations to minimize memcpys. Will do one memcpy for the whole point cloud if the data layout is an exact match.