mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-06 01:57:45 +08:00
Aligned BundleAdjustment parameters with Optimizer/Strategy to avoid confusion in the code
This commit is contained in:
@@ -1880,7 +1880,10 @@ Transform RegistrationVis::computeTransformationImpl(
|
||||
(toSignature.sensorData().stereoCameraModels().size() >= 1 || toSignature.sensorData().cameraModels().size() >= 1))
|
||||
{
|
||||
UDEBUG("Refine with bundle adjustment");
|
||||
Optimizer * sba = Optimizer::create(_bundleAdjustment==3?Optimizer::kTypeCeres:_bundleAdjustment==2?Optimizer::kTypeCVSBA:Optimizer::kTypeG2O, _bundleParameters);
|
||||
// _bundleAdjustment matches the Optimizer/Strategy parameter 1:1
|
||||
// (1=g2o, 2=GTSAM, 3=Ceres, 4=cvsba); 0 was filtered out above.
|
||||
Optimizer * sba = Optimizer::create(
|
||||
static_cast<Optimizer::Type>(_bundleAdjustment), _bundleParameters);
|
||||
|
||||
std::map<int, Transform> poses;
|
||||
std::multimap<int, Link> links;
|
||||
|
||||
@@ -110,13 +110,15 @@ OdometryF2M::OdometryF2M(const ParametersMap & parameters) :
|
||||
ParametersMap bundleParameters = parameters;
|
||||
if(bundleAdjustment_ > 0)
|
||||
{
|
||||
if((bundleAdjustment_==1 && Optimizer::isAvailable(Optimizer::kTypeG2O)) ||
|
||||
(bundleAdjustment_==2 && Optimizer::isAvailable(Optimizer::kTypeCVSBA)) ||
|
||||
(bundleAdjustment_==3 && Optimizer::isAvailable(Optimizer::kTypeCeres)))
|
||||
// The BundleAdjustment int matches the Optimizer/Strategy parameter
|
||||
// 1:1 (g2o=1, GTSAM=2, Ceres=3, CVSBA=4). 0 = "disabled" -- it's
|
||||
// the TORO slot, which isn't BA-capable.
|
||||
const Optimizer::Type sbaType = static_cast<Optimizer::Type>(bundleAdjustment_);
|
||||
if(Optimizer::isAvailable(sbaType))
|
||||
{
|
||||
// disable bundle in RegistrationVis as we do it already here
|
||||
uInsert(bundleParameters, ParametersPair(Parameters::kVisBundleAdjustment(), "0"));
|
||||
sba_ = Optimizer::create(bundleAdjustment_==3?Optimizer::kTypeCeres:bundleAdjustment_==2?Optimizer::kTypeCVSBA:Optimizer::kTypeG2O, bundleParameters);
|
||||
sba_ = Optimizer::create(sbaType, bundleParameters);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user