octomap 1.9.8
OcTreeNode.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_OCTREE_NODE_H
35#define OCTOMAP_OCTREE_NODE_H
36
37#include "octomap_types.h"
38#include "octomap_utils.h"
39#include "OcTreeDataNode.h"
40#include <limits>
41
42namespace octomap {
43
55 class OcTreeNode : public OcTreeDataNode<float> {
56
57 public:
58 OcTreeNode();
60
61
62 // -- node occupancy ----------------------------
63
65 inline double getOccupancy() const { return probability(value); }
66
68 inline float getLogOdds() const{ return value; }
70 inline void setLogOdds(float l) { value = l; }
71
75 double getMeanChildLogOdds() const;
76
80 float getMaxChildLogOdds() const;
81
84 this->setLogOdds(this->getMaxChildLogOdds()); // conservative
85 }
86
88 void addValue(const float& p);
89
90
91 protected:
92 // "value" stores log odds occupancy probability
93 };
94
95} // end namespace
96
97#endif
Basic node in the OcTree that can hold arbitrary data of type T in value.
Definition: OcTreeDataNode.h:63
float value
stored data (payload)
Definition: OcTreeDataNode.h:128
Nodes to be used in OcTree.
Definition: OcTreeNode.h:55
void updateOccupancyChildren()
update this node's occupancy according to its children's maximum occupancy
Definition: OcTreeNode.h:83
float getMaxChildLogOdds() const
Definition: OcTreeNode.cpp:76
~OcTreeNode()
Definition: OcTreeNode.cpp:50
float getLogOdds() const
Definition: OcTreeNode.h:68
void setLogOdds(float l)
sets log odds occupancy of node
Definition: OcTreeNode.h:70
double getOccupancy() const
Definition: OcTreeNode.h:65
OcTreeNode()
Definition: OcTreeNode.cpp:45
void addValue(const float &p)
adds p to the node's logOdds value (with no boundary / threshold checking!)
Definition: OcTreeNode.cpp:91
double getMeanChildLogOdds() const
Definition: OcTreeNode.cpp:58
Namespace the OctoMap library and visualization tools.
double probability(double logodds)
compute probability from logodds:
Definition: octomap_utils.h:47