Refactoring: Split Odometry classes in multiple headers. Added Odometry::create(type) for convenience, working with "Odom/Strategy" parameter. Renamed OdometryBOW to OdometryLocalMap (more descriptive name).

This commit is contained in:
matlabbe
2016-01-05 16:37:14 -05:00
parent 1b2f1baf3d
commit 703b7181d9
21 changed files with 339 additions and 219 deletions
+4 -31
View File
@@ -67,7 +67,11 @@ Optimizer * Optimizer::create(const ParametersMap & parameters)
int optimizerTypeInt = Parameters::defaultOptimizerStrategy();
Parameters::parse(parameters, Parameters::kOptimizerStrategy(), optimizerTypeInt);
Optimizer::Type type = (Optimizer::Type)optimizerTypeInt;
return create(type, parameters);
}
Optimizer * Optimizer::create(Optimizer::Type & type, const ParametersMap & parameters)
{
if(!OptimizerG2O::available() && type == Optimizer::kTypeG2O)
{
UWARN("g2o optimizer not available. TORO will be used instead.");
@@ -104,37 +108,6 @@ Optimizer * Optimizer::create(const ParametersMap & parameters)
return optimizer;
}
Optimizer * Optimizer::create(Optimizer::Type & type, const ParametersMap & parameters)
{
if(!OptimizerG2O::available() && type == Optimizer::kTypeG2O)
{
UWARN("g2o optimizer not available. TORO will be used instead.");
type = Optimizer::kTypeTORO;
}
if(!OptimizerGTSAM::available() && type == Optimizer::kTypeGTSAM)
{
UWARN("GTSAM optimizer not available. TORO will be used instead.");
type = Optimizer::kTypeTORO;
}
Optimizer * optimizer = 0;
switch(type)
{
case Optimizer::kTypeGTSAM:
optimizer = new OptimizerGTSAM(parameters);
break;
case Optimizer::kTypeG2O:
optimizer = new OptimizerG2O(parameters);
break;
case Optimizer::kTypeTORO:
default:
optimizer = new OptimizerTORO(parameters);
type = Optimizer::kTypeTORO;
break;
}
return optimizer;
}
Optimizer::Optimizer(int iterations, bool slam2d, bool covarianceIgnored, double epsilon, bool robust) :
iterations_(iterations),
slam2d_(slam2d),