mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 09:30:25 +08:00
Merged master -> devel, updated default post-processing parameters
This commit is contained in:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user