pcl::octree::OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT > Class Template Reference
Module octree

Octree pointcloud change detector class More...

`#include <pcl/octree/octree_pointcloud_changedetector.h>`

Inheritance diagram for pcl::octree::OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT >:

## Public Types

using | Ptr = shared_ptr< OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT > >
using | ConstPtr = shared_ptr< const OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT > >
Public Types inherited from pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty, Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty > >
using | Base = Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty >
using | LeafNode = typename OctreeT::LeafNode
using | BranchNode = typename OctreeT::BranchNode
using | IndicesPtr = shared_ptr< Indices >
using | IndicesConstPtr = shared_ptr< const Indices >
using | PointCloud = pcl::PointCloud< PointT >
using | PointCloudPtr = typename PointCloud::Ptr
using | PointCloudConstPtr = typename PointCloud::ConstPtr
using | SingleBuffer = OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty, OctreeBase< OctreeContainerPointIndices > >
using | Ptr = shared_ptr< OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty, Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty > > >
using | ConstPtr = shared_ptr< const OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty, Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty > > >
using | AlignedPointTVector = std::vector< PointT, Eigen::aligned_allocator< PointT > >
using | AlignedPointXYZVector = std::vector< PointXYZ, Eigen::aligned_allocator< PointXYZ > >
Public Types inherited from pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >
using | OctreeT = Octree2BufBase< LeafContainerT, BranchContainerT >
using | BranchNode = BufferedBranchNode< BranchContainerT >
using | LeafNode = OctreeLeafNode< LeafContainerT >
using | BranchContainer = BranchContainerT
using | LeafContainer = LeafContainerT
using | Iterator = OctreeDepthFirstIterator< OctreeT >
using | ConstIterator = const OctreeDepthFirstIterator< OctreeT >
using | LeafNodeIterator = OctreeLeafNodeDepthFirstIterator< OctreeT >
using | ConstLeafNodeIterator = const OctreeLeafNodeDepthFirstIterator< OctreeT >
using | LeafNodeDepthFirstIterator = OctreeLeafNodeDepthFirstIterator< OctreeT >
using | ConstLeafNodeDepthFirstIterator = const OctreeLeafNodeDepthFirstIterator< OctreeT >
using | DepthFirstIterator = OctreeDepthFirstIterator< OctreeT >
using | ConstDepthFirstIterator = const OctreeDepthFirstIterator< OctreeT >
using | BreadthFirstIterator = OctreeBreadthFirstIterator< OctreeT >
using | ConstBreadthFirstIterator = const OctreeBreadthFirstIterator< OctreeT >
using | LeafNodeBreadthIterator = OctreeLeafNodeBreadthFirstIterator< OctreeT >
using | ConstLeafNodeBreadthIterator = const OctreeLeafNodeBreadthFirstIterator< OctreeT >

## Public Member Functions

| OctreePointCloudChangeDetector (const double resolution_arg)
| Constructor. More...
std::size_t | getPointIndicesFromNewVoxels (Indices &indicesVector_arg, const uindex_t minPointsPerLeaf_arg=0)
| Get a indices from all leaf nodes that did not exist in previous buffer. More...
Public Member Functions inherited from pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty, Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty > >
| OctreePointCloud (const double resolution_arg)
| Octree pointcloud constructor. More...
void | setInputCloud (const PointCloudConstPtr &cloud_arg, const IndicesConstPtr &indices_arg=IndicesConstPtr())
| Provide a pointer to the input data set. More...
IndicesConstPtr const | getIndices () const
| Get a pointer to the vector of indices used. More...
PointCloudConstPtr | getInputCloud () const
| Get a pointer to the input point cloud dataset. More...
void | setEpsilon (double eps)
| Set the search epsilon precision (error bound) for nearest neighbors searches. More...
double | getEpsilon () const
| Get the search epsilon precision (error bound) for nearest neighbors searches. More...
void | setResolution (double resolution_arg)
| Set/change the octree voxel resolution. More...
double | getResolution () const
| Get octree voxel resolution. More...
uindex_t | getTreeDepth () const
| Get the maximum depth of the octree. More...
void | addPointsFromInputCloud ()
| Add points from input point cloud to octree. More...
void | addPointFromCloud (uindex_t point_idx_arg, IndicesPtr indices_arg)
| Add point at given index from input point cloud to octree. More...
void | addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg)
| Add point simultaneously to octree and input point cloud. More...
void | addPointToCloud (const PointT &point_arg, PointCloudPtr cloud_arg, IndicesPtr indices_arg)
| Add point simultaneously to octree and input point cloud. More...
bool | isVoxelOccupiedAtPoint (const PointT &point_arg) const
| Check if voxel at given point exist. More...
bool | isVoxelOccupiedAtPoint (const double point_x_arg, const double point_y_arg, const double point_z_arg) const
| Check if voxel at given point coordinates exist. More...
bool | isVoxelOccupiedAtPoint (const index_t &point_idx_arg) const
| Check if voxel at given point from input cloud exist. More...
void | deleteTree ()
| Delete the octree structure and its leaf nodes. More...
uindex_t | getOccupiedVoxelCenters (AlignedPointTVector &voxel_center_list_arg) const
| Get a PointT vector of centers of all occupied voxels. More...
uindex_t | getApproxIntersectedVoxelCentersBySegment (const Eigen::Vector3f &origin, const Eigen::Vector3f &end, AlignedPointTVector &voxel_center_list, float precision=0.2)
| Get a PointT vector of centers of voxels intersected by a line segment. More...
void | deleteVoxelAtPoint (const PointT &point_arg)
| Delete leaf node / voxel at given point. More...
void | deleteVoxelAtPoint (const index_t &point_idx_arg)
| Delete leaf node / voxel at given point from input cloud. More...
void | defineBoundingBox ()
| Investigate dimensions of pointcloud data set and define corresponding bounding box for octree. More...
void | defineBoundingBox (const double min_x_arg, const double min_y_arg, const double min_z_arg, const double max_x_arg, const double max_y_arg, const double max_z_arg)
| Define bounding box for octree. More...
void | defineBoundingBox (const double max_x_arg, const double max_y_arg, const double max_z_arg)
| Define bounding box for octree. More...
void | defineBoundingBox (const double cubeLen_arg)
| Define bounding box cube for octree. More...
void | getBoundingBox (double &min_x_arg, double &min_y_arg, double &min_z_arg, double &max_x_arg, double &max_y_arg, double &max_z_arg) const
| Get bounding box for octree. More...
double | getVoxelSquaredDiameter (uindex_t tree_depth_arg) const
| Calculates the squared diameter of a voxel at given tree depth. More...
double | getVoxelSquaredDiameter () const
| Calculates the squared diameter of a voxel at leaf depth. More...
double | getVoxelSquaredSideLen (uindex_t tree_depth_arg) const
| Calculates the squared voxel cube side length at given tree depth. More...
double | getVoxelSquaredSideLen () const
| Calculates the squared voxel cube side length at leaf level. More...
void | getVoxelBounds (const OctreeIteratorBase< Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty > > &iterator, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
| Generate bounds of the current voxel of an octree iterator. More...
void | enableDynamicDepth (std::size_t maxObjsPerLeaf)
| Enable dynamic octree structure. More...
Public Member Functions inherited from pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >
Iterator | begin (uindex_t max_depth_arg=0)
const Iterator | end ()
LeafNodeDepthFirstIterator | leaf_depth_begin (uindex_t max_depth_arg=0)
const LeafNodeDepthFirstIterator | leaf_depth_end ()
DepthFirstIterator | depth_begin (uindex_t maxDepth_arg=0)
const DepthFirstIterator | depth_end ()
BreadthFirstIterator | breadth_begin (uindex_t max_depth_arg=0)
const BreadthFirstIterator | breadth_end ()
LeafNodeBreadthIterator | leaf_breadth_begin (uindex_t max_depth_arg=0u)
const LeafNodeBreadthIterator | leaf_breadth_end ()
| Octree2BufBase ()
| Empty constructor. More...
virtual | ~Octree2BufBase ()
| Empty deconstructor. More...
| Octree2BufBase (const Octree2BufBase &source)
| Copy constructor. More...
Octree2BufBase & | operator= (const Octree2BufBase &source)
| Copy constructor. More...
void | setMaxVoxelIndex (uindex_t max_voxel_index_arg)
| Set the maximum amount of voxels per dimension. More...
void | setTreeDepth (uindex_t depth_arg)
| Set the maximum depth of the octree. More...
uindex_t | getTreeDepth () const
| Get the maximum depth of the octree. More...
LeafContainerT * | createLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg)
| Create new leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
LeafContainerT * | findLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg)
| Find leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
bool | existLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg) const
| Check for the existence of leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
void | removeLeaf (uindex_t idx_x_arg, uindex_t idx_y_arg, uindex_t idx_z_arg)
| Remove leaf node at (idx_x_arg, idx_y_arg, idx_z_arg). More...
std::size_t | getLeafCount () const
| Return the amount of existing leafs in the octree. More...
std::size_t | getBranchCount () const
| Return the amount of existing branches in the octree. More...
void | deleteTree ()
| Delete the octree structure and its leaf nodes. More...
void | deletePreviousBuffer ()
| Delete octree structure of previous buffer. More...
void | deleteCurrentBuffer ()
| Delete the octree structure in the current buffer. More...
void | switchBuffers ()
| Switch buffers and reset current octree structure. More...
void | serializeTree (std::vector< char > &binary_tree_out_arg, bool do_XOR_encoding_arg=false)
| Serialize octree into a binary output vector describing its branch node structure. More...
void | serializeTree (std::vector< char > &binary_tree_out_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg, bool do_XOR_encoding_arg=false)
| Serialize octree into a binary output vector describing its branch node structure and and push all DataT elements stored in the octree to a vector. More...
void | serializeLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
| Outputs a vector of all DataT elements that are stored within the octree leaf nodes. More...
void | serializeNewLeafs (std::vector< LeafContainerT * > &leaf_container_vector_arg)
| Outputs a vector of all DataT elements from leaf nodes, that do not exist in the previous octree buffer. More...
void | deserializeTree (std::vector< char > &binary_tree_in_arg, bool do_XOR_decoding_arg=false)
| Deserialize a binary octree description vector and create a corresponding octree structure. More...
void | deserializeTree (std::vector< char > &binary_tree_in_arg, std::vector< LeafContainerT * > &leaf_container_vector_arg, bool do_XOR_decoding_arg=false)
| Deserialize a binary octree description and create a corresponding octree structure. More...

## Additional Inherited Members

Protected Member Functions inherited from pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty, Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty > >
virtual void | addPointIdx (uindex_t point_idx_arg)
| Add point at index from input pointcloud dataset to octree. More...
void | expandLeafNode (LeafNode *leaf_node, BranchNode *parent_branch, unsigned char child_idx, uindex_t depth_mask)
| Add point at index from input pointcloud dataset to octree. More...
const PointT & | getPointByIndex (uindex_t index_arg) const
| Get point at index from input pointcloud dataset. More...
OctreeContainerPointIndices * | findLeafAtPoint (const PointT &point_arg) const
| Find octree leaf node at a given point. More...
void | getKeyBitSize ()
| Define octree key setting and octree depth based on defined bounding box. More...
void | adoptBoundingBoxToPoint (const PointT &point_idx_arg)
| Grow the bounding box/octree until point fits. More...
bool | isPointWithinBoundingBox (const PointT &point_idx_arg) const
| Checks if given point is within the bounding box of the octree. More...
void | genOctreeKeyforPoint (const PointT &point_arg, OctreeKey &key_arg) const
| Generate octree key for voxel at a given point. More...
void | genOctreeKeyforPoint (const double point_x_arg, const double point_y_arg, const double point_z_arg, OctreeKey &key_arg) const
| Generate octree key for voxel at a given point. More...
virtual bool | genOctreeKeyForDataT (const index_t &data_arg, OctreeKey &key_arg) const
| Virtual method for generating octree key for a given point index. More...
void | genLeafNodeCenterFromOctreeKey (const OctreeKey &key_arg, PointT &point_arg) const
| Generate a point at center of leaf node voxel. More...
void | genVoxelCenterFromOctreeKey (const OctreeKey &key_arg, uindex_t tree_depth_arg, PointT &point_arg) const
| Generate a point at center of octree voxel at given tree level. More...
void | genVoxelBoundsFromOctreeKey (const OctreeKey &key_arg, uindex_t tree_depth_arg, Eigen::Vector3f &min_pt, Eigen::Vector3f &max_pt) const
| Generate bounds of an octree voxel using octree key and tree depth arguments. More...
uindex_t | getOccupiedVoxelCentersRecursive (const BranchNode *node_arg, const OctreeKey &key_arg, AlignedPointTVector &voxel_center_list_arg) const
| Recursively search the tree for all leaf nodes and return a vector of voxel centers. More...
Protected Member Functions inherited from pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >
OctreeNode * | getRootNode () const
| Retrieve root node. More...
LeafContainerT * | findLeaf (const OctreeKey &key_arg) const
| Find leaf node. More...
LeafContainerT * | createLeaf (const OctreeKey &key_arg)
| Create a leaf node. More...
bool | existLeaf (const OctreeKey &key_arg) const
| Check if leaf doesn't exist in the octree. More...
void | removeLeaf (const OctreeKey &key_arg)
| Remove leaf node from octree. More...
bool | branchHasChild (const BranchNode &branch_arg, unsigned char child_idx_arg) const
| Check if branch is pointing to a particular child node. More...
OctreeNode * | getBranchChildPtr (const BranchNode &branch_arg, unsigned char child_idx_arg) const
| Retrieve a child node pointer for child node at child_idx. More...
void | setBranchChildPtr (BranchNode &branch_arg, unsigned char child_idx_arg, OctreeNode *new_child_arg)
| Assign new child node to branch. More...
char | getBranchBitPattern (const BranchNode &branch_arg) const
| Generate bit pattern reflecting the existence of child node pointers for current buffer. More...
char | getBranchBitPattern (const BranchNode &branch_arg, unsigned char bufferSelector_arg) const
| Generate bit pattern reflecting the existence of child node pointers in specific buffer. More...
char | getBranchXORBitPattern (const BranchNode &branch_arg) const
| Generate XOR bit pattern reflecting differences between the two octree buffers. More...
bool | hasBranchChanges (const BranchNode &branch_arg) const
| Test if branch changed between previous and current buffer. More...
void | deleteBranchChild (BranchNode &branch_arg, unsigned char buffer_selector_arg, unsigned char child_idx_arg)
| Delete child node and all its subchilds from octree in specific buffer. More...
void | deleteBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Delete child node and all its subchilds from octree in current buffer. More...
void | deleteBranch (BranchNode &branch_arg)
| Delete branch and all its subchilds from octree (both buffers) More...
BranchNode * | createBranchChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Fetch and add a new branch child to a branch class in current buffer. More...
LeafNode * | createLeafChild (BranchNode &branch_arg, unsigned char child_idx_arg)
| Fetch and add a new leaf child to a branch class. More...
uindex_t | createLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg, LeafNode *&return_leaf_arg, BranchNode *&parent_of_leaf_arg, bool branch_reset_arg=false)
| Create a leaf node at octree key. More...
void | findLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg, LeafContainerT *&result_arg) const
| Recursively search for a given leaf node and return a pointer. More...
bool | deleteLeafRecursive (const OctreeKey &key_arg, uindex_t depth_mask_arg, BranchNode *branch_arg)
| Recursively search and delete leaf node. More...
void | serializeTreeRecursive (BranchNode *branch_arg, OctreeKey &key_arg, std::vector< char > *binary_tree_out_arg, typename std::vector< LeafContainerT * > *leaf_container_vector_arg, bool do_XOR_encoding_arg=false, bool new_leafs_filter_arg=false)
| Recursively explore the octree and output binary octree description together with a vector of leaf node DataT content. More...

void

deserializeTreeRecursive (BranchNode *branch_arg, uindex_t depth_mask_arg, OctreeKey &key_arg, typename std::vector< char >::const_iterator &binary_tree_in_it_arg, typename std::vector< char >::const_iterator &binary_tree_in_it_end_arg, typename std::vector< LeafContainerT * >::const_iterator *leaf_container_vector_it_arg, typename std::vector< LeafContainerT * >::const_iterator *leaf_container_vector_it_end_arg, bool branch_reset_arg=false, bool do_XOR_decoding_arg=false)

| Rebuild an octree based on binary XOR octree description and DataT objects for leaf node initialization. More...
virtual void | serializeTreeCallback (LeafContainerT &, const OctreeKey &)
| Callback executed for every leaf node data during serialization. More...
virtual void | deserializeTreeCallback (LeafContainerT &, const OctreeKey &)
| Callback executed for every leaf node data during deserialization. More...
void | treeCleanUpRecursive (BranchNode *branch_arg)
| Recursively explore the octree and remove unused branch and leaf nodes. More...
bool | octreeCanResize ()
| Test if octree is able to dynamically change its depth. More...
void | printBinary (char data_arg)
| Prints binary representation of a byte - used for debugging. More...
Protected Attributes inherited from pcl::octree::OctreePointCloud< PointT, OctreeContainerPointIndices, OctreeContainerEmpty, Octree2BufBase< OctreeContainerPointIndices, OctreeContainerEmpty > >
PointCloudConstPtr | input_
| Pointer to input point cloud dataset. More...
IndicesConstPtr | indices_
| A pointer to the vector of point indices to use. More...
double | epsilon_
| Epsilon precision (error bound) for nearest neighbors searches. More...
double | resolution_
| Octree resolution. More...
double | min_x_
double | max_x_
double | min_y_
double | max_y_
double | min_z_
double | max_z_
bool | bounding_box_defined_
| Flag indicating if octree has defined bounding box. More...
std::size_t | max_objs_per_leaf_
| Amount of DataT objects per leafNode before expanding branch. More...
Protected Attributes inherited from pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >
std::size_t | leaf_count_
| Amount of leaf nodes More...
std::size_t | branch_count_
| Amount of branch nodes More...
BranchNode * | root_node_
| Pointer to root branch node of octree More...
uindex_t | depth_mask_
| Depth mask based on octree depth More...
OctreeKey | max_key_
| key range More...
unsigned char | buffer_selector_
| Currently active octree buffer More...
bool | tree_dirty_flag_
| flags indicating if unused branches and leafs might exist in previous buffer More...
uindex_t | octree_depth_
| Octree depth. More...
bool | dynamic_depth_enabled_
| Enable dynamic_depth. More...

## Detailed Description

### template<typename PointT, typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>
class pcl::octree::OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT >

Octree pointcloud change detector class

Note
  This pointcloud octree class generate an octrees from a point cloud (zero-copy). It allows to detect new leaf nodes and serialize their point indices
  The octree pointcloud is initialized with its voxel resolution. Its bounding box is automatically adjusted or can be predefined.

Template Parameters

  PointT | type of point used in pointcloud

Author
  Julius Kammerl (juliu.nosp@m.s@ka.nosp@m.mmerl.nosp@m..de)

Definition at line 63 of file octree_pointcloud_changedetector.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointT , typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT >::ConstPtr = shared_ptr< const OctreePointCloudChangeDetector<PointT, LeafContainerT, BranchContainerT> >

Definition at line 74 of file octree_pointcloud_changedetector.h.

## Ptr

template<typename PointT , typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

using pcl::octree::OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT >::Ptr = shared_ptr< OctreePointCloudChangeDetector<PointT, LeafContainerT, BranchContainerT> >

Definition at line 72 of file octree_pointcloud_changedetector.h.

## Constructor & Destructor Documentation

## OctreePointCloudChangeDetector()

template<typename PointT , typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

pcl::octree::OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT >::OctreePointCloudChangeDetector | ( | const double | resolution_arg | ) |

inline

Constructor.

Parameters

  resolution_arg | octree resolution at lowest octree level

Definition at line 80 of file octree_pointcloud_changedetector.h.

## Member Function Documentation

## getPointIndicesFromNewVoxels()

template<typename PointT , typename LeafContainerT = OctreeContainerPointIndices, typename BranchContainerT = OctreeContainerEmpty>

std::size_t pcl::octree::OctreePointCloudChangeDetector< PointT, LeafContainerT, BranchContainerT >::getPointIndicesFromNewVoxels | ( | Indices & | indicesVector_arg,
|  | const uindex_t | minPointsPerLeaf_arg = `0`
| ) |  |

inline

Get a indices from all leaf nodes that did not exist in previous buffer.

Parameters

  indicesVector_arg | results are written to this vector of int indices
  minPointsPerLeaf_arg | minimum amount of points required within leaf node to become serialized.

Returns
  number of point indices

Definition at line 94 of file octree_pointcloud_changedetector.h.

References pcl::octree::Octree2BufBase< LeafContainerT, BranchContainerT >::serializeNewLeafs().

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

- pcl/octree/octree_pointcloud_changedetector.h