gtsam  4.1.0
gtsam
gtsam::ISAM2Clique Class Reference

Detailed Description

Specialized Clique structure for ISAM2, incorporating caching and gradient contribution TODO: more documentation.

+ Inheritance diagram for gtsam::ISAM2Clique:

Public Member Functions

 ISAM2Clique ()
 Default constructor.
 
 ISAM2Clique (const ISAM2Clique &other)
 Copy constructor, does not copy solution pointers as these are invalid in different trees.
 
ISAM2Cliqueoperator= (const ISAM2Clique &other)
 Assignment operator, does not copy solution pointers as these are invalid in different trees.
 
void setEliminationResult (const FactorGraphType::EliminationResult &eliminationResult)
 Overridden to also store the remaining factor and gradient contribution.
 
Base::FactorType::shared_ptr & cachedFactor ()
 Access the cached factor.
 
const Vector & gradientContribution () const
 Access the gradient contribution.
 
void addGradientAtZero (VectorValues *g) const
 Recursively add gradient at zero to g.
 
bool equals (const This &other, double tol=1e-9) const
 
void print (const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override
 print this node
 
void optimizeWildfire (const KeySet &replaced, double threshold, KeySet *changed, VectorValues *delta, size_t *count) const
 
bool optimizeWildfireNode (const KeySet &replaced, double threshold, KeySet *changed, VectorValues *delta, size_t *count) const
 
void nnz_internal (size_t *result) const
 Starting from the root, add up entries of frontal and conditional matrices of each conditional.
 
size_t calculate_nnz () const
 
void findAll (const KeySet &markedMask, KeySet *keys) const
 Recursively search this clique and its children for marked keys appearing in the separator, and add the frontal keys of any cliques whose separator contains any marked keys to the set keys. More...
 
- Public Member Functions inherited from gtsam::BayesTreeCliqueBase< ISAM2Clique, GaussianFactorGraph >
void setEliminationResult (const typename FactorGraphType::EliminationResult &eliminationResult)
 Fill the elimination result produced during elimination. More...
 
bool equals (const ISAM2Clique &other, double tol=1e-9) const
 check equality
 
const sharedConditional & conditional () const
 Access the conditional.
 
bool isRoot () const
 is this the root of a Bayes tree ?
 
size_t treeSize () const
 The size of subtree rooted at this clique, i.e., nr of Cliques.
 
size_t numCachedSeparatorMarginals () const
 Collect number of cliques with cached separator marginals.
 
derived_ptr parent () const
 return a shared_ptr to the parent clique
 
int problemSize () const
 Problem size (used for parallel traversal)
 
BayesNetType shortcut (const derived_ptr &root, Eliminate function=EliminationTraitsType::DefaultEliminate) const
 return the conditional P(S|Root) on the separator given the root
 
FactorGraphType separatorMarginal (Eliminate function=EliminationTraitsType::DefaultEliminate) const
 return the marginal P(S) on the separator
 
FactorGraphType marginal2 (Eliminate function=EliminationTraitsType::DefaultEliminate) const
 return the marginal P(C) of the clique, using marginal caching
 
void deleteCachedShortcuts ()
 This deletes the cached shortcuts of all cliques (subtree) below this clique. More...
 
const boost::optional< FactorGraphType > & cachedSeparatorMarginal () const
 

Public Attributes

Base::FactorType::shared_ptr cachedFactor_
 
Vector gradientContribution_
 
- Public Attributes inherited from gtsam::BayesTreeCliqueBase< ISAM2Clique, GaussianFactorGraph >
sharedConditional conditional_
 
derived_weak_ptr parent_
 
FastVector< derived_ptr > children
 
int problemSize_
 
bool is_root
 

Public Types

typedef ISAM2Clique This
 
typedef BayesTreeCliqueBase< This, GaussianFactorGraphBase
 
typedef boost::shared_ptr< Thisshared_ptr
 
typedef boost::weak_ptr< Thisweak_ptr
 
typedef GaussianConditional ConditionalType
 
typedef ConditionalType::shared_ptr sharedConditional
 
- Public Types inherited from gtsam::BayesTreeCliqueBase< ISAM2Clique, GaussianFactorGraph >
typedef GaussianFactorGraph FactorGraphType
 
typedef EliminationTraitsType::BayesNetType BayesNetType
 
typedef BayesNetType::ConditionalType ConditionalType
 
typedef boost::shared_ptr< ConditionalTypesharedConditional
 
typedef FactorGraphType::FactorType FactorType
 
typedef FactorGraphType::Eliminate Eliminate
 

Friends

class boost::serialization::access
 Serialization function.
 

Additional Inherited Members

- Protected Member Functions inherited from gtsam::BayesTreeCliqueBase< ISAM2Clique, GaussianFactorGraph >
 BayesTreeCliqueBase ()
 Default constructor.
 
 BayesTreeCliqueBase (const sharedConditional &conditional)
 Construct from a conditional, leaving parent and child pointers uninitialized.
 
 BayesTreeCliqueBase (const BayesTreeCliqueBase &c)
 Shallow copy constructor.
 
BayesTreeCliqueBaseoperator= (const BayesTreeCliqueBase &c)
 Shallow copy assignment constructor.
 
KeyVector separator_setminus_B (const derived_ptr &B) const
 Calculate set \( S \setminus B \) for shortcut calculations.
 
KeyVector shortcut_indices (const derived_ptr &B, const FactorGraphType &p_Cp_B) const
 Determine variable indices to keep in recursive separator shortcut calculation The factor graph p_Cp_B has keys from the parent clique Cp and from B. More...
 
void deleteCachedShortcutsNonRecursive ()
 Non-recursive delete cached shortcuts and marginals - internal only.
 
- Protected Attributes inherited from gtsam::BayesTreeCliqueBase< ISAM2Clique, GaussianFactorGraph >
boost::optional< FactorGraphTypecachedSeparatorMarginal_
 This stores the Cached separator marginal P(S)
 
std::mutex cachedSeparatorMarginalMutex_
 This protects Cached seperator marginal P(S) from concurrent read/writes as many the functions which access it are const (hence the mutable) leading to the false impression that these const functions are thread-safe which is not true due to these mutable values. More...
 

Member Function Documentation

◆ findAll()

void gtsam::ISAM2Clique::findAll ( const KeySet markedMask,
KeySet keys 
) const

Recursively search this clique and its children for marked keys appearing in the separator, and add the frontal keys of any cliques whose separator contains any marked keys to the set keys.

The purpose of this is to discover the cliques that need to be redone due to information propagating to them from cliques that directly contain factors being relinearized.

The original comment says this finds all variables directly connected to the marked ones by measurements. Is this true, because it seems like this would also pull in variables indirectly connected through other frontal or separator variables?

Alternatively could we trace up towards the root for each variable here?


The documentation for this class was generated from the following files: