templating on params is still problematic

release/4.3a0
lcarlone 2020-12-21 20:32:21 -05:00
parent 398c01375e
commit 75bd3dc52c
3 changed files with 15 additions and 4 deletions

View File

@ -28,6 +28,8 @@ class GaussNewtonOptimizer;
* NonlinearOptimizationParams.
*/
class GTSAM_EXPORT GaussNewtonParams : public NonlinearOptimizerParams {
public:
typedef GaussNewtonOptimizer OptimizerType;
};
/**

View File

@ -36,6 +36,9 @@ namespace gtsam {
template<class BaseOptimizerParameters>
class GncParams {
public:
//typedef BaseOptimizerParameters::OptimizerType GncOptimizerType;
typedef BaseOptimizerParameters::OptimizerType OptimizerType;
/** Verbosity levels */
enum VerbosityGNC {
SILENT = 0, SUMMARY, VALUES
@ -46,8 +49,6 @@ public:
GM /*Geman McClure*/, TLS /*Truncated least squares*/
};
using BaseOptimizer = GaussNewtonOptimizer; // BaseOptimizerParameters::OptimizerType;
/// Constructor
GncParams(const BaseOptimizerParameters& baseOptimizerParams) :
baseOptimizerParams(baseOptimizerParams) {
@ -145,6 +146,11 @@ template<class GncParameters>
class GncOptimizer {
public:
// types etc
// typedef BaseOptimizerParameters::OptimizerType GncOptimizerType;
// typedef GncParameters::BaseOptimizerParameters::OptimizerType BaseOptimizer; //
//typedef BaseOptimizerParameters::OptimizerType BaseOptimizer;
//typedef GaussNewtonOptimizer BaseOptimizer;
typedef GncParameters::OptimizerType BaseOptimizer;
private:
NonlinearFactorGraph nfg_;
@ -198,7 +204,7 @@ public:
Values optimize() {
// start by assuming all measurements are inliers
weights_ = Vector::Ones(nfg_.size());
GaussNewtonOptimizer baseOptimizer(nfg_, state_);
BaseOptimizer baseOptimizer(nfg_, state_);
Values result = baseOptimizer.optimize();
double mu = initializeMu();
double mu_prev = mu;
@ -229,7 +235,7 @@ public:
// variable/values update
NonlinearFactorGraph graph_iter = this->makeWeightedGraph(weights_);
GaussNewtonOptimizer baseOptimizer_iter(graph_iter, state_);
BaseOptimizer baseOptimizer_iter(graph_iter, state_);
result = baseOptimizer_iter.optimize();
// update mu

View File

@ -25,6 +25,8 @@
namespace gtsam {
class LevenbergMarquardtOptimizer;
/** Parameters for Levenberg-Marquardt optimization. Note that this parameters
* class inherits from NonlinearOptimizerParams, which specifies the parameters
* common to all nonlinear optimization algorithms. This class also contains
@ -40,6 +42,7 @@ public:
static VerbosityLM verbosityLMTranslator(const std::string &s);
static std::string verbosityLMTranslator(VerbosityLM value);
typedef LevenbergMarquardtOptimizer OptimizerType;
public: