PCL v1.6.0 Release Notes

Release Date: 2012-07-15 // almost 12 years ago
  • The most notable overall changes are:

    PCL Tools:

    • โž• Added a tool for interfacing the marching cubes algorithms
    • โž• Added a PLY To PCD conversion tool
    • โž• Added a command line tool for transforming datasets based on their viewpoint
    • Implemented feature #605: New octree visualizer example (Contributed by Raphael Favier. Thanks!)
    • ๐Ÿ’พ Updated "openni_save_image" to save both RGB and depth images as TIFF
    • โž• Added two command line tools for converting PCD data into PLY and VTK formats
    • ๐Ÿ›  Fix for #504: Make ShapeContext and SpinImage uniform (thanks David!)

    libpcl_common:

    • ๐Ÿ›  Fixed bug #658: Compiler error: undefined reference for getEulerAngles in pcl/common (thanks Gioia!)
    • ๐Ÿšš Moved towards a unified "eigen.h" header that only includes the Eigen headers that we need.
    • โž• Added boost 1.48 and 1.49
    • โž• Added a default "PointRepresentation" type for "ShapeContext" (thanks Elizabeth!)
    • โž• Added a new "PlanarPolygon" class for representing 2D planar polygon regions
    • โž• Added "SetIfFieldExists" functor helper to copy data from a variable into a point field, if it exists
    • โž• Added a helper functor ("CopyIfFieldExists") for copying out specific data out of a PointT field. See "test_common.cpp" for usage examples
    • โž• Added point value initialization by default in constructors for "PointXYZI", "Normal", "PointXYZHSV", "PointXYZRGBL", and "PointXYZRGB"
    • โšก๏ธ Updating transforms.hpp to ensure that point fields are copied when applying affine transform to a specific set of indices.
    • โž• Added error messages on failure of aux functions for PointCloud2, "pcl::concatenatePointCloud" and "pcl::concatenateFields"
    • Fixed win32 compilation error on test_plane_intersection
    • โœ… Implemented plane intersection feature (feature #644) with a related unit test
    • โž• Added kissfft library
    • ๐Ÿ›  Bugfix of eigen22 version for smallest eigenvalue/vector
    • โž• Add specialization for pcl::RGB point type
    • ๐Ÿšš Intensity field accessor moved from keypoints/sift to common to be shared by others
    • ๐Ÿ›  Fixed some valid usages of point traits (e.g. static_cast::type>(...) ) on GCC 4.4.3 by explicitly instantiating some assert template long before it should actually be needed.
    • โž• Added ESF Histogram 640 to point types

    libpcl_filter:

    • โž• Added command line option "-keep" to preserve the organized data structure after a "Passthrough" filter
    • Implemented feature #663: flexible comparison for conditional_removal filter (Thanks Julian!)
    • ๐Ÿ›  Fix for bug #672: ijk grid coordinates in VoxelGrid computed differently in different functions (thanks Nicholas!)
    • ๐Ÿ›  Fix for #572: Example "Euclidean Cluster Extraction" crashes / bug in VoxelGrid filter
    • ๐Ÿ‘Œ Improved performance of 3x getFieldIndex and removed dependency on pcl_io
    • ๐Ÿ›  Fixed and implemented feature #518: VoxelGrid<> performance improvement (roughly 50+ times) (thanks Radoslaw!)
    • ๐Ÿ›  Fixed the visual studio compilation error described in feature #614 (thanks Remus!)
    • Fixed bug #674 (Elements in leaf_layout_ in VoxelGrid are not reset between calls to VoxelGrid::filter), Thanks Nicholas for the patch!
    • โšก๏ธ Work on issue 614: updated the PassThrough filter to derive from FilterIndices instead of Filter
    • ๐Ÿ›  Fix: use a makInfinite function to annihilate points in zero_padding cases
    • โž• Add new class to handle convolution in 3D space for radial basis kernel
    • Modifying VoxelGridCovariance to allow for control over minimum number of points and eigen value inflation for singularity prevention.

    libpcl_visualization:

    • Overloaded "addRectangle" in "ImageViewer" with several useful methods that take as input 3D min-max points and organized datasets, as well as image masks to create 2D rectangles on screen
    • ๐Ÿ“‡ Renamed "addBox" to "addFilledRectangle" in "ImageViewer"
    • โž• Added "addPlanarPolygon" methods for "ImageViewer" to display planar polygonal contours in the image
    • โž• Added new "addMask" methods to "ImageViewer" for displaying 2D image masks from a given "PointCloud"
    • "PCLVisualizer" now has a new "addCube" method for passing {x, y, z}_{min, max} directly to the screen (thanks Jeremie!)
    • ๐Ÿ†“ Patch for two cases of mismatched new/free cases for PCL<->VTK data exchange (thanks Peter!)
    • ๐Ÿ›  Fixed a problem with "removeLayer" which was causing shapes to flicker on screen on sequences like: "removeLayer; addShape; spinOnce"
    • โž• Added "addLine" to "ImageViewer" for displaying 2D lines
    • โž• Added "PCLVisualizer::close" to close the interactor window and "PCLVisualizer::set{Size, Position}" to set the window size and position on screen added image viewer to the docs
    • โž• Added better support for 2D image visualization (via "pcl::visualization::ImageViewer"): add/remove layers with different transparency, add 2D shapes (rectangles, circles, points, etc)
    • โž• Added "wasStopped" to "ImageViewer" to check if the window has been closed
    • ๐Ÿ›  Fixed an issue in pcd_viewer where the PointPicking callback wasn't functioning properly
    • โž• Added "setPosition" to "pcl::visualization::ImageViewer" for allowing the image viewer to be moved somewhere else on screen
    • โž• Added two additional "addPointCloud" helpers for directly displaying "sensor_msgs::PointCloud2" data
    • Added "addPointCloud" method for "sensor_msgs::PointCloud2" data (useful to bypass the conversion to XYZ for "pcd_viewer")
    • โž• Added the capability to remove a cloud when "removeShape" is called, to preserve API backward compatibility (a "PolygonMesh" is not treated as a "CloudActor" inside "PCLVisualizer")
    • ๐Ÿ›  Fixed a bug where the scalars were not updated properly on "updatePointCloud" thus causing VTK warnings on the console
    • ๐Ÿ›  Fixing issue #105 (PCLVisualizer::spinOnce don't work on Win32 system). Thanks Thibault and Alessio.
    • โž• Added "PointXYZRGBA" callbacks for "OpenNIGrabber" and "PCLVisualizer".
    • ๐Ÿ›  Fixed two bugs where a segfault would occur in "addPolygonMesh" when the input cloud would be empty, as well as #563 : PCLVisualizer::addPolygonMesh crash (thanks Mourad!)
    • ๐Ÿ›  Fixed a bug where changing the point color using "setPointCloudRenderingProperties" would not update the actor's colors on screen
    • ๐Ÿ›  Fix for #532: "PCLVizualizer::addCoordinateSystem()" switch from "Eigen::Matrix4f" to "Eigen::Affine3f" (thanks Aurel!)
    • ๐Ÿ›  Fix for #524: ctrl problem with pcd_viewer (thanks Mourad!)
    • Adding opt in flag -use_vbos to pcl_visuzlier. It's still quite buggy, but shouldn't affect the visualizer unless this flag is passed.
    • Added vtkVertexBufferObject/Mapper and moved pcl_image_canvas_source2d
    • โž• Added case handling where an actor might not have a valid viewpoint_transformation matrix resulting in a seg fault if pressing ALT+R
    • ๐Ÿ›  Fixed bug in displaying addCoordinateSystem
    • โž• Added method to visualize intensity gradients
    • โž• Added zoom functionality for ALT + Scroll-Wheel
    • Merged openni_viewer_simple with openni_viewer with all the available options except XYZI

    libpcl_octree:

    • ๐Ÿ›  Fixed bug #693 - bounding box adaption affected change detection results
    • Applied patch by Robert Huitl, Issue #651, define maxVoxelCount in octree raycasting
    • ๐Ÿ›  Fixed OSX compiler warnings
    • ๐Ÿ›  Fixed bug #683 - octree depth changes during stream compression
    • โž• Added new octree key class
    • โž• Added bounding box checks in method isVoxelOccupiedAtPoint (octree pointcloud class)
    • โœ‚ Removed maxKeys limit in octree key generation method
    • โž• Added range checks for integer keys in octree classes, extended octree key class
    • ๐Ÿ›  Fixed bug #620 (octree search fails if point cloud with indices is given) in octree pointcloud class

    libpcl_io:

    • โž• Added "DepthImage" signals/callbacks for "PCDGrabber"
    • ๐Ÿ‘Œ Support for loading TAR-ed LMT files
    • โž• Added support for TAR-PCD files for "PCDGrabber". Simply use "tar cvf file.tar *.pcd" and use "PCDGrabber" on it afterwards
    • ๐Ÿ›  Fixed a bug in the "PointCloud" feature estimation and I/O regarding the fields "count" property
    • โž• Added a "saveVTKFile" method helper for saving "sensor_msgs::PointCloud2" data
    • โž• Added support for reading PCD ascii and binary files (binary_compressed not implemented yet!) for pcl::PointCloud<Eigen::MatrixXf> datatypes.
    • โœ… Implemented and tested a fix for feature request #558: Implement IO for PointCloud
    • โž• Adding missing openni_device files from install
    • ๐Ÿ›  Fixed a bug in ply reader
    • ๐Ÿ›  Fixed bug #683 - dropping empty point clouds during stream compression
    • โž• Add functions to convert between PCL and VTK data structures.
    • Handle red_diffuse, blue_diffuse and green_diffuse vertex properties
    • ๐Ÿ›  Fix bug where normals were written before RGB
    • ๐Ÿ›  Bugfix for #627 - Wrong include path for ply header

    libpcl_features:

    • ๐Ÿ›  Fixed bug #676 in PCL Feature Search (thanks Adam!)
    • ๐Ÿ›  Fixes compilation problem on Windows due to size_t variable in omp loop.
    • Implemented feature request #661: border management in integral image normal estimation
    • ๐Ÿ›  Fixed PFHRGBEstimation bug, thanks Luis
    • ๐Ÿ› Bug fix in SHOT feature, thanks wack
    • ๐Ÿ›  Fixed a bug which caused some normals to point in the wrong direction
    • โž• Added Camera Roll histogram
    • ๐Ÿ›  Fix bug in index used for normal selection
    • โž• Added esf feature
    • โž• Added setViewPoint functionality and useSensorOriginAsViewPoint method to reset the viewpoint
    • ๐Ÿ›  Fixed bug #576 - CVFH respect setIndices now
    • ๐Ÿ›  Fixed issue #550: Uninformative error in VFHEstimation (thanks David!)
    • ๐Ÿ›  Fix #527: Bug in IntegralImageNormalEstimation (thanks Christoph!)
    • ๐Ÿ›  Fixed #544: overflow in implicit constant conversion warnings (thanks David!)
    • 0๏ธโƒฃ Modified SHOT omp so that the default computation of the reference frames
    • ๐Ÿ›  SHOT: Fixed invalid access when keypoints have increased from the previous call.
    • Setting sensor origin and orientation correctly for normal point cloud
    • ๐Ÿ›  Fixed a bug in estimating the orientation of the normal (view point wasn't initialized in the constructor)
    • ๐Ÿ› Bug fix: if the cloud is not dense search for neighbours could raise an excpetion
    • ๐Ÿ› Bug fix: SHOT accepts only radius search

    libpcl_segmentation:

    • ๐Ÿ›  Fixed a few issues in the new segmentation classes where some comparators didn't have the appropriate "Ptr" and "ConstPtr" well defined
    • ๐Ÿ›  Fixed a bug where points passed onto the search method were not checked for NaN/Inf in "pcl::SegmentDifferences"
    • Added a missing "setDistanceFromOrigin" to "SACSegmentationFromNormals" for "SACMODEL_NORMAL_PARALLEL_PLANE" (thanks A. Barral)
    • ๐Ÿ›  Fix for #134 (Prism Extraction on Table top (flipping normal fails))
    • ๐Ÿ›  Fixed a segmentation fault in "SACSegmentationFromNormals" caused by calling "segment" without passing the input XYZ or normal data
    • ๐Ÿ›  Fixed a bug in organized connected component segmentation. Previously would crash if the first pixel had a valid depth (doesn't occur on kinect data).
    • ๐Ÿ›  Bugfix of issue # 675: Euclidean cluster extraction access violation. Thanks to Icy for helping find the solution
    • ๐Ÿ›  Fixed bug #673 in EuclideanClusterExtraction
    • โž• Added new code for min cut segmentation
    • ๐Ÿ›  Fixed bug #681: member variable was not set in constructor (thanks Bhaskara!)
    • โž• Added a threshold to MultiPlaneSegmentation for curvature, allowing us to discard smooth (but non-planar) regions.
    • Added optional projection for multi_plane_segmentation.
    • โž• Added some new comparators for use with OrganizedConnectedComponents including RGB and edge aware
    • โž• Added additional fucnction call for segmentAndRefine.
    • โž• Added a comparator for doing euclidean clustering on organized point clouds.
    • โž• Added fast SeededHueSegmentation implementations
    • ๐Ÿ›  Fixed segfault in multi plane refinement and functorized the comparison.
    • ๐Ÿ‘Œ Improved MultiPlaneSegmentation to allow refinement of regions, and support different comparators.
    • ๐Ÿ†• New classes AutomatedSegmentation, AutomatedTreeSegmentation
    • โž• Added OrganizedConnectedComponentSegmentation, which is a general class for use with organized point clouds and can take user specified comparators.
    • โž• Added OrganizedMultiPlaneSegmentation which returns all planes in an organized cloud, along with the PlaneCoefficientComparator needed to do this.

    libpcl_surface:

    • ๐Ÿ›  Fixed a grave bug where "setIndices" was not used in "ConvexHull"
    • โž• Added fix for #562: pcl::ConcaveHull crashes on an empty cloud (thanks Mourad!)
    • โž• Added "PCLSurfaceBase" base class for "MeshConstruction" and "SurfaceReconstruction", to unify the API around "setSearchMethod(&Search)" and "reconstruct(&PolygonMesh)"
    • โž• Added GPU accelerated convex hull. 7x for Ramesses dataset (700k points)
    • โž• Added a setDimension function to concave hull, so users can specify desired dimensionality of the resulting hull. If no dimension is specified, one will be automatically determined.
    • ๐Ÿ›  Fixed bug #692 - MovingLeastSquares indices issues
    • Added curve fitting and trimming of surfaces to examples/surface/example_nurbs_fitting_surface.cpp
    • โž• Added iterative fitting routines for curve fitting surface::on_nurbs::Triangulation - added conversion functions for nurbs curve to line-polygon - added conversion functions for nurbs surface and curve to PolyMesh
    • โž• Added flag to enable/disable usage of UmfPack for fast solving of sparse systems of equations - added triangulation functions to convert ON_NurbsSurface to pcl::PolygonMesh
    • โž• Added bug fix in ConcaveHull, thanks to summer.icecream
    • โž• Added marching cubes using RBF and Hoppe SDF
    • Pushed new functions that perform texture-mapping on meshes.
    • ๐Ÿ›  Fix: issue #646 (vtk_smoothing not copied)
    • โž• Added new functionalities to TextureMapping: Find occlusions based on raytracing in octrees, UV mapping based on Texture resolution and camera focal length.
    • ๐Ÿ˜Œ Relaxing dimensionality check threshold on concave_hull, so that 3D hulls should no longer be calculated on 2D input.
    • โž• Added poisson filter

    libpcl_keypoints:

    • โž• Added combined Harris keypoint detector to detect corners in image, in 3D and combined ones
    • ๐Ÿ›  Fix bug #691 (Compiler error: undefined reference for setMinimalDistance in pcl/keypoints/harris_keypoint2D)
    • ๐Ÿ›  Fixed the #637 pitfall in harris3D and harris6D
    • โž• Added implementation of 2D corner detectors

    libpcl_geometry:

    • โž• Added a new PCL library for computational geometry
    • โž• Added bugfix to remove self intersecting polygons
    • ๐Ÿ›  Fixed some refinement corner cases for polygon approximation
    • โž• Added line iterator class for iterating over e.g. an image/organized cloud in the pixel space.

    libpcl_search:

    • โž• Added NaN checks in "pcl::search::FlannSearch"
    • Skip infinite neighbor candidates in pcl::search::OrganizedNeighbor::radiusSearch
    • โž• Added point projection method for organized search

    libpcl_tracking:

    • ๐Ÿ›  Fixed issue #514: SpinImages segfault when using setKSearch (thanks David!)
    • ๐Ÿ›  gcc-4.7 compatibility issues in pcl::tracking fixed. Thanks to Rich Mattes

    libpcl_sample_consensus:

    • Implemented feature #589: Add sac_model_cone and sac_model_normal_sphere (contributed by Stefan Schrandt. Thanks!)
    • ๐Ÿ›  Fix for #616: pcl::ProgressiveSampleConsensus::getRandomSamples unimplemented (thanks Mourad!)
    • ๐Ÿ›  Fix for #498: Bug in setOptimizeCoefficients for pcl::SACMODEL_SPHERE.
    • ๐Ÿ›  Fixed bug #648: code was checking for plane perpendicular to given axis instead of parallel
    • Applied patch for feature request #649: Locally constrained model generation for Sample Consensus

    libpcl_registration:

    • ๐Ÿ›  Fixed issue #619: Cannot call pcl::registration::TransformationValidationEuclidean::validateTransformation (thanks Raphael!)
    • โž• Added code for #592: correspondence estimation based on normal shooting (coded by Aravindhan. Thanks!)
    • ๐Ÿ‘‰ Fixed #533: WarpPointRigid missing EIGEN_MAKE_ALIGNED_OPERATOR_NEW (thanks Radoslaw!)
    • Correct overlapping grid distribution in 2D NDT implementation