mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-01 17:10:26 +08:00
Added Map color overlay on 3D cloud (press key '2' on keyboard)
Fixed loading all node ids from database, ignoring children git-svn-id: http://rtabmap.googlecode.com/svn/trunk/rtabmap@1813 f169173b-cf89-36c8-b27e-44dbe73f0c83
This commit is contained in:
@@ -102,7 +102,7 @@ public:
|
||||
void loadNeighbors(int signatureId, std::map<int, Transform> & neighbors) const;
|
||||
void loadLoopClosures(int signatureId, std::map<int, Transform> & loopIds, std::map<int, Transform> & childIds) const;
|
||||
void getWeight(int signatureId, int & weight) const;
|
||||
void getAllNodeIds(std::set<int> & ids) const;
|
||||
void getAllNodeIds(std::set<int> & ids, bool ignoreChildren = false) const;
|
||||
void getLastNodeId(int & id) const;
|
||||
void getLastWordId(int & id) const;
|
||||
void getInvertedIndexNi(int signatureId, int & ni) const;
|
||||
@@ -138,7 +138,7 @@ private:
|
||||
virtual void getNodeDataQuery(int signatureId, std::vector<unsigned char> & image, std::vector<unsigned char> & depth, std::vector<unsigned char> & depth2d, float & fx, float & fy, float & cx, float & cy, Transform & localTransform) const = 0;
|
||||
virtual void getNodeDataQuery(int signatureId, std::vector<unsigned char> & image) const = 0;
|
||||
virtual void getPoseQuery(int signatureId, Transform & pose, int & mapId) const = 0;
|
||||
virtual void getAllNodeIdsQuery(std::set<int> & ids) const = 0;
|
||||
virtual void getAllNodeIdsQuery(std::set<int> & ids, bool ignoreChildren) const = 0;
|
||||
virtual void getLastIdQuery(const std::string & tableName, int & id) const = 0;
|
||||
virtual void getInvertedIndexNiQuery(int signatureId, int & ni) const = 0;
|
||||
|
||||
|
||||
@@ -453,10 +453,10 @@ void DBDriver::loadLoopClosures(int signatureId, std::map<int, Transform> & loop
|
||||
}
|
||||
|
||||
//TODO Check also in the trash ?
|
||||
void DBDriver::getAllNodeIds(std::set<int> & ids) const
|
||||
void DBDriver::getAllNodeIds(std::set<int> & ids, bool ignoreChildren) const
|
||||
{
|
||||
_dbSafeAccessMutex.lock();
|
||||
this->getAllNodeIdsQuery(ids);
|
||||
this->getAllNodeIdsQuery(ids, ignoreChildren);
|
||||
_dbSafeAccessMutex.unlock();
|
||||
}
|
||||
|
||||
|
||||
@@ -806,7 +806,7 @@ void DBDriverSqlite3::getPoseQuery(int signatureId, Transform & pose, int & mapI
|
||||
}
|
||||
|
||||
|
||||
void DBDriverSqlite3::getAllNodeIdsQuery(std::set<int> & ids) const
|
||||
void DBDriverSqlite3::getAllNodeIdsQuery(std::set<int> & ids, bool ignoreChildren) const
|
||||
{
|
||||
if(_ppDb)
|
||||
{
|
||||
@@ -816,9 +816,21 @@ void DBDriverSqlite3::getAllNodeIdsQuery(std::set<int> & ids) const
|
||||
sqlite3_stmt * ppStmt = 0;
|
||||
std::stringstream query;
|
||||
|
||||
query << "SELECT id "
|
||||
<< "FROM Node "
|
||||
<< "ORDER BY id";
|
||||
if(!ignoreChildren)
|
||||
{
|
||||
query << "SELECT id "
|
||||
<< "FROM Node "
|
||||
<< "ORDER BY id";
|
||||
}
|
||||
else
|
||||
{
|
||||
query << "SELECT id "
|
||||
<< "FROM Node "
|
||||
<< "LEFT OUTER JOIN Link "
|
||||
<< "ON id = from_id "
|
||||
<< "WHERE type!=1 "
|
||||
<< "ORDER BY id";
|
||||
}
|
||||
|
||||
rc = sqlite3_prepare_v2(_ppDb, query.str().c_str(), -1, &ppStmt, 0);
|
||||
UASSERT_MSG(rc == SQLITE_OK, uFormat("DB error: %s", sqlite3_errmsg(_ppDb)).c_str());
|
||||
|
||||
@@ -87,7 +87,7 @@ private:
|
||||
Transform & localTransform) const;
|
||||
virtual void getNodeDataQuery(int signatureId, std::vector<unsigned char> & image) const;
|
||||
virtual void getPoseQuery(int signatureId, Transform & pose, int & mapId) const;
|
||||
virtual void getAllNodeIdsQuery(std::set<int> & ids) const;
|
||||
virtual void getAllNodeIdsQuery(std::set<int> & ids, bool ignoreChildren) const;
|
||||
virtual void getLastIdQuery(const std::string & tableName, int & id) const;
|
||||
virtual void getInvertedIndexNiQuery(int signatureId, int & ni) const;
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ bool Memory::init(const std::string & dbUrl, bool dbOverwritten, const Parameter
|
||||
{
|
||||
if(postInitEvents) UEventsManager::post(new RtabmapEventInit(std::string("Loading all nodes to WM...")));
|
||||
std::set<int> ids;
|
||||
_dbDriver->getAllNodeIds(ids);
|
||||
_dbDriver->getAllNodeIds(ids, true);
|
||||
_dbDriver->loadSignatures(std::list<int>(ids.begin(), ids.end()), dbSignatures);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user