gtsam 4.1.1
gtsam
gtsam::ConcurrentIncrementalFilter Class Reference

Detailed Description

An iSAM2-based Batch Filter that implements the Concurrent Filtering and Smoother interface.

+ Inheritance diagram for gtsam::ConcurrentIncrementalFilter:

Public Member Functions

 ConcurrentIncrementalFilter (const ISAM2Params &parameters=ISAM2Params())
 Default constructor.
 
 ~ConcurrentIncrementalFilter () override
 Default destructor.
 
void print (const std::string &s="Concurrent Incremental Filter:\n", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const override
 Implement a GTSAM standard 'print' function. More...
 
bool equals (const ConcurrentFilter &rhs, double tol=1e-9) const override
 Check if two Concurrent Filters are equal. More...
 
const NonlinearFactorGraphgetFactors () const
 Access the current set of factors.
 
const ISAM2getISAM2 () const
 Access the current linearization point.
 
const ValuesgetLinearizationPoint () const
 Access the current linearization point.
 
const VectorValuesgetDelta () const
 Access the current set of deltas to the linearization point.
 
Values calculateEstimate () const
 Compute the current best estimate of all variables and return a full Values structure. More...
 
template<class VALUE >
VALUE calculateEstimate (Key key) const
 Compute the current best estimate of a single variable. More...
 
Result update (const NonlinearFactorGraph &newFactors=NonlinearFactorGraph(), const Values &newTheta=Values(), const boost::optional< FastList< Key > > &keysToMove=boost::none, const boost::optional< FactorIndices > &removeFactorIndices=boost::none)
 Add new factors and variables to the filter. More...
 
void presync () override
 Perform any required operations before the synchronization process starts. More...
 
void getSummarizedFactors (NonlinearFactorGraph &filterSummarization, Values &filterSummarizationValues) override
 Populate the provided containers with factors that constitute the filter branch summarization needed by the smoother. More...
 
void getSmootherFactors (NonlinearFactorGraph &smootherFactors, Values &smootherValues) override
 Populate the provided containers with factors being sent to the smoother from the filter. More...
 
void synchronize (const NonlinearFactorGraph &smootherSummarization, const Values &smootherSummarizationValues) override
 Apply the updated version of the smoother branch summarized factors. More...
 
void postsync () override
 Perform any required operations after the synchronization process finishes. More...
 
- Public Member Functions inherited from gtsam::ConcurrentFilter
 ConcurrentFilter ()
 Default constructor.
 
virtual ~ConcurrentFilter ()
 Default destructor.
 
virtual void print (const std::string &s="Concurrent Filter:\n", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const =0
 Implement a standard 'print' function. More...
 
virtual bool equals (const ConcurrentFilter &rhs, double tol=1e-9) const =0
 Check if two Concurrent Smoothers are equal. More...
 
virtual void presync ()
 Perform any required operations before the synchronization process starts. More...
 
virtual void getSummarizedFactors (NonlinearFactorGraph &summarizedFactors, Values &separatorValues)=0
 Populate the provided containers with factors that constitute the filter branch summarization needed by the smoother. More...
 
virtual void getSmootherFactors (NonlinearFactorGraph &smootherFactors, Values &smootherValues)=0
 Populate the provided containers with factors being sent to the smoother from the filter. More...
 
virtual void synchronize (const NonlinearFactorGraph &summarizedFactors, const Values &separatorValues)=0
 Apply the updated version of the smoother branch summarized factors. More...
 
virtual void postsync ()
 Perform any required operations after the synchronization process finishes. More...
 

Public Types

typedef boost::shared_ptr< ConcurrentIncrementalFiltershared_ptr
 
typedef ConcurrentFilter Base
 typedef for base class
 
- Public Types inherited from gtsam::ConcurrentFilter
typedef boost::shared_ptr< ConcurrentFiltershared_ptr
 

Classes

struct  Result
 Meta information returned about the update. More...
 

Protected Attributes

ISAM2 isam2_
 The iSAM2 inference engine.
 
NonlinearFactorGraph previousSmootherSummarization_
 The smoother summarization on the old separator sent by the smoother during the last synchronization.
 
FactorIndices currentSmootherSummarizationSlots_
 The slots in factor graph that correspond to the current smoother summarization on the current separator.
 
NonlinearFactorGraph smootherShortcut_
 A set of conditional factors from the old separator to the current separator (recursively calculated during each filter update)
 
NonlinearFactorGraph smootherFactors_
 A temporary holding place for the set of full nonlinear factors being sent to the smoother.
 
Values smootherValues_
 A temporary holding place for the linearization points of all keys being sent to the smoother.
 

Member Function Documentation

◆ calculateEstimate() [1/2]

Values gtsam::ConcurrentIncrementalFilter::calculateEstimate ( ) const
inline

Compute the current best estimate of all variables and return a full Values structure.

If only a single variable is needed, it may be faster to call calculateEstimate(const KEY&).

◆ calculateEstimate() [2/2]

template<class VALUE >
VALUE gtsam::ConcurrentIncrementalFilter::calculateEstimate ( Key  key) const
inline

Compute the current best estimate of a single variable.

This is generally faster than calling the no-argument version of calculateEstimate if only specific variables are needed.

Parameters
key
Returns

◆ equals()

bool gtsam::ConcurrentIncrementalFilter::equals ( const ConcurrentFilter rhs,
double  tol = 1e-9 
) const
overridevirtual

Check if two Concurrent Filters are equal.

Implements gtsam::ConcurrentFilter.

◆ getSmootherFactors()

void gtsam::ConcurrentIncrementalFilter::getSmootherFactors ( NonlinearFactorGraph smootherFactors,
Values smootherValues 
)
overridevirtual

Populate the provided containers with factors being sent to the smoother from the filter.

These may be original nonlinear factors, or factors encoding a summarization of the filter information. The specifics will be implementation-specific for a given filter.

Parameters
smootherFactorsThe new factors to be added to the smoother
smootherValuesThe linearization points of any new variables

Implements gtsam::ConcurrentFilter.

◆ getSummarizedFactors()

void gtsam::ConcurrentIncrementalFilter::getSummarizedFactors ( NonlinearFactorGraph filterSummarization,
Values filterSummarizationValues 
)
overridevirtual

Populate the provided containers with factors that constitute the filter branch summarization needed by the smoother.

Also, linearization points for the new root clique must be provided.

Parameters
summarizedFactorsThe summarized factors for the filter branch
rootValuesThe linearization points of the root clique variables

Implements gtsam::ConcurrentFilter.

◆ postsync()

void gtsam::ConcurrentIncrementalFilter::postsync ( )
overridevirtual

Perform any required operations after the synchronization process finishes.

Called by 'synchronize'

Reimplemented from gtsam::ConcurrentFilter.

◆ presync()

void gtsam::ConcurrentIncrementalFilter::presync ( )
overridevirtual

Perform any required operations before the synchronization process starts.

Called by 'synchronize'

Reimplemented from gtsam::ConcurrentFilter.

◆ print()

void gtsam::ConcurrentIncrementalFilter::print ( const std::string &  s = "Concurrent Incremental Filter:\n",
const KeyFormatter keyFormatter = DefaultKeyFormatter 
) const
overridevirtual

Implement a GTSAM standard 'print' function.

Implements gtsam::ConcurrentFilter.

◆ synchronize()

void gtsam::ConcurrentIncrementalFilter::synchronize ( const NonlinearFactorGraph smootherSummarization,
const Values smootherSummarizationValues 
)
overridevirtual

Apply the updated version of the smoother branch summarized factors.

Parameters
summarizedFactorsAn updated version of the smoother branch summarized factors

Implements gtsam::ConcurrentFilter.

◆ update()

ConcurrentIncrementalFilter::Result gtsam::ConcurrentIncrementalFilter::update ( const NonlinearFactorGraph newFactors = NonlinearFactorGraph(),
const Values newTheta = Values(),
const boost::optional< FastList< Key > > &  keysToMove = boost::none,
const boost::optional< FactorIndices > &  removeFactorIndices = boost::none 
)

Add new factors and variables to the filter.

Add new measurements, and optionally new variables, to the filter. This runs a full update step of the derived filter algorithm

Parameters
newFactorsThe new factors to be added to the smoother
newThetaInitialization points for new variables to be added to the filter You must include here all new variables occurring in newFactors that were not already in the filter.
keysToMoveAn optional set of keys to move from the filter to the smoother
removeFactorIndicesAn optional set of indices corresponding to the factors you want to remove from the graph

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