mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-10 03:49:50 +08:00
updating words have changed with getNodeWordsAndGlobalDescriptors()
This commit is contained in:
+23
-4
@@ -4276,6 +4276,29 @@ void Memory::getNodeWordsAndGlobalDescriptors(int nodeId,
|
|||||||
words3 = s->getWords3();
|
words3 = s->getWords3();
|
||||||
wordsDescriptors = s->getWordsDescriptors();
|
wordsDescriptors = s->getWordsDescriptors();
|
||||||
globalDescriptors = s->sensorData().globalDescriptors();
|
globalDescriptors = s->sensorData().globalDescriptors();
|
||||||
|
|
||||||
|
if(!words.empty() && wordsKpts.empty() && _dbDriver)
|
||||||
|
{
|
||||||
|
std::multimap<int, int> tmpWords;
|
||||||
|
_dbDriver->getLocalFeatures(nodeId, tmpWords, wordsKpts, words3, wordsDescriptors);
|
||||||
|
if(!tmpWords.empty() && !wordsKpts.empty())
|
||||||
|
{
|
||||||
|
UASSERT(tmpWords.size() == words.size());
|
||||||
|
std::map<int, int> wordsChanged = s->getWordsChanged();
|
||||||
|
for(const auto & iter: wordsChanged) {
|
||||||
|
std::list<int> subwords = uValues(tmpWords, iter.first); // old id
|
||||||
|
if(subwords.size())
|
||||||
|
{
|
||||||
|
tmpWords.erase(iter.first);
|
||||||
|
for(std::list<int>::const_iterator jter=subwords.begin(); jter!=subwords.end(); ++jter)
|
||||||
|
{
|
||||||
|
tmpWords.insert(std::pair<int, int>(iter.second, (*jter))); // new id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
words = tmpWords;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(_dbDriver)
|
else if(_dbDriver)
|
||||||
{
|
{
|
||||||
@@ -4303,10 +4326,6 @@ void Memory::getNodeWordsAndGlobalDescriptors(int nodeId,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!words.empty() && wordsKpts.empty() && _dbDriver)
|
|
||||||
{
|
|
||||||
_dbDriver->getLocalFeatures(nodeId, words, wordsKpts, words3, wordsDescriptors);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Memory::getNodeCalibration(int nodeId,
|
void Memory::getNodeCalibration(int nodeId,
|
||||||
|
|||||||
Reference in New Issue
Block a user