85 virtual bool isInMemory()
const {
return getUrl().empty() || _dbInMemory;}
170 void loadSignatures(
const std::list<int> & ids, std::list<Signature *> & signatures, std::set<int> * loadedFromTrash = 0,
bool loadWordIdsOnly =
false) =
delete;
171 void loadWords(
const std::set<int> & wordIds, std::list<VisualWord *> & vws) =
delete;
172 void loadNodeData(
Signature & signature,
bool images =
true,
bool scan =
true,
bool userData =
true,
bool occupancyGrid =
true)
const =
delete;
173 void loadNodeData(std::list<Signature *> & signatures,
bool images =
true,
bool scan =
true,
bool userData =
true,
bool occupancyGrid =
true)
const =
delete;
174 void getNodeData(
int signatureId,
SensorData & data,
bool images =
true,
bool scan =
true,
bool userData =
true,
bool occupancyGrid =
true)
const =
delete;
175 bool getCalibration(
int signatureId, std::vector<CameraModel> & models, std::vector<StereoCameraModel> & stereoModels)
const =
delete;
176 bool getLaserScanInfo(
int signatureId,
LaserScan & info)
const =
delete;
177 bool getNodeInfo(
int signatureId,
Transform & pose,
int & mapId,
int & weight, std::string & label,
double & stamp,
Transform & groundTruthPose, std::vector<float> & velocity,
GPS & gps,
EnvSensors & sensors)
const =
delete;
178 void getLocalFeatures(
int signatureId, std::multimap<int, int> & words, std::vector<cv::KeyPoint> & keypoints, std::vector<cv::Point3f> & points, cv::Mat & descriptors)
const =
delete;
179 void loadLinks(
int signatureId, std::multimap<int, Link> & links,
Link::Type type = Link::kUndef)
const =
delete;
180 void getWeight(
int signatureId,
int & weight)
const =
delete;
181 void getAllNodeIds(std::set<int> & ids,
bool ignoreChildren =
false,
bool ignoreBadSignatures =
false,
bool ignoreIntermediateNodes =
false)
const =
delete;
182 void getAllOdomPoses(std::map<int, Transform> & poses,
bool ignoreChildren =
false,
bool ignoreIntermediateNodes =
false)
const =
delete;
183 void getAllLinks(std::multimap<int, Link> & links,
bool ignoreNullLinks =
true,
bool withLandmarks =
false)
const =
delete;
184 void getLastNodeId(
int &
id)
const =
delete;
185 void getLastMapId(
int & mapId)
const =
delete;
186 void getLastWordId(
int &
id)
const =
delete;
187 void getInvertedIndexNi(
int signatureId,
int & ni)
const =
delete;
188 void getNodesObservingLandmark(
int landmarkId, std::map<int, Link> & nodes)
const =
delete;
189 void getNodeIdByLabel(
const std::string & label,
int &
id)
const =
delete;
190 void getAllLabels(std::map<int, std::string> & labels)
const =
delete;
193 virtual bool connectDatabaseQuery(
const std::string & url,
bool overwritten =
false,
bool readOnly =
false);
194 virtual void disconnectDatabaseQuery(
bool save =
true,
const std::string & outputUrl =
"");
195 virtual bool isConnectedQuery()
const;
196 virtual unsigned long getMemoryUsedQuery()
const;
197 virtual bool getDatabaseVersionQuery(std::string & version)
const;
198 virtual long getNodesMemoryUsedQuery()
const;
199 virtual long getLinksMemoryUsedQuery()
const;
200 virtual long getImagesMemoryUsedQuery()
const;
201 virtual long getDepthImagesMemoryUsedQuery()
const;
202 virtual long getCalibrationsMemoryUsedQuery()
const;
203 virtual long getGridsMemoryUsedQuery()
const;
204 virtual long getLaserScansMemoryUsedQuery()
const;
205 virtual long getUserDataMemoryUsedQuery()
const;
206 virtual long getWordsMemoryUsedQuery()
const;
207 virtual long getFeaturesMemoryUsedQuery()
const;
208 virtual long getStatisticsMemoryUsedQuery()
const;
209 virtual int getLastNodesSizeQuery()
const;
210 virtual int getLastDictionarySizeQuery()
const;
211 virtual int getTotalNodesSizeQuery()
const;
212 virtual int getTotalDictionarySizeQuery()
const;
214 virtual std::map<std::string, float> getStatisticsQuery(
int nodeId,
double & stamp, std::vector<int> * wmState)
const;
215 virtual std::map<int, std::pair<std::map<std::string, float>,
double> > getAllStatisticsQuery()
const;
216 virtual std::map<int, std::vector<int> > getAllStatisticsWmStatesQuery()
const;
218 virtual void executeNoResultQuery(
const std::string & sql)
const;
220 virtual void getWeightQuery(
int signatureId,
int & weight)
const;
222 virtual void saveQuery(
const std::list<Signature *> & signatures);
223 virtual void saveQuery(
const std::list<VisualWord *> & words)
const;
224 virtual void updateQuery(
const std::list<Signature *> & signatures,
bool updateTimestamp)
const;
225 virtual void updateQuery(
const std::list<VisualWord *> & words,
bool updateTimestamp)
const;
227 virtual void addLinkQuery(
const Link & link)
const;
228 virtual void updateLinkQuery(
const Link & link)
const;
230 virtual void updateOccupancyGridQuery(
232 const cv::Mat & ground,
233 const cv::Mat & obstacles,
234 const cv::Mat & empty,
236 const cv::Point3f & viewpoint)
const;
238 virtual void updateCalibrationQuery(
240 const std::vector<CameraModel> & models,
241 const std::vector<StereoCameraModel> & stereoModels)
const;
243 virtual void updateDepthImageQuery(
245 const cv::Mat & image,
246 const std::string & format)
const;
248 void updateLaserScanQuery(
252 virtual void addStatisticsQuery(
const Statistics & statistics,
bool saveWmState)
const;
253 virtual void savePreviewImageQuery(
const cv::Mat & image)
const;
254 virtual cv::Mat loadPreviewImageQuery()
const;
255 virtual void saveOptimizedPosesQuery(
const std::map<int, Transform> & optimizedPoses,
const Transform & lastlocalizationPose)
const;
256 virtual std::map<int, Transform> loadOptimizedPosesQuery(
Transform * lastlocalizationPose = 0)
const;
257 virtual void save2DMapQuery(
const cv::Mat & map,
float xMin,
float yMin,
float cellSize)
const;
258 virtual cv::Mat load2DMapQuery(
float & xMin,
float & yMin,
float & cellSize)
const;
259 virtual void saveOptimizedMeshQuery(
260 const cv::Mat & cloud,
261 const std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > & polygons,
262#
if PCL_VERSION_COMPARE(>=, 1, 8, 0)
263 const std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > & texCoords,
265 const std::vector<std::vector<Eigen::Vector2f> > & texCoords,
267 const cv::Mat & textures)
const;
268 virtual cv::Mat loadOptimizedMeshQuery(
269 std::vector<std::vector<std::vector<RTABMAP_PCL_INDEX> > > * polygons,
270#
if PCL_VERSION_COMPARE(>=, 1, 8, 0)
271 std::vector<std::vector<Eigen::Vector2f, Eigen::aligned_allocator<Eigen::Vector2f> > > * texCoords,
273 std::vector<std::vector<Eigen::Vector2f> > * texCoords,
275 cv::Mat * textures)
const;
277 virtual void saveFlannIndexQuery(
const std::vector<unsigned char> & indexData)
const;
280 virtual void loadQuery(
VWDictionary & dictionary,
bool lastStateOnly =
true,
bool idsOnly =
false)
const;
281 virtual void loadLastNodesQuery(std::list<Signature *> & signatures,
bool loadWordIdsOnly)
const;
282 virtual void loadSignaturesQuery(
const std::list<int> & ids, std::list<Signature *> & signatures,
bool loadWordIdsOnly)
const;
283 virtual void loadWordsQuery(
const std::set<int> & wordIds, std::list<VisualWord *> & vws)
const;
284 virtual void loadLinksQuery(
int signatureId, std::multimap<int, Link> & links,
Link::Type type = Link::kUndef)
const;
286 virtual void loadNodeDataQuery(std::list<Signature *> & signatures,
bool images=
true,
bool scan=
true,
bool userData=
true,
bool occupancyGrid=
true)
const;
287 virtual bool getCalibrationQuery(
int signatureId, std::vector<CameraModel> & models, std::vector<StereoCameraModel> & stereoModels)
const;
288 virtual bool getLaserScanInfoQuery(
int signatureId,
LaserScan & info)
const;
289 virtual bool getNodeInfoQuery(
int signatureId,
Transform & pose,
int & mapId,
int & weight, std::string & label,
double & stamp,
Transform & groundTruthPose, std::vector<float> & velocity,
GPS & gps,
EnvSensors & sensors)
const;
290 virtual void getLocalFeaturesQuery(
int signatureId, std::multimap<int, int> & words, std::vector<cv::KeyPoint> & keypoints, std::vector<cv::Point3f> & points, cv::Mat & descriptors)
const;
291 virtual void getLastNodeIdsQuery(std::set<int> & ids)
const;
292 virtual void getAllNodeIdsQuery(std::set<int> & ids,
bool ignoreChildren,
bool ignoreBadSignatures,
bool ignoreIntermediateNodes)
const;
293 virtual void getAllOdomPosesQuery(std::map<int, Transform> & poses,
bool ignoreChildren,
bool ignoreIntermediateNodes)
const;
294 virtual void getAllLinksQuery(std::multimap<int, Link> & links,
bool ignoreNullLinks,
bool withLandmarks)
const;
295 virtual void getLastIdQuery(
const std::string & tableName,
int &
id,
const std::string & fieldName=
"id")
const;
296 virtual void getInvertedIndexNiQuery(
int signatureId,
int & ni)
const;
297 virtual void getNodesObservingLandmarkQuery(
int landmarkId, std::map<int, Link> & nodes)
const;
298 virtual void getNodeIdByLabelQuery(
const std::string & label,
int &
id)
const;
299 virtual void getAllLabelsQuery(std::map<int, std::string> & labels)
const;
302 std::string queryStepNode()
const;
303 std::string queryStepImage()
const;
304 std::string queryStepDepth()
const;
305 std::string queryStepCalibrationUpdate()
const;
306 std::string queryStepDepthUpdate()
const;
307 std::string queryStepScanUpdate()
const;
308 std::string queryStepSensorData()
const;
309 std::string queryStepLinkUpdate()
const;
310 std::string queryStepLink()
const;
311 std::string queryStepWordsChanged()
const;
312 std::string queryStepKeypoint()
const;
313 std::string queryStepGlobalDescriptor()
const;
314 std::string queryStepOccupancyGridUpdate()
const;
315 void stepNode(sqlite3_stmt * ppStmt,
const Signature * s)
const;
316 void stepImage(sqlite3_stmt * ppStmt,
int id,
const cv::Mat & imageBytes)
const;
317 void stepDepth(sqlite3_stmt * ppStmt,
const SensorData & sensorData)
const;
318 void stepCalibrationUpdate(sqlite3_stmt * ppStmt,
int nodeId,
const std::vector<CameraModel> & models,
const std::vector<StereoCameraModel> & stereoModels)
const;
319 void stepDepthUpdate(sqlite3_stmt * ppStmt,
int nodeId,
const cv::Mat & image,
const std::string & format)
const;
320 void stepScanUpdate(sqlite3_stmt * ppStmt,
int nodeId,
const LaserScan & image)
const;
321 void stepSensorData(sqlite3_stmt * ppStmt,
const SensorData & sensorData)
const;
322 void stepLink(sqlite3_stmt * ppStmt,
const Link & link)
const;
323 void stepWordsChanged(sqlite3_stmt * ppStmt,
int signatureId,
int oldWordId,
int newWordId)
const;
324 void stepKeypoint(sqlite3_stmt * ppStmt,
int nodeID,
int wordId,
const cv::KeyPoint & kp,
const cv::Point3f & pt,
const cv::Mat & descriptor)
const;
325 void stepGlobalDescriptor(sqlite3_stmt * ppStmt,
int nodeId,
const GlobalDescriptor & descriptor)
const;
326 void stepOccupancyGridUpdate(sqlite3_stmt * ppStmt,
328 const cv::Mat & ground,
329 const cv::Mat & obstacles,
330 const cv::Mat & empty,
332 const cv::Point3f & viewpoint)
const;
335 void loadWordsQuery(std::list<Signature *> & signatures)
const;
336 void loadWordIdsQuery(std::list<Signature *> & signatures)
const;
337 void loadLinksQuery(std::list<Signature *> & signatures)
const;
338 int loadOrSaveDb(sqlite3 *pInMemory,
const std::string & fileName,
int isSave)
const;
345 unsigned long _memoryUsedEstimate;
347 unsigned int _cacheSize;