gtsam  4.1.0
gtsam
gtsam::UpdateImpl Struct Reference

Detailed Description

Implementation functions for update method All of the methods below have clear inputs and outputs, even if not functional: iSAM2 is inherintly imperative.

Public Member Functions

 UpdateImpl (const ISAM2Params &params, const ISAM2UpdateParams &updateParams)
 
bool relinarizationNeeded (size_t update_count) const
 
void pushBackFactors (const NonlinearFactorGraph &newFactors, NonlinearFactorGraph *nonlinearFactors, GaussianFactorGraph *linearFactors, VariableIndex *variableIndex, FactorIndices *newFactorsIndices, KeySet *keysWithRemovedFactors) const
 
void computeUnusedKeys (const NonlinearFactorGraph &newFactors, const VariableIndex &variableIndex, const KeySet &keysWithRemovedFactors, KeySet *unusedKeys) const
 
void error (const NonlinearFactorGraph &nonlinearFactors, const Values &estimate, boost::optional< double > *result) const
 
void gatherInvolvedKeys (const NonlinearFactorGraph &newFactors, const NonlinearFactorGraph &nonlinearFactors, const KeySet &keysWithRemovedFactors, KeySet *markedKeys) const
 
void updateKeys (const KeySet &markedKeys, ISAM2Result *result) const
 
KeySet gatherRelinearizeKeys (const ISAM2::Roots &roots, const VectorValues &delta, const KeySet &fixedVariables, KeySet *markedKeys) const
 
void recordRelinearizeDetail (const KeySet &relinKeys, ISAM2Result::DetailedResults *detail) const
 
void findFluid (const ISAM2::Roots &roots, const KeySet &relinKeys, KeySet *markedKeys, ISAM2Result::DetailedResults *detail) const
 
void linearizeNewFactors (const NonlinearFactorGraph &newFactors, const Values &theta, size_t numNonlinearFactors, const FactorIndices &newFactorsIndices, GaussianFactorGraph *linearFactors) const
 
void augmentVariableIndex (const NonlinearFactorGraph &newFactors, const FactorIndices &newFactorsIndices, VariableIndex *variableIndex) const
 

Static Public Member Functions

static void LogStartingUpdate (const NonlinearFactorGraph &newFactors, const ISAM2 &isam2)
 
static void CheckRelinearizationRecursiveMap (const FastMap< char, Vector > &thresholds, const VectorValues &delta, const ISAM2::sharedClique &clique, KeySet *relinKeys)
 
static void CheckRelinearizationRecursiveDouble (double threshold, const VectorValues &delta, const ISAM2::sharedClique &clique, KeySet *relinKeys)
 
static KeySet CheckRelinearizationPartial (const ISAM2::Roots &roots, const VectorValues &delta, const ISAM2Params::RelinearizationThreshold &relinearizeThreshold)
 Find the set of variables to be relinearized according to relinearizeThreshold. More...
 
static KeySet CheckRelinearizationFull (const VectorValues &delta, const ISAM2Params::RelinearizationThreshold &relinearizeThreshold)
 Find the set of variables to be relinearized according to relinearizeThreshold. More...
 
static void ExpmapMasked (const VectorValues &delta, const KeySet &mask, Values *theta)
 Apply expmap to the given values, but only for indices appearing in mask. More...
 
static void LogRecalculateKeys (const ISAM2Result &result)
 
static FactorIndexSet GetAffectedFactors (const KeyList &keys, const VariableIndex &variableIndex)
 
static GaussianFactorGraph GetCachedBoundaryFactors (const ISAM2::Cliques &orphans)
 

Public Attributes

const ISAM2Paramsparams_
 
const ISAM2UpdateParamsupdateParams_
 

Member Function Documentation

◆ CheckRelinearizationFull()

static KeySet gtsam::UpdateImpl::CheckRelinearizationFull ( const VectorValues delta,
const ISAM2Params::RelinearizationThreshold relinearizeThreshold 
)
inlinestatic

Find the set of variables to be relinearized according to relinearizeThreshold.

Any variables in the VectorValues delta whose vector magnitude is greater than or equal to relinearizeThreshold are returned.

Parameters
deltaThe linear delta to check against the threshold
keyFormatterFormatter for printing nonlinear keys during debugging
Returns
The set of variable indices in delta whose magnitude is greater than or equal to relinearizeThreshold

◆ CheckRelinearizationPartial()

static KeySet gtsam::UpdateImpl::CheckRelinearizationPartial ( const ISAM2::Roots roots,
const VectorValues delta,
const ISAM2Params::RelinearizationThreshold relinearizeThreshold 
)
inlinestatic

Find the set of variables to be relinearized according to relinearizeThreshold.

This check is performed recursively, starting at the top of the tree. Once a variable in the tree does not need to be relinearized, no further checks in that branch are performed. This is an approximation of the Full version, designed to save time at the expense of accuracy.

Parameters
deltaThe linear delta to check against the threshold
keyFormatterFormatter for printing nonlinear keys during debugging
Returns
The set of variable indices in delta whose magnitude is greater than or equal to relinearizeThreshold

◆ ExpmapMasked()

static void gtsam::UpdateImpl::ExpmapMasked ( const VectorValues delta,
const KeySet mask,
Values theta 
)
inlinestatic

Apply expmap to the given values, but only for indices appearing in mask.

Values are expmapped in-place.

Parameters
maskMask on linear indices, only true entries are expmapped

The documentation for this struct was generated from the following file: