mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-07 18:47:48 +08:00
Fixed assert when loading database having optimized poses different from the working memory (force re-update graph in this case).
This commit is contained in:
+30
-1
@@ -2059,7 +2059,36 @@ std::map<int, Transform> Memory::loadOptimizedPoses(Transform * lastlocalization
|
|||||||
{
|
{
|
||||||
if(_dbDriver)
|
if(_dbDriver)
|
||||||
{
|
{
|
||||||
return _dbDriver->loadOptimizedPoses(lastlocalizationPose);
|
bool ok = true;
|
||||||
|
std::map<int, Transform> poses = _dbDriver->loadOptimizedPoses(lastlocalizationPose);
|
||||||
|
// Make sure optimized poses match the working directory! Otherwise return nothing.
|
||||||
|
if(poses.size() == _workingMem.size())
|
||||||
|
{
|
||||||
|
for(std::map<int, Transform>::iterator iter=poses.begin(); iter!=poses.end() && ok; ++iter)
|
||||||
|
{
|
||||||
|
if(_workingMem.find(iter->first)==_workingMem.end())
|
||||||
|
{
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
if(!ok)
|
||||||
|
{
|
||||||
|
UWARN("Optimized poses (%d) and working memory "
|
||||||
|
"size (%d) don't match. Returning empty optimized "
|
||||||
|
"poses to force re-update. If you want to use the "
|
||||||
|
"saved optimized poses, set %s to true",
|
||||||
|
(int)poses.size(),
|
||||||
|
(int)_workingMem.size(),
|
||||||
|
Parameters::kMemInitWMWithAllNodes().c_str());
|
||||||
|
return std::map<int, Transform>();
|
||||||
|
}
|
||||||
|
return poses;
|
||||||
|
|
||||||
}
|
}
|
||||||
return std::map<int, Transform>();
|
return std::map<int, Transform>();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user