gtsam
Loading...
Searching...
No Matches
HybridNonlinearISAM.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
17
18#pragma once
19
22
23#include <optional>
24
25namespace gtsam {
29class GTSAM_EXPORT HybridNonlinearISAM {
30 protected:
33
36
39
42
45 int reorderCounter_;
46
49
50 public:
53
62 int reorderInterval = 1,
63 const HybridGaussianFactorGraph::Eliminate& eliminationFunction =
64 HybridGaussianFactorGraph::EliminationTraitsType::DefaultEliminate)
66 reorderCounter_(0),
67 eliminationFunction_(eliminationFunction) {}
68
72
74 Values estimate();
75
76 // /** find the marginal covariance for a single variable */
77 // Matrix marginalCovariance(Key key) const;
78
79 // access
80
82 const HybridGaussianISAM& bayesTree() const { return isam_; }
83
89 void prune(const size_t maxNumberLeaves) { isam_.prune(maxNumberLeaves); }
90
92 const Values& getLinearizationPoint() const { return linPoint_; }
93
95 const DiscreteValues& assignment() const { return assignment_; }
96
99 return factors_;
100 }
101
103 int reorderInterval() const { return reorderInterval_; }
104 int reorderCounter() const { return reorderCounter_; }
105
107 void print(const std::string& s = "",
108 const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
109
111 void printStats() const;
112
114 void saveGraph(const std::string& s,
115 const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
116
118 void update(const HybridNonlinearFactorGraph& newFactors,
119 const Values& initialValues,
120 const std::optional<size_t>& maxNrLeaves = {},
121 const std::optional<Ordering>& ordering = {});
122
124 void reorderRelinearize();
125
127};
128
129} // namespace gtsam
Nonlinear hybrid factor graph that uses type erasure.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:143
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition Key.h:35
A map from keys to values.
Definition DiscreteValues.h:34
Incremental Smoothing and Mapping (ISAM) algorithm for hybrid factor graphs.
Definition HybridGaussianISAM.h:37
Definition HybridNonlinearFactorGraph.h:34
const HybridNonlinearFactorGraph & getFactorsUnsafe() const
get underlying nonlinear graph
Definition HybridNonlinearISAM.h:98
DiscreteValues assignment_
The discrete assignment.
Definition HybridNonlinearISAM.h:38
const Values & getLinearizationPoint() const
Return the current linearization point.
Definition HybridNonlinearISAM.h:92
HybridNonlinearISAM(int reorderInterval=1, const HybridGaussianFactorGraph::Eliminate &eliminationFunction=HybridGaussianFactorGraph::EliminationTraitsType::DefaultEliminate)
Periodically reorder and re-linearize.
Definition HybridNonlinearISAM.h:61
HybridNonlinearFactorGraph factors_
The original factors, used when re-linearizing.
Definition HybridNonlinearISAM.h:41
const DiscreteValues & assignment() const
Return the current discrete assignment.
Definition HybridNonlinearISAM.h:95
int reorderCounter() const
TODO: comment.
Definition HybridNonlinearISAM.h:104
void prune(const size_t maxNumberLeaves)
Prune the underlying Bayes tree.
Definition HybridNonlinearISAM.h:89
int reorderInterval_
The reordering interval and counter.
Definition HybridNonlinearISAM.h:44
int reorderInterval() const
get counters
Definition HybridNonlinearISAM.h:103
Values linPoint_
The current linearization point.
Definition HybridNonlinearISAM.h:35
gtsam::HybridGaussianISAM isam_
The internal iSAM object.
Definition HybridNonlinearISAM.h:32
HybridGaussianFactorGraph::Eliminate eliminationFunction_
The elimination function.
Definition HybridNonlinearISAM.h:48
const HybridGaussianISAM & bayesTree() const
find the marginal covariance for a single variable
Definition HybridNonlinearISAM.h:82
std::function< EliminationResult(const FactorGraphType &, const Ordering &)> Eliminate
Definition EliminateableFactorGraph.h:91
A non-templated config holding any types of Manifold-group elements.
Definition Values.h:65