g2o
Loading...
Searching...
No Matches
backbone_tree_action.h
Go to the documentation of this file.
1// g2o - General Graph Optimization
2// Copyright (C) 2011 R. Kuemmerle, G. Grisetti, H. Strasdat, W. Burgard
3// All rights reserved.
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions are
7// met:
8//
9// * Redistributions of source code must retain the above copyright notice,
10// this list of conditions and the following disclaimer.
11// * Redistributions in binary form must reproduce the above copyright
12// notice, this list of conditions and the following disclaimer in the
13// documentation and/or other materials provided with the distribution.
14//
15// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
16// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
18// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27#ifndef G2O_BACKBONE_TREE_ACTION_
28#define G2O_BACKBONE_TREE_ACTION_
29
30#include <map>
31#include <string>
32
33#include "g2o/core/factory.h"
36#include "star.h"
37
38namespace g2o {
39
55 BackBoneTreeAction(SparseOptimizer* optimizer, const std::string& vertexTag,
56 int level, int step);
57
59 void init();
60
62 inline VertexStarMap& vertexStarMap() { return _vsMap; }
67
77 virtual double perform(HyperGraph::Vertex* v, HyperGraph::Vertex* vParent,
78 HyperGraph::Edge* e, double distance);
79
80 protected:
88 void addToMap(Star* s, HyperGraph::Vertex* v);
92
94 bool fillStar(Star* s, HyperGraph::Edge* e_);
95
97 std::string _vertexTag;
98 int _level;
99 int _step;
100
105};
106
107} // namespace g2o
108#endif
create vertices and edges based on TAGs in, for example, a file
Definition factory.h:48
abstract Vertex, your types must derive from that one
std::set< Edge * > EdgeSet
std::map< OptimizableGraph::Vertex *, Star * > VertexStarMap
Definition star.h:99
std::multimap< OptimizableGraph::Vertex *, Star * > VertexStarMultimap
Definition star.h:98
yylloc step()
HyperGraph::EdgeSet & freeEdges()
edges that are not yet assigned to any star
Star * getStar(HyperGraph::Vertex *v)
VertexStarMap & vertexStarMap()
map vertex->star. Contains the most recent vertex assignment
virtual double perform(HyperGraph::Vertex *v, HyperGraph::Vertex *vParent, HyperGraph::Edge *e, double distance)
VertexStarMultimap & vertexStarMultiMap()
multimap vertex->star. Contains all the vertex assignments to all stars
bool fillStar(Star *s, HyperGraph::Edge *e_)
helper function that adds to a star an edge and all its vertices
void addToMap(Star *s, HyperGraph::Vertex *v)
void init()
initializes the visit and clears the internal structures
HyperGraph::EdgeSet _freeEdges