g2o
Toggle main menu visibility
Loading...
Searching...
No Matches
g2o
examples
interactive_slam
g2o_interactive
g2o_slam_interface.h
Go to the documentation of this file.
1
// g2o - General Graph Optimization
2
// Copyright (C) 2011 R. Kuemmerle, G. Grisetti, 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_SLAM_INTERFACE_H
28
#define G2O_SLAM_INTERFACE_H
29
30
#include <map>
31
#include <vector>
32
33
#include "
g2o/core/optimizable_graph.h
"
34
#include "
g2o_interactive_api.h
"
35
#include "
slam_parser/interface/abstract_slam_interface.h
"
36
37
namespace
g2o
{
38
39
class
SparseOptimizerOnline
;
40
41
class
G2O_INTERACTIVE_API
G2oSlamInterface
42
:
public
SlamParser::AbstractSlamInterface
{
43
public
:
44
enum
SolveResult
{
SOLVED
,
SOLVED_BATCH
,
NOOP
,
ERROR
};
45
46
public
:
47
G2oSlamInterface
(
SparseOptimizerOnline
* optimizer);
48
49
bool
addNode(
const
std::string& tag,
int
id
,
int
dimension,
50
const
std::vector<double>& values);
51
52
bool
addEdge(
const
std::string& tag,
int
id
,
int
dimension,
int
v1,
int
v2,
53
const
std::vector<double>& measurement,
54
const
std::vector<double>& information);
55
56
bool
fixNode(
const
std::vector<int>& nodes);
57
58
bool
queryState(
const
std::vector<int>& nodes);
59
60
bool
solveState();
61
62
SolveResult solve();
63
64
int
updatedGraphEachN
()
const
{
return
_updateGraphEachN
; }
65
void
setUpdateGraphEachN(
int
n);
66
67
int
batchSolveEachN
()
const
{
return
_batchEveryN
; }
68
void
setBatchSolveEachN(
int
n);
69
70
SparseOptimizerOnline
*
optimizer
() {
return
_optimizer
; }
71
72
protected
:
73
SparseOptimizerOnline
*
_optimizer
;
74
bool
_firstOptimization
;
75
int
_nodesAdded
;
76
int
_incIterations
;
77
int
_updateGraphEachN
;
78
int
_batchEveryN
;
79
int
_lastBatchStep
;
80
bool
_initSolverDone
;
81
82
HyperGraph::VertexSet
_verticesAdded
;
83
HyperGraph::EdgeSet
_edgesAdded
;
84
85
OptimizableGraph::Vertex
*
addVertex
(
int
dimension,
int
id
);
86
bool
printVertex
(
OptimizableGraph::Vertex
* v);
87
};
88
89
}
// namespace g2o
90
91
#endif
abstract_slam_interface.h
SlamParser::AbstractSlamInterface
interface for communicating with the SLAM algorithm
Definition
abstract_slam_interface.h:40
g2o::G2oSlamInterface
Definition
g2o_slam_interface.h:42
g2o::G2oSlamInterface::updatedGraphEachN
int updatedGraphEachN() const
Definition
g2o_slam_interface.h:64
g2o::G2oSlamInterface::SolveResult
SolveResult
Definition
g2o_slam_interface.h:44
g2o::G2oSlamInterface::ERROR
@ ERROR
Definition
g2o_slam_interface.h:44
g2o::G2oSlamInterface::SOLVED_BATCH
@ SOLVED_BATCH
Definition
g2o_slam_interface.h:44
g2o::G2oSlamInterface::SOLVED
@ SOLVED
Definition
g2o_slam_interface.h:44
g2o::G2oSlamInterface::NOOP
@ NOOP
Definition
g2o_slam_interface.h:44
g2o::G2oSlamInterface::_batchEveryN
int _batchEveryN
Definition
g2o_slam_interface.h:78
g2o::G2oSlamInterface::_firstOptimization
bool _firstOptimization
Definition
g2o_slam_interface.h:74
g2o::G2oSlamInterface::_updateGraphEachN
int _updateGraphEachN
Definition
g2o_slam_interface.h:77
g2o::G2oSlamInterface::_nodesAdded
int _nodesAdded
Definition
g2o_slam_interface.h:75
g2o::G2oSlamInterface::batchSolveEachN
int batchSolveEachN() const
Definition
g2o_slam_interface.h:67
g2o::G2oSlamInterface::printVertex
bool printVertex(OptimizableGraph::Vertex *v)
Definition
g2o_slam_interface.cpp:385
g2o::G2oSlamInterface::_initSolverDone
bool _initSolverDone
Definition
g2o_slam_interface.h:80
g2o::G2oSlamInterface::_edgesAdded
HyperGraph::EdgeSet _edgesAdded
Definition
g2o_slam_interface.h:83
g2o::G2oSlamInterface::_lastBatchStep
int _lastBatchStep
Definition
g2o_slam_interface.h:79
g2o::G2oSlamInterface::_incIterations
int _incIterations
Definition
g2o_slam_interface.h:76
g2o::G2oSlamInterface::G2oSlamInterface
G2oSlamInterface(SparseOptimizerOnline *optimizer)
Definition
g2o_slam_interface.cpp:107
g2o::G2oSlamInterface::optimizer
SparseOptimizerOnline * optimizer()
Definition
g2o_slam_interface.h:70
g2o::G2oSlamInterface::addVertex
OptimizableGraph::Vertex * addVertex(int dimension, int id)
Definition
g2o_slam_interface.cpp:369
g2o::G2oSlamInterface::_optimizer
SparseOptimizerOnline * _optimizer
Definition
g2o_slam_interface.h:73
g2o::G2oSlamInterface::_verticesAdded
HyperGraph::VertexSet _verticesAdded
Definition
g2o_slam_interface.h:82
g2o::HyperGraph::EdgeSet
std::set< Edge * > EdgeSet
Definition
hyper_graph.h:141
g2o::HyperGraph::VertexSet
std::set< Vertex * > VertexSet
Definition
hyper_graph.h:142
g2o::OptimizableGraph::Vertex
A general case Vertex for optimization.
Definition
optimizable_graph.h:108
g2o::SparseOptimizerOnline
Definition
graph_optimizer_sparse_online.h:37
g2o_interactive_api.h
G2O_INTERACTIVE_API
#define G2O_INTERACTIVE_API
Definition
g2o_interactive_api.h:46
g2o
Definition
dl_wrapper.cpp:55
optimizable_graph.h
Generated on
for g2o by
1.17.0