octomap 1.9.8
CountingOcTree.h
Go to the documentation of this file.
1/*
2 * OctoMap - An Efficient Probabilistic 3D Mapping Framework Based on Octrees
3 * https://octomap.github.io/
4 *
5 * Copyright (c) 2009-2013, K.M. Wurm and A. Hornung, University of Freiburg
6 * All rights reserved.
7 * License: New BSD
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * * Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 * * Neither the name of the University of Freiburg nor the names of its
18 * contributors may be used to endorse or promote products derived from
19 * this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef OCTOMAP_COUNTING_OCTREE_HH
35#define OCTOMAP_COUNTING_OCTREE_HH
36
37
38#include <stdio.h>
39#include "OcTreeBase.h"
40#include "OcTreeDataNode.h"
41
42namespace octomap {
43
53 class CountingOcTreeNode : public OcTreeDataNode<unsigned int> {
54
55 public:
56
59
60 inline unsigned int getCount() const { return getValue(); }
61 inline void increaseCount() { value++; }
62 inline void setCount(unsigned c) {this->setValue(c); }
63
64 };
65
66
67
76 class CountingOcTree : public OcTreeBase <CountingOcTreeNode> {
77
78 public:
81 virtual CountingOcTreeNode* updateNode(const point3d& value);
83 void getCentersMinHits(point3d_list& node_centers, unsigned int min_hits) const;
84
85 protected:
86
87 void getCentersMinHitsRecurs( point3d_list& node_centers,
88 unsigned int& min_hits,
89 unsigned int max_depth,
90 CountingOcTreeNode* node, unsigned int depth,
91 const OcTreeKey& parent_key) const;
92
101 public:
103 CountingOcTree* tree = new CountingOcTree(0.1);
104 tree->clearKeyRays();
106 }
107
113 void ensureLinking() {};
114 };
117 };
118
119
120}
121
122
123#endif
static void registerTreeType(AbstractOcTree *tree)
Definition: AbstractOcTree.cpp:205
An Octree-node which stores an internal counter per node / volume.
Definition: CountingOcTree.h:53
~CountingOcTreeNode()
Definition: CountingOcTree.cpp:47
void increaseCount()
Definition: CountingOcTree.h:61
void setCount(unsigned c)
Definition: CountingOcTree.h:62
CountingOcTreeNode()
implementation of CountingOcTreeNode -------------------------------—
Definition: CountingOcTree.cpp:42
unsigned int getCount() const
Definition: CountingOcTree.h:60
Static member object which ensures that this OcTree's prototype ends up in the classIDMapping only on...
Definition: CountingOcTree.h:100
StaticMemberInitializer()
Definition: CountingOcTree.h:102
void ensureLinking()
Dummy function to ensure that MSVC does not drop the StaticMemberInitializer, causing this tree faili...
Definition: CountingOcTree.h:113
An AbstractOcTree which stores an internal counter per node / volume.
Definition: CountingOcTree.h:76
void getCentersMinHits(point3d_list &node_centers, unsigned int min_hits) const
Definition: CountingOcTree.cpp:94
static StaticMemberInitializer countingOcTreeMemberInit
static member to ensure static initialization (only once)
Definition: CountingOcTree.h:116
CountingOcTree(double resolution)
Default constructor, sets resolution of leafs.
Definition: CountingOcTree.cpp:52
void getCentersMinHitsRecurs(point3d_list &node_centers, unsigned int &min_hits, unsigned int max_depth, CountingOcTreeNode *node, unsigned int depth, const OcTreeKey &parent_key) const
Definition: CountingOcTree.cpp:102
virtual CountingOcTreeNode * updateNode(const point3d &value)
Definition: CountingOcTree.cpp:57
void clearKeyRays()
Clear KeyRay vector to minimize unneeded memory.
Definition: OcTreeBaseImpl.h:120
double resolution
in meters
Definition: OcTreeBaseImpl.h:547
Definition: OcTreeBase.h:44
Basic node in the OcTree that can hold arbitrary data of type T in value.
Definition: OcTreeDataNode.h:63
unsigned int value
stored data (payload)
Definition: OcTreeDataNode.h:128
void setValue(unsigned int v)
sets value to be stored in the node
Definition: OcTreeDataNode.h:105
unsigned int getValue() const
Definition: OcTreeDataNode.h:103
OcTreeKey is a container class for internal key addressing.
Definition: OcTreeKey.h:70
This class represents a three-dimensional vector.
Definition: Vector3.h:50
Namespace the OctoMap library and visualization tools.
std::list< octomath::Vector3 > point3d_list
Definition: octomap_types.h:54