#include <ConcurrentBatchFilter.h>

Classes | |
| struct | Result |
Public Types | |
| typedef ConcurrentFilter | Base |
| typedef for base class More... | |
| typedef std::shared_ptr< ConcurrentBatchFilter > | shared_ptr |
Public Types inherited from gtsam::ConcurrentFilter | |
| typedef std::shared_ptr< ConcurrentFilter > | shared_ptr |
Public Member Functions | |
| Values | calculateEstimate () const |
| template<class VALUE > | |
| VALUE | calculateEstimate (Key key) const |
| ConcurrentBatchFilter (const LevenbergMarquardtParams ¶meters=LevenbergMarquardtParams()) | |
| bool | equals (const ConcurrentFilter &rhs, double tol=1e-9) const override |
| const VectorValues & | getDelta () const |
| const NonlinearFactorGraph & | getFactors () const |
| const Values & | getLinearizationPoint () const |
| const Ordering & | getOrdering () const |
| void | getSmootherFactors (NonlinearFactorGraph &smootherFactors, Values &smootherValues) override |
| void | getSummarizedFactors (NonlinearFactorGraph &filterSummarization, Values &filterSummarizationValues) override |
| void | postsync () override |
| void | presync () override |
| void | print (const std::string &s="Concurrent Batch Filter:\n", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const override |
| void | synchronize (const NonlinearFactorGraph &smootherSummarization, const Values &smootherSummarizationValues) override |
| virtual Result | update (const NonlinearFactorGraph &newFactors=NonlinearFactorGraph(), const Values &newTheta=Values(), const std::optional< FastList< Key > > &keysToMove={}, const std::optional< std::vector< size_t > > &removeFactorIndices={}) |
| ~ConcurrentBatchFilter () override=default | |
Public Member Functions inherited from gtsam::ConcurrentFilter | |
| ConcurrentFilter ()=default | |
| virtual | ~ConcurrentFilter ()=default |
Protected Attributes | |
| std::queue< size_t > | availableSlots_ |
| The set of available factor graph slots caused by deleting factors. More... | |
| VectorValues | delta_ |
| The current set of linear deltas from the linearization point. More... | |
| NonlinearFactorGraph | factors_ |
| The set of all factors currently in the filter. More... | |
| NonlinearFactorGraph | filterSummarization_ |
| A temporary holding place for calculated filter summarization factors to be sent to the smoother. More... | |
| Ordering | ordering_ |
| The current ordering used to calculate the linear deltas. More... | |
| LevenbergMarquardtParams | parameters_ |
| LM parameters. More... | |
| std::vector< size_t > | separatorSummarizationSlots_ |
| The slots in factor graph that correspond to the current smoother summarization on the current separator. More... | |
| Values | separatorValues_ |
| The linearization points of the separator variables. These should not be updated during optimization. More... | |
| NonlinearFactorGraph | smootherFactors_ |
| A temporary holding place for the set of full nonlinear factors being sent to the smoother. More... | |
| NonlinearFactorGraph | smootherShortcut_ |
| A set of conditional factors from the old separator to the current separator (recursively calculated during each filter update) More... | |
| NonlinearFactorGraph | smootherSummarization_ |
| The smoother summarization on the old separator sent by the smoother during the last synchronization. More... | |
| Values | smootherValues_ |
| A temporary holding place for the linearization points of all keys being sent to the smoother. More... | |
| Values | theta_ |
| Current linearization point of all variables in the filter. More... | |
Private Member Functions | |
| std::vector< size_t > | insertFactors (const NonlinearFactorGraph &factors) |
| void | moveSeparator (const FastList< Key > &keysToMove) |
| void | removeFactors (const std::vector< size_t > &slots) |
| void | reorder (const std::optional< FastList< Key > > &keysToMove={}) |
Static Private Member Functions | |
| static void | optimize (const NonlinearFactorGraph &factors, Values &theta, const Ordering &ordering, VectorValues &delta, const Values &linearValues, const LevenbergMarquardtParams ¶meters, Result &result) |
| template<class Container > | |
| static void | PrintKeys (const Container &keys, const std::string &indent, const std::string &title, const KeyFormatter &keyFormatter=DefaultKeyFormatter) |
| Implementation of PrintKeys. More... | |
| static void | PrintLinearFactor (const GaussianFactor::shared_ptr &factor, const std::string &indent="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) |
| static void | PrintLinearFactorGraph (const GaussianFactorGraph &factors, const std::string &indent="", const std::string &title="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) |
| static void | PrintNonlinearFactor (const NonlinearFactor::shared_ptr &factor, const std::string &indent="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) |
| static void | PrintNonlinearFactorGraph (const NonlinearFactorGraph &factors, const std::string &indent="", const std::string &title="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) |
| static void | PrintNonlinearFactorGraph (const NonlinearFactorGraph &factors, const std::vector< size_t > &slots, const std::string &indent="", const std::string &title="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) |
A Levenberg-Marquardt Batch Filter that implements the Concurrent Filtering and Smoother interface.
Definition at line 31 of file ConcurrentBatchFilter.h.
typedef for base class
Definition at line 35 of file ConcurrentBatchFilter.h.
| typedef std::shared_ptr<ConcurrentBatchFilter> gtsam::ConcurrentBatchFilter::shared_ptr |
Definition at line 34 of file ConcurrentBatchFilter.h.
|
inline |
Default constructor
Definition at line 64 of file ConcurrentBatchFilter.h.
|
overridedefault |
Default destructor
|
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&).
Definition at line 98 of file ConcurrentBatchFilter.h.
|
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.
| key |
Definition at line 108 of file ConcurrentBatchFilter.h.
|
overridevirtual |
Check if two Concurrent Filters are equal
Implements gtsam::ConcurrentFilter.
Definition at line 107 of file ConcurrentBatchFilter.cpp.
|
inline |
Access the current set of deltas to the linearization point
Definition at line 91 of file ConcurrentBatchFilter.h.
|
inline |
Access the current set of factors
Definition at line 76 of file ConcurrentBatchFilter.h.
|
inline |
Access the current linearization point
Definition at line 81 of file ConcurrentBatchFilter.h.
|
inline |
Access the current ordering
Definition at line 86 of file ConcurrentBatchFilter.h.
|
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.
| smootherFactors | The new factors to be added to the smoother |
| smootherValues | The linearization points of any new variables |
Implements gtsam::ConcurrentFilter.
Definition at line 290 of file ConcurrentBatchFilter.cpp.
|
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.
| summarizedFactors | The summarized factors for the filter branch |
| rootValues | The linearization points of the root clique variables |
Implements gtsam::ConcurrentFilter.
Definition at line 278 of file ConcurrentBatchFilter.cpp.
|
private |
Augment the graph with new factors
| factors | The factors to add to the graph |
Definition at line 314 of file ConcurrentBatchFilter.cpp.
Marginalize out the set of requested variables from the filter, caching them for the smoother This effectively moves the separator.
| keysToMove | The set of keys to move from the filter to the smoother |
Definition at line 512 of file ConcurrentBatchFilter.cpp.
|
staticprivate |
Use a modified version of L-M to update the linearization point and delta
Definition at line 372 of file ConcurrentBatchFilter.cpp.
|
overridevirtual |
Perform any required operations after the synchronization process finishes. Called by 'synchronize'
Reimplemented from gtsam::ConcurrentFilter.
Definition at line 302 of file ConcurrentBatchFilter.cpp.
|
overridevirtual |
Perform any required operations before the synchronization process starts. Called by 'synchronize'
Reimplemented from gtsam::ConcurrentFilter.
Definition at line 194 of file ConcurrentBatchFilter.cpp.
|
overridevirtual |
Implement a GTSAM standard 'print' function
Implements gtsam::ConcurrentFilter.
Definition at line 98 of file ConcurrentBatchFilter.cpp.
|
staticprivate |
Implementation of PrintKeys.
Print just the nonlinear keys contained inside a container
Definition at line 245 of file ConcurrentBatchFilter.h.
|
staticprivate |
Print just the nonlinear keys in a linear factor
Definition at line 66 of file ConcurrentBatchFilter.cpp.
|
staticprivate |
Print just the nonlinear keys in each linear factor for a whole Gaussian Factor Graph
Definition at line 89 of file ConcurrentBatchFilter.cpp.
|
staticprivate |
Print just the nonlinear keys in a nonlinear factor
Definition at line 29 of file ConcurrentBatchFilter.cpp.
|
staticprivate |
Print just the nonlinear keys in each factor for a whole Nonlinear Factor Graph
Definition at line 48 of file ConcurrentBatchFilter.cpp.
|
staticprivate |
Print just the nonlinear keys of specific factors in a Nonlinear Factor Graph
Definition at line 57 of file ConcurrentBatchFilter.cpp.
|
private |
Remove factors from the graph by slot index
| slots | The slots in the factor graph that should be deleted |
Definition at line 342 of file ConcurrentBatchFilter.cpp.
|
private |
Use colamd to update into an efficient ordering
Definition at line 360 of file ConcurrentBatchFilter.cpp.
|
overridevirtual |
Apply the updated version of the smoother branch summarized factors.
| summarizedFactors | An updated version of the smoother branch summarized factors |
Implements gtsam::ConcurrentFilter.
Definition at line 202 of file ConcurrentBatchFilter.cpp.
|
virtual |
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
| newFactors | The new factors to be added to the smoother |
| newTheta | Initialization 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. |
| keysToMove | An optional set of keys to move from the filter to the smoother |
| removeFactorIndices | An optional set of indices corresponding to the factors you want to remove from the graph |
Definition at line 123 of file ConcurrentBatchFilter.cpp.
|
protected |
The set of available factor graph slots caused by deleting factors.
Definition at line 174 of file ConcurrentBatchFilter.h.
|
protected |
The current set of linear deltas from the linearization point.
Definition at line 173 of file ConcurrentBatchFilter.h.
|
protected |
The set of all factors currently in the filter.
Definition at line 170 of file ConcurrentBatchFilter.h.
|
protected |
A temporary holding place for calculated filter summarization factors to be sent to the smoother.
Definition at line 183 of file ConcurrentBatchFilter.h.
|
protected |
The current ordering used to calculate the linear deltas.
Definition at line 172 of file ConcurrentBatchFilter.h.
|
protected |
LM parameters.
Definition at line 169 of file ConcurrentBatchFilter.h.
|
protected |
The slots in factor graph that correspond to the current smoother summarization on the current separator.
Definition at line 176 of file ConcurrentBatchFilter.h.
|
protected |
The linearization points of the separator variables. These should not be updated during optimization.
Definition at line 175 of file ConcurrentBatchFilter.h.
|
protected |
A temporary holding place for the set of full nonlinear factors being sent to the smoother.
Definition at line 184 of file ConcurrentBatchFilter.h.
|
protected |
A set of conditional factors from the old separator to the current separator (recursively calculated during each filter update)
Definition at line 180 of file ConcurrentBatchFilter.h.
|
protected |
The smoother summarization on the old separator sent by the smoother during the last synchronization.
Definition at line 179 of file ConcurrentBatchFilter.h.
|
protected |
A temporary holding place for the linearization points of all keys being sent to the smoother.
Definition at line 185 of file ConcurrentBatchFilter.h.
|
protected |
Current linearization point of all variables in the filter.
Definition at line 171 of file ConcurrentBatchFilter.h.