The point cloud library is designed to allow users to deal with range data acquired from various sensors in meaningful and useful ways.
This page is currently an aggregation of notes and ideas towards the library, which is referred to as nrtCloud for now.
Eigen3 - A very fast SSE optimized library for linear algebra.
# To install: Download Eigen3
wget http://bitbucket.org/eigen/eigen/get/3.0-beta3.tar.gz
# Unpack and install Eigen3
tar xvf 3.0-beta3.tar.gz
cd 3.0-beta3/ && mkdir build && cd build
cmake .. && make && sudo make install
sudo ldconfig /usr/local/lib/
# Clean up
cd ../.. && rm -rf 3.0-beta3 && rm 3.0-beta3.tar.gz
# TODO: include fix for parallelism.h file
FLANN - A very fast and optimized library for performing approximate nearest neighbor. This library handles creation of kd-trees and all of the hard work associated with multidimensional NN. Eventually it would be nice to eliminate this as a dependency or also introduce a non approximate version of NN for when any inaccuracies would cause problems.
# To install: Download flann
wget http://www.cs.ubc.ca/~mariusm/uploads/FLANN/flann-1.6.7-src.zip
# Unpackand install flann
unzip flann-1.6.7-src.zip
cd flann-1-6.7-src && mkdir build && cd build
cmake .. && make && sudo make install
sudo ldconfig /usr/local/lib
# clean up
cd ../.. && rm -rf flann-1.6.7-src && rm flann-1.6.7-src.zip
A generic point cloud data structure
Extensible filtering
KDTree Searching (radius and knn)
Registration using Iterative Closest Point
Sample Concensus
RANSAC
Models for Registration
Normal Estimation
Plane Fitting
Point clouds are represented using a “Generic Bag” data container which is very similar to a tuple. The container allows for bags with different collections of items to be assigned to each other - any time there is a type match there will be an assignment.
A downside to this approach is that we do not know ahead of time what the specific type will be for varying parts of our point - such as the geometry. To remedy this, point cloud classes are templated based upon the point type and a PointDescriptor, which specifies important typedefs needed internally.
For the most commonly utilized point types (such as 3D geometry, normals, and rgba color), the PointDescriptor will be generated automatically and the user only worries about the PointType template parameter
Point cloud subsets are represented by their indices in a vector of ints when there is no need to actually create a new cloud
Currently a lot of inspiration is being drawn from
PCL which is part of ROS.
point_cloud_library.txt · Last modified: 2011/05/16 13:40 by shane