3D is here: Point Cloud Library (PCL)
Summary (2 min read)
Introduction
- In the past few years, sensors like the Velodyne spinning LIDAR used in the DARPA Urban Challenge and the tilting laser scanner used on the PR2 have given us high-quality 3D representations of the world - point clouds.
- The Kinect sensor for the Microsoft XBox 360 game system, based on underlying technology from PrimeSense, can be purchased for under $150, and provides real time point clouds as well as 2D images.
- Figure 1 presents the logo of the project.
II. ARCHITECTURE AND IMPLEMENTATION
- PCL is a fully templated, modern C++ library for 3D point cloud processing.
- In addition, PCL provides support for OpenMP (see http://openmp.org) and Intel Threading Building Blocks (TBB) library [2] for multi-core parallelization.
- The backbone for fast k-nearest neighbor search operations is provided by FLANN (Fast Library for Approximate Nearest Neighbors) [3].
- From an algorithmic perspective, PCL is meant to incorporate a multitude of 3D processing algorithms that operate on point cloud data, including: filtering, feature estimation, surface reconstruction, model fitting, segmentation, registration, etc.
- To ensure the correctness of operations in PCL, the methods and classes in each of the above mentioned libraries contain unit and regression tests.
III. PCL AND ROS
- One of the corner stones in the PCL design philosophy is represented by Perception Processing Graphs (PPG).
- The rationality behind PPGs are that most applications that deal with point cloud processing can be formulated as a concrete set of building blocks that are parameterized to achieve different results.
- For this the authors created nodelets, which are dynamically loadable plugins that look and operate like ROS nodes, but in a single process (as single or multiple threads).
- The PCL Visualization library is meant to integrate PCL with VTK, by providing a comprehensive visualization layer for n-D point cloud structures.
- They are designed with simplicity in mind, and are easily extendable.
V. USAGE EXAMPLES
- Followed by three application examples that make use of PCL for solving the perception problem: i) navigation and mapping, ii) object recognition, and iii) manipulation and grasping.the authors.
- The filter is based on estimating a set of statistics for the points in a given neighborhood (k = 50 here), and using them to select all points within 1.0·σ distance from the mean distance µ, as inliers (see [6] for more information).
- The second example constitutes a segmentation operation for planar surfaces, using a RANSAC [7] model, as shown in Algorithm 3.
- The input and output results are shown in Figure 8.
- Here, a set of complex 3D keypoints and feature descriptors are used in a segmentation and registration framework, that aims to identify previously seen objects in the world.
VI. COMMUNITY AND FUTURE PLANS
- PCL is a large collaborative effort, and it would not exist without the contributions of several people.
- The authors current plan for PCL is to improve the documentation, unit tests, and tutorials and release a 1.0 version.
- The authors will continue to add functionality and make the system available on other platforms such as Android, and they plan to add support for GPUs using CUDA and OpenCL.
- The authors welcome any new contributors to the project, and they hope to emphasize the importance of code sharing for 3D processing, which is becoming crucial for advancing the robotics field.
Did you find this useful? Give us your feedback
Citations
1,879 citations
[...]
1,329 citations
1,021 citations
Cites methods from "3D is here: Point Cloud Library (PC..."
...Max pooling is adopted to aggregate neighborhood information and graph coarsening is implemented based on VoxelGrid [86]....
[...]
957 citations
Cites methods from "3D is here: Point Cloud Library (PC..."
...For a single input point cloud P , a pyramid of downsampled point clouds P (h) is obtained by the VoxelGrid algorithm [30], which overlays a grid of resolution r over the point cloud and replaces all points within a voxel with their centroid (and thus maintains subvoxel accuracy)....
[...]
950 citations
Cites methods from "3D is here: Point Cloud Library (PC..."
...We use ICP (Iterative Closest Point) from the Point Cloud Library [53] to estimate a relative transformation between corresponding point segments for each track....
[...]
...[53] R....
[...]
References
23,396 citations
"3D is here: Point Cloud Library (PC..." refers methods in this paper
...Algorithm 2 Code example for the results shown in Figure 7. pcl::StatisticalOutlierRemoval<pcl::PointXYZ> f; f.setInputCloud (input cloud); f.setMeanK (50); f.setStddevMulThresh (1.0); f.filter (output cloud); The second example constitutes a segmentation operation for planar surfaces, using a RANSAC [7] model, as shown in Algorithm 3....
[...]
...In this example, we are using a robust RANSAC estimator to randomly select 3 non-collinear points and calculate the best possible model in terms of the overall number of inliers....
[...]
...Algorithm 3 Code example for the results shown in Figure 8. pcl::SACSegmentation<pcl::PointXYZ> s; f.setInputCloud (input cloud); f.setModelType (pcl::SACMODEL PLANE); f.setMethodType (pcl::SAC RANSAC); f.setDistanceThreshold (0.01); f.segment (output cloud); An example of a more complex navigation and mapping application is shown in the left part of Figure 9, where the PR2 robot had to autonomously identify doors and their handles [8], in order to explore rooms and find power sockets [9]....
[...]
...The second example constitutes a segmentation operation for planar surfaces, using a RANSAC [7] model, as shown in Algorithm 3....
[...]
3,138 citations
"3D is here: Point Cloud Library (PC..." refers methods in this paper
...PCL is fully integrated with ROS, the Robot Operating System (see http://ros.org), and has been already used in a variety of projects in the robotics community....
[...]
2,934 citations
"3D is here: Point Cloud Library (PC..." refers methods in this paper
...PCL is fully integrated with ROS, the Robot Operating System (see http://ros.org), and has been already used in a variety of projects in the robotics community....
[...]
1,973 citations
950 citations
"3D is here: Point Cloud Library (PC..." refers methods in this paper
...…of designing other 3D processing libraries, and most recently, ROS, we decided to make each algorithm from PCL available as a standalone building block, that can be easily connected with other blocks, thus creating processing graphs, in the same way that nodes connect together in a ROS ecosystem....
[...]
Related Papers (5)
Frequently Asked Questions (12)
Q2. What future works have the authors mentioned in the paper "3d is here: point cloud library (pcl)" ?
The authors will continue to add functionality and make the system available on other platforms such as Android, and they plan to add support for GPUs using CUDA and OpenCL.
Q3. What is the purpose of the PCL Visualization library?
The PCL Visualization library is meant to integrate PCL with VTK, by providing a comprehensive visualization layer for n-D point cloud structures.
Q4. What is the main purpose of the article?
To ensure the correctness of operations in PCL, the methods and classes in each of the above mentioned libraries contain unit and regression tests.
Q5. What is the basic interface for a 3D point cloud processing pipeline in PCL?
The basic interface for such a processing pipeline in PCL is:• create the processing object (e.g., filter, feature estimator, segmentation); • use setInputCloud to pass the input point cloud dataset to the processing module; • set some parameters; • call compute (or filter, segment, etc) to get the output.
Q6. What is the main purpose of PCL?
Written with efficiency and per-formance in mind on modern CPUs, the underlying data structures in PCL make use of SSE optimizations heavily.
Q7. What is the main purpose of the visualization library?
As of version 0.2, the visualization library offers:• methods for rendering and setting visual properties (colors, point sizes, opacity, etc) for any n-D point cloud dataset; • methods for drawing basic 3D shapes on screen (e.g., cylinders, spheres, lines, polygons, etc) either from sets of points or from parametric equations;• a histogram visualization module (PCLHistogramVisualizer) for 2D plots; • a multitude of geometry and color handlers.
Q8. What is the code example for the results shown in Figure 8?
The authors welcome any new contributors to the project, and the authors hope to emphasize the importance of code sharing for 3D processing, which is becoming crucial for advancing the robotics field.
Q9. What is the code example for the results shown in Figure 10?
Figure 10 presents a grasping and manipulation application [11], where objects are first segmented from horizontal planar tables, clustered into individual units, and a registration operation is applied that attaches semantic information to each cluster found.
Q10. What was the result of the methods used to identify the door and the handle?
The results of these methods were then used to extract certain statistics about the shape and size of the door and the handle, in order to uniquely identify them and to reject false positives.
Q11. What is the code example for the results shown in Figure 7?
Code example for the results shown in Figure 7. pcl::StatisticalOutlierRemoval<pcl::PointXYZ> f; f.setInputCloud (input cloud); f.setMeanK (50); f.setStddevMulThresh (1.0); f.filter (output cloud);The second example constitutes a segmentation operation for planar surfaces, using a RANSAC [7] model, as shown in Algorithm 3.
Q12. What are the institutions that contributed to the development of the library?
Though the community is larger, and the authors accept patches and improvements from many users, the authors would like to acknowledge the following institutions for their core contributions to the development of the library: AIST, UC Berkeley, University ofBonn, University of British Columbia, ETH Zurich, University of Freiburg, Intel Reseach Seattle, LAAS/CNRS, MIT, University of Osnabrück, Stanford University, University of Tokyo, TUM, Vienna University of Technolog, and Washington University in St. Louis.