ISAM-inst.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 
20 #include <gtsam/inference/ISAM.h>
22 
23 namespace gtsam {
24 
25 /* ************************************************************************* */
26 template<class BAYESTREE>
28  Cliques* orphans, const Eliminate& function) {
29  // Remove the contaminated part of the Bayes tree
30  BayesNetType bn;
31  const KeySet newFactorKeys = newFactors.keys();
32  if (!this->empty()) {
33  KeyVector keyVector(newFactorKeys.begin(), newFactorKeys.end());
34  this->removeTop(keyVector, &bn, orphans);
35  }
36 
37  // Add the removed top and the new factors
39  factors += bn;
40  factors += newFactors;
41 
42  // Add the orphaned subtrees
43  for (const sharedClique& orphan : *orphans)
44  factors += boost::make_shared<BayesTreeOrphanWrapper<Clique> >(orphan);
45 
46  // Get an ordering where the new keys are eliminated last
47  const VariableIndex index(factors);
49  KeyVector(newFactorKeys.begin(), newFactorKeys.end()));
50 
51  // eliminate all factors (top, added, orphans) into a new Bayes tree
52  auto bayesTree = factors.eliminateMultifrontal(ordering, function, index);
53 
54  // Re-add into Bayes tree data structures
55  this->roots_.insert(this->roots_.end(), bayesTree->roots().begin(),
56  bayesTree->roots().end());
57  this->nodes_.insert(bayesTree->nodes().begin(), bayesTree->nodes().end());
58 }
59 
60 /* ************************************************************************* */
61 template<class BAYESTREE>
63  const Eliminate& function) {
64  Cliques orphans;
65  this->updateInternal(newFactors, &orphans, function);
66 }
67 
68 }
Base::Cliques Cliques
Definition: ISAM.h:38
void update(const FactorGraphType &newFactors, const Eliminate &function=EliminationTraitsType::DefaultEliminate)
Definition: ISAM-inst.h:62
static enum @843 ordering
Base::sharedClique sharedClique
Definition: ISAM.h:37
GaussianFactorGraph factors(list_of(factor1)(factor2)(factor3))
Base::FactorGraphType FactorGraphType
Definition: ISAM.h:35
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
Base::Eliminate Eliminate
Definition: ISAM.h:41
Incremental update functionality (iSAM) for BayesTree.
traits
Definition: chartTesting.h:28
void updateInternal(const FactorGraphType &newFactors, Cliques *orphans, const Eliminate &function=EliminationTraitsType::DefaultEliminate)
Definition: ISAM-inst.h:27
Base::BayesNetType BayesNetType
Definition: ISAM.h:34
static Ordering ColamdConstrainedLast(const FACTOR_GRAPH &graph, const KeyVector &constrainLast, bool forceOrder=false)


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:42:17