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