gtsam  4.0.0
gtsam
ISAM2-impl.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 #pragma once
19 
21 #include <gtsam/nonlinear/ISAM2.h>
22 
23 namespace gtsam {
24 
25 struct GTSAM_EXPORT ISAM2::Impl {
26  struct GTSAM_EXPORT PartialSolveResult {
27  ISAM2::sharedClique bayesTree;
28  };
29 
30  struct GTSAM_EXPORT ReorderingMode {
31  size_t nFullSystemVars;
32  enum { /*AS_ADDED,*/ COLAMD } algorithm;
33  enum { NO_CONSTRAINT, CONSTRAIN_LAST } constrain;
34  boost::optional<FastMap<Key, int> > constrainedKeys;
35  };
36 
40  static void AddFactorsStep1(const NonlinearFactorGraph& newFactors, bool useUnusedSlots,
41  NonlinearFactorGraph* nonlinearFactors, FactorIndices* newFactorIndices);
42 
52  static KeySet CheckRelinearizationFull(const VectorValues& delta,
53  const ISAM2Params::RelinearizationThreshold& relinearizeThreshold);
54 
66  static KeySet CheckRelinearizationPartial(const ISAM2::Roots& roots,
67  const VectorValues& delta, const ISAM2Params::RelinearizationThreshold& relinearizeThreshold);
68 
72  static size_t UpdateGaussNewtonDelta(const ISAM2::Roots& roots,
73  const KeySet& replacedKeys, double wildfireThreshold, VectorValues* delta);
74 
79  static size_t UpdateRgProd(const ISAM2::Roots& roots, const KeySet& replacedKeys,
80  const VectorValues& gradAtZero, VectorValues* RgProd);
81 
85  static VectorValues ComputeGradientSearch(const VectorValues& gradAtZero,
86  const VectorValues& RgProd);
87 
88 };
89 
90 }
Incremental update functionality (ISAM2) for BayesTree, with fluid relinearization.
Gaussian Bayes Tree, the result of eliminating a GaussianJunctionTree.
Definition: ISAM2-impl.h:26
Base::sharedClique sharedClique
Shared pointer to a clique.
Definition: ISAM2.h:102
Definition: ISAM2-impl.h:25
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:73
A non-linear factor graph is a graph of non-Gaussian, i.e.
Definition: NonlinearFactorGraph.h:77
FastVector< sharedClique > Roots
Root cliques.
Definition: BayesTree.h:98
FastVector< FactorIndex > FactorIndices
Define collection types:
Definition: Factor.h:32
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
boost::variant< double, FastMap< char, Vector > > RelinearizationThreshold
Either a constant relinearization threshold or a per-variable-type set of thresholds.
Definition: ISAM2Params.h:140
Definition: ISAM2-impl.h:30