sending words too when getting map

This commit is contained in:
matlabbe
2015-07-15 18:15:27 -04:00
parent 82ef6231c4
commit 185bc12cae
3 changed files with 45 additions and 0 deletions
+36
View File
@@ -3354,6 +3354,42 @@ SensorData Memory::getNodeData(int nodeId, bool uncompressedData)
return r;
}
void Memory::getNodeWords(int nodeId,
std::multimap<int, cv::KeyPoint> & words,
std::multimap<int, pcl::PointXYZ> & words3)
{
UDEBUG("nodeId=%d", nodeId);
Signature * s = this->_getSignature(nodeId);
if(s)
{
words = s->getWords();
words3 = s->getWords3();
}
else if(_dbDriver)
{
// load from database
std::list<Signature*> signatures;
std::list<int> ids;
ids.push_back(nodeId);
std::set<int> loadedFromTrash;
_dbDriver->loadSignatures(ids, signatures, &loadedFromTrash);
if(signatures.size())
{
words = signatures.front()->getWords();
words3 = signatures.front()->getWords3();
if(loadedFromTrash.size())
{
//put back
_dbDriver->asyncSave(signatures.front());
}
else
{
delete signatures.front();
}
}
}
}
SensorData Memory::getSignatureDataConst(int locationId) const
{
UDEBUG("");