g2o
Toggle main menu visibility
Loading...
Searching...
No Matches
g2o
core
optimization_algorithm.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_OPTIMIZATION_ALGORITHM_H
28
#define G2O_OPTIMIZATION_ALGORITHM_H
29
30
#include <iosfwd>
31
#include <utility>
32
#include <vector>
33
34
#include "
g2o/stuff/property.h
"
35
#include "
g2o_core_api.h
"
36
#include "
hyper_graph.h
"
37
#include "
sparse_block_matrix.h
"
38
39
namespace
g2o
{
40
41
class
SparseOptimizer
;
42
46
class
G2O_CORE_API
OptimizationAlgorithm
{
47
public
:
48
enum
G2O_CORE_API
SolverResult {
Terminate
= 2,
OK
= 1, Fail = -1 };
49
OptimizationAlgorithm
();
50
virtual
~OptimizationAlgorithm();
51
55
virtual
bool
init
(
bool
online =
false
) = 0;
56
62
virtual
SolverResult
solve
(
int
iteration,
bool
online =
false
) = 0;
63
69
virtual
bool
computeMarginals
(
70
SparseBlockMatrix<MatrixX>
& spinv,
71
const
std::vector<std::pair<int, int> >& blockIndices) = 0;
72
76
virtual
bool
updateStructure
(
const
std::vector<HyperGraph::Vertex*>& vset,
77
const
HyperGraph::EdgeSet
& edges) = 0;
78
83
virtual
void
printVerbose
(std::ostream& os)
const
{ (void)os; };
84
85
public
:
87
const
SparseOptimizer
*
optimizer
()
const
{
return
_optimizer
; }
88
SparseOptimizer
*
optimizer
() {
return
_optimizer
; }
89
93
void
setOptimizer(
SparseOptimizer
* optimizer);
94
96
const
PropertyMap
&
properties
()
const
{
return
_properties
; }
97
101
bool
updatePropertiesFromString(
const
std::string& propString);
102
106
void
printProperties(std::ostream& os)
const
;
107
108
protected
:
109
SparseOptimizer
*
_optimizer
;
110
PropertyMap
_properties
;
112
113
private
:
114
// Disable the copy constructor and assignment operator
115
OptimizationAlgorithm
(
const
OptimizationAlgorithm
&) {}
116
OptimizationAlgorithm
&
operator=
(
const
OptimizationAlgorithm
&) {
117
return
*
this
;
118
}
119
};
120
121
}
// namespace g2o
122
123
#endif
g2o::HyperGraph::EdgeSet
std::set< Edge * > EdgeSet
Definition
hyper_graph.h:141
g2o::OptimizationAlgorithm::computeMarginals
virtual bool computeMarginals(SparseBlockMatrix< MatrixX > &spinv, const std::vector< std::pair< int, int > > &blockIndices)=0
g2o::OptimizationAlgorithm::optimizer
SparseOptimizer * optimizer()
Definition
optimization_algorithm.h:88
g2o::OptimizationAlgorithm::properties
const PropertyMap & properties() const
return the properties of the solver
Definition
optimization_algorithm.h:96
g2o::OptimizationAlgorithm::OptimizationAlgorithm
OptimizationAlgorithm()
Definition
optimization_algorithm.cpp:33
g2o::OptimizationAlgorithm::_optimizer
SparseOptimizer * _optimizer
the optimizer the solver is working on
Definition
optimization_algorithm.h:109
g2o::OptimizationAlgorithm::printVerbose
virtual void printVerbose(std::ostream &os) const
Definition
optimization_algorithm.h:83
g2o::OptimizationAlgorithm::updateStructure
virtual bool updateStructure(const std::vector< HyperGraph::Vertex * > &vset, const HyperGraph::EdgeSet &edges)=0
g2o::OptimizationAlgorithm::operator=
OptimizationAlgorithm & operator=(const OptimizationAlgorithm &)
Definition
optimization_algorithm.h:116
g2o::OptimizationAlgorithm::solve
virtual SolverResult solve(int iteration, bool online=false)=0
g2o::OptimizationAlgorithm::optimizer
const SparseOptimizer * optimizer() const
return the optimizer operating on
Definition
optimization_algorithm.h:87
g2o::OptimizationAlgorithm::_properties
PropertyMap _properties
Definition
optimization_algorithm.h:110
g2o::OptimizationAlgorithm::OptimizationAlgorithm
OptimizationAlgorithm(const OptimizationAlgorithm &)
Definition
optimization_algorithm.h:115
g2o::OptimizationAlgorithm::init
virtual bool init(bool online=false)=0
g2o::PropertyMap
a collection of properties mapping from name to the property itself
Definition
property.h:78
g2o::SparseBlockMatrix
Sparse matrix which uses blocks.
Definition
sparse_block_matrix.h:64
g2o::SparseOptimizer
Definition
sparse_optimizer.h:42
g2o_core_api.h
G2O_CORE_API
#define G2O_CORE_API
Definition
g2o_core_api.h:29
hyper_graph.h
g2o
Definition
dl_wrapper.cpp:55
g2o::OptimizationAlgorithm
class G2O_CORE_API OptimizationAlgorithm
Definition
optimization_algorithm_factory.h:45
Terminate
Terminate
Definition
optimization_algorithm.h:48
OK
OK
Definition
optimization_algorithm.h:48
property.h
sparse_block_matrix.h
Generated on
for g2o by
1.17.0