Merged master -> devel, updated default post-processing parameters

This commit is contained in:
matlabbe
2015-08-15 12:58:29 -04:00
14 changed files with 624 additions and 23 deletions

View File

@@ -3250,8 +3250,13 @@ void MainWindow::postProcessing()
double clusterRadius = _postProcessingDialog->clusterRadius();
double clusterAngle = _postProcessingDialog->clusterAngle();
int detectLoopClosureIterations = _postProcessingDialog->iterations();
bool sba = _postProcessingDialog->isSBA();
int sbaIterations = _postProcessingDialog->sbaIterations();
double sbaEpsilon = _postProcessingDialog->sbaEpsilon();
double sbaInlierDistance = _postProcessingDialog->sbaInlierDistance();
int sbaMinInliers = _postProcessingDialog->sbaMinInliers();
if(!detectMoreLoopClosures && !refineNeighborLinks && !refineLoopClosureLinks)
if(!detectMoreLoopClosures && !refineNeighborLinks && !refineLoopClosureLinks && !sba)
{
UWARN("No post-processing selection...");
return;
@@ -3331,6 +3336,10 @@ void MainWindow::postProcessing()
{
totalSteps+=(int)_currentLinksMap.size() - (int)odomPoses.size();
}
if(sba)
{
totalSteps+=1;
}
_initProgressDialog->setMaximumSteps(totalSteps);
_initProgressDialog->show();
@@ -3676,6 +3685,33 @@ void MainWindow::postProcessing()
_initProgressDialog->appendText(tr("Optimizing graph with updated links... done!"));
_initProgressDialog->incrementStep();
if(sba)
{
_initProgressDialog->appendText(tr("SBA (%1 nodes, %2 constraints, %3 iterations)...")
.arg(optimizedPoses.size()).arg(linksOut.size()).arg(sbaIterations));
QApplication::processEvents();
uSleep(100);
QApplication::processEvents();
ParametersMap parametersSBA = _preferencesDialog->getAllParameters();
uInsert(parametersSBA, std::make_pair(Parameters::kRGBDOptimizeIterations(), uNumber2Str(sbaIterations)));
uInsert(parametersSBA, std::make_pair(Parameters::kRGBDOptimizeEpsilon(), uNumber2Str(sbaEpsilon)));
graph::CVSBAOptimizer cvsba = graph::CVSBAOptimizer(parametersSBA);
cvsba.setInlierDistance(sbaInlierDistance);
cvsba.setMinInliers(sbaMinInliers);
std::map<int, Transform> newPoses = cvsba.optimizeBA(0, optimizedPoses, linksOut, _cachedSignatures.toStdMap());
if(newPoses.size())
{
optimizedPoses = newPoses;
_initProgressDialog->appendText(tr("SBA... done!"));
}
else
{
_initProgressDialog->appendText(tr("SBA... failed!"));
}
_initProgressDialog->incrementStep();
}
_initProgressDialog->appendText(tr("Updating map..."));
this->updateMapCloud(
optimizedPoses, Transform(),