gtsam  4.1.0
gtsam
ISAM2Result.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 
18 // \callgraph
19 
20 #pragma once
21 
22 #include <string>
23 #include <vector>
24 
29 
30 #include <boost/variant.hpp>
31 
32 namespace gtsam {
33 
41 struct ISAM2Result {
54  boost::optional<double> errorBefore;
55 
66  boost::optional<double> errorAfter;
67 
77 
85 
89 
91  size_t cliques;
92 
98 
103 
106 
109 
112 
120  struct VariableStatus {
126  bool isRelinearizeInvolved;
129  bool isRelinearized;
134  bool isObserved;
137  bool isNew;
141  : isReeliminated(false),
142  isAboveRelinThreshold(false),
143  isRelinearizeInvolved(false),
144  isRelinearized(false),
145  isObserved(false),
146  isNew(false),
147  inRootClique(false) {}
148  };
149 
150  using StatusMap = FastMap<Key, VariableStatus>;
151 
154  };
155 
158  boost::optional<DetailedResults> detail;
159 
160  explicit ISAM2Result(bool enableDetailedResults = false) {
161  if (enableDetailedResults) detail.reset(DetailedResults());
162  }
163 
165  DetailedResults* details() { return detail.get_ptr(); }
166 
168  void print(const std::string str = "") const {
169  using std::cout;
170  cout << str << " Reelimintated: " << variablesReeliminated
171  << " Relinearized: " << variablesRelinearized
172  << " Cliques: " << cliques << std::endl;
173  }
174 
177  size_t getVariablesReeliminated() const { return variablesReeliminated; }
178  size_t getCliques() const { return cliques; }
179  double getErrorBefore() const { return errorBefore ? *errorBefore : std::nan(""); }
180  double getErrorAfter() const { return errorAfter ? *errorAfter : std::nan(""); }
181 };
182 
183 } // namespace gtsam
gtsam::ISAM2Result::unusedKeys
KeySet unusedKeys
Unused keys, and indices for unused keys, i.e., keys that are empty now and do not appear in the new ...
Definition: ISAM2Result.h:102
gtsam::ISAM2Result::details
DetailedResults * details()
Return pointer to detail, 0 if no detail requested.
Definition: ISAM2Result.h:165
gtsam::ISAM2Result::newFactorsIndices
FactorIndices newFactorsIndices
The indices of the newly-added factors, in 1-to-1 correspondence with the factors passed as newFactor...
Definition: ISAM2Result.h:97
gtsam::ISAM2Result::DetailedResults::VariableStatus
The status of a single variable, this struct is stored in DetailedResults::variableStatus.
Definition: ISAM2Result.h:120
gtsam::ISAM2Result::getVariablesRelinearized
size_t getVariablesRelinearized() const
Getters and Setters.
Definition: ISAM2Result.h:176
GaussianBayesTree.h
Gaussian Bayes Tree, the result of eliminating a GaussianJunctionTree.
gtsam::ISAM2Result::factorsRecalculated
size_t factorsRecalculated
The number of factors that were included in reelimination of the Bayes' tree.
Definition: ISAM2Result.h:88
gtsam::ISAM2Result::DetailedResults::VariableStatus::isRelinearizeInvolved
bool isRelinearizeInvolved
Whether the variable was below the relinearization threshold but was relinearized by being involved i...
Definition: ISAM2Result.h:128
gtsam::ISAM2Result::DetailedResults
A struct holding detailed results, which must be enabled with ISAM2Params::enableDetailedResults.
Definition: ISAM2Result.h:117
gtsam::ISAM2Result::detail
boost::optional< DetailedResults > detail
Detailed results, if enabled by ISAM2Params::enableDetailedResults.
Definition: ISAM2Result.h:158
gtsam::ISAM2Result::DetailedResults::VariableStatus::isObserved
bool isObserved
Whether the variable was relinearized, either by being above the relinearization threshold or by invo...
Definition: ISAM2Result.h:136
NonlinearFactorGraph.h
Factor Graph Constsiting of non-linear factors.
gtsam
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
gtsam::ISAM2Result::DetailedResults::VariableStatus::isAboveRelinThreshold
bool isAboveRelinThreshold
Whether the variable was just relinearized due to being above the relinearization threshold.
Definition: ISAM2Result.h:125
gtsam::ISAM2Result::print
void print(const std::string str="") const
Print results.
Definition: ISAM2Result.h:168
gtsam::ISAM2Result::errorBefore
boost::optional< double > errorBefore
The nonlinear error of all of the factors, including new factors and variables added during the curre...
Definition: ISAM2Result.h:54
gtsam::ISAM2Result::keysWithRemovedFactors
KeySet keysWithRemovedFactors
Keys of variables that had factors removed.
Definition: ISAM2Result.h:108
gtsam::ISAM2Result::cliques
size_t cliques
The number of cliques in the Bayes' Tree.
Definition: ISAM2Result.h:91
gtsam::ISAM2Result::variablesRelinearized
size_t variablesRelinearized
The number of variables that were relinearized because their linear deltas exceeded the reslinearizat...
Definition: ISAM2Result.h:76
gtsam::FactorIndices
FastVector< FactorIndex > FactorIndices
Define collection types:
Definition: Factor.h:32
gtsam::ISAM2Result::DetailedResults::VariableStatus::inRootClique
bool inRootClique
Whether the variable is in the root clique.
Definition: ISAM2Result.h:139
gtsam::ISAM2Result::variablesReeliminated
size_t variablesReeliminated
The number of variables that were reeliminated as parts of the Bayes' Tree were recalculated,...
Definition: ISAM2Result.h:84
ISAM2Params.h
Parameters for iSAM 2.
gtsam::FastSet< Key >
gtsam::ISAM2Result::markedKeys
KeySet markedKeys
All keys that were marked during the update process.
Definition: ISAM2Result.h:111
gtsam::ISAM2Result::DetailedResults::VariableStatus::isNew
bool isNew
Whether the variable itself was just added.
Definition: ISAM2Result.h:138
gtsam::ISAM2Result::errorAfter
boost::optional< double > errorAfter
The nonlinear error of all of the factors computed after the current update, meaning that variables a...
Definition: ISAM2Result.h:66
gtsam::KeyVector
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
gtsam::FastMap< Key, VariableStatus >
DoglegOptimizerImpl.h
Nonlinear factor graph optimizer using Powell's Dogleg algorithm (detail implementation)
gtsam::ISAM2Result::observedKeys
KeyVector observedKeys
keys for variables that were observed, i.e., not unused.
Definition: ISAM2Result.h:105
gtsam::ISAM2Result::DetailedResults::VariableStatus::isReeliminated
bool isReeliminated
Whether the variable was just reeliminated, due to being relinearized, observed, new,...
Definition: ISAM2Result.h:124
gtsam::ISAM2Result
Definition: ISAM2Result.h:41
gtsam::ISAM2Result::DetailedResults::variableStatus
StatusMap variableStatus
The status of each variable during this update, see VariableStatus.
Definition: ISAM2Result.h:153