DBViewer: when adding new constraints, if visual reg is not used, we use optimized graph as guess

This commit is contained in:
matlabbe
2019-07-05 16:28:31 -04:00
parent 78d0d60b9f
commit 63be7c85fc

View File

@@ -6838,7 +6838,27 @@ bool DatabaseViewer::addConstraint(int from, int to, bool silent)
Parameters::kRGBDLoopClosureReextractFeatures().c_str());
}
t = reg->computeTransformationMod(*fromS, *toS, Transform(), &info);
Transform guess;
if(!reg->isImageRequired())
{
// make a fake guess using globally optimized poses
if(graphes_.size())
{
std::map<int, Transform> optimizedPoses = uValueAt(graphes_, ui_->horizontalSlider_iterations->value());
if(optimizedPoses.size() > 0)
{
std::map<int, Transform>::iterator fromIter = optimizedPoses.find(from);
std::map<int, Transform>::iterator toIter = optimizedPoses.find(to);
if(fromIter != optimizedPoses.end() &&
toIter != optimizedPoses.end())
{
guess = fromIter->second.inverse() * toIter->second;
}
}
}
}
t = reg->computeTransformationMod(*fromS, *toS, guess, &info);
delete reg;
UDEBUG("");