Releases: PointCloudLibrary/pcl
Releases · PointCloudLibrary/pcl
pcl-1.8.1
ChangeList
- Replaced
make_shared
invocations on aligned allocated vars
[#1405] - Created an issue template for bug reporting
[#1637] - PCL logo image is now locally available
[#1677] - Updated the Windows all in one installer for MSVC15
[#1762] - Added compile support to VTK 7.1
[#1770] - Fixed badges markup in README.md
[#1873] - Replaced C-style
sqrtf
withstd::sqrt
[#1901]
CMake:
- Tweaks to PCL_DEFINITIONS behavior (to be deprecated in future
versions)
[#1478] - VTK directory can now be manually specified during configuration
[#1605] - Updated the find Boost cmake macro to support the latest versions plus
exported definitions now give priority to finding the same Boost version
PCL was compiled with.
[#1630] - Corrected PCL_ROOT in PCLConfig.cmake
[#1678] - Removed automatic override of VTK_LIBRARIES
[#1760] - Updated find boost versions
[#1788]
[#1855]
[#1856] - Updated CUDA compute capabilities
[#1789] - Extend linking of
delayimp.lib
to all MSVC version
[#1823] - Removal of
MSVCxx
variables
[#1830] - Fixed path link to Documents of Windows Start-Menu
[#1857] - Fixed CPack for Documents
[#1858] - Fixed bug present when Ensenso SDK path included spaces
[#1875] -D_FORCE_INLINES
definition added for CUDA targets to prevent
issues between old versions of the CUDA Toolkit and new versions
of gcc
[#1900]- Implemented new versioning scheme for PCL, employing the suffix
-dev
in between releases.
[#1905] - Corrected search paths for Eigen on Windows
[#1912] - SSE definitions are now exported and cleanup of Eigen's
definitions
[#1917] - Added support to dynamic linking against FLANN on Windows
[#1919] - Add new search path for GTest to the finder script
[#1920] - Fix discovery of PCL deployed out of install path
[#1923]
libpcl_2d:
- Removed the non-free lena-grayscale-png image :(
[#1676] - 2d library is no longer generated since it contained no symbols
[#1679]
libpcl_common:
- Changed default alpha value to 255 on all RGB(A) point types
[#1385] - Fixed an issue preventing aligned memory allocation on 32-bit Windows
systems
[#1665] - Fixed compile error on test_common on MSVC
[#1689] - Fixed parallel plane test condition on
pcl::planeWithPlaneIntersection
[#1698] - Fixed endless loop condition in
compute3DCentroid
[#1704] toPCLPointCloud2
is not resilient to an empty pointcloud input
[#1723]- Normal accumulator
normalized()
is now resilient to a 0 filled vector
[#1728] - Defined additional types in
PointCloud
to ensure STL container
compatibility
[#1741] - Aligned malloc now works on Android as well
[#1774] - Added missing include to boost shared_ptr in vertices
[#1790] - Prevent incorrect copy of adjacent point in
fromPCLPointCloud2()
[#1813] - Restored
Eigen::umeyama
for Eigen 3.3+
[#1820]
[#1887] - Fixed type in deprecation messages
[#1878] - Improved support for mingw aligned allocation
[#1904] - Added test for macro
_USE_MATH_DEFINES
to avoid warnings
[#1956]
libpcl_cuda:
- Fixed macro definitions for the Windows platform
[#1568]
libpcl_features:
- NormalEstimation[OMP] and FPFHEstimation[OMP] are now instantiated for
the same types as the non OMP variants.
[#1642] - Prevention of the addition of duplicate keys in
PFHEstimation
[#1701] - Bug fixes in OUR-CVFH
[#1827] - Fixed incorrect initialization of SHOT
[#1859]
[#1876]
libpcl_filters:
- ExtractIndices filter now aborts prematurely and prints error verbose
in case it detects an index which exceeds the size on the input data
[#1670] - Potential reduction of computational time of
ModelOutlierRemoval
[#1735] - Improved code readability in CropBox
[#1817]
libpcl_gpu:
- Added support to NVidia Pascal GPUs
[#1824] - Fixed compilation error in KinfuLS
[#1872] - Fixed CUDA architecture check
[#1872]
libpcl_io:
- RGB values are now always saved as uint32 on PCD files
[#1385] - Fixed find RealSense macro and compilation error with RealSenseGrabber
on Windows
[#1560] - Unified verbose on OctreePointCloudCompression
[#1569] - Improved performance on saving PLY, OBJ and VTK files
[#1580] - Added support to the transparency property
Tr
on pcl::MTLReader
and fixed issue with parsing of the material's properties.
[#1599] - Fixed function signature mismatch in auto_io
[#1625] - Fix
ASCIIReader::setInputFields
interface
[#1690] - Adopted pcl_isnan in test_buffers to prevent compilation problems on
MSVC12
[#1694] - Fixed incorrect laser number test condition in VLP Grabber
[#1697] - Fixed bug verbose output of compression statistics
[#1749] - Fixed a bug in the parsing of PLY headers
[#1750] - Replacement of
boost::math::isnan
bypcl_isnan
[#1766] - Binary files written by
PCDWriter
now have the same permissions
as the ASCII ones
[#1779] - Fixed ODR violation when compiling with both OpenNI and OpenNI2
[#1818] - PLYReader now also accepts the property
vertex_index
[#1847] - Fixed bug in return value of
pcl_converter
[#1903]
libpcl_keypoints:
- Fixed memory leak in
ISSKeypoint3D
[#1815]
libpcl_octree:
- Fixed unexpected octree boundaries' reduction
[#1532]
[#1906] - Fixed octree precompilation mechanism
[#1639]
[#1916] - Fixed invalid cast in
OctreePointCloudVoxelCentroid
[#1700]
`libpcl_recognit...
pcl-1.8.1rc2
Update Ensenso tutorial for Ensenso X devices
pcl-1.8.1rc1
Bump version to 1.8.1
pcl-1.8.0
pcl-1.7.2
We are proud to announce the new PCL version 1.7.2. This release incorporates more than 300 pull requests merged during the last eleven months. Together with dozens of bug fixes it brings support for VTK6 and OpenNI 2.
The most notable changes are:
- Added support for VTK6
[#363] - Removed Google Test from the source tree and added it as a system dependency
[#731] - Added support for QHull 2012 on non-Debian platforms
[#852]
libpcl_common:
- Added
BearingAngleImage
class
[#198] - Added
pcl::CPPFSignature
point type
[#296] - Added
getRGBAVector4i()
,getBGRVector3cMap()
, andgetBGRAVector4cMap()
to all point types containing RGB/RGBA fields
[#450] - Added a family of "has field" functions to check presence of a particular
field in a point type both at compile- and run-time
[#462] - Added a function to copy data between points of different types
[#465] - Added test macros for equality/nearness checks
[#499] - Added
descriptorSize()
to all point types with descriptors
[#531] - Added possibility to copy a cloud inside another one while interpolating
borders
[#567] - Added a function to determine the point of intersection of three non-parallel
planes
[#571] - Fixed a bug in HSV to RGB color conversion
[#581] - Added a new
CentroidPoint
class
[#586] - Templated intersection computation functions on scalar type
[#646] - Templated functions in 'eigen.h' on scalar type
[#660] - Added functions to transform points, vectors, lines, etc.
[#660]
libpcl_features:
- Added a simple implementation of CPPF using normalised HSV values in the
feature vector
[#296] - Added
MomentOfInertiaEstimation
andROPSEstimation
features
[#319] - Fixed a problem in
OURCVFHEstimation::computeRFAndShapeDistribution()
[#738] - Fixed undefined behavior in
OURCVFHEstimation::computeFeature()
[#811] - Fixed memory corruption error in OUR-CVFH
[#875]
libpcl_filters:
- Added a function to set the minimum number of points required for a voxel to
be used inVoxelGrid
[#434] - Added
GridMinimum
filter
[#520] - Added a morphological filter that operates on Z dimension
[#533] - Added progressive morphological filter to extract ground returns
[#574] - Added a filter to remove locally maximal points in the z dimension
[#577] - Added an approximate version of the progressive morphological filter
[#665] - Added
ModelOutlierRemoval
class that filters points in a cloud based on the
distance between model and point
[#702]
libpcl_io:
- Added experimental version of an OpenNI 2.x grabber
[#276]
[#843] - Added support for IFS file format
[#354]
[#356] - Added possibility to load
PCLPointCloud2
from OBJ files
[#363] - Fixed loading and saving of PLY files
[#510]
[#579] - Fixed race conditions in
PCDGrabber
[#582] - Fixed multi openni grabber buffer corruption
[#845] - Fixed incompatibility with Boost 1.56 in
LZFImageWriter
[#867] - Fixed a bug in
PLYReader
which lead to deformation of point clouds when
displayed inCloudViewer
orPCLVisualizer
[#879]
libpcl_kdtree:
- Fixed double memory free bug in
KdTreeFLANN
[#618]
libpcl_keypoints:
- Added a method
Keypoint::getKeypointsIndices ()
[#318] - Added keypoints based on Trajkovic and Hedley operator (2D and 3D versions)
[#409]
libpcl_octree:
- Fixed a bug in
OctreePointCloudAdjacency::computeNeighbors()
[#455] - Accelerated
OctreePointCloudAdjacency
building by disabling dynamic key
resizing
[#332] - Fixed a bug with infinite points in
OctreePointCloudAdjacency
[#723]
libpcl_people:
- Added a possibility to define a transformation matrix for people tracker
[#606]
libpcl_recognition:
- Allow PCL to be built against a system-wide installed metslib
[#299] - Fixed a bug in
ObjRecRANSAC::addModel()
[#269] - Added
LINEMOD::loadTemplates()
(useful for object recognition systems that
store templates for different objects in different files)
[#358]
libpcl_registration:
- Fixed
SampleConsensusInitialAlignment::hasConverged()
[#339] - Added
JointIterativeClosestPoint
[#344] - Made correspondence rejectors to actually work with ICP
[#419] - Added
GeneralizedIterativeClosestPoint6D
that integrates Lab color space
information into the GICP algorithm
[#491] - Fixed bugs and optimized
SampleConsensusPrerejective
[#741] - Fixed a bug in
TransformationEstimationSVDScale
[#885]
libpcl_sample_consensus:
- Unified
SampleConsensusModelNormalParallelPlane
with
SampleConsensusModelNormalPlane
to avoid code duplication
[#696]
libpcl_search:
search::KdTree
can now be used with different KdTree implementations
[#81]- Added a new interface to FLANN's multiple randomized trees for
high-dimensional (feature) searches
[#435] - Fixed a bug in the
Ptr
typdef inKdTree
[#820]
libpcl_segmentation:
- Added
GrabCut
segmentation and a show-case application for 2D
[#330] - Updated
RegionGrowingRGB::assembleRegion()
to speed up the algorithm
[#538] - Fixed a bug with missing point infinity test in
RegionGrowing
[#617] - Fixed alignment issue in
SupervoxelClustering
[#625] - Added a curvature parameter to
Region3D
class
[#653] - Fixed a minor bug in
OrganizedConnectedComponentSegmentation
[#802]
libpcl_surface:
- Fixed a bug in
EarClipping
where computation failed if all vertices have
the same x or y component
[#130] - Added support for unequal focal lengths along different axes in texture
mapping
[#352] - Speeded up bilateral upsampling
[#689] - Reduced space usage in
MovingLeastSquares
[#785]
libpcl_tracking:
- Fixed Hue distance calculation in tracking
HSVColorCoherence
[#390] - Added pyramidal KLT tracking
[#587]
libpcl_visualization:
pcl-1.7.1
pcl-1.7.0
We are proud to announce the new PCL version 1.7.
After one year of development, there have been a lot of changes:
- We welcome three new modules: outofcore, people, recognition.
- PCL moved to git and onto Github.
- We separated the PCL and ROS data types. Please read https://github.com/PointCloudLibrary/pcl/wiki/Remove-ROS on how to convert your code.
- We had a flaw in the pcd viewpoint generation. If your point clouds seem to be flipped, please read https://github.com/PointCloudLibrary/pcl/wiki/pcd-viewpoint.
- the geometry lib has been converted into header only, resulting in a ABI change.
- If you are using your own point type, you need to define PCL_NO_PRECOMPILE before including any PCL headers.
The most notable overall changes are:
libpcl_common:
- Added pcl::Intensity and pcl::Intensity8u point types
- Added pcl::RangeImageSpherical sub-class that is more suitable than pcl::RangeImage for some kinds of 360° range images (as discussed in [PCL-users] Range Image Projection)
- Added DefaultPointRepresentationpcl::Narf36 to allow pcl::Narf36 to be used with pcl::search (#915)
PCL Apps:
- Added cloud_composer app
- Added PCLModeler, with a tree view scene explorer and multiple render windows support
- Added client app for the point cloud streaming server
- Added new server app for point cloud streaming to mobile devices (pcl_openni_mobile_server)
- Added a new demo for the connected component segmentation. Includes a QT gui that allows various features to be toggled on/off.
- Added SHOT estimator wrapper using OMP
- Added openni_organized_multi_plane_segmentation to demonstrate the OrganizedMultiPlaneSegmentation class.
libpcl_recognition:
- Added a new tutorial for "libpcl_recognition" for Correspondence Grouping by Tommaso Cavallari (#666)
- Added support for .LMT file loading (which are TARed files for PCD masks and SQMMT linemod templates)
- Changes in the computation of the modality to improve performance
- Fixed a compilation error on windows; for some reason 'NULL' needs to be explicitly casted to the pointer type
- Added a model library class used for maintaining the object models to be recognized.
- Changed the interface to make it less confusing to use.
- Added a couple useful overloads for "Houg###Grouping" and "GeometricConsistencyGrouping"
- Added CRHAlignment class.
- Added Papazov HV method.
- Fixed a bug in Poisson surface reconstruction that was causing the unit test to fail
- Added option for automatic selection of number of features in extractFeature
- Added a new greedy hypotheses verification method.
- Added semi scale invariant linemod template detection
- Fixed RF search radius in "Houg###Grouping"
- Fixed some bugs in detection refinement along viewing direction
- Fixed bug in LineRGBD::computeTransformedTemplatePoints (template point cloud's width and height fields were not set)
- Converted uses of PointXYZRGB to PointXYZRGBA; converted std::cerr messages to PCL_DEBUG; minor reformatting to keep lines under 120 characters
- Fixed some bugs related to bounding box computation and computation of transformed template point clouds
- Added functionality to specify an object ID when loading templates in LineRGBD;
- Added "GeometricConsistencyGrouping" clustering class
- Added high level interface for RGBD version of linemod (not all parts are implemented yet)
- Added SSE optimizations to improve detection speed
- Added Ransac Correspondence Rejection into Houg###Grouping
- Changed method for selecting features in color gradient modality
- Added "CorrespondenceGrouping" abstract base class for correspondence grouping in pcl_recognitio
- Added cosine approximation in score computation
- Added structure for hypotheses verification methods. Base abstract class
libpcl_keypoints
- Added implementation of the Intrinsic Shape Signature keypoint detector
- fixed crash caused by setNormals() in HarrisKeypoint3D (related to #745)
libpcl_outofcore:
- Added support for PointCloud + gen LOD
- Added PointCloud2 support for outofcore queries via new "queryBBIncludes" method
- Added "copyPointCloud" support for PointCloud2 without indices
- Added feature: outofcore binary compressed pcd files to store point data on disk
- Bug fix: outofcore write buffer constant limitation fixed so outofcore_process will work with large 20M+ point TRCS data sets
- Constants for write buffer changed to 2e12 to support insertion of very large point clouds until new serialization is implemented
- Added getVoxelSideLength to octree_base for displaying of nodes in visualizer
libpcl_search:
- FlannSearch: fixed wrong typedef (::Ptr would break if FlannDistance!=flann::L2) and compiler error
- Added new option in
FlannSearch
: FLANN KMeans Tree can now be uses as the search algorithm
libpcl_visualization:
- Added specific methods to handle monochrome images represented by a PointCloud or a PointCloud
- Add area selection option to PCLVisualizer so user can get a whole area indexes
- Fix the ImageViewer shapes overlay using vtkContextItem so they now appear with transparent background
libpcl_tools:
- Added a PNG to PCD converter
libpcl_io:
- Added support for the Velodyne High Definition Laser (HDL)
- Add support for foo/bar vertex property in PLY file reading
About time
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::PointCloudEigen::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!)
- 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 poin...
Better late than never
The most notable overall changes are:
- new framework for PCL examples in the example/ folder
- added the ICCV 2011 tutorial code to the list of bundled applications
- a brand new PCL tracking library (
libpcl_tracking
) - new, well-tested implementations for
OrganizedNeighbor
andBruteForceSearch
inlibpcl_search
- considerable speedups for: eigendecomposition, covariance matrix estimation, and normal estimation (now running at 30Hz on VGA data)
- a lot of bug fixes and code refactorizations and optimizations (thanks to everyone that contributed!)
- compilation now defaults to Eigen column major again, but all the code in PCL should compile and work against both row major and column major matrices.
- libpcl_range_image is now incorporated into pcl_common, no extra linking required.
libpcl_common
- added two new methods to compute centroid and covariance at once. Both are faster than calculating first the centroid and afterwards the covariance matrix. The float versions of the new methods are twice as fast but less accurate, whereas the double versions are more accurate and about 35% faster.
- fixed a few issues in our ScopeTime class where the creation of the string as well as the cerr were contributing negatively to the time measurements
- added empty() to PointCloudEigen::MatrixXf to return whether the matrix is empty or not
- added size to PointCloudEigen::MatrixXf and fixed the constructor warnings exposed by -pedantic
- added two new Point Types: Axis and ReferenceFrame as they are used in the Reference Frame calculations
- added a helper functor (
CopyIfFieldExists
) for copying out specific data out of a PointT field. Seetest_common.cpp
for usage examples - implemented and tested a fix for feature request #558: Implement IO for PointCloud
libpcl_filters
- refactored RandomSample to return sorted indices. In addition it now runs nearly twice as fast at it did previously.
- fixed and implemented feature #518: VoxelGrid<> performance improvement (roughly 50+ times)
libpcl_kdtree
- removed unneeded mutices, added asserts instead of constant checks (the user is responsible for passing in valid data!) and sped up a few other things in KDTreeFLANN
libpcl_search
- adapted 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:
- we used to have 3 "overloads" for nearestKSearch and 3 for radiusSearch that every class inheriting from pclk::KdTree or pcl::search::Search needed to implement. Because most of the children always had the same implementation (copy&paste) we moved it up in the base class, made the methods virtual, and only children that need to change that behavior will overwrite it.
- the max_nn parameter from radiusSearch has been changed from int with a default value of -1 to an unsigned int with a default value of 0. Each radiusSearch implementation should check for 0 or >= max_points_in_cloud and branch accordingly (if needed).
- const correctness is now implemented everywhere in all nearestKSearch and radiusSearch operations
- 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
andOrganizedNeighbor
classes
libpcl_octree
- fixed issue #513 (bug in octree iterator)
- fixed octree bounding box adaption
- fixed range test in getPointByIndex method (octree)
- fixed bug #604 & removed compiler warnings in Visual Studio 10
- fixed numerical problem in octree pointcloud class when points lie very close to the bounding box bounds
- improved performance with std::deque in OctreeBreadthFirstIterator class
- added breadth-first octree iterator and depth-first octree iterator classes, restructured octree iterator classes, moved "getVoxelBounds" method from OctreeIterator class to OctreePointCloud class
libpcl_sample_consensus
- added explicit checks + errors for NaN covariance matrices
- fixed a crash on 32bit platforms (thanks bharath)
- fix for #498: Bug in setOptimizeCoefficients for pcl::SACMODEL_SPHERE. The issue actually exposed a grave bug introduced with r2755, when we switched from CMinPack to Eigen. The fix touches all segmentation models in pcl_sample_consensus using Levenberg-Marquardt, and TransformationEstimationLM in libpcl_registration. Also added unit test to catch this in the future.
libpcl_io
- fix row-major/column-major issues in I/O (#578 related)
- fixed #593 by removing unimplemented method declarations
- added a
saveVTKFile
method helper for savingsensor_msgs::PointCloud2
data - added support for reading PCD ascii and binary files (binary_compressed not implemented yet!) for pcl::PointCloudEigen::MatrixXf datatypes.
- implemented and tested a fix for feature request #558: Implement IO for PointCloud
- added
PointXYZRGBA
callbacks forOpenNIGrabber
andPCLVisualizer
- fixed issue #565
- fixed a few bugs in PCDReader regarding uint8/int8 data values and added a comprehensive unit test for all possible combinations of data types that we support in PCL
- added isValueFinite for checking whether a value T is finite or not, and rewrote the PCDReader bits of code that perform the is_dense checks
- integrated libply written by Ares Lagae as an independent component in io
- rely on ply library for PLY parsing, remove the old parser and use the freshly integrated libply, change the namespace ::ply to ::pcl::io::ply to avoid any potential issue
libpcl_surface
- Updated convex hull. It should now be somewhat faster, and allows users to optionally specify if the input is 2D or 3D, so the input dimension need not be calculated every time.
- fix for #562: pcl::ConcaveHull crashes on an empty cloud (thanks Mourad!)
- added option to ensure that triangle vertices are ordered in the positive direction around the normals in GreedyProjectionTriangulation
- fixed issue #489 in GreedyProjectionTriangulation
- fixed triangle vertex ordering issues in OrganizedFastMesh
- MarchingCubes now adheres to the new pcl_surface base class architecture
- added PCLSurfaceBase base class for MeshConstruction and SurfaceReconstruction, to unify the API around setSearchMethod(&Search) and reconstruct(&PolygonMesh)
- added marching_cubes_reconstruction tool
libpcl_features
- fixed issue #550: Uninformative error in VFHEstimation (thanks David!)
- fix for #504: Make ShapeContext and SpinImage uniform (thanks David!). Note: this is an API breaking change, as
setInputCloudWithNormals
, which was deviating from theFeatureEstimation
API is now replaced with patchedsetInputCloud
andsetInputNormals
, thus no longer causing an error. However, we are confident with this change as the API was broken, so this is a bug fix. - fixed a bug in the
PointCloud<MatrixXf>
feature estimation and I/O regarding the fieldscount
property - fixed an issue where the header stamp should only be copied from a PointCloud into a PointCloud in PCL standalone, and not in PCL in ROS
- optimized RSD computation
- speeded up normal estimation in IntegralImageNormalEstimation
- renamed computeFeature (MatrixXf&) into computeFeatureEigen (MatrixXf&) and compute (MatrixXf&) into computeEigen (MatrixXf&) to keep the compiler happy, avoid multiple inheritance, and use clearer semantics between the two different output estimation methods
- fixed an issue where if radius would be defined for VFHEstimation, Feature::initCompute would error out
- fixed issue #539 (fpfh_estimation tutorial)
- fixed issue #544 (overflow in implicit constant conversion warnings)
- fixed issue #527 (bug in IntegralImageNormalEstimation)
- fixed issue #514 (SpinImages segfault when using setKSearch)
libpcl_registration
- added TransformationValidation base class and TransformationValidationEuclidean as a measure to validate whether a final transformation obtained via TransformationEstimation when registering a pair of clouds was correct or not
- added getter/setter for maximum number of inner iterations to control number of optimizations in GeneralizedIterativeClosestPoint
- fixed issue #507
- fixed issue #533 (WarpPointRigid missing EIGEN_MAKE_ALIGNED_OPERATOR_NEW)
- fixed issue #464 (already defined function pointers)
- fixed a grave bug on 32bit architectures where MapAligned was used incorrectly
libpcl_segmentation
- fixed a segmentation fault in SACSegmentationFromNormals caused by calling segment without passing the input XYZ or normal data
- added a missing
setDistanceFromOrigin
toSACSegmentationFromNormals
forSACMODEL_NORMAL_PARALLEL_PLANE
(thanks A. Barral)
libpcl_visualization
- added
PointXYZRGBA
callbacks forOpenNIGrabber
andPCLVisualizer
- 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!) - added the capability to remove a cloud when
removeShape
is called, to preserve API backward compatibility (aPolygonMesh
is not treated as aCloudActor
insidePCLVisualizer
) - fix #472: at startup the camera view pointis set to last added point cloud, but with the key combination ALT+r on can iterate through the view points of the visualized point clouds.
- added
addPointCloud
method forsensor_msgs::PointCloud2
data (useful to bypass the conversion to XYZ forpcd_viewer
) - added
PCL_VISUALIZER_IMMEDIATE_RENDERING
for processing large datasets - refactorized
pcd_viewer
to consume less memory by skipping the intermediate conversion toPointCloud<PointXYZ>
, clearing thePointCloud2
data once converted to VTK, and enabling intermediate mode - a...
Happy New Year
The most notable overall changes are:
- changed the default on the order of data in all Eigen matrices to be row major
-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_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
andUnorganizedPointCloudException
. CreatedPCL_EXCEPTION
helper macro - added the GFPFH global descriptor point type
- added gaussian kernel class and utilities
- added
isTrivial
topcl::PointRepresentation
which allows avoiding copy operations in special cases, thus speeding up operations likerep->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
andPCL_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
intopcl_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
intopcl/point_traits.h
andpcl/ros/for_each_type.h
topcl/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
andNdCopyEigenPointFunctor
fromvoxel_grid.h
topoint_cloud.h
- added
CloudProperties
class for optional properties forpcl::PointCloud<Eigen::MatrixXf>
, and movedsensor_origin_
andsensor_orientation_
there (asproperties.sensor_origin
andproperties.sensor_orientation
), and removedheader
, while keepingheader.stamp
asproperties.acquisition_time
- fixed the copy constructor (vector<size_t> -> 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
andCorrespondence
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
; ThePointCloud2
filter wasn't working causing the unit test to fail - crop_box filter now supports
PointT
andPointCloud2
point clouds - added a normal space sampling filter
- fixed bug #433:
pcl::CropBox
doesn't updatewidth
andheight
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 relys 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
andFilter
- moved the
set/getFilterLimits
,set/getFilterFieldName
, andget/setFilterLimitsNegative
fromFilter
intoVoxelGrid
andPassThrough
, 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
andpcl::kdtree:KdTree
libpcl_search
- fixed a bug in
OrganizedNeighbor
where one of theradiusSearch
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 missingradiusSearch
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 outputPointCloud<Eigen::MatrixXf>
datasets - added the possibility to write binary compressed Eigen data to disk using two new methods:
generateHeaderEigen
andwriteBinaryCompressedEigen
. 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. Hopfully 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
'sgetIndexIn1D
which led to the result variable to overflow when the data_size was larger than something around 2^10 (thanks Robert!) - reviewed and slightly modified mls implementation. Added
MovingLeastSquaresOMP
OpenMP implementation - new architecture for the mesh processing algorithms using VTK:
MeshProcessing
- overloaded
reconstruction
andperformReconstruction
inSurfaceReconstruction
to output aPointCloud<T>
andvector<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 a
reconstruction/performReconstructionfor
PolygonMesh(for backwards compatibility purposes) and a faster set of the same methods for
vector` - refactorized
GreedyProjectionTriangulation
by making it inherit from the newMeshConstruction
base class, and removed a lot of old buggy code - overloaded
performReconstruction (PointCloud<T> &, vector<Vertices> &)
per the newSurfaceReconstruction
API - fixed a bug in
OrganizedFastMesh
where the x/y/z indices were assumed to be 0/1/2, and made it part of theMeshConstruction
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
andConcaveHull
to inherit from the newMeshConstruction
class - rena...