Skip to content

Happy New Year

Compare
Choose a tag to compare
@jspricke jspricke released this 05 Sep 18:27
· 13784 commits to master since this release

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<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 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 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 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

libpcl_search

  • 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. 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's getIndexIn1D 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 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)