Public Types | Public Member Functions | Public Attributes | Friends

pcl::PointCloud< PointT > Class Template Reference

PointCloud represents the base class in PCL for storing collections of 3D points. More...

#include <pcl/point_cloud.h>

Collaboration diagram for pcl::PointCloud< PointT >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef PointT PointType
typedef std::vector< PointT,
Eigen::aligned_allocator
< PointT > > 
VectorType
typedef boost::shared_ptr
< PointCloud< PointT > > 
Ptr
typedef boost::shared_ptr
< const PointCloud< PointT > > 
ConstPtr
typedef VectorType::iterator iterator
typedef VectorType::const_iterator const_iterator

Public Member Functions

 PointCloud ()
 Default constructor.
 PointCloud (PointCloud< PointT > &pc)
 Copy constructor (needed by compilers such as Intel C++).
 PointCloud (const PointCloud< PointT > &pc)
 Copy constructor (needed by compilers such as Intel C++).
 PointCloud (const PointCloud< PointT > &pc, const std::vector< int > &indices)
 Copy constructor from point cloud subset.
 PointCloud (uint32_t width_, uint32_t height_, const PointT &value_=PointT())
 Allocate constructor from point cloud subset.
virtual ~PointCloud ()
 Destructor.
PointCloudoperator+= (const PointCloud &rhs)
 Add a point cloud to the current cloud.
const PointCloud operator+ (const PointCloud &rhs)
 Add a point cloud to another cloud.
const PointT & at (int column, int row) const
 Obtain the point given by the (column, row) coordinates.
PointT & at (int column, int row)
 Obtain the point given by the (column, row) coordinates.
const PointT & operator() (size_t column, size_t row) const
 Obtain the point given by the (column, row) coordinates.
PointT & operator() (size_t column, size_t row)
 Obtain the point given by the (column, row) coordinates.
bool isOrganized () const
 Return whether a dataset is organized (e.g., arranged in a structured grid).
Eigen::Map< Eigen::MatrixXf,
Eigen::Aligned,
Eigen::OuterStride<> > 
getMatrixXfMap (int dim, int stride, int offset)
 Return an Eigen MatrixXf (assumes float values) mapped to the specified dimensions of the PointCloud.
const Eigen::Map< const
Eigen::MatrixXf,
Eigen::Aligned,
Eigen::OuterStride<> > 
getMatrixXfMap (int dim, int stride, int offset) const
 Return an Eigen MatrixXf (assumes float values) mapped to the specified dimensions of the PointCloud.
Eigen::Map< Eigen::MatrixXf,
Eigen::Aligned,
Eigen::OuterStride<> > 
getMatrixXfMap ()
 Return an Eigen MatrixXf (assumes float values) mapped to the PointCloud.
const Eigen::Map< const
Eigen::MatrixXf,
Eigen::Aligned,
Eigen::OuterStride<> > 
getMatrixXfMap () const
 Return an Eigen MatrixXf (assumes float values) mapped to the PointCloud.
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
size_t size () const
void reserve (size_t n)
void resize (size_t n)
bool empty () const
const PointT & operator[] (size_t n) const
PointT & operator[] (size_t n)
const PointT & at (size_t n) const
PointT & at (size_t n)
const PointT & front () const
PointT & front ()
const PointT & back () const
PointT & back ()
void push_back (const PointT &pt)
 Insert a new point in the cloud, at the end of the container.
iterator insert (iterator position, const PointT &pt)
 Insert a new point in the cloud, given an iterator.
void insert (iterator position, size_t n, const PointT &pt)
 Insert a new point in the cloud N times, given an iterator.
template<class InputIterator >
void insert (iterator position, InputIterator first, InputIterator last)
 Insert a new range of points in the cloud, at a certain position.
iterator erase (iterator position)
 Erase a point in the cloud.
iterator erase (iterator first, iterator last)
 Erase a set of points given by a (first, last) iterator pair.
void swap (PointCloud< PointT > &rhs)
 Swap a point cloud with another cloud.
void clear ()
 Removes all points in a cloud and sets the width and height to 0.
Ptr makeShared () const
 Copy the cloud to the heap and return a smart pointer Note that deep copy is performed, so avoid using this function on non-empty clouds.

Public Attributes

std_msgs::Header header
 The point cloud header.
std::vector< PointT,
Eigen::aligned_allocator
< PointT > > 
points
 The point data.
uint32_t width
 The point cloud width (if organized as an image-structure).
uint32_t height
 The point cloud height (if organized as an image-structure).
bool is_dense
 True if no points are invalid (e.g., have NaN or Inf values).
Eigen::Vector4f sensor_origin_
 Sensor acquisition pose (origin/translation).
Eigen::Quaternionf sensor_orientation_
 Sensor acquisition pose (rotation).

Friends

boost::shared_ptr< MsgFieldMap > & detail::getMapping (pcl::PointCloud< PointT > &p)

Detailed Description

template<typename PointT>
class pcl::PointCloud< PointT >

PointCloud represents the base class in PCL for storing collections of 3D points.

The class is templated, which means you need to specify the type of data that it should contain. For example, to create a point cloud that holds 4 random XYZ data points, use:

 pcl::PointCloud<pcl::PointXYZ> cloud;
 cloud.push_back (pcl::PointXYZ (rand (), rand (), rand ())); 
 cloud.push_back (pcl::PointXYZ (rand (), rand (), rand ())); 
 cloud.push_back (pcl::PointXYZ (rand (), rand (), rand ())); 
 cloud.push_back (pcl::PointXYZ (rand (), rand (), rand ())); 

The PointCloud class contains the following elements:

Author:
Patrick Mihelich, Radu B. Rusu

Definition at line 179 of file point_cloud.h.


Member Typedef Documentation

template<typename PointT>
typedef VectorType::const_iterator pcl::PointCloud< PointT >::const_iterator

Definition at line 446 of file point_cloud.h.

template<typename PointT>
typedef boost::shared_ptr<const PointCloud<PointT> > pcl::PointCloud< PointT >::ConstPtr

Reimplemented in pcl::RangeImage, and pcl::RangeImagePlanar.

Definition at line 442 of file point_cloud.h.

template<typename PointT>
typedef VectorType::iterator pcl::PointCloud< PointT >::iterator

Definition at line 445 of file point_cloud.h.

template<typename PointT>
typedef PointT pcl::PointCloud< PointT >::PointType

Definition at line 439 of file point_cloud.h.

template<typename PointT>
typedef boost::shared_ptr<PointCloud<PointT> > pcl::PointCloud< PointT >::Ptr

Reimplemented in pcl::RangeImage, and pcl::RangeImagePlanar.

Definition at line 441 of file point_cloud.h.

template<typename PointT>
typedef std::vector<PointT, Eigen::aligned_allocator<PointT> > pcl::PointCloud< PointT >::VectorType

Definition at line 440 of file point_cloud.h.


Constructor & Destructor Documentation

template<typename PointT>
pcl::PointCloud< PointT >::PointCloud (  )  [inline]

Default constructor.

Sets is_dense to true, width and height to 0, and the sensor_origin_ and sensor_orientation_ to identity.

Definition at line 186 of file point_cloud.h.

template<typename PointT>
pcl::PointCloud< PointT >::PointCloud ( PointCloud< PointT > &  pc  )  [inline]

Copy constructor (needed by compilers such as Intel C++).

Parameters:
[in] pc the cloud to copy into this

Definition at line 195 of file point_cloud.h.

template<typename PointT>
pcl::PointCloud< PointT >::PointCloud ( const PointCloud< PointT > &  pc  )  [inline]

Copy constructor (needed by compilers such as Intel C++).

Parameters:
[in] pc the cloud to copy into this

Definition at line 206 of file point_cloud.h.

template<typename PointT>
pcl::PointCloud< PointT >::PointCloud ( const PointCloud< PointT > &  pc,
const std::vector< int > &  indices 
) [inline]

Copy constructor from point cloud subset.

Parameters:
[in] pc the cloud to copy into this
[in] indices the subset to copy

Definition at line 218 of file point_cloud.h.

template<typename PointT>
pcl::PointCloud< PointT >::PointCloud ( uint32_t  width_,
uint32_t  height_,
const PointT &  value_ = PointT () 
) [inline]

Allocate constructor from point cloud subset.

Parameters:
[in] width_ the cloud width
[in] height_ the cloud height
[in] value_ default value

Definition at line 235 of file point_cloud.h.

template<typename PointT>
virtual pcl::PointCloud< PointT >::~PointCloud (  )  [inline, virtual]

Destructor.

Definition at line 247 of file point_cloud.h.


Member Function Documentation

template<typename PointT>
const PointT& pcl::PointCloud< PointT >::at ( int  column,
int  row 
) const [inline]

Obtain the point given by the (column, row) coordinates.

Only works on organized datasets (those that have height != 1).

Parameters:
[in] column the column coordinate
[in] row the row coordinate

Definition at line 293 of file point_cloud.h.

template<typename PointT>
PointT& pcl::PointCloud< PointT >::at ( int  column,
int  row 
) [inline]

Obtain the point given by the (column, row) coordinates.

Only works on organized datasets (those that have height != 1).

Parameters:
[in] column the column coordinate
[in] row the row coordinate

Definition at line 307 of file point_cloud.h.

template<typename PointT>
const PointT& pcl::PointCloud< PointT >::at ( size_t  n  )  const [inline]

Definition at line 461 of file point_cloud.h.

template<typename PointT>
PointT& pcl::PointCloud< PointT >::at ( size_t  n  )  [inline]

Definition at line 462 of file point_cloud.h.

template<typename PointT>
const PointT& pcl::PointCloud< PointT >::back (  )  const [inline]

Definition at line 465 of file point_cloud.h.

template<typename PointT>
PointT& pcl::PointCloud< PointT >::back (  )  [inline]

Definition at line 466 of file point_cloud.h.

template<typename PointT>
iterator pcl::PointCloud< PointT >::begin (  )  [inline]

Definition at line 447 of file point_cloud.h.

template<typename PointT>
const_iterator pcl::PointCloud< PointT >::begin (  )  const [inline]

Definition at line 449 of file point_cloud.h.

template<typename PointT>
void pcl::PointCloud< PointT >::clear (  )  [inline]

Removes all points in a cloud and sets the width and height to 0.

Definition at line 568 of file point_cloud.h.

template<typename PointT>
bool pcl::PointCloud< PointT >::empty (  )  const [inline]

Definition at line 456 of file point_cloud.h.

template<typename PointT>
iterator pcl::PointCloud< PointT >::end (  )  [inline]

Definition at line 448 of file point_cloud.h.

template<typename PointT>
const_iterator pcl::PointCloud< PointT >::end (  )  const [inline]

Definition at line 450 of file point_cloud.h.

template<typename PointT>
iterator pcl::PointCloud< PointT >::erase ( iterator  first,
iterator  last 
) [inline]

Erase a set of points given by a (first, last) iterator pair.

Note:
This breaks the organized structure of the cloud by setting the height to 1!
Parameters:
[in] first where to start erasing points from
[in] last where to stop erasing points from
Returns:
returns the new position iterator

Definition at line 544 of file point_cloud.h.

template<typename PointT>
iterator pcl::PointCloud< PointT >::erase ( iterator  position  )  [inline]

Erase a point in the cloud.

Note:
This breaks the organized structure of the cloud by setting the height to 1!
Parameters:
[in] position what data point to erase
Returns:
returns the new position iterator

Definition at line 529 of file point_cloud.h.

template<typename PointT>
const PointT& pcl::PointCloud< PointT >::front (  )  const [inline]

Definition at line 463 of file point_cloud.h.

template<typename PointT>
PointT& pcl::PointCloud< PointT >::front (  )  [inline]

Definition at line 464 of file point_cloud.h.

template<typename PointT>
Eigen::Map<Eigen::MatrixXf, Eigen::Aligned, Eigen::OuterStride<> > pcl::PointCloud< PointT >::getMatrixXfMap ( int  dim,
int  stride,
int  offset 
) [inline]

Return an Eigen MatrixXf (assumes float values) mapped to the specified dimensions of the PointCloud.

Note:
This method is for advanced users only! Use with care!
Attention:
Since 1.4.0, Eigen matrices are forced to Row Major to increase the efficiency of the algorithms in PCL This means that the behavior of getMatrixXfMap changed, and is now correctly mapping 1-1 with a PointCloud structure, that is: number of points in a cloud = rows in a matrix, number of point dimensions = columns in a matrix
Parameters:
[in] dim the number of dimensions to consider for each point
[in] stride the number of values in each point (will be the number of values that separate two of the columns)
[in] offset the number of dimensions to skip from the beginning of each point (stride = offset + dim + x, where x is the number of dimensions to skip from the end of each point)
Note:
for getting only XYZ coordinates out of PointXYZ use dim=3, stride=4 and offset=0 due to the alignment.
Attention:
PointT types are most of the time aligned, so the offsets are not continuous!

Definition at line 365 of file point_cloud.h.

template<typename PointT>
const Eigen::Map<const Eigen::MatrixXf, Eigen::Aligned, Eigen::OuterStride<> > pcl::PointCloud< PointT >::getMatrixXfMap ( int  dim,
int  stride,
int  offset 
) const [inline]

Return an Eigen MatrixXf (assumes float values) mapped to the specified dimensions of the PointCloud.

Note:
This method is for advanced users only! Use with care!
Attention:
Since 1.4.0, Eigen matrices are forced to Row Major to increase the efficiency of the algorithms in PCL This means that the behavior of getMatrixXfMap changed, and is now correctly mapping 1-1 with a PointCloud structure, that is: number of points in a cloud = rows in a matrix, number of point dimensions = columns in a matrix
Parameters:
[in] dim the number of dimensions to consider for each point
[in] stride the number of values in each point (will be the number of values that separate two of the columns)
[in] offset the number of dimensions to skip from the beginning of each point (stride = offset + dim + x, where x is the number of dimensions to skip from the end of each point)
Note:
for getting only XYZ coordinates out of PointXYZ use dim=3, stride=4 and offset=0 due to the alignment.
Attention:
PointT types are most of the time aligned, so the offsets are not continuous!

Definition at line 389 of file point_cloud.h.

template<typename PointT>
const Eigen::Map<const Eigen::MatrixXf, Eigen::Aligned, Eigen::OuterStride<> > pcl::PointCloud< PointT >::getMatrixXfMap (  )  const [inline]

Return an Eigen MatrixXf (assumes float values) mapped to the PointCloud.

Note:
This method is for advanced users only! Use with care!
Attention:
PointT types are most of the time aligned, so the offsets are not continuous! See getMatrixXfMap for more information.

Definition at line 415 of file point_cloud.h.

template<typename PointT>
Eigen::Map<Eigen::MatrixXf, Eigen::Aligned, Eigen::OuterStride<> > pcl::PointCloud< PointT >::getMatrixXfMap (  )  [inline]

Return an Eigen MatrixXf (assumes float values) mapped to the PointCloud.

Note:
This method is for advanced users only! Use with care!
Attention:
PointT types are most of the time aligned, so the offsets are not continuous! See getMatrixXfMap for more information.

Definition at line 404 of file point_cloud.h.

template<typename PointT>
void pcl::PointCloud< PointT >::insert ( iterator  position,
size_t  n,
const PointT &  pt 
) [inline]

Insert a new point in the cloud N times, given an iterator.

Note:
This breaks the organized structure of the cloud by setting the height to 1!
Parameters:
[in] position where to insert the point
[in] n the number of times to insert the point
[in] pt the point to insert

Definition at line 502 of file point_cloud.h.

template<typename PointT>
iterator pcl::PointCloud< PointT >::insert ( iterator  position,
const PointT &  pt 
) [inline]

Insert a new point in the cloud, given an iterator.

Note:
This breaks the organized structure of the cloud by setting the height to 1!
Parameters:
[in] position where to insert the point
[in] pt the point to insert
Returns:
returns the new position iterator

Definition at line 487 of file point_cloud.h.

template<typename PointT>
template<class InputIterator >
void pcl::PointCloud< PointT >::insert ( iterator  position,
InputIterator  first,
InputIterator  last 
) [inline]

Insert a new range of points in the cloud, at a certain position.

Note:
This breaks the organized structure of the cloud by setting the height to 1!
Parameters:
[in] position where to insert the data
[in] first where to start inserting the points from
[in] last where to stop inserting the points from

Definition at line 516 of file point_cloud.h.

template<typename PointT>
bool pcl::PointCloud< PointT >::isOrganized (  )  const [inline]

Return whether a dataset is organized (e.g., arranged in a structured grid).

Note:
The height value must be different than 1 for a dataset to be organized.

Definition at line 343 of file point_cloud.h.

template<typename PointT>
Ptr pcl::PointCloud< PointT >::makeShared (  )  const [inline]

Copy the cloud to the heap and return a smart pointer Note that deep copy is performed, so avoid using this function on non-empty clouds.

The changes of the returned cloud are not mirrored back to this one.

Returns:
shared pointer to the copy of the cloud

Definition at line 581 of file point_cloud.h.

template<typename PointT>
PointT& pcl::PointCloud< PointT >::operator() ( size_t  column,
size_t  row 
) [inline]

Obtain the point given by the (column, row) coordinates.

Only works on organized datasets (those that have height != 1).

Parameters:
[in] column the column coordinate
[in] row the row coordinate

Definition at line 333 of file point_cloud.h.

template<typename PointT>
const PointT& pcl::PointCloud< PointT >::operator() ( size_t  column,
size_t  row 
) const [inline]

Obtain the point given by the (column, row) coordinates.

Only works on organized datasets (those that have height != 1).

Parameters:
[in] column the column coordinate
[in] row the row coordinate

Definition at line 322 of file point_cloud.h.

template<typename PointT>
const PointCloud pcl::PointCloud< PointT >::operator+ ( const PointCloud< PointT > &  rhs  )  [inline]

Add a point cloud to another cloud.

Parameters:
[in] rhs the cloud to add to the current cloud
Returns:
the new cloud as a concatenation of the current cloud and the new given cloud

Definition at line 281 of file point_cloud.h.

template<typename PointT>
PointCloud& pcl::PointCloud< PointT >::operator+= ( const PointCloud< PointT > &  rhs  )  [inline]

Add a point cloud to the current cloud.

Parameters:
[in] rhs the cloud to add to the current cloud
Returns:
the new cloud as a concatenation of the current cloud and the new given cloud

Definition at line 255 of file point_cloud.h.

template<typename PointT>
const PointT& pcl::PointCloud< PointT >::operator[] ( size_t  n  )  const [inline]

Definition at line 459 of file point_cloud.h.

template<typename PointT>
PointT& pcl::PointCloud< PointT >::operator[] ( size_t  n  )  [inline]

Definition at line 460 of file point_cloud.h.

template<typename PointT>
void pcl::PointCloud< PointT >::push_back ( const PointT &  pt  )  [inline]

Insert a new point in the cloud, at the end of the container.

Note:
This breaks the organized structure of the cloud by setting the height to 1!
Parameters:
[in] pt the point to insert

Definition at line 473 of file point_cloud.h.

template<typename PointT>
void pcl::PointCloud< PointT >::reserve ( size_t  n  )  [inline]

Definition at line 454 of file point_cloud.h.

template<typename PointT>
void pcl::PointCloud< PointT >::resize ( size_t  n  )  [inline]

Definition at line 455 of file point_cloud.h.

template<typename PointT>
size_t pcl::PointCloud< PointT >::size (  )  const [inline]

Definition at line 453 of file point_cloud.h.

template<typename PointT>
void pcl::PointCloud< PointT >::swap ( PointCloud< PointT > &  rhs  )  [inline]

Swap a point cloud with another cloud.

Parameters:
[in,out] rhs point cloud to swap this with

Definition at line 556 of file point_cloud.h.


Friends And Related Function Documentation

template<typename PointT>
boost::shared_ptr<MsgFieldMap>& detail::getMapping ( pcl::PointCloud< PointT > &  p  )  [friend]

Member Data Documentation

template<typename PointT>
std_msgs::Header pcl::PointCloud< PointT >::header

The point cloud header.

It contains information about the acquisition time.

Definition at line 421 of file point_cloud.h.

template<typename PointT>
uint32_t pcl::PointCloud< PointT >::height

The point cloud height (if organized as an image-structure).

Definition at line 429 of file point_cloud.h.

template<typename PointT>
bool pcl::PointCloud< PointT >::is_dense

True if no points are invalid (e.g., have NaN or Inf values).

Definition at line 432 of file point_cloud.h.

template<typename PointT>
std::vector<PointT, Eigen::aligned_allocator<PointT> > pcl::PointCloud< PointT >::points

The point data.

Definition at line 424 of file point_cloud.h.

template<typename PointT>
Eigen::Quaternionf pcl::PointCloud< PointT >::sensor_orientation_

Sensor acquisition pose (rotation).

Definition at line 437 of file point_cloud.h.

template<typename PointT>
Eigen::Vector4f pcl::PointCloud< PointT >::sensor_origin_

Sensor acquisition pose (origin/translation).

Definition at line 435 of file point_cloud.h.

template<typename PointT>
uint32_t pcl::PointCloud< PointT >::width

The point cloud width (if organized as an image-structure).

Definition at line 427 of file point_cloud.h.


The documentation for this class was generated from the following file: