34 typedef boost::shared_ptr<ConcurrentBatchSmoother> shared_ptr;
46 Result() : iterations(0), lambdas(0), nonlinearVariables(0), linearVariables(0), error(0) {};
50 size_t getLambdas()
const {
return lambdas; }
51 size_t getNonlinearVariables()
const {
return nonlinearVariables; }
52 size_t getLinearVariables()
const {
return linearVariables; }
53 double getError()
const {
return error; }
63 void print(
const std::string& s =
"Concurrent Batch Smoother:\n",
const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override;
100 template<
class VALUE>
102 const Vector delta = delta_.at(key);
103 return theta_.at<VALUE>(key).retract(delta);
121 const boost::optional< std::vector<size_t> >& removeFactorIndices = boost::none);
127 void presync()
override;
153 void postsync()
override;
183 void removeFactors(
const std::vector<size_t>& slots);
192 void updateSmootherSummarization();
195 static void PrintNonlinearFactor(
const NonlinearFactor::shared_ptr& factor,
196 const std::string& indent =
"",
const KeyFormatter& keyFormatter = DefaultKeyFormatter);
200 const std::string& indent =
"",
const KeyFormatter& keyFormatter = DefaultKeyFormatter);
A nonlinear optimizer that uses the Levenberg-Marquardt trust-region scheme.
Base classes for the 'filter' and 'smoother' portion of the Concurrent Filtering and Smoothing archit...
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
Point3 optimize(const NonlinearFactorGraph &graph, const Values &values, Key landmarkKey)
Optimize for triangulation.
Definition: triangulation.cpp:73
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:155
ConcurrentBatchSmoother::Result ConcurrentBatchSmootherResult
Typedef for Matlab wrapping.
Definition: ConcurrentBatchSmoother.h:205
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:69
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
Template to create a binary predicate.
Definition: Testable.h:111
A helper that implements the traits interface for GTSAM types.
Definition: Testable.h:151
Definition: Ordering.h:34
The VariableIndex class computes and stores the block column structure of a factor graph.
Definition: VariableIndex.h:43
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:42
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:74
Parameters for Levenberg-Marquardt optimization.
Definition: LevenbergMarquardtParams.h:35
A non-linear factor graph is a graph of non-Gaussian, i.e.
Definition: NonlinearFactorGraph.h:78
A non-templated config holding any types of Manifold-group elements.
Definition: Values.h:63
Values retract(const VectorValues &delta) const
Add a delta config to current config and returns a new config.
Definition: Values.cpp:101
A Levenberg-Marquardt Batch Smoother that implements the Concurrent Filtering and Smoother interface.
Definition: ConcurrentBatchSmoother.h:31
NonlinearFactorGraph factors_
The set of all factors currently in the smoother.
Definition: ConcurrentBatchSmoother.h:158
Values calculateEstimate() const
Compute the current best estimate of all variables and return a full Values structure.
Definition: ConcurrentBatchSmoother.h:91
ConcurrentSmoother Base
typedef for base class
Definition: ConcurrentBatchSmoother.h:35
~ConcurrentBatchSmoother() override
Default destructor.
Definition: ConcurrentBatchSmoother.h:60
VectorValues delta_
The current set of linear deltas from the linearization point.
Definition: ConcurrentBatchSmoother.h:161
VALUE calculateEstimate(Key key) const
Compute the current best estimate of a single variable.
Definition: ConcurrentBatchSmoother.h:101
std::vector< size_t > filterSummarizationSlots_
The slots in factor graph that correspond to the current filter summarization factors.
Definition: ConcurrentBatchSmoother.h:165
const VectorValues & getDelta() const
Access the current set of deltas to the linearization point.
Definition: ConcurrentBatchSmoother.h:84
Values theta_
Current linearization point of all variables in the smoother.
Definition: ConcurrentBatchSmoother.h:159
std::queue< size_t > availableSlots_
The set of available factor graph slots caused by deleting factors.
Definition: ConcurrentBatchSmoother.h:163
const Values & getLinearizationPoint() const
Access the current linearization point.
Definition: ConcurrentBatchSmoother.h:74
NonlinearFactorGraph smootherSummarization_
A temporary holding place for calculated smoother summarization.
Definition: ConcurrentBatchSmoother.h:168
LevenbergMarquardtParams parameters_
LM parameters.
Definition: ConcurrentBatchSmoother.h:157
ConcurrentBatchSmoother(const LevenbergMarquardtParams ¶meters=LevenbergMarquardtParams())
Default constructor.
Definition: ConcurrentBatchSmoother.h:57
Values separatorValues_
The linearization points of the separator variables. These should not be updated during optimization.
Definition: ConcurrentBatchSmoother.h:164
const Ordering & getOrdering() const
Access the current ordering.
Definition: ConcurrentBatchSmoother.h:79
VariableIndex variableIndex_
The current variable index, which allows efficient factor lookup by variable.
Definition: ConcurrentBatchSmoother.h:162
Ordering ordering_
The current ordering used to calculate the linear deltas.
Definition: ConcurrentBatchSmoother.h:160
const NonlinearFactorGraph & getFactors() const
Access the current set of factors.
Definition: ConcurrentBatchSmoother.h:69
Meta information returned about the update.
Definition: ConcurrentBatchSmoother.h:38
Result()
Constructor.
Definition: ConcurrentBatchSmoother.h:46
size_t linearVariables
The number of variables that must keep a constant linearization point.
Definition: ConcurrentBatchSmoother.h:42
size_t nonlinearVariables
The number of variables that can be relinearized.
Definition: ConcurrentBatchSmoother.h:41
size_t getIterations() const
Getter methods.
Definition: ConcurrentBatchSmoother.h:49
size_t iterations
The number of optimizer iterations performed.
Definition: ConcurrentBatchSmoother.h:39
size_t lambdas
The number of different L-M lambda factors that were tried during optimization.
Definition: ConcurrentBatchSmoother.h:40
double error
The final factor graph error.
Definition: ConcurrentBatchSmoother.h:43
The interface for the 'Smoother' portion of the Concurrent Filtering and Smoother architecture.
Definition: ConcurrentFilteringAndSmoothing.h:101