Point Cloud Library (PCL)

Overview

Point Cloud Library

Release License

Website

The new website is now online at https://pointclouds.org and is open to contributions 🛠️ .

If you really need access to the old website, please use the copy made by the internet archive. Please be aware that the website was hacked before and could still be hosting some malicious code.

Continuous integration

Build Platform Status
Ubuntu Status
Status
Status
Windows Status
Status
macOS Status
Status
Documentation Status

Community

Discord StackOverflow Website

Distribution

Packaging status latest packaged version(s)

Click to see all

Packaging status

Description

The Point Cloud Library (PCL) is a standalone, large scale, open project for 2D/3D image and point cloud processing.

PCL is released under the terms of the BSD license, and thus free for commercial and research use. We are financially supported by a consortium of commercial companies, with our own non-profit organization, Open Perception. We would also like to thank individual donors and contributors that have been helping the project.

Compiling

Please refer to the platform specific tutorials:

Documentation

Contributing

Please read CONTRIBUTING.md.

Issues

To report issues, please read CONTRIBUTING.md#bug-reports.

For general questions on how to use the PCL, please consider one of the following alternatives instead:

  • Stack Overflow for Q&A as well as support for troubleshooting, installation and debugging. Do remember to tag your questions with the tag point-cloud-library.
  • Discord Server for live chat with other members of the PCL community and casual discussions

Citation

We encourage other researchers to cite PCL if they use PCL or its components for their work or baselines. The bibtex entry for the same is

@InProceedings{Rusu_ICRA2011_PCL,
  author    = {Radu Bogdan Rusu and Steve Cousins},
  title     = {{3D is here: Point Cloud Library (PCL)}},
  booktitle = {{IEEE International Conference on Robotics and Automation (ICRA)}},
  month     = {May 9-13},
  year      = {2011},
  address   = {Shanghai, China},
  publisher = {IEEE}
}
Issues
  • Octree container rework

    Octree container rework

    This is an extension of @taketwo 's Pull Request #471. In addition to the changes discussed in that request, it:

    • Removes the octree_pointcloud_adjacency_container.h as a separate file and merges it into octree_container.h
    • Adds octree_leaf_data.h and octree_leaf_data.hpp which contain @taketwo 's new AveragePoint container and accumulator helper structures.
    • Renames OctreePointCloudAdjacencyContainer to OctreeAdjacencyContainer to follow the convention of the other containers
    • Removes point counting from OctreeAdjacencyContainer - this is now internal to the data stored within the leaf container.
    • Updates SupervoxelClustering class to use the new OctreeAdjacencyContainer

    A further extension of this pull request should update the rest of the containers (most importantly OctreePointCloudVoxelCentroid ) to use this new leaf data container functionality.

    A further commit should update SupervoxelClustering to use @taketwo 's accumulators internally rather than the explicit instantiations it currently uses inside of its VoxelData.

    opened by jpapon 148
  • Add RSSDK 2.0 (librealsense2) grabber

    Add RSSDK 2.0 (librealsense2) grabber

    Hi PCL team - @patrickabadi has implemented a librealsense 2.0 based RealSense2Grabber, and we'd like to make a contribution. I noticed the last comment on #1633 implies @UnaNancyOwen was planning to implement a librealsense 2.0 grabber, but maybe this will provide a good starting point that covers a lot of the boilerplate cmake configuration.

    quick notes:

    • we have only tested on windows 10
    • we have only tested with v2.10 of librealsense
    • if you try to use librealsense with Qt5, you will be affected by the macro issue reported here: https://github.com/IntelRealSense/librealsense/issues/1059
    needs: testing changelog: new feature module: io 
    opened by daniel-packard 79
  • SampleConsensusPrerejective does work with pcl::PointXYZ but not with pcl::PointNormal

    SampleConsensusPrerejective does work with pcl::PointXYZ but not with pcl::PointNormal

    Hi

    I wrote a code 2 years ago where i used pcl::SampleConsensusPrerejective with FPFHSignature where template parameters were like Pcl::SampleConsensusPrerejective <pcl::PointNormal, pcl::PointNormal, pcl::FPFHSignature33 >

    I updated pcl 1 year ago (trunk) and my code was since that not working any more (resulting 4x4 transformation matrix was very strange, all zero in last row). Though I now need that code part again and I hoped that I made something wrong in compilation (or there is any bug), so I updated to current trunk yesterday and recompiled pcl again, but same behavior. To search the error I checked out the pcl test “test_registration.hpp”. The only difference in usage I found was that there they used the class like Pcl::SampleConsensusPrerejective <pcl::PointXYZ, pcl:: PointXYZ, pcl::FPFHSignature33 > So I did the same, and surprise, it worked again…

    So I am using Visual Studio 2013 x64 and one big change I found 1 year ago was the PCL_ONLY_CORE_POINT_TYPES flag which must be enabled since one year because of some visual studio limitations…

    Any suggestions whats running wrong?

    Best regards

    opened by GeraldLodron 78
  • Lccp

    Lccp

    This pull-request is part of the GSOC 2014 project of Markus Schoeler (Automated benchmark generation for object-part segmentation).

    It contains an implementation of the lccp segmentation published in: S. C. Stein, M. Schoeler, J. Papon, F. Woergoetter Object Partitioning using Local Convexity In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2014

    In addition, it contains an example "example_lccp_segmentation.cpp" which shows how to use the lccp segmentation.

    opened by mschoeler 75
  • 1.9.0 Release

    1.9.0 Release

    Task list

    • [x] Go through all PRs for the milestone
    • [x] Update Changelog
    • [x] Start a release branch
    • [x] (If needed) Revert whatever unintentional API/ABI breakage that might have occurred in the release branch
    • [x] Bump version to x.x.x in CMakeLists.txt
    • [x] Bump version off the release badge in README.md
    • [x] Find replace all occurrences of x.x.x.99 CMake requirements in the tutorials and examples
    • [x] Try to build and test on all relevant platforms
    • [x] Finalize changelog and fix the release date
    • [x] Tag
    • [x] Remove the release branch
    • [x] Add binaries to the GitHub release page.
    • [x] Add link doc link to tutorials page
    • [x] Bump version to x.x.x-dev in CMakeLists.txt
    • [ ] Send announcements to the mailing lists
    • [ ] Throw a party!
    opened by SergioRAgostinho 74
  • Move SSE compiler options to `PCL_COMPILE_OPTIONS`. Expose PCL as a CMake imported target.

    Move SSE compiler options to `PCL_COMPILE_OPTIONS`. Expose PCL as a CMake imported target.

    This PR ensures the SSE compiler options are passed properly downstream. After reading the descriptions for

    https://cmake.org/cmake/help/v3.0/command/target_compile_definitions.html#command:target_compile_definitions https://cmake.org/cmake/help/v3.0/command/target_compile_options.html?highlight=target_compile_options

    I opted to create the new var PCL_COMPILE_OPTIONS that should be used by downstream projects like this

    cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
    project(my_awesome_project VERSION 0.1.0 LANGUAGES CXX)
    
    find_package(PCL 1.8.1.99 REQUIRED)
    
    add_executable (${PROJECT_NAME} "${PROJECT_NAME}.cpp")
    target_include_directories(${PROJECT_NAME} PUBLIC ${PCL_INCLUDE_DIRS})
    target_link_libraries (${PROJECT_NAME} ${PCL_LIBRARIES})
    target_compile_definitions(${PROJECT_NAME} PUBLIC ${PCL_DEFINITIONS})
    target_compile_options(${PROJECT_NAME} PUBLIC ${PCL_COMPILE_OPTIONS})
    

    Fixes #2013, fixes #1725

    Edit (IMPORTANT)

    This PR also upgrades "PCLConfig.cmake". From now on, only the following two lines are necessary to use PCL in downstream projects:

    find_package(PCL REQUIRED)
    target_link_libraries (${PROJECT_NAME} ${PCL_LIBRARIES})
    

    The target_include_directories, target_compile_definitions, and target_compile_options mentioned above are superfluous (but they don't hurt and may be kept for compatibility with older PCL versions).

    changelog: enhancement module: cmake 
    opened by SergioRAgostinho 71
  • Improve environment Dockerfile

    Improve environment Dockerfile

    Several improvements related to the Dockerfile

    Planed adjustments

    • [x] Fix version checking that was giving incorrect results in the upcoming version of Eigen3, as only the patch version was checked.
    • [x] Version of RealSense is now configurable
    • [x] Version of EnsensoSDK is now configurable
    • [x] Install Clang-Tidy ~~Add Option to install Clang-Tidy => Preparation to integrate it maybe here~~

    Optional adjustments

    • [x] Make version of Eigen3 configurable => Easier test of newer version
    • ~~Use more modern GCC version for newer version of GCC/Clang (for GCC you can find a matrix here) (or stay on a fixed version of GCC?)~~
    • [x] Remove USE_CUDA and enable CUDA when CUDA_VERSION is set (current default is 9.2, but there exists no image with ubuntu20.04 and CUDA 9.2)

    I updated version of EnsensoSDK & RealSense, but couldn't try EnsensoSDK 3.0 as even with the pointcloudlibrary/env:20.04 I currently have build issues

    //Edit: See commit message or diff for more details

    opened by SunBlack 65
  • OpenNI 2 grabber

    OpenNI 2 grabber

    Experimental version of an OpenNI 2.x grabber.

    I tested the existing OpenNI 1.x grabber under VS2010 and did not find any obvious regressions or errors with this code in place, so the two should be able to coexist as long as they are not built at the same time. There is a CMake check preventing this.

    Several apps and example programs break encapsulation and directly use OpenNI 1.x data structures, so they will not work with the new grabber until this is fixed.

    Linux compatibility has not been tested, but I expect the new grabber will fail to build until FindOpenNI2.cmake is updated with the correct default paths.

    opened by kwaegel 62
  • Implementation of the iterator 'OctreeFixedDepthIterator'.

    Implementation of the iterator 'OctreeFixedDepthIterator'.

    Add an octree iterator to walk over the OctreeBranch at the same depth. The code relies really on the iterator OctreeBreadthFirstIterator.

    The file octree_viewer.cpp has been updated to use this iterator.

    To maintain to homogenity for the different octree class, more things should be done I think. Wait for checking.

    changelog: new feature changelog: ABI break module: octree 
    opened by frozar 57
  • 1.8.1 Release

    1.8.1 Release

    Task list:

    • [x] Go through all PRs for the milestone
    • [x] Update Changelog #1682
    • [x] Start a release branch
    • [x] Revert #1587
    • [x] Bump version to 1.8.1 in CMakeLists.txt
    • [x] Try to build and test on all relevant platforms
    • [x] Finalize changelog and fix the release date
    • [x] Tag
    • [x] Remove the release branch
    • [x] Add Windows installers to GitHub release page
    • [x] Add OSX installers to GitHub release page
    • [x] Add link doc link to tutorials page
    • [x] Bump version to 1.8.1-dev in CMakeLists.txt
    • [x] Send announcements to the mailing lists
    • [x] Throw a party!

    Future people: Don't forget to revise all new tutorials to modify the minimum required version from 1.x.x.99 to whatever the new version is.

    opened by SergioRAgostinho 57
  • Moving to C++14

    Moving to C++14

    Just aggregating the points we've discussed at the hackfest.

    • [x] enable C++14flags
    • [ ] remove dependency on boost-thread and move to STL
    • [ ] remove dependency on boost-iostream (? @nizar-sallem will need to confirm this)
    changelog: enhancement 
    opened by SergioRAgostinho 52
  • Fix HarrisKeypoint3D::refineCorners

    Fix HarrisKeypoint3D::refineCorners

    Fixes https://github.com/PointCloudLibrary/pcl/issues/3503 Solving a system of linear equations by computing a matrix inverse is not a good idea, both in terms of speed and accuracy. Eigen's LDLT decomposition is fast and precise (NNT is positive definite so we can use LDLT). Also, the condition number (rcond) is a better check for instability than the determinant (returned by invert3x3SymMatrix)

    module: keypoints changelog: fix 
    opened by mvieth 0
  • [octree] fix definition of ConstIterator and add OctreeBaseIteratorsPrePostTest for them

    [octree] fix definition of ConstIterator and add OctreeBaseIteratorsPrePostTest for them

    Original using ConstIterator = const OctreeDepthFirstIterator<OctreeT>; indicates that ConstIterator can't be incremented, OctreeDepthFirstIterator<const OctreeT> seems more reasonable. From the added test, it can be seen that original definition of ConstIterator is not compilable.

    module: octree 
    opened by keineahnung2345 1
  • [compile error] some hpp files can't open when i compilating pcl by myself

    [compile error] some hpp files can't open when i compilating pcl by myself

    some *.hpp files like boost/mpl/assert.hpp can't open while i compilating pcl form source. image image image

    • OS: Windows11
    • Compiler: Visual Studio 2019
    • PCL Version 1.12
    • PCL Type: Compiled from source
    • GPU, CUDA enabled
    • boost 1.78(all are form all in one installer)
    • debug x64

    How can i solve this?

    platform: windows kind: compile error status: triage 
    opened by Bzz2745 10
  • Fix multiple memory corruption errors revealed by fuzzing

    Fix multiple memory corruption errors revealed by fuzzing

    Fixes the following crashes: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32178 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32228 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33217 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33762 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=34134 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=35640 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36663 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37041 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37125 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39438 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40058 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40120 https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41152

    opened by sashashura 5
  • [VoxelGrid] Downsampling produces wrong result

    [VoxelGrid] Downsampling produces wrong result

    If my assumption that for the same input PointCloud, monotonically increasing voxel size should produce monotonically decreased downsampled PointCloud is correct then something wrong with the downsampling in VoxelGrid.

    Let's take an example, the following code creates point cloud and voxelizes it with three different voxel sizes: 3.0f, 3.33f, 4.0f.

    
    #include <pcl/test/gtest.h>
    #include <pcl/point_types.h>
    #include <pcl/filters/filter.h>
    #include <pcl/filters/voxel_grid.h>
    
    using namespace pcl;
    using namespace pcl::io;
    using namespace Eigen;
    
    TEST (VoxelGrid, BugInFilter)
    {
      const size_t size = 1000;
      float x = 0;
      float y = 360;
      float z = 720;
      PointCloud<PointXYZ> pcl {};
      for (size_t i = 0; i < size; ++i) {
        pcl.push_back(pcl::PointXYZ{x, y, z});
        x = x + 0.1f;
        y = y + 0.1f;
        z = z + 0.1f;
      }
      PointCloud<PointXYZ>::Ptr pclPtr(new PointCloud<PointXYZ>(pcl));
    
      VoxelGrid<PointXYZ> grid;
    
      std::array<float, 3> voxelSizes =  { 3.0f, 3.33f, 4.0f};
      for(const float& voxelSize: voxelSizes) {
        PointCloud<PointXYZ> output;
        grid.setLeafSize (voxelSize, voxelSize, voxelSize);
        grid.setInputCloud (pclPtr);
        grid.filter (output);
    
        PointXYZ& prev = output[0];
        double dx = 0;
        double dy = 0;
        double dz = 0;
        for (std::size_t i = 1; i < output.size(); ++i) {
          const PointXYZ& curr = output[i];
          dx += std::abs(curr.x - prev.x);
          dy += std::abs(curr.y - prev.y);
          dz += std::abs(curr.z - prev.z);
          prev = curr;
        }
        double avgDx = dx / output.size();
        double avgDy = dy / output.size();
        double avgDz = dz / output.size();
        std::cout << "voxelSize = " << voxelSize << ", downsampled size: " << output.size() << ", averate dx: " << avgDx
                  << ", average dy: " << avgDy << ", average dz: " << avgDz<< std::endl;
      }
    }
    

    One would expect that voxelized(3.0f).size() > voxelized(3.33f).size() > voxelized(4.0f).size(), but that is not the case. (voxelized(3.0f).size() means use VoxelGrid to voxelize with leaf size 3.0 and get the size of output). It produces the following result:

    voxelSize = 3, downsampled size: 67, averate dx: 1.46342, average dy: 1.46352, average dz: 1.46308
    voxelSize = 3.33, downsampled size: 90, averate dx: 1.09388, average dy: 1.09396, average dz: 1.09362
    voxelSize = 4, downsampled size: 49, averate dx: 1.96019, average dy: 1.96033, average dz: 1.95973
    

    Is it expected that the average difference between x/y/z of voxelized points is around voxelSize / 2, is it a mistake to expect it to be around voxelSize?

    Environment:

    • OS: Ubuntu 20.04
    • Compiler: c++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
    • PCL Version: 7d52b107223ef8adec990608e8685392b48d79c6
    kind: bug module: filters 
    opened by REASY 2
Releases(pcl-1.12.1)
  • pcl-1.12.1(Dec 21, 2021)

  • pcl-1.12.1-rc1(Dec 13, 2021)

    PCL 1.12.1 brings in a lot of enhancements in CMake thanks to @larshg and @SunBlack. Enjoy a lot of bug-fixes and improvements in IO and Filters.

    For an exhaustive list of newly added features, deprecations and other changes in PCL 1.12.1, please see CHANGES.md.

    Source code(tar.gz)
    Source code(zip)
    PCL-1.12.1-rc1-AllInOne-msvc2019-win64.exe(299.68 MB)
    pcl-1.12.1-rc1-pdb-msvc2019-win64.zip(150.99 MB)
    sha256_checksums.txt(197 bytes)
    sha512_checksums.txt(325 bytes)
    source.tar.gz(65.53 MB)
    source.zip(68.70 MB)
  • pcl-1.12.0(Jul 7, 2021)

    PCL 1.12.0 enables custom index size and type, from int16_t to uint64_t, allowing users to have as small or large clouds as they wish. 1.12 also comes with improved support for VTK, Qhull, and CUDA, along with making existing functionality more user friendly.

    This is all on top of the usual bug-fixes and performance improvements across the board.

    VTK warnings that might appear are due to internal deprecations, but users should check issue #4830 for more details regarding future proofing their code.

    For an exhaustive list of newly added features, deprecations and other changes in PCL 1.12.0, please see CHANGES.md.

    Source code(tar.gz)
    Source code(zip)
    PCL-1.12.0-AllInOne-msvc2019-win64.exe(288.20 MB)
    pcl-1.12.0-pdb-msvc2019-win64.zip(141.87 MB)
    sha256_checksums.txt(197 bytes)
    sha512_checksums.txt(325 bytes)
    source.tar.gz(65.53 MB)
    source.zip(68.69 MB)
  • pcl-1.12.0-rc1(Jun 30, 2021)

    PCL 1.12.0 enables custom index size and type, from int16_t to uint64_t, allowing users to have as small or large clouds as they wish. 1.12 also comes with improved support for VTK and CUDA, along with making existing functionality more user friendly.

    This is all on top of the usual bug-fixes and performance improvements across the board

    For an exhaustive list of newly added features, deprecations and other changes in PCL 1.12.0, please see CHANGES.md.

    Source code(tar.gz)
    Source code(zip)
    PCL-1.12.0-rc1-AllInOne-msvc2019-win64.exe(288.50 MB)
    pcl-1.12.0-rc1-pdb-msvc2019-win64.zip(141.92 MB)
    sha256_checksums.txt(197 bytes)
    sha512_checksums.txt(325 bytes)
    source.tar.gz(65.53 MB)
    source.zip(68.68 MB)
  • pcl-1.11.1(Aug 14, 2020)

    PCL 1.11.1 brings in new bug fixes and improvements such as

    • Increasing coverage of index_t for allowing std::int64_t as indices
    • Increased conformance to std::vector API for PointCloud
    • Speed improvements, thread safety and a new flexible experimental filter

    For an exhaustive list of newly added features, deprecations and other changes in PCL 1.11.1, please see CHANGES.md.

    Source code(tar.gz)
    Source code(zip)
    PCL-1.11.1-AllInOne-msvc2019-win64.exe(283.71 MB)
    pcl-1.11.1-pdb-msvc2019-win64.zip(145.64 MB)
    sha256_checksums.txt(197 bytes)
    sha512_checksums.txt(325 bytes)
    source.tar.gz(65.49 MB)
    source.zip(68.65 MB)
  • pcl-1.11.1-rc2(Aug 13, 2020)

    PCL 1.11.1 brings in new bug fixes and improvements such as

    • Increasing coverage of index_t for allowing std::int64_t as indices
    • Increased conformance to std::vector API for PointCloud
    • Speed improvements, thread safety and a new flexible experimental filter

    For an exhaustive list of newly added features, deprecations and other changes in PCL 1.11.1, please see CHANGES.md.

    Source code(tar.gz)
    Source code(zip)
    sha256_checksums.txt(197 bytes)
    sha512_checksums.txt(325 bytes)
    source.tar.gz(65.49 MB)
    source.zip(68.65 MB)
  • pcl-1.11.1-rc1(Aug 6, 2020)

    PCL 1.11.1 brings in new bug fixes and improvements such as

    • Increasing coverage of index_t for allowing std::int64_t as indices
    • Increased conformance to std::vector API for PointCloud
    • Speed improvements, thread safety and a new flexible experimental filter

    For an exhaustive list of newly added features, deprecations and other changes in PCL 1.11.1, please see CHANGES.md.

    Source code(tar.gz)
    Source code(zip)
    sha256_checksums.txt(197 bytes)
    sha512_checksums.txt(325 bytes)
    source.tar.gz(65.48 MB)
    source.zip(68.63 MB)
  • pcl-1.11.0(May 11, 2020)

    Starting with PCL 1.11, PCL uses std::shared_ptr and std::weak_ptr instead of the boost smart pointers. The change leverages type aliases included with the 1.10.0 release.

    PCL 1.11 also introduces pcl::index_t which should be used for the size of point types instead of int, std::size_t, etc. EOL for deprecated features is also explicitly mentioned in the deprecation compile time warnings

    See CHANGES.md for an exhaustive list newly added features, deprecations, and other changes.

    Source code(tar.gz)
    Source code(zip)
    PCL-1.11.0-AllInOne-msvc2019-win64.exe(286.71 MB)
    pcl-1.11.0-pdb-msvc2019-win64.zip(135.58 MB)
  • pcl-1.10.1(Mar 19, 2020)

  • pcl-1.10.0(Jan 19, 2020)

    PCL now defaults to the C++14 standard. Most of the Boost classes that we use were replaced with alternatives from the standard library. One notable exception are smart pointers. PCL still makes extensive use of boost::shared_ptr. However, several layers of abstraction have been added to prepare for a smooth switch to std::shared_ptr in the next release:

    • Added pcl::make_shared and Class::Ptr/Class::ConstPtr type-aliases. Use these instead of direct names like {boost, std}::shared_ptr or {boost, std}::make_shared with PCL types.
    • Added pcl::shared_ptr that offers the same abstraction for non-PCL types.

    Please use the above-mentioned functions/aliases in downstream projects to ensure source code level compatibility with PCL 1.10 and future PCL releases.

    See CHANGES.md for an exhaustive list newly added features, deprecations, and other changes.

    Source code(tar.gz)
    Source code(zip)
    md5.pcl-1.10.0.tar.gz.txt(33 bytes)
    md5.pcl-1.10.0.zip.txt(33 bytes)
    PCL-1.10.0-AllInOne-msvc2019-win64.exe(259.36 MB)
    pcl-1.10.0-darwin.md5sum-5d03bb0d044487b929b5ed2f46b70f95.tar.bz2(17.06 MB)
    pcl-1.10.0-pdb-msvc2019-win64.zip(132.83 MB)
  • pcl-1.9.1(Nov 26, 2018)

    = 1.9.1 (26.11.2018) =

    Modules:

    Uncategorized:

    • Add missing visualization section from the changelog generation. [#2634]

    CMake:

    • Fix development version check on DISSECT_VERSION. [#2633]
    • Remove CMake policy CMP0054 setting. [#2627]
    • PCLConfig.cmake - POP policy-stack before return() [#2626]
    • Remove CMake config installation folder only when empty [#2622]
    • Downgrade grabber dependency message level to STATUS. [#2620]
    • Migrate CMake policy 0048 [#2608]
    • Bump CMake minimum version to 3.1. [#2605]
    • Bump version to 1.9.0-dev [#2602]
    • Search in $EIGEN_ROOT first while looking for Eigen [#2592]

    libpcl_visualization:

    • address conflict between visualization and VTK head [#2612]

    PCL Tutorials:

    • Bump CMake minimum version to 3.1. [#2605]

    PCL Tests:

    • Refactor SHOTEstimation and SHOTColorEstimation tests [#2636]

    CI:

    • Set up azure pipelines for macOS High Sierra [#2635]
    • Enable Windows builds on Azure Pipelines [#2632]
    • Add Ubuntu16.04 based build on Azure Pipelines [#2611]
    • Remove documentation job from Travis [#2604]
    Source code(tar.gz)
    Source code(zip)
    PCL-1.9.1-AllInOne-msvc2017-win32.exe(437.24 MB)
    PCL-1.9.1-AllInOne-msvc2017-win64.exe(488.36 MB)
    pcl-1.9.1-pdb-msvc2017-win32.zip(142.53 MB)
    pcl-1.9.1-pdb-msvc2017-win64.zip(145.31 MB)
  • pcl-1.9.0(Nov 6, 2018)

    = 1.9.0 (06.11.2018) =

    New Features:

    Newly added functionalities.

    • [common][visualization] Add Viridis color LUT [#2420]
    • [octree] Implementation of the iterator 'OctreeLeafNodeBreadthIterator'. [#2204]
    • [octree] Implementation of the iterator 'OctreeFixedDepthIterator'. [#1983]
    • [ci] Enable Global Tests on Windows CI [#2137]
    • [features] Add GASD global point cloud descriptor [#1652]
    • [visualization] Add overload to PCLVisualizer::addText3D() that allows specifying text orientation [#2038]
    • [features] FLARELocalReferenceFrameEstimation class added [#1571]
    • [surface][tools] Add new mls projection method. Deprecated MovingLeastSquares::setPolynomialFit(). [#1960]

    Deprecated:

    Deprecated code scheduled to be removed after two minor releases.

    • [octree] Implementation of the iterator 'OctreeLeafNodeBreadthIterator'. [#2204]
    • [common][segmentation] Provide proper EuclideanClusterComparator method depreciation. New Pragma macro. New Deprecated type. [#2096]
    • [io] Add support pcl::PointXYZRGBA to pcl::VLPGrabber. Deprecate rgb signatures. [#2102]
    • [surface][tools] Add new mls projection method. Deprecated MovingLeastSquares::setPolynomialFit(). [#1960]

    Removed:

    Removal of deprecated code.

    • [filters][io][surface][visualization] Removal of deprecated code in filters, io, surface and visualization modules [#2077]
    • [common] Remove deprecated ros headers [#2075]
    • [registration] Remove registration module deprecated methods [#2076]
    • [sample_consensus] Remove deprecated functions and variables from SAC module [#2071]
    • [common] Removal of PCA deprecated constructor [#2070]

    Behavioral changes:

    Changes in the expected default behavior.

    • [common] PointCloudDepthAndRGBtoXYZRGBA: initialize with the default alpha value (fix #2476) [#2533]
    • [octree] Reverse octree's depth first iterator order [#2332]
    • [common] PointXYZRGBL label field is now default constructed to 0 [#2462]
    • [io] Fix PLYReader is_dense behavior [#2133]

    API changes:

    Changes to the API which didn't went through the proper deprecation and removal cycle.

    • [octree] Implementation of the iterator 'OctreeLeafNodeBreadthIterator'. [#2204]
    • [sample_consensus] Const-qualify most of the methods in SAC model classes [#2270]
    • [simulation] Use GLuint rather than size_t to represent OpenGL indices. [#2238]
    • [visualization] Fix access specifier in PointCloudColorHandlerRGBAField [#2226]
    • [docs] Misc. typos (cont.) [#2215]
    • [octree] OctreeIterators special member revision [#2108]
    • [io] Add support pcl::PointXYZRGBA to pcl::VLPGrabber. Deprecate rgb signatures. [#2102]
    • [surface][tools] Add new mls projection method. Deprecated MovingLeastSquares::setPolynomialFit(). [#1960]
    • [surface] Add ability to cache mls results [#1952]

    ABI changes:

    Changes that cause ABI incompatibility but are still API compatible.

    • [surface] Missing pcl::MovingLeastSquaresOMP declaration without /openmp [#2324]
    • [common][filters][surface] Improved docstrings and error messages [#2300]
    • [common] Modified GlasbeyLUT indexing type to size_t [#2297]
    • [octree] Implementation of the iterator 'OctreeFixedDepthIterator'. [#1983]
    • [common][segmentation] Provide proper EuclideanClusterComparator method depreciation. New Pragma macro. New Deprecated type. [#2096]
    • [gpu] Allow specifying decimation step in convertToTsdfCloud [#2099]
    • [apps] More warning suppression in pcl apps [#2080]
    • [io] Removed unused member from ply_parser [#2066]
    • [filters] Fixes remove_indices in UniformSampling [#1902]
    • [visualization] Add accessor for current rendering framerate in PCLVisualizer [#1974]
    • [simulation] Redo: Simulation: enable returning of organized point clouds [#1687]
    • [registration] Added option to specify translation and rotation convergence deltas in ICP and NDT algorithms. [#1724]

    Modules:

    Uncategorized:

    • Change Log generation tool. Automates change log generation. [#2396]
    • Compatibility reports generation script [#2410]
    • Update logo [#2547]
    • Never close stale issues/prs [#2400]
    • Fix typos in the whole codebase [#2217]
    • Fixed typo and rearragend items in the issue template [#2197]
    • Change Stale daysTillClose to 100 years [#2166]
    • set stale daysUntilClose to a really big number [#2162]
    • Stale set up [#2101]

    CMake:

    • Fix checks for user-provided CXX flags [#2579]
    • Fix FLANN path to lower case [#2576]
    • Use pkg-config to find Flann [#2563]
    • Update FindBoost versions [#2558]
    • Add PCL_BUILD_WITH_QHULL_DYNAMIC_LINKING_WIN32 option [#2552]
    • Fix app/CMakeLists to enable Apps under Windows [#2550]
    • When configuring with WITH_DOCS, but Doxygen is not available, prevent generation. [#2516]
    • CMake: Do not include test targets in PCLConfig.cmake [#2458]
    • CMake Set temporarily the policy CMP0074 to OLD [#2454]
    • prevent GCC flags propagating to NVCC [#2430]
    • Mark visualization as an optional dependency of tools [#2439]
    • Do not mark imported libraries as GLOBAL in PCLConfig [#2435]
    • Intel fixes [#2432]
    • Export -march=native for Clang and prevent it from being included during cross compilation. [#2416]
    • Do not search for PCL components that have been found already [#2428]
    • Move SSE compiler options to PCL_COMPILE_OPTIONS. Expose PCL as a CMake imported target. [#2100]
    • Add Visual Studio compiler option /FS for Ninja build [#2414]
    • Use rpath in the target's install name [#2241]
    • Improve QHull finder script [#2344]
    • Fix link order issue with boost [#2236]
    • Mark found PCL component libraries and include dirs as advanced [#2235]
    • Prevent search for disabled optional dependencies in targets. [#2229]
    • Fix installation rules for ml module [#2192]
    • Fix conditional branch of Visual C++ 2017 [#2121]
    • Add *_USE_STATIC options to PCLConfig [#2086]
    • Add search path suffixes for Vcpkg [#2085]
    • Update finder scripts for Ensenso, OpenNI, and OpenNI2 [#2061]
    • Fix PACKAGE to include cmake/Modules directory [#2053]
    • Unifies Find scripts in PCLConfig [#1421]
    • CUDA 9 Arch Flags [#2047]
    • Suppress log when PCL_FIND_QUIETLY is turned on. [#2032]
    • fix /MP option not generated for Visual Studio. [#2031]
    • Generate pkgconfig for 2d module [#1979]
    • Update Find Boost [#1972]
    • Added CUDA compute capability 5.3 [#1929]
    • Fix issue with finding pcl deployed out of path [#1923]
    • Add new gtest path [#1920]

    libpcl_2d:

    • Avoid huge index jumps in RandomSample. Remove io dependency from 2d. [#2141]
    • Fix header names [#2079]
    • Generate pkgconfig for 2d module [#1979]

    libpcl_common:

    • Fix docstrings [#2591]
    • Throw an early exception to prevent divide by zero error (#2481) [#2530]
    • Relax requirements in eigen22d test. Always provide a normalized result in pcl::transformPlane. [#2503]
    • [behavior] PointCloudDepthAndRGBtoXYZRGBA: initialize with the default alpha value (fix #2476) [#2533]
    • Throw UnorganizedPointCloudException in PointCloud::at [#2521]
    • Add missing const specifier for getters in PCLBase. [#2502]
    • swap the header in pcl::PointCloud::swap [#2499]
    • Add header guard and copyright info to polynomial_calculations.hpp [#2500]
    • Add header to the print output of PointCloud [#2498]
    • Fix force recalculation option in BivariatePolynomialT::calculateGradient [#2479]
    • Fix various errors and typos in the docstrings and tutorials [#2486]
    • Fix a bug in PointRGBtoI color conversion [#2475]
    • Provide operator<< for Intensity32u point type [#2467]
    • [behavior] PointXYZRGBL label field is now default constructed to 0 [#2462]
    • Add some missing eigen alignment operators [#2433]
    • Intel fixes [#2432]
    • [new-feature] Add Viridis color LUT [#2420]
    • Remove malloc header to restore builds on BSDs [#2374]
    • Add support for multiple extensions in parse_file_extension_argument (). [#2347]
    • Improve speed of transformPointCloud/WithNormals() functions [#2247]
    • Add RGB constructor that takes R, G, and B components [#2329]
    • [abi] Improved docstrings and error messages [#2300]
    • [abi] Modified GlasbeyLUT indexing type to size_t [#2297]
    • Add GASDSignatures to PCL_POINT_TYPES and PCL_FEATURE_POINTTYPES macros. [#2295]
    • [PARSE] Constness of the API [#2224]
    • Fix two "unreachable code" warnings in pca.hpp [#2219]
    • Fix covariance calculation in PCA [#2130]
    • [abi][deprecation] Provide proper EuclideanClusterComparator method depreciation. New Pragma macro. New Deprecated type. [#2096]
    • [removal] Remove deprecated ros headers [#2075]
    • Suppress (maybe) uninitialized warning [#2073]
    • [removal] Removal of PCA deprecated constructor [#2070]
    • [gcc] fixes -Wimplicit-fallthrough: common/io.h [#2041]
    • Include pcl/point_cloud.h and pcl/point_types.h headers. [#1962]
    • Add test for macro _USE_MATH_DEFINES. [#1956]
    • instantiate: remove duplicate macro definition. Fixes #1924. [#1925]

    libpcl_cuda:

    • add support for latest Turing gpu and cuda 10 [#2560]
    • Fix compilation issues with CUDA 9.1 [#2212]
    • Fix some CUDA 9 related errors [#2181]
    • Added CUDA compute capability 5.3 [#1929]

    libpcl_features:

    • Solve issues with failing features tests [#2544]
    • Update the OpenMP implementations of normal and FPFH estimation [#2278]
    • Make MomentOfInertia instantiations consistent with the rest of the library [#2266]
    • Docstring corrections [#2143]
    • Improve Doxygen comments for HistogramInterpolationMethod [#2111]
    • [new-feature] Add GASD global point cloud descriptor [#1652]
    • Suppress (maybe) uninitialized warning [#2073]
    • [new-feature] FLARELocalReferenceFrameEstimation class added [#1571]
    • fix missing include file: from_meshes.h is using pcl::Vertices in it [#2009]
    • Typo [#1968]

    libpcl_filters:

    • Corrections to CovarianceSampling class and corresponding test [#2512]
    • Add the missing const modifier in Filter::getRemovedIndices. [#2523]
    • Add const modifiers to getters of pcl::PassThrough [#2524]
    • Add const specifiers for getters in VoxelGrid. [#2526]
    • Copy the pose info from the input cloud to the output cloud in NaN removal functions [#2522]
    • Fix misc. typos in tutorials and docstrings [#2529]
    • Fix various errors and typos in the docstrings and tutorials [#2486]
    • Add some missing eigen alignment operators [#2433]
    • Add PointNormal to ExtractIndices Instantiate Types [#2389]
    • [abi] Improved docstrings and error messages [#2300]
    • Public access to VoxelGrid boost pointer. [#2205]
    • Add const qualifiers to getters in filter_indices.h [#2193]
    • Avoid huge index jumps in RandomSample. Remove io dependency from 2d. [#2141]
    • [removal] Removal of deprecated code in filters, io, surface and visualization modules [#2077]
    • Suppress unused parameter warning [#2074]
    • Suppress sign compare warnings [#2068]
    • Transformation Fix for BoxClipper3D [#1961]
    • [abi] Fixes remove_indices in UniformSampling [#1902]
    • Inherit StatisticalOutlierRemoval from FilterIndices [#1663]

    libpcl_gpu:

    • Remove sm_72 from CUDA 9.0 [#2567]
    • Fix compilation issues with CUDA 9.1 [#2212]
    • Fix compilation error in gpu_people code [#2199]
    • Fix some CUDA 9 related errors [#2181]
    • [abi] Allow specifying decimation step in convertToTsdfCloud [#2099]
    • Fix the incorrect include directory. [#2024]
    • need to include instantiate.hpp to use PCL_INSTANTIATE [#1943]
    • Added CUDA compute capability 5.3 [#1929]
    • Fix issue #1674 [#1926]

    libpcl_io:

    • Suppress miscelanious warnings [#2556]
    • vtk2mesh: Add parsing support to the new RGBA scalar field added in vtk8 [#2492]
    • Fix various errors and typos in the docstrings and tutorials [#2486]
    • Improved obj file parsing efficiency. Make parsing robust against situations where there are more normals than points. Added unit tests. [#2450]
    • pcl::PCDReader::readHeader() change nr_points type to size_t to avoid possible int32 overflow [#2408]
    • Fix raw_fallocate for Android and deal with unsupported filesystems. [#2363]
    • Add low_level_io.h to the header list of the io module [#2356]
    • Created header for low level I/O helpers. Fix for ::posix_fallocate on Mac OSX [#2354]
    • Added warnings when the input data is too large for compressed pcds [#2323]
    • Allocate disk space with posix_fallocate before mmapping. [#2325]
    • Fix cmake warning: Logical block closes with mis-matching arguments [#2320]
    • Added PCL_IO_ENABLE_MAND_LOCKING cmake flag. [#2315]
    • Added missing 8 bytes to compressed binary pcd length. [#2281]
    • Remove useless size check in PLYReader::endHeaderCallback() [#2246]
    • [behavior] Fix PLYReader is_dense behavior [#2133]
    • EnsensoGrabber uint is undefined in Visual studio. [#2223]
    • Add protection from invalid WIDTH values in PCD reader [#2195]
    • PLYReader Cast cloud point step as 64-bit integer [#2161]
    • OpenNI2Device Add device sensor check for IR and depth modesetting [#2150]
    • Adds a check for when CreateFileMappingA fails [#2146]
    • PCDWriterchanged toff to size_t in writeBinaryCompressed [#2144]
    • Prevent POINTS field parsing before point_step is specified [#2131]
    • Check COUNT value specified in PCD files [#2126]
    • Prevent mmapping more than the original PCD file size [#2125]
    • [api][deprecation] Add support pcl::PointXYZRGBA to pcl::VLPGrabber. Deprecate rgb signatures. [#2102]
    • [removal] Removal of deprecated code in filters, io, surface and visualization modules [#2077]
    • Suppress strict alias warning [#2072]
    • Suppress unused parameter warnings [#2067]
    • [abi] Removed unused member from ply_parser [#2066]
    • Suppress control reaches end of non-void function in io.h [#2057]
    • Modify STRICT_ALIGN because macro expansion w/defined is undefined [#2043]
    • Add necessary boost headers to pcl/io to build in CUDA mode [#2025]
    • Fix MSVC compile issue related with ssize_t [#2027]
    • Adds in-memory PCD serialization/deserialization; de-duplicates PCDReader::readHeader(). (take #2) [#1986]

    libpcl_kdtree:

    • Consistent ptr typedefs for kd tree flann [#1607]

    libpcl_keypoints:

    • Add TrajkovicKeypoint2D/3D to CMake build [#2179]

    libpcl_ml:

    • Fix installation rules for ml module [#2192]

    libpcl_octree:

    • [behavior] Reverse octree's depth first iterator order [#2332]
    • Fix various errors and typos in the docstrings and tutorials [#2486]
    • Make test conditions consistent with OctreePointCloudSearch::boxSearch() implementation. [#2457]
    • octree_key.h suppress GCC 8 ignored-qualifier warning [#2405]
    • [api][deprecation][new-feature] Implementation of the iterator 'OctreeLeafNodeBreadthIterator'. [#2204]
    • [abi][new-feature] Implementation of the iterator 'OctreeFixedDepthIterator'. [#1983]
    • Octree Iterator begin/end method and added tests [#2174]
    • Remove parametrization of end iterators [#2168]
    • Fix docstrings in octree test [#2173]
    • [api] OctreeIterators special member revision [#2108]
    • Remove unused variable from octree_viewer [#2069]
    • Silence compile warning by removing superfluous call to std::max() [#2014]
    • [OCTREE] Add bounding box checks in isVoxelOccupiedAtPoint() and deleteVoxelAtPoint() [#1976]

    libpcl_outofcore:

    • Explictly use mt19937 random generator for boost 1.67. [#2338]
    • Fixed queryBBIncludes_subsample [#1988]

    libpcl_people:

    libpcl_recognition:

    • Relax threshold in Hough3DGrouping test [#2507]
    • Add some missing eigen alignment operators [#2433]
    • Setting the resolution of the occupancy grid [#2273]
    • Inline helper function gcCorrespSorter() [#2248]
    • Misleading indentation [#2034]

    libpcl_registration:

    • Remove std::binary_function from Registration [#2599]
    • Suppress miscelanious warnings [#2556]
    • Relax precision requirements on TransformationEstimationLM test. [#2497]
    • Relax rejector threshold in JointIterativeClosestPoint test. [#2496]
    • Add some missing eigen alignment operators [#2433]
    • Remove explicit initialization of update_visualizer_ in Registration [#2423]
    • [removal] Remove registration module deprecated methods [#2076]
    • Suppress (maybe) uninitialized warning [#2073]
    • Remove unreachable code in DefaultConvergenceCriteria [#1967]
    • [abi] Added option to specify translation and rotation convergence deltas in ICP and NDT algorithms. [#1724]

    libpcl_sample_consensus:

    • Revise direction test in SampleConsensusModelParallelLine/RANSAC to be consistent with set tolerance. [#2491]
    • Fix error in SampleConsensusModelLine::isSampleGood [#2488]
    • [api] Const-qualify most of the methods in SAC model classes [#2270]
    • [removal] Remove deprecated functions and variables from SAC module [#2071]

    libpcl_search:

    • Correct testPoint for organized nearest neighbor search [#2198]

    libpcl_segmentation:

    • Add some missing eigen alignment operators [#2433]
    • Add setter/getter for search method in ConditionalEuclideanClustering [#2437]
    • Increase threshold for expected value in test_non_linear [#2424]
    • Avoid infinite recursion in getPointCloudDifference [#2402]
    • Correct setting of is_dense flag in SegmentDifferences. Deprecate unused parameter in method. [#2380]
    • Dereference shared_ptr, fix for GCC8 [#2299]
    • [abi][deprecation] Provide proper EuclideanClusterComparator method depreciation. New Pragma macro. New Deprecated type. [#2096]
    • Removed normal related accessors and types from EuclideanClusterComparator [#1542]

    libpcl_simulation:

    • Add const qualifiers to RangeLikelihood getters. [#2411]
    • [api] Use GLuint rather than size_t to represent OpenGL indices. [#2238]
    • Support both RGB and RGBA colors in mesh loading [#2036]
    • [abi] Redo: Simulation: enable returning of organized point clouds [#1687]
    • Simulation: more access to camera parameters [#1650]

    libpcl_surface:

    • Fixed memory leak in Poisson's BSplineData [#2572]
    • Suppress miscelanious warnings [#2556]
    • Add some missing eigen alignment operators [#2433]
    • Make pcl::MovingLeastSquares thread-safe [#2418]
    • [abi] Missing pcl::MovingLeastSquaresOMP declaration without /openmp [#2324]
    • [abi] Improved docstrings and error messages [#2300]
    • opennurbs: fix ON_Curve::EvaluatePoint calculation [#2185]
    • [removal] Removal of deprecated code in filters, io, surface and visualization modules [#2077]
    • Suppress (maybe) uninitialized warning [#2073]
    • Suppress sign compare warnings [#2068]
    • Fix incorrect Ptr/ConstPtr typedefs in MovingLeastSquaresOMP [#2055]
    • Replace float indices with Eigen Index [#2017]
    • [api][deprecation][new-feature] Add new mls projection method. Deprecated MovingLeastSquares::setPolynomialFit(). [#1960]
    • Avoid phantom surfces in marching cubes hoppe [#1874]
    • [api] Add ability to cache mls results [#1952]

    PCL Apps:

    • Suppress miscelanious warnings [#2556]
    • Fix 3d_rec_framework compilation error [#2495]
    • Fix compilation issue in point cloud editor. [#2490]
    • demean_cloud correct usage message. [#2443]
    • Do not use deprecated method in openni_mls_smoothing app [#2421]
    • add windows.h for includes GL/gl.h; handle cancel for denoiseWidget. [#2267]
    • Add missing dependecy to apps [#2251]
    • Suppress the final set of warnings in pcl apps [#2082]
    • [abi] More warning suppression in pcl apps [#2080]

    PCL Docs:

    • Fix misc. typos in tutorials and docstrings [#2529]
    • Fix various errors and typos in the docstrings and tutorials [#2486]
    • Docstring typos' corrections. [#2449]
    • demean_cloud correct usage message. [#2443]
    • Set IMAGE_PATH explicitly in Doxygen config [#2442]
    • Switch to using client-based search in Doxygen [#2391]
    • [api] Misc. typos (cont.) [#2215]
    • doc: misc. typos [#2213]
    • Add url to API/ABI compatibity report [#2116]
    • Improve Doxygen comments for HistogramInterpolationMethod [#2111]
    • Update organized.h [#1965]
    • Typo [#1968]
    • Fixed spelling and grammar errors [#1959]
    • Fixed error in documentation. [#1957]

    PCL Tutorials:

    • Fix dataset link in conditional euclidean clustering tutorial [#2546]
    • Fix dead links in Walkthrough tutorial [#2532]
    • Simplify explanation of PointXYZ structure in "Writing PCD" tutorial [#2534]
    • Fix misc. typos in tutorials and docstrings [#2529]
    • Fix a dead link to Radu Rusu's dissertation in the tutorial. [#2508]
    • Fix various errors and typos in the docstrings and tutorials [#2486]
    • Fix link to Institut Maupertuis's ensenso_extrinsic_calibration repo [#2447]
    • Add settings for hypothesis verification [#2274]
    • Fix ICP tutorial [#2244]
    • Fix error in example code for estimate set of surface for a subset of points in the input dataset [#2203]
    • Update message about legacy point cloud types in tutorial [#2175]
    • Add descriptor unpacking to GASD tutorial [#2167]
    • Fix convert to Eigen::Map<const Eigen::Vector3f> from Normal of pcl::PointXYZINormal [#2128]
    • Fix the tutorial qt_visualizer compilation issue: qt4 -> qt5. [#2051]
    • Fix several documentation typos [#2020]
    • Replace literal include of wrong CMakeLists file with correct script [#1971]
    • Update Ensenso tutorial for Ensenso X devices [#1933]

    PCL Examples:

    • Suppress strict alias warning [#2072]
    • Suppress (maybe) uninitialized warning [#2073]
    • Fix CPC/LCCP segmentation examples for VTK 7.1 [#2063]

    PCL Tests:

    • Corrections to Windows unit tests. [#2596]
    • Relax eigen22f test criteria [#2553]
    • Solve issues with failing features tests [#2544]
    • Relax requirements in eigen22d test. Always provide a normalized result in pcl::transformPlane. [#2503]
    • Enable tests_2d and tests_io in AppVeyor. [#2505]
    • Relax threshold in Hough3DGrouping test [#2507]
    • Relax precision requirements on TransformationEstimationLM test. [#2497]
    • Relax rejector threshold in JointIterativeClosestPoint test. [#2496]
    • vtk2mesh: Add parsing support to the new RGBA scalar field added in vtk8 [#2492]
    • Revise direction test in SampleConsensusModelParallelLine/RANSAC to be consistent with set tolerance. [#2491]
    • Make test conditions consistent with OctreePointCloudSearch::boxSearch() implementation. [#2457]
    • Increase threshold for expected value in test_non_linear [#2424]
    • Replace floating point numerals when using boost::posix_time. Fix compatibility with Boost 1.67. [#2422]
    • Cleanup and improve unit test coverage for transformPointCloud functions [#2245]
    • Fixes and new assertion macro in "pcl_tests.h" [#2237]
    • Add new gtest path [#1920]

    PCL Tools:

    • Allow the pcl_uniform_sampling tool to deal with several formats (PCD, PLY and VTK) as input or output point cloud [#2348]
    • mesh_sampling tool: Add support for colors [#2257]
    • Error message on non-recognized feature names [#2178]
    • Suppress sign compare warnings [#2068]
    • [OCTREE] Compute accurately the centroids of octree in 'pcl_octree_viewer' [#1981]
    • [api][deprecation][new-feature] Add new mls projection method. Deprecated MovingLeastSquares::setPolynomialFit(). [#1960]
    • [OCTREE] Fix pcl_octree_viewer [#1973]
    • [OCTREE] Remove a useless field in octree_viewer. [#1980]

    CI:

    • Disable Travis email notifications. Update PCL logo endpoint. [#2535]
    • Migrate Travis to the new travis-ci.com platform [#2538]
    • Enable tests_2d and tests_io in AppVeyor. [#2505]
    • Fix docs on Travis CI. [#2441]
    • Disable SSE flags in AppVeyor. [#2438]
    • Split (yet again) Travis test job into two and tweak timings in building apps [#2182]
    • [new-feature] Enable Global Tests on Windows CI [#2137]
    • Travis merge test jobs. Expose VTK include directory for the visualization module. [#2163]
    • Remove unnecessary PPAs and packages from Travis [#2153]
    • AppVeyor - Change to simple style of specify triplet [#2135]
    • Initial Appveyor CI integration [#2083]
    • Change Travis to use pip3 for installing sphinx [#2124]
    • [TRAVIS] Enable the build of apps. [#2012]
    • [TRAVIS] Enable the build of tools. [#2007]
    • Disable tools build in CI. [#2003]
    Source code(tar.gz)
    Source code(zip)
    PCL-1.9.0-AllInOne-msvc2017-win32.exe(437.25 MB)
    PCL-1.9.0-AllInOne-msvc2017-win64.exe(488.34 MB)
    pcl-1.9.0-darwin.tar.bz2(18.40 MB)
    pcl-1.9.0-pdb-msvc2017-win32.zip(165.53 MB)
    pcl-1.9.0-pdb-msvc2017-win64.zip(167.61 MB)
  • pcl-1.8.1(Aug 8, 2017)

    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 with std::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 by pcl_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_recognition:

    • LineMOD bug fixes [#1835]
    • Removed redundant definition of point types [#1836]

    libpcl_registration:

    • Fixed GICP behavior when a guess is provided [#989]
    • Fixed compilation issues in NDT 2D with Eigen 3.3 [#1821]
    • NDT 2D state is now properly initialized [#1731]

    libpcl_sample_consensus:

    • Improved error verbose in SampleConsensusModelPlane::optimizeModelCoefficient [#1811]

    libpcl_segmentation:

    • Fixed bug in organized multiplane segmentation refine function where label indices were not being updated correctly [#1502]
    • Corrected function signature in lccp segmentation [#1761]
    • Fixed bug in boundary checking in Organized Connected Component Segmentation [#1800]
    • Clarified documentation in Super Voxel Clustering [#1804]
    • Fixed bug causing unnecessary computation in Region Growing [#1882]

    libpcl_surface:

    • Double pass mean and covariance estimation are now employed in ConcaveHull::reconstruct [#1567]
    • GP3 bug fixes [#1850] [#1879]
    • Fixed buggy index cast in bilateral upsampling [#1914]

    libpcl_visualization:

    • Fixed bug in addPointCloudNormals which was ignoring view point information [#1504]
    • Fixed bug camera FOV computation in PCLVisualizerInteractorStyle [#1611]
    • Fixed a MSVC compilation error with the colormap LUT [#1635]
    • Abort prematurely when the camera file cannot be opened on PCLVisualizerInteractorStyle [#1776]
    • Fix to addText3D [#1805]
    • Added some exception guards in OpenNI and OpenNI2 Viewer tools [#1862]

    PCL Apps:

    • Fixed bug in point cloud editor app which allowed to select points behind the camera [#1539]
    • Explicitly define OpenGL headers to fix build on Ubuntu arm64 [#1715]
    • Replaced the use of slot and signals keywords in QT apps for their Q_* counterparts to present name clashes with Boost Signals [#1898]

    PCL Docs:

    • Fix docs generation on Windows [#1717]

    PCL Tests:

    • Modularized the build of unit tests. [#1768]
    • Removed invalid test condition on test_common_io [#1884]

    PCL Tools:

    • mesh2pcd has now an option to explicitly disable visualization [#1768]
    • mesh_sampling has now an option to explicitly disable visualization [#1769]
    • Mesh sampling now has an option to include normal information [#1795]
    • Fixed incorrect return value in pcl_converter [#1903]

    PCL Tutorials:

    • Fixed a crash in the pcl_visualizer tutorial triggered in interactive mode [#1631]
    • Fixed hyperlink in narf keypoint extraction [#1777]
    • Typo corrections in random sample consensus [#1865]
    • Updated matrix transform tutorial and added cube.ply mesh [#1894] [#1897]
    • Updated Ensenso tutorial for Ensenso X devices [#1933]

    CI:

    • Applied a workaround to a regression bug introduced by doxylink in the docs build job [#1784]
    • Build jobs refactoring [#1768]
    • Enable ccache to speed up builds in CI [#1892]
    Source code(tar.gz)
    Source code(zip)
    PCL-1.8.1-AllInOne-msvc2015-win32.exe(418.62 MB)
    PCL-1.8.1-AllInOne-msvc2015-win64.exe(469.92 MB)
    PCL-1.8.1-AllInOne-msvc2017-win32.exe(415.84 MB)
    PCL-1.8.1-AllInOne-msvc2017-win64.exe(466.81 MB)
    pcl-1.8.1-darwin.tar.bz2(16.82 MB)
    pcl-1.8.1-pdb-msvc2015-win32.zip(159.93 MB)
    pcl-1.8.1-pdb-msvc2015-win64.zip(164.98 MB)
    pcl-1.8.1-pdb-msvc2017-win32.zip(141.60 MB)
    pcl-1.8.1-pdb-msvc2017-win64.zip(144.69 MB)
  • pcl-1.8.0(Jun 15, 2016)

  • pcl-1.7.2(Sep 10, 2014)

    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(), and getBGRAVector4cMap() 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 and ROPSEstimation 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 in VoxelGrid [#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 in CloudViewer or PCLVisualizer [#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 in KdTree [#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:

    • Added a new color handler PointCloudColorHandlerRGBAField that takes into account alpha channel [#306]
    • Fixed PCLVisualizer crashes on OS X [#384]
    • Added possibility to display texture on polygon meshes [#400]
    • Added ability to add and remove several coordinate systems [#401]
    • Added ImageViewer::markPoints() [#439]
    • Added setWindowPosition() and setWindowName() to PCLPlotter [#457]
    • Changed camera parameters display to be more user-friendly [#544]
    • Added PCLVisualizer::updateCoordinateSystemPose() [#569]
    • Fixed display of non-triangular meshes in PCLVisualizer [#686]
    • Added a capability to save and restore camera view in PCLVisualizer [#703]
    • Added PCLVisualizer::getShapeActorMap() function [#725]
    • Fixed undefined behavior when drawing axis in PCLVisualizer [#762]
    • Fixed HSV to RGB conversion in PointCloudColorHandlerHSVField [#772]
    • Fixed non-working key presses in visualization GUIs on Mac OS X systems [#795]
    • Fixed a bug in PCLVisualizer::addCube() [#846]
    • Fixed a bug in cone visualization and added possibility to set cone length [#881]

    PCL Tools:

    • Added a simple tool to compute Hausdorff distance between two point clouds [#519]
    • Updated pcl_viewer to use RGB color handler as default [#556]
    • Added a morphological tool pcl_morph to apply dilate/erode/open/close operations on the Z dimension [#572]
    • Added a tool pcl_generate to generate random clouds [#599]
    • Added a tool pcl_grid_min to find grid minimums [#603]
    • Added a tool pcl_local_max to filter out local maxima [#604]
    • Added optional depth image input to pcl_png2pcd converter [#680]
    • Fixed memory size calculation in pcl_openni_pcd_recorder [#676]
    • Added device ID parameter to pcl_openni_pcd_recorder [#673]
    • Added automatic camera reset on startup in pcl_viewer [#693]
    • Added a capability to save and restore camera view in pcl_viewer [#703]
    • Updated pcl_pcd2png tool to be able to paint pixels corresponding to infinite points with black. Added Glasbey lookup table to paint labels with a fixed set of highly distinctive colors. [#767]
    • Added pcl_obj2pcd tool [#816]

    PCL Apps:

    • Fixed disappearing cloud from selection in Cloud Composer [#814]
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.7.1(Oct 7, 2013)

    • New pcl::io::savePNGFile() functions and pcd2png tool (deprecates organized_pcd_to_png).
    • Support for Intel Perceptual Computing SDK cameras.
    • New Dual quaternion transformation estimation algorithm.
    • Bugfixes.
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.7.0(Jul 23, 2013)

    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
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.6.0(Sep 5, 2013)

    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 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 convertion functions for nurbs curve to line-polygon - added convertion 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 lenght.
    • 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
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.5.1(Sep 5, 2013)

    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 and BruteForceSearch in libpcl_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. See test_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 and OrganizedNeighbor 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 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
    • added PointXYZRGBA callbacks for OpenNIGrabber and PCLVisualizer
    • 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 the FeatureEstimation API is now replaced with patched setInputCloud and setInputNormals, 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 fields count 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 to SACSegmentationFromNormals for SACMODEL_NORMAL_PARALLEL_PLANE (thanks A. Barral)

    libpcl_visualization

    • 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!)
    • 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)
    • 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 for sensor_msgs::PointCloud2 data (useful to bypass the conversion to XYZ for pcd_viewer)
    • added PCL_VISUALIZER_IMMEDIATE_RENDERING for processing large datasets
    • refactorized pcd_viewer to consume less memory by skipping the intermediate conversion to PointCloud<PointXYZ>, clearing the PointCloud2 data once converted to VTK, and enabling intermediate mode
    • added setPosition to pcl::visualization::ImageViewer for allowing the image viewer to be moved somewhere else on screen
    • changed the openni_image viewer tool to display both RGB and depth images
    • fixed a nasty bug where the scalars range were not correctly updated in the mapper on updatePointCloud thus causing weird VTK warnings at the console
    • added setupInteractor to allow QVTK customizations
    • pcd_grabber_viewer now shows the recorded images in PointXYZRGB clouds, and can use fps=0 and trigger each new frame manually by pressing SPACE
    • fixed an BGR/RGB issue in image_viewer
    • added setKeyboardModifier to change the default keyboard modifier from Alt to Shift or Ctrl so that in QVTK or other widgets, we can still use shortcuts like Mod+r, Mod+f, etc
    • PCLVisualizer is now working with VTK compiled for cocoa, no X11 necessary on OS X
    • build bundle executable for pcd_viewer if VTK is compiled with Cocoa. With that the keyboard events are handled by the application
    • modified openni_passthrough to use QVTK instead of VTK
    • added PCLVisualizer zoom in/out via /- [ alt]
    • implemented feature #516 (pcd_viewer multiview with .vtk files)
    • added showMonoImage for displaying a monochrome unsigned char 2D image in PCLVisualizer
    • added setFullScreen and setWindowBorders methods to allow an user to change the full screen/border properties of the PCLVisualizer GUI
    • fix for issue #519 (set the minimum number of cloud points to 1 in vtkLODActor)
    • fix for issue #524 (ctrl problem with pcd_viewer)
    • fix for issue #532 (PCLVizualizer::addCoordinateSystem() switch from Eigen::Matrix4f to Eigen::Affine3f)
    • bug fix in pcd_grabber_viewer: now sorting the read .pcd file by name before showing them (was in random order before)
    • fixed issue #525 (pcd_viewer did not handle nan values correctly in fields other than x, y, z)
    • fixed a bug where changing the point color using setPointCloudRenderingProperties would not update the actor's colors on screen
    • workaround for displaying FPS rate on PCLVisualizer - disabled backface culling because of known VTK issue
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.4.0(Sep 5, 2013)

    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 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)
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.3.1(Sep 5, 2013)

    • fixed bug #428: in PointCloudColorHandlerRGBField where using an "rgba" field was causing an error in pcd_viewer (thanks Maurice!)
    • fixed bug #404: in PointCloudColorHandlerRGBField<sensor_msgs::PointCloud2> where one of the offsets for Z was incorrectly calculated thus leading to erroneous data (thanks Lucas!) fixed bug #420: in OrganizedNeighbor where one of the radiusSearch signatures was working only if the cloud is not organized (thanks Hanno!)
    • fixed bug #421: toROSMsg referenced the address of a temporary return
    • fixed bug #422: SHOT estimation did not work with different surface than keypoints
    • fixed bug #430: an infinite loop in SAC methods if no valid model could be found
    • fixed bug #433: CropBox did not update width and height member of output point cloud
    • added missing using declarations for shot
    • added a missing include file to transformation_estimation_point_to_plane.h;
    • added transformation_estimation_point_to_plane_lls.h/hpp to the CMakeLists file
    • fixed an issue where the is_dense flag was not set appropriately when reading data from a binary file (thanks Updog!)
    • fixed a bug in the PLYWriter class where the element camera was not correctly set thus leading to crashes in Meshlab (thanks Bruno!)
    • fixed a bug in PrincipalCurvaturesEstimation where the pc1 and pc2 magnitudes were not normalized with respect to the neighborhood size, thus making comparisons of different neighborhoods impossible (thanks Steffen!)
    • set the lighting off on setShapeRenderingProperties when the user tries to control the color of the object precisely fixed bug in PointCloudColorHandlerRGBField<sensor_msgs::PointCloud2> where y_point_offset and z_point_offset were not incremented
    • fixed a bug in tools/compute_cloud_error
    • fixed a crash in test_ii_normals.cpp
    • removed unnecessary header from point_correspondence.h
    • fixed unnormalized covariance matrix in computeCovarianceMatrixNormalized
    • added missing include in std_msgs/Header.h
    • added error checking for radius search in extractEuclideanClusters
    • fixed a bug in PassThrough where NaN values were not correctly replaced by the user-specified value
    • fixed a bug in ply_io when writing PolygonMesh
    • fixed a bug in ply_io when unpacking rgb values
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.3.0(Sep 5, 2013)

    From 1.3 we are constructing the Changelist for each library separately, as they can in theory be mixed and matched with older versions (though we officially do not support this yet). The most notable overall changes are:

    • removed wxWidgets as a dependency from PCL and implemented the Image visualization classes using VTK
    • removed cminpack as a dependency from PCL and implemented the LM optimization functionality using Eigen
    • added a new library called PCL Search (libpcl_search) that has a more uniform API for nearest neighbor searches and stripped the unneeded functionality from libpcl_kdtree and libpcl_octree. Search now wraps KdTree and Octree for NN calls. This is a MINOR API BREAKING CHANGE. To change your code switch from:
    pcl::KdTree -> pcl::Search (if the purpose is to use one of its children for search)
    pcl::KdTreeFLANN -> pcl::search::KdTree
    pcl::OrganizedDataIndex -> pcl::search::OrganizedNeighbor
    
    • improved MacOS support
    • improved documentation and unit tests
    • added lots of application examples and demos. Note: not all have a complete functionality... we will try to clean this up in 1.4 and future releases.

    Build system changes

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

    libpcl_common

    • add overriding for operator[] to shorten code
    • add a setIndices method that computes indices of points in a region of interest
    • add demeanPointCloud with indices as PointIndices as well
    • added eigen allocator to correspondence vectors (pcl::Correspondences) and adapted all registration modules => be sure to use pcl::Correspondences instead of std::vector<pcl::Correspondence>
    • fixed a few doxygen errors
    • added simple stop watch for non-scoped function time measurements and made ScodeTime derived from StopWatch
    • fixed a bug in getRejectedQueryIndices, wrong output when order of correspondences have been changed
    • moved getRejectedQueryIndices to pcl/common/correspondence.h
    • added more doxygen documentation to the registration components
    • marked all getRemainingCorrespondences-functions as DEPRECATED, we sould replace them with purely stateless version outside the class body
    • fixed a const missing in PolynomialCalculationsT (#388 - thanks Julian!)
    • add PCL_DEPRECATED macro, closes #354.
    • added PointXYZHSV type and the conversions for it
    • added check for endianness for the Android platform

    libpcl_search

    • BIG changes introduced - migration from KdTree to pcl::Search: moved OrganizedDataIndex and OrganizedNeighbor classes to libpcl_search
    • added new templated methods for nearestKSearch and radiusSearch for situations when PointT is different than the one the KdTree object was created with (e.g., KdTree vs nearestKSearch (PointT2 &p...)
    • added two new methods for getApproximateIndices where given a reference cloud of point type T1 we're trying to find the corresponding indices in a different cloud of point type T2
    • refactorized a lot of code in search and octree to make it look more consistent with the rest of the API
    • fixed a bug in octree_search which was semantically doing something bad: for each radiusSearch/nearestKSearch/approxNearestSearch call with a PointCloudConstPtr, the octree was getting recreated. Changed the API to be consistent with the rest of PCL (including pcl_search and pcl_kdtree) where we pass in a PointCloud instead of a PointCloudConstPtr which simply calls searchMethod (cloud.points[i], ...)
    • minor code optimizations
    • renamed organized_neighbor.h header in pcl_search (unreleased, therefore API changes OK!) to organized.h
    • disabled the auto-search tuning as it wasn't really working. must clean this up further
    • remove all approxNearestSearch methods from the base pcl::Search class as they did not belong there

    libpcl_io

    • use stringstream instead of atof because of locale issues in IO (note that we can't use the ifstream directly because we have to check for the nan value)
    • added locale independent PCD ASCII i/o
    • implemented setMapSynchronization for pcl::PCDWriter. When set, msync() will be called before munmap() in the pcl::PCDWriter::write* calls, which guarantees data reliability. Though I/O performance is 300% better when unset, data corruption might occur on NFS systems, as indicated by http://www.pcl-developers.org/PCD-IO-consistency-on-NFS-msync-needed-td4885942.html.
    • added new writeBinaryCompressed functionality for general purpose sensor_msgs::PointCloud2 data (which is still our generic data container in PCL 1.x)
    • added additional unit tests for binary_compressed
    • fixed a grave bug in PCDReader (most likely introduced a few releases ago due to code refactorization) where the data was incorrectly copied if a PCD ASCII file had a field with multiple count elements (field.count) as first. Binary files are not affected by this bug. Added an unit test to catch this in the future.
    • added functionality for openni_grab_frame (added optional command line options, optional output filename, chose output format)
    • changed to new location of samplesconfig.xml for OpenNI
    • added signal and slot blocking into grabber. Using blocking to skip first frame in openni_grabber, since it is corrupted
    • added PLY format file support in binary and ascii mode (requires boost::iostreams library)

    libpcl_keypoints

    • added 3D versions of Harris/Noble/Lowe/Tomasi and Curvature-based keypoint detection... scale space still missing
    • work on making SIFTKeypoint more flexible by saving scale only when the output point type contains "scale" (the catch is that all point types must be correctly declared via our macros - see the modifications in test_keypoints.cpp). This allows us to use a SIFTKeypoint<PointXYZRGB, PointXYZRGB> and thus removes the constraint on using copyPointCloud afterwards.
    • fixed an issue in SIFTKeypoint where width/height were not correctly set

    libpcl_features

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

    libpcl_filters

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

    libpcl_octree

    • added function genVoxelBounds to octree pointcloud class
    • added octree neighbor search class
    • added octree-ray-tracing patch to octree_search class
    • buxfix in octree ray traversal function getIntersectedVoxelCentersRecursive
    • added unit test for getIntersectedVoxelCentersRecursive
    • added method getIntersectedVoxelIndices for getting indices of intersected voxels and updated unit test
    • refactorized a lot of code in search and octree to make it look more consistent with the rest of the API
    • fixed a bug in octree_search which was semantically doing something bad: for each radiusSearch/nearestKSearch/approxNearestSearch call with a PointCloudConstPtr, the octree was getting recreated. Changed the API to be consistent with the rest of PCL (including pcl_search and pcl_kdtree) where we pass in a PointCloud instead of a PointCloudConstPtr which simply calls searchMethod (cloud.points[i], ...)
    • minor code optimizations
    • renamed organized_neighbor.h header in pcl_search (unreleased, therefore API changes OK!) to organized.h
    • disabled the auto-search tuning as it wasn't really working. must clean this up further
    • remove all approxNearestSearch methods from the base pcl::Search class as they did not belong there

    libpcl_registration

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

    libpcl_sample_consensus

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

    libpcl_surface

    • fixed bug in surface/mls: when no search interface and no tree is given, mls creates its' own tree, but didn'tupdate the search method to use
    • added citation for Rosie's work (http://dl.acm.org/citation.cfm?id=1839808)
    • added some error checking for missing/ill formed inputs for MarchingCubes
    • don't delete smart pointers (thanks Chytu: http://www.pcl-users.org/Seg-fault-while-using-VTK-Smoother-tp3380114p3381648.html)
    • added computation of area and volume for convex hulls.

    libpcl_segmentation

    • added a labeled cluster euclidean segmentation method

    libpcl_visualization

    • fixed an issue where saveScreenshot was not correctly initialized with the proper renderer, thus not saving the data
    • supporting fontsize in addText (per feature #365)
    • fixing the interactor style by ignoring all combinations in OnChar that we cover in OnKeyDown
    • added removeAllShapes and removeAllPointClouds per #353
    • renamed deleteText3D to removeText3D to consolidate the API
    • fixing the API: a few left inconsistencies between vector<Correspondence> and Correspondences. The latter is to be preferred as it contains the Eigen aligned allocator.
    • added patch from Lucas Walter to fix pcl::visualization::PCLVisualizer::removeAllPointClouds and removeAllShapes
    • fixed a few doxygen errors
    • cleaned up the PCLHistogramVisualizer API by moving to a vtk interactor instead of ours, and removed unnecessary calls such as saveScreenShot (never used with the histogram visualizer, and most likely buggy), wasStopped and resetStoppedFlag (never used).
    • removed PCLVisualizerInteractor and switched back to a better default vktWindowRenderInteractor for VTK >= 5.6. Adjusted and fixed the internal API. No public API changes were made (except the removal of the PCLVisualizerInteractor class which was never meant to be used externally anyway).
    • cleaned up and implemented the ImageViewer class properly and demonstrated it in a single thread via openni_viewer. The other tool (openni_viewer_simple) will not work due to CloudViewer starting its own thread and thus clashing on the same OpenGL context.
    • fixed the correct order in initializer list for ImageViewer
    • removed wxWidgets completely from the codebase
    • added implementation for markPoint to ImageViewer to mimic older wxWidgets-based code
    • fixed an issue in PCLVisualizerInteractorStyle where mouse events were not properly mapped in Qt (#389 - thanks Adam!)
    • added an extra field of view to the camera paramers (#392 - thanks Adam!)
    • small bugfix when the radius_sphere was different than 1 for renderViewTesselatedSphere
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.2(Sep 5, 2013)

    Additions, improvements, and optimizations

    • Eliminated the transform.h header file < API breaking change > (r2517)
      • the following functions have moved to transforms.h:
        • transformXYZ (renamed to transformPoint)
        • getTransformedPointCloud (replaced with transformPointCloud)
      • the following methods have been replaced with built-in Eigen methods:
        • operator<< (use .matrix () )
        • getRotationOnly ( .rotation () )
        • getTranslation ( .translation () )
        • getInverse ( .inverse () )
      • the following functions have move to eigen.h:
        • getTransFromUnitVectorsZY
        • getTransFromUnitVectorsZY
        • getTransFromUnitVectorsXY
        • getTransFromUnitVectorsXY
        • getTransformationFromTwoUnitVectors
        • getTransformationFromTwoUnitVectors
        • getTransformationFromTwoUnitVectorsAndOrigin
        • getEulerAngles
        • getTranslationAndEulerAngles
        • getTransformation
        • getTransformation
        • saveBinary
        • loadBinary
    • Made major changes in pcl::registration (r2503)
      • all registration code now uses TransformEstimation objects (TransformEstimationSVD and TransformEstimationLM in particular) rather than the older estimateRigidTransformationSVD code. Each class inheriting from pcl::Registration can pass in a different estimator via setTransformationEstimation
      • simplified TransformEstimationSVD code
      • implemented TransformEstimationLM by moving away code from IterativeClosestPointNonLinear (which now uses the transformation object)
    • replaced the io/io.h header file with common/io.h (for backwards compatibility, io/io.h will remain, but its use is deprecated)
    • added unit test for lineWithLineIntersection (r2514)
    • improved the VTK installation from source documentation for MacOS (r2589)
    • updated the tutorials regarding usage of FindPCL.cmake vs. PCLConfig.cmake (r2567)
    • added a new PointCloud constructor for copying a subset of points (r2562)
    • made wxwidgets an optional dependency for visualization (r2559)
    • added feature #334 (Enabling a library should enable all its library dependencies in CMake) implementation, (r2551)
    • added an internal estimateRigidTransformationSVD method to SampleConsensusModelRegistration (r2502)
    • added a PCL_VISUALIZER_REPRESENTATION property for setShapeRenderingProperties with three possible values:
      • PCL_VISUALIZER_REPRESENTATION_POINTS for representing data as points on screen
      • PCL_VISUALIZER_REPRESENTATION_WIREFRAME for representing data as a surface wireframe on screen
      • PCL_VISUALIZER_REPRESENTATION_SURFACE for representing data as a filled surface on screen (r2500)
    • optimized performance of BoundaryEstimation (approximately 25% faster) (r2497)
    • added reference citation to estimateRigidTransformationSVD (r2492)
    • added a new keypoint for uniformly sampling data over a 3D grid called UniformSampling (r2413)
    • added a destructor to VoxelGrid<sensor_msgs::PointCloud2> (r2412)
    • optimized the performance of SampleConsensusModelLine (r2404)
    • changed the behavior of toc_print and toc from pcl::console:TicToc to return milliseconds (r2402)
    • added a new model, SAC_MODEL_STICK, for 3D segmentation (r2400)
    • added 2x point picking to PCLVisualizer; use Alt + Mouse Left click to select a pair of points and draw distances between them (r2388)
    • added two new functions (pcl::getMaxSegment) for determining a maximum segment in a given set of points (r2386)
    • moved filters/test/test_filters to test/test_filters (r2365)
    • renamed the binary executable in the compression.rst tutorial (r2345)
    • Updated library dependencies
      • removed the libfeatures dependency for `libpcl_surface (r2337)
      • removed the libpcl_io dependency from libpcl_surface (r2354)
      • removed libpcl_io dependency from libpcl_keypoints (r2364)
      • removed libpcl_io dependency for libpcl_filters (r2365)
      • removed libpcl_io dependency for libpcl_registration (r2372)
    • added a new function, pcl::concatenateFields for concatenating the fields of two sensor_msgs::PointCloud2 datasets (1933)
    • added a new countWithinDistance method to SampleConsensusModel (r2326), and optimized RANSAC and RRANSAC by replacing calls to selectWithinDistance with countWithinDistance (r2327)
    • added feature #330: new PCLVisualizer::addCube and pcl::visualization::createCube methods (r2322)
    • added correspondence.h to the includes in common/CMakeLists.txt (r2260)
    • implemented defaults for the search method, per http://www.pcl-developers.org/defaults-for-search-method-td4725514.html (r2219,r2220,r2222,r2225,r2226,r2228)
    • exposed pcl::PCLVisualizer::saveScreenshot (const std::string &filename) (r2095)
    • enabled pcd_io.hpp (r2085)
    • added a new faster binary writer + cloud/indices (r2080)
    • added pcl::RGB structure and switched bitshifting RGB code to use the pcl::RGB structure's members (r2077,r2078)
    • added a new IOException class for read/write exceptions (r2068)
    • added missing set/getAngleThreshold for BoundaryEstimation. Made class parameter protected. (r2067)
    • added functions in pcl::console for parsing CSV arguments of arbitrary length (r2052)
    • added new functionality to OrganizedFastMesh (r1996); Now support for modes:
      • fixed triangle meshing (left and right) that create quads and always cut them in a fixed direction,
      • adaptive meshing that cuts where possible and prefers larger differences in 'z' direction, as well as
      • quad meshing
    • improved OrganizedFastMesh's removal of unused points (r1996)
    • CMake changes (r2592)
      • changed the install dir of PCLConfig.cmake in Windows
      • renamed CMAKE_INSTALL_DIR into PCLCONFIG_INSTALL_DIR
      • NSIS installer will add a key in Windows Registry at HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\PCL to help CMake find PCL (CMake >= 2.8.5) (NSIS.template.in)
      • reordered CMAKE_MODULE_PATH entries, for CMake to pick up our NSIS.template.in
      • fixed CPACK_PACKAGE_INSTALL_REGISTRY_KEY value

    Bug fixes

    • fixed bugs in PointCloud
      • in swap(), the point data was swapped, but the width and height fields were not (r2562)
      • in push_back(), adding points did not update the width/height of the point cloud (r2596)
      • in insert()/erase(), inserting or erasing points did not update the width/height of the point cloud (r2390)
    • fixed bugs in SampleConsensusModelRegistration
      • if target_ wasn't given, would crash with a boost shared uninitialized error (r2501)
      • homogeneous coordinates were wrong (r2502)
    • fixed a bug in BoundaryEstimation in case "angles" is empty (r2411)
    • fixed a bug in OrganizedFastMesh's adaptive cut triangulation; added a new unit test (r2138)
    • fixed a bug in the openni_image viewer tool (r2511)
    • fixed problems with Windows/MacOS ALT bindings in PCLVisualizer (r2558)
    • fixed issues
      • #139 (FPFHEstimation for non-trivial indices) (r2528)
      • #303 (make pcd_viewer reset the camera viewpoint when no camera given) (r1915)
      • #338 (cylinder segmentation tutorial was referring to a different file) (r2396)
      • #339 (the direction of the normal was wrongly estimated when setSearchSurface was given) (r2395)
      • #340 (keep_organized_ bug in ConditionalRemoval) (r2433)
      • #342 (Allow QT to be used with PCL Visualizer) (r2489)
      • #343 (empty() member function of a point cloud is not const) (r2440)
      • #350 (Misspelling in GreedyProjectionTriangulation::setMaximumSurfaceAgle()) (r2556)
    • added missing include in correspondence_rejection.h (r2393)
    • corrected the headers included by sample_consensus/sac_model.h (r2550)
    • removed duplicate content of NSIS.template.in (r2601)
    • fixed various casting related compiler warnings (r2532)
    • corrected typos in
      • Windows tutorial (CMAKE_INSTALL_DIR => CMAKE_INSTALL_PREFIX) (r2595)
      • registration/icp.h documentation (reg => icp) (r2515)
      • several apps/tools console messages (wotks => works) (r2491)
      • how_features_work.rst tutorial (Muechen => Muenchen) (r2484)
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.1.1(Sep 5, 2013)

    • issues fixed: #224, #277, #288, #290, #291, #292, #293, #294, #295, #296, #297, #299, #302, #318, #319, #324, #325, #329
    • Additional fixes:
      • fixed a segfault in PCLVisualizer::addPointCloudNormals
      • fixed PCLVisualizer hanging on 'q' press
      • fixed a bug in MLS
      • fixed a bug in test_io
      • fixed a bug in PointCloudColorHandlerGenericField
      • fixed a bug when writing chars to ASCII .PCD files
      • fixed several errors "writing new classes" tutorial
      • added missing parameter setter in the "concave hull" tutorial
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.1.0(Sep 5, 2013)

    • new 3D features:
      • SHOT (Signature of Histograms of Orientations)
      • PPF (Point-Pair Features)
      • StatisticalMultiscaleInterestRegionExtraction
      • MultiscaleFeaturePersistence
    • improved documentation:
      • sample consensus model coefficients better explained
      • new tutorials (RadiusOutlierRemoval, ConditionalRemovalFilter, ConcatenateClouds, IterativeClosestPoint, KdTreeSearch, NARF Descriptor visualization, NARF keypoint extraction, ConcaveHull, PCLVisualizer demo)
    • new surface triangulation methods:
      • MarchingCubes, MarchingCubesGreedy
      • OrganizedFastMesh
      • SurfelSmoothing
      • SimplificationRemoveUnusedVertices
    • new registration methods:
      • PyramindFeatureMatching
      • CorrespondenceRejectorSampleConsensus
    • new general purpose classes/methods:
      • Synchronizer
      • distance norms
      • TextureMesh
      • PointCloud.{isOrganized, getMatrixXfMap)
      • SACSegmentation now works with PROSAC too
      • PCDViewer now reads VTK files
      • new Mouse and Keyboard events for PCLVisualizer
      • PCLVisualizer.{addText3D, addCoordinateSystem (Eigen::Matrix4f), deleteText3D, updatePointCloud, renderViewTesselatedSphere, resetCameraViewpoint, getCameras, getViewerPose}
      • ONIGrabber, DeviceONI
      • ImageRGB24, IRImage
      • generic FileReader + FileWriter
    • optimizations:
      • faster pipelinening by not recreating a fake set of indices everytime
      • rendering optimizations for PCLVisualizer
      • copyPointCloud is now faster and can copy the intersections of the fields in both input datasets
      • VoxelGrid is now ~20Hz for Kinect data
    • new applications:
      • VFH NN classification
      • 3D concave hulls
      • 3D convex hulls
      • ICP registration
      • Planar segmentation
      • Stream compression
      • Range image viewer
      • Voxel Grid
      • IntegralImage normal estimation
    • issues fixed: #75, #106, #118, #126, #132, #139, #156, #182, #184, #189, #197, #198, #199, #201, #202, #203, #210, #213, #211, #217, #223, #225, #228, #230, #231, #233, #234, #240, #247, #250, #251, #254, #255, #257, #258, #259, #261, #262, #264, #265, #266, #267, #268, #269, #273, #276, #278, #279, #281, #282, #283
    Source code(tar.gz)
    Source code(zip)
  • pcl-1.0.1(Sep 5, 2013)

    please note that version 1.0.0 had a flaw when creating ASCII pcd files. This version includes the tool pcd_convert_NaN_nan to fix this

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

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

CNDP - Cloud Native Data Plane Overview Cloud Native Data Plane (CNDP) is a collection of userspace libraries for accelerating packet processing for c

Cloud Native Data Plane 22 Jul 27, 2022
This code converts a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor into a depth image mono16.

pc2image This code converts a point cloud obtained by a Velodyne VLP16 3D-Lidar sensor into a depth image mono16. Requisites ROS Kinetic or Melodic Ve

Edison Velasco Sánchez 6 May 18, 2022
This repository uses a ROS node to subscribe to camera (hikvision) and lidar (livox) data. After the node merges the data, it publishes the colored point cloud and displays it in rviz.

fusion-lidar-camera-ROS 一、介绍 本仓库是一个ROS工作空间,其中ws_fusion_camera/src有一个工具包color_pc ws_fusion_camera │ README.md │ └───src │ └───package: c

hongyu wang 16 Jul 22, 2022
This project is used for lidar point cloud undistortion.

livox_cloud_undistortion This project is used for lidar point cloud undistortion. During the recording process, the lidar point cloud has naturally th

livox 49 Jul 30, 2022
BAAF-Net - Semantic Segmentation for Real Point Cloud Scenes via Bilateral Augmentation and Adaptive Fusion (CVPR 2021)

Semantic Segmentation for Real Point Cloud Scenes via Bilateral Augmentation and Adaptive Fusion (CVPR 2021) This repository is for BAAF-Net introduce

null 84 Jul 17, 2022
A simple localization framework that can re-localize in one point-cloud map.

Livox-Localization This repository implements a point-cloud map based localization framework. The odometry information is published with FAST-LIO. And

Siyuan Huang 75 Aug 4, 2022
GROR:A New Outlier Removal Strategy Based on Reliability of Correspondence Graph for Fast Point Cloud Registration

GROR GROR:A New Outlier Removal Strategy Based on Reliability of Correspondence Graph for Fast Point Cloud Registration About (a): correspondences gen

Pengcheng Wei 25 Jun 29, 2022
A C++ concepts and range based character encoding and code point enumeration library

Travis CI (Linux:gcc) Text_view A C++ Concepts based character encoding and code point enumeration library. This project is the reference implementati

Tom Honermann 121 Aug 5, 2022
Wgeo, or "wi-fi geolocator", is a cross-platform C/C++ library for wifi-based device geolocation, utilising public wireless access point location databases

wgeo Wgeo, or "wi-fi geolocator", is a cross-platform C/C++ library for wifi-based device geolocation, utilising public wireless access point location

Xavier Maruff 2 Jan 30, 2022
MinIO C++ Client SDK for Amazon S3 Compatible Cloud Storage

The MinIO C++ Client SDK provides simple APIs to access any Amazon S3 compatible object storage.

Multi-Cloud Object Storage 28 Jul 27, 2022
This repository was created in order to keep local data with code in the cloud.

Airplane Ino Данный репозиторий был создан для совсместной комфортной работы над проектом. В данном файле(README.md) будет размещена основная полезная

surpri6e 1 Nov 26, 2021
A simple console client for pCloud cloud storage.

pCloud Console Client A simple console client for pCloud cloud storage. Project Information pCloud Console Client was forked from the project initiall

Serghei Iakovlev 23 Jun 23, 2022
Cloud-native high-performance edge/middle/service proxy

Cloud-native high-performance edge/middle/service proxy Envoy is hosted by the Cloud Native Computing Foundation (CNCF). If you are a company that wan

Envoy Proxy - CNCF 20.1k Aug 7, 2022
ByteDance kernel for use on cloud.

Linux kernel ============ There are several guides for kernel developers and users. These guides can be rendered in a number of formats, like HTML an

Bytedance Inc. 8 Apr 19, 2022
Sensory Cloud C++ SDK

Sensory Cloud C++ SDK This repository contains the source code for the Sensory Cloud C++ SDK. Requirements This project uses CMake as the primary buil

SensoryCloud 2 Jan 10, 2022
Internet of things created using arduino IoT cloud, consisting of esp and arduino boards

Internet of things created using arduino IoT cloud, consisting of esp and arduino boards. Goal of the project is to create a 3D printed RFID protected (with PIN) lock, including surveillance.

null 2 May 11, 2022
RemixDB: A read- and write-optimized concurrent KV store. Fast point and range queries. Extremely low write-amplification.

REMIX and RemixDB The REMIX data structure was introduced in paper "REMIX: Efficient Range Query for LSM-trees", FAST'21. This repository maintains a

Xingbo Wu 75 Jul 22, 2022
Multi-GNSS Precise Point Postioning with Ambiguity Resolution

This is demo for multi-GNSS precise point positioning with ambiguity resolution (PPP-AR), which is based on RTKLIB and RTKLIB_demo5. FEATURES ppp-ar w

Chen Chao 6 Jun 28, 2022
An implementation of ICP(Iterative Closest Point).

An implementation of ICP(Iterative Closest Point). Users can specify which dimensions of transformation to optimize.

Ming Cao 4 Dec 21, 2021