use custom typedefs for GNC + GaussNewton and GNC + LM

release/4.3a0
John Lambert 2021-08-12 17:30:20 -04:00 committed by GitHub
parent 6e788faf34
commit 30d028ef74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 3 deletions

View File

@ -523,12 +523,15 @@ virtual class DoglegParams : gtsam::NonlinearOptimizerParams {
}; };
#include <gtsam/nonlinear/GncParams.h> #include <gtsam/nonlinear/GncParams.h>
template<PARAMS = {gtsam::GaussNewtonParams, gtsam::LevenbergMarquardtParams}> template<PARAMS>
virtual class GncParams { virtual class GncParams {
GncParams(const PARAMS& baseOptimizerParams); GncParams(const PARAMS& baseOptimizerParams);
GncParams(); GncParams();
void print(const string& str) const; void print(const string& str) const;
}; };
typedef GncParams<gtsam::GaussNewtonParams> GncGaussNewtonParams;
typedef GncParams<gtsam::LevenbergMarquardtParams> GncLMParams;
#include <gtsam/nonlinear/NonlinearOptimizer.h> #include <gtsam/nonlinear/NonlinearOptimizer.h>
virtual class NonlinearOptimizer { virtual class NonlinearOptimizer {
@ -561,8 +564,7 @@ virtual class DoglegOptimizer : gtsam::NonlinearOptimizer {
}; };
#include <gtsam/nonlinear/GncOptimizer.h> #include <gtsam/nonlinear/GncOptimizer.h>
template<PARAMS = {gtsam::GncParams<gtsam::GaussNewtonParams>, template<PARAMS>
gtsam::GncParams<gtsam::LevenbergMarquardtParams>}>
virtual class GncOptimizer { virtual class GncOptimizer {
GncOptimizer(const gtsam::NonlinearFactorGraph& graph, GncOptimizer(const gtsam::NonlinearFactorGraph& graph,
const gtsam::Values& initialValues, const gtsam::Values& initialValues,
@ -570,6 +572,9 @@ virtual class GncOptimizer {
gtsam::Values optimize(); gtsam::Values optimize();
}; };
typedef gtsam::GncOptimizer<gtsam::GncParams<gtsam::GaussNewtonParams> > GncGaussNewtonOptimizer;
typedef gtsam::GncOptimizer<gtsam::GncParams<gtsam::LevenbergMarquardtParams> > GncLMOptimizer;
#include <gtsam/nonlinear/LevenbergMarquardtOptimizer.h> #include <gtsam/nonlinear/LevenbergMarquardtOptimizer.h>
virtual class LevenbergMarquardtOptimizer : gtsam::NonlinearOptimizer { virtual class LevenbergMarquardtOptimizer : gtsam::NonlinearOptimizer {
LevenbergMarquardtOptimizer(const gtsam::NonlinearFactorGraph& graph, LevenbergMarquardtOptimizer(const gtsam::NonlinearFactorGraph& graph,