diff --git a/corelib/src/OptimizerG2O.cpp b/corelib/src/OptimizerG2O.cpp index f195e789..9146c12f 100644 --- a/corelib/src/OptimizerG2O.cpp +++ b/corelib/src/OptimizerG2O.cpp @@ -215,6 +215,16 @@ std::map OptimizerG2O::optimize( optimizer.setAlgorithm(new g2o::OptimizationAlgorithmLevenberg(blockSolver)); } + // detect if there is a global pose prior set, if so remove rootId + for(std::multimap::const_iterator iter=edgeConstraints.begin(); iter!=edgeConstraints.end(); ++iter) + { + if(iter->second.from() == iter->second.to()) + { + rootId = 0; + break; + } + } + UDEBUG("fill poses to g2o..."); std::map > geoPoses; // pose / information matrix for(std::map::const_iterator iter = poses.begin(); iter!=poses.end(); ++iter)