Loading...
Searching...
No Matches
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.
ISAM2Clique & | operator= (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`.
Public Member Functions inherited from gtsam::BayesTreeCliqueBase< ISAM2Clique, GaussianFactorGraph >
void | setEliminationResult (const typename FactorGraphType::EliminationResult &eliminationResult)
| Fill the elimination result produced during elimination.
bool | equals (const ISAM2Clique &other, double tol=1e-9) const
| check equality
const sharedConditional & | conditional () const
| Access the conditional.
bool | isRoot () const
| Return true if this clique is the root of a Bayes tree.
size_t | nrChildren () const
| Return the number of children.
const derived_ptr | operator[] (size_t i) const
| Return the child at index i.
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.
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, GaussianFactorGraph > | Base
typedef boost::shared_ptr< This > | shared_ptr
typedef boost::weak_ptr< This > | weak_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< ConditionalType > | sharedConditional
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 & | operator= (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.
void | deleteCachedShortcutsNonRecursive ()
| Non-recursive delete cached shortcuts and marginals - internal only.
Protected Attributes inherited from gtsam::BayesTreeCliqueBase< ISAM2Clique, GaussianFactorGraph >
boost::optional< FactorGraphType > | cachedSeparatorMarginal_
| 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.

## 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?

## print()

void gtsam::ISAM2Clique::print | ( | const std::string & | s = "",
|  | const KeyFormatter & | formatter = DefaultKeyFormatter ) const

override virtual

print this node

Reimplemented from gtsam::BayesTreeCliqueBase< ISAM2Clique, GaussianFactorGraph >.

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

- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/nonlinear/ISAM2Clique.h
- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/nonlinear/ISAM2Clique.cpp