g2o
Toggle main menu visibility
Loading...
Searching...
No Matches
g2o
core
marginal_covariance_cholesky.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_MARGINAL_COVARIANCE_CHOLESKY_H
28
#define G2O_MARGINAL_COVARIANCE_CHOLESKY_H
29
30
#include <unordered_map>
31
#include <vector>
32
33
#include "
g2o_core_api.h
"
34
#include "
sparse_block_matrix.h
"
35
36
namespace
g2o
{
37
42
class
G2O_CORE_API
MarginalCovarianceCholesky
{
43
protected
:
48
typedef
std::unordered_map<int, double>
LookupMap
;
49
50
public
:
51
MarginalCovarianceCholesky
();
52
~MarginalCovarianceCholesky
();
53
58
void
computeCovariance
(
double
** covBlocks,
59
const
std::vector<int>& blockIndices);
60
65
void
computeCovariance
(
SparseBlockMatrix<MatrixX>
& spinv,
66
const
std::vector<int>& rowBlockIndices,
67
const
std::vector<std::pair<int, int> >& blockIndices);
68
78
void
setCholeskyFactor
(
int
n,
int
* Lp,
int
* Li,
double
* Lx,
int
* permInv);
79
80
protected
:
81
// information about the cholesky factor (lower triangle)
82
int
_n
;
83
int
*
_Ap
;
84
int
*
_Ai
;
85
double
*
_Ax
;
86
int
*
_perm
;
88
89
LookupMap
_map
;
90
std::vector<double>
_diag
;
91
93
int
computeIndex
(
int
r,
int
c)
const
{
/*assert(r <= c);*/
94
return
r *
_n
+ c;
95
}
96
101
double
computeEntry(
int
r,
int
c);
102
};
103
104
}
// namespace g2o
105
106
#endif
g2o::MarginalCovarianceCholesky::_n
int _n
L is an n X n matrix.
Definition
marginal_covariance_cholesky.h:82
g2o::MarginalCovarianceCholesky::computeCovariance
void computeCovariance(double **covBlocks, const std::vector< int > &blockIndices)
Definition
marginal_covariance_cholesky.cpp:100
g2o::MarginalCovarianceCholesky::MarginalCovarianceCholesky
MarginalCovarianceCholesky()
Definition
marginal_covariance_cholesky.cpp:46
g2o::MarginalCovarianceCholesky::_Ax
double * _Ax
values of the cholesky factor
Definition
marginal_covariance_cholesky.h:85
g2o::MarginalCovarianceCholesky::_perm
int * _perm
Definition
marginal_covariance_cholesky.h:86
g2o::MarginalCovarianceCholesky::LookupMap
std::unordered_map< int, double > LookupMap
Definition
marginal_covariance_cholesky.h:48
g2o::MarginalCovarianceCholesky::_Ai
int * _Ai
row indices of the CCS storage
Definition
marginal_covariance_cholesky.h:84
g2o::MarginalCovarianceCholesky::setCholeskyFactor
void setCholeskyFactor(int n, int *Lp, int *Li, double *Lx, int *permInv)
Definition
marginal_covariance_cholesky.cpp:51
g2o::MarginalCovarianceCholesky::_Ap
int * _Ap
column pointer of the CCS storage
Definition
marginal_covariance_cholesky.h:83
g2o::MarginalCovarianceCholesky::_diag
std::vector< double > _diag
cache 1 / H_ii to avoid recalculations
Definition
marginal_covariance_cholesky.h:90
g2o::MarginalCovarianceCholesky::_map
LookupMap _map
hash look up table for the already computed entries
Definition
marginal_covariance_cholesky.h:89
g2o::MarginalCovarianceCholesky::computeIndex
int computeIndex(int r, int c) const
compute the index used for hashing
Definition
marginal_covariance_cholesky.h:93
g2o::SparseBlockMatrix
Sparse matrix which uses blocks.
Definition
sparse_block_matrix.h:64
g2o_core_api.h
G2O_CORE_API
#define G2O_CORE_API
Definition
g2o_core_api.h:29
g2o
Definition
dl_wrapper.cpp:55
sparse_block_matrix.h
Generated on
for g2o by
1.17.0