gtsam
Loading...
Searching...
No Matches
SfmLevenbergMarquardt.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010-2026, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
16
17#pragma once
18
19#include <gtsam/dllexport.h>
23
24#include <memory>
25#include <string>
26
27namespace gtsam {
28
30
33 : public LevenbergMarquardtParams {
34 public:
35 using OptimizerType = SfmLevenbergMarquardtOptimizer;
36
39
42
47
48 SfmEliminationMode getEliminationMode() const { return eliminationMode; }
49 void setEliminationMode(SfmEliminationMode mode) { eliminationMode = mode; }
50
51 void print(const std::string& str = "") const override;
52 bool equals(const SfmLevenbergMarquardtParams& other,
53 double tol = 1e-9) const;
54
56 std::shared_ptr<NonlinearOptimizerParams> clone() const {
57 return std::make_shared<SfmLevenbergMarquardtParams>(*this);
58 }
59};
60
67class GTSAM_EXPORT SfmLevenbergMarquardtOptimizer
69 public:
77 const Values& initialValues);
78
85 const Ordering& reducedOrdering);
86
87 SfmLevenbergMarquardtOptimizer(const NonlinearFactorGraph& graph,
88 const Values& initialValues,
91 ~SfmLevenbergMarquardtOptimizer() override;
92
93 const SfmLevenbergMarquardtParams& sfmParams() const { return sfmParams_; }
94
95 protected:
97 const NonlinearOptimizerParams& params) const override;
98
100 const Values& values) const override;
101
102 private:
103 struct SchurState;
104
106 mutable std::unique_ptr<SchurState> schurState_;
107};
108
109} // namespace gtsam
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
Definition Ordering.h:33
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 &params=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 &params) 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 &params, const Values &values) const override
Ensure that the nonlinearMultifrontalSolver_ is populated if (and only if) the params request the mul...
Definition SfmLevenbergMarquardt.cpp:247