19#include <gtsam/dllexport.h>
33 :
public LevenbergMarquardtParams {
51 void print(
const std::string& str =
"")
const override;
52 bool equals(
const SfmLevenbergMarquardtParams& other,
53 double tol = 1e-9)
const;
56 std::shared_ptr<NonlinearOptimizerParams>
clone()
const {
57 return std::make_shared<SfmLevenbergMarquardtParams>(*
this);
67class GTSAM_EXPORT SfmLevenbergMarquardtOptimizer
77 const Values& initialValues);
88 const Values& initialValues,
91 ~SfmLevenbergMarquardtOptimizer()
override;
106 mutable std::unique_ptr<SchurState> schurState_;
Imperative-style multifrontal solver for Gaussian factor graphs.
A nonlinear optimizer that uses the Levenberg-Marquardt trust-region scheme.
Shared CPU/CUDA elimination policy for SFM optimizers.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
SfmEliminationMode
Determines whether an SFM optimizer solves the joint or reduced system.
Definition SfmEliminationMode.h:22
@ Full
Send the complete system to the selected solver.
Definition SfmEliminationMode.h:23
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition GaussianFactorGraph.h:77
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73
const LevenbergMarquardtParams & params() const
Read-only access the parameters.
Definition LevenbergMarquardtOptimizer.h:109
LevenbergMarquardtOptimizer(const NonlinearFactorGraph &graph, const Values &initialValues, const LevenbergMarquardtParams ¶ms=LevenbergMarquardtParams())
Standard constructor, requires a nonlinear factor graph, initial variable assignments,...
Definition LevenbergMarquardtOptimizer.cpp:47
Definition NonlinearFactorGraph.h:57
const NonlinearFactorGraph & graph() const
return the graph with nonlinear factors
Definition NonlinearOptimizer.h:141
const Values & values() const
return values in current optimizer state
Definition NonlinearOptimizer.cpp:95
The common parameters for Nonlinear optimizers.
Definition NonlinearOptimizerParams.h:37
A non-templated config holding any types of Manifold-group elements.
Definition Values.h:65
Parameters for CPU SFM Levenberg-Marquardt optimization.
Definition SfmLevenbergMarquardt.h:33
std::shared_ptr< NonlinearOptimizerParams > clone() const
Return a polymorphic copy preserving the SFM elimination mode.
Definition SfmLevenbergMarquardt.h:56
static SfmLevenbergMarquardtParams ceresDefaults()
Return parameters initialized with GTSAM's Ceres-style LM defaults.
Definition SfmLevenbergMarquardt.cpp:177
SfmEliminationMode eliminationMode
Point-elimination policy. CPU SFM optimization defaults to Full.
Definition SfmLevenbergMarquardt.h:38
static SfmLevenbergMarquardtParams legacyDefaults()
Return parameters initialized with GTSAM's legacy LM defaults.
Definition SfmLevenbergMarquardt.cpp:167
SfmLevenbergMarquardtParams()
Construct the fastest measured CPU defaults: Full + MultifrontalSolver.
Definition SfmLevenbergMarquardt.cpp:149
CPU SFM optimizer supporting either a joint solve or Schur elimination of Point3 and Unit3 variables.
Definition SfmLevenbergMarquardt.h:68
VectorValues solve(const GaussianFactorGraph &graph, const NonlinearOptimizerParams ¶ms) const override
Default function to do linear solve, i.e.
Definition SfmLevenbergMarquardt.cpp:258
static Ordering CreateSchurOrdering(const NonlinearFactorGraph &graph, const Ordering &reducedOrdering)
Create a Schur ordering by prefixing a reduced-system ordering with all other active graph keys in na...
Definition SfmLevenbergMarquardt.cpp:161
static Ordering CreateReducedOrdering(const NonlinearFactorGraph &graph, const Values &initialValues)
Create a fill-reducing ordering for the reduced system.
Definition SfmLevenbergMarquardt.cpp:154
bool ensureMultifrontalSolver(const NonlinearOptimizerParams ¶ms, const Values &values) const override
Ensure that the nonlinearMultifrontalSolver_ is populated if (and only if) the params request the mul...
Definition SfmLevenbergMarquardt.cpp:247