tools/Info/main.cpp
Go to the documentation of this file.
1 /*
2 Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7  * Redistributions of source code must retain the above copyright
8  notice, this list of conditions and the following disclaimer.
9  * Redistributions in binary form must reproduce the above copyright
10  notice, this list of conditions and the following disclaimer in the
11  documentation and/or other materials provided with the distribution.
12  * Neither the name of the Universite de Sherbrooke nor the
13  names of its contributors may be used to endorse or promote products
14  derived from this software without specific prior written permission.
15 
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27 
28 #include <stdio.h>
29 #include <string.h>
30 #include <stdlib.h>
31 #include <signal.h>
32 
33 #include <rtabmap/core/DBDriver.h>
35 #include <rtabmap/core/Graph.h>
37 #include "rtabmap/utilite/UFile.h"
38 #include "rtabmap/utilite/UStl.h"
39 
40 using namespace rtabmap;
41 
42 #ifdef _WIN32
43 #include <Windows.h>
44 #define COLOR_NORMAL FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED
45 #define COLOR_RED FOREGROUND_RED | FOREGROUND_INTENSITY
46 #define COLOR_GREEN FOREGROUND_GREEN
47 #define COLOR_YELLOW FOREGROUND_GREEN | FOREGROUND_RED
48 #else
49 #define COLOR_NORMAL "\033[0m"
50 #define COLOR_RED "\033[31m"
51 #define COLOR_GREEN "\033[32m"
52 #define COLOR_YELLOW "\033[33m"
53 #endif
54 
55 void showUsage()
56 {
57  printf("\nUsage:\n"
58  "rtabmap-info [options] \"map.db\"\n"
59  " Options:\n"
60  " --diff Show only modified parameters.\n"
61  " --diff \"other_map.db\" Compare parameters with other database.\n"
62  " --dump \"config.ini\" Dump parameters in ini file.\n"
63  "\n");
64  exit(1);
65 }
66 
67 int main(int argc, char * argv[])
68 {
69  if(argc < 2)
70  {
71  showUsage();
72  }
73 
74  std::string otherDatabasePath;
75  std::string dumpFilePath;
76  bool diff = false;
77  for(int i=1; i<argc-1; ++i)
78  {
79  if(strcmp(argv[i], "--diff") == 0)
80  {
81  ++i;
82  if(i<argc-1 && argv[i][0] != '-')
83  {
84  otherDatabasePath = uReplaceChar(argv[i], '~', UDirectory::homeDir());
85  printf("Comparing with other database \"%s\"...\n", otherDatabasePath.c_str());
86  }
87  diff = true;
88  }
89  if(strcmp(argv[i], "--dump") == 0)
90  {
91  ++i;
92  if(i<argc-1)
93  {
94  dumpFilePath = uReplaceChar(argv[i], '~', UDirectory::homeDir());
95  }
96  else
97  {
98  printf("--dump should have an output file path\n");
99  showUsage();
100  }
101  }
102  }
103 
104  std::string databasePath = uReplaceChar(argv[argc-1], '~', UDirectory::homeDir());
105  if(!UFile::exists(databasePath))
106  {
107  printf("Database \"%s\" doesn't exist!\n", databasePath.c_str());
108  return -1;
109  }
110 
111  DBDriver * driver = DBDriver::create();
112  if(!driver->openConnection(databasePath))
113  {
114  printf("Cannot open database \"%s\".\n", databasePath.c_str());
115  delete driver;
116  return -1;
117  }
118 
119  ParametersMap parameters = driver->getLastParameters();
120  if(!dumpFilePath.empty())
121  {
122  Parameters::writeINI(dumpFilePath, parameters);
123  printf("%ld parameters exported to \"%s\".\n", parameters.size(), dumpFilePath.c_str());
124  return 0;
125  }
126  ParametersMap defaultParameters = Parameters::getDefaultParameters();
128  std::string otherDatabasePathName;
129  if(!otherDatabasePath.empty())
130  {
131  driver->closeConnection(false);
132 
133  if(!UFile::exists(otherDatabasePath))
134  {
135  printf("Database \"%s\" doesn't exist!\n", otherDatabasePath.c_str());
136  delete driver;
137  return -1;
138  }
139 
140  if(!driver->openConnection(otherDatabasePath))
141  {
142  printf("Cannot open database \"%s\".\n", otherDatabasePath.c_str());
143  delete driver;
144  return -1;
145  }
146  otherDatabasePathName = UFile::getName(otherDatabasePath);
147  defaultParameters = driver->getLastParameters();
148  removedParameters.clear();
149  }
150 
151 #ifdef _WIN32
152  HANDLE H = GetStdHandle(STD_OUTPUT_HANDLE);
153 #endif
154  int padding = 35;
155  std::cout << ("Parameters (Yellow=modified, Red=old parameter not used anymore, NA=not in database):\n");
156  for(ParametersMap::iterator iter=parameters.begin(); iter!=parameters.end(); ++iter)
157  {
158  ParametersMap::const_iterator jter = defaultParameters.find(iter->first);
159  std::string defaultValue;
160  bool defaultValueSet = false;
161  if(jter == defaultParameters.end())
162  {
163  jter = removedParameters.find(iter->first);
164  if(jter != removedParameters.end())
165  {
166  defaultValue = jter->second;
167  defaultValueSet = true;
168  }
169  }
170  else
171  {
172  defaultValue = jter->second;
173  defaultValueSet = true;
174  }
175 
176  if(defaultValueSet &&
177  iter->second.compare(defaultValue) != 0 &&
178  iter->first.compare(Parameters::kRtabmapWorkingDirectory()) != 0)
179  {
180  bool different = true;
181  if(Parameters::getType(iter->first).compare("double") ==0 ||
182  Parameters::getType(iter->first).compare("float") == 0)
183  {
184  if(uStr2Double(iter->second) == uStr2Double(defaultValue))
185  {
186  different = false;
187  }
188  }
189 
190  if(different)
191  {
192  //yellow
193 #ifdef _WIN32
194  SetConsoleTextAttribute(H,COLOR_YELLOW);
195 #else
196  printf("%s", COLOR_YELLOW);
197 #endif
198  std::cout << (uFormat("%s%s (%s=%s)\n", uPad(iter->first + "=", padding).c_str(), iter->second.c_str(), otherDatabasePath.empty()?"default":otherDatabasePathName.c_str(), defaultValue.c_str()));
199  }
200  else if(!diff)
201  {
202  //green
203 #ifdef _WIN32
204  SetConsoleTextAttribute(H,COLOR_NORMAL);
205 #else
206  printf("%s", COLOR_NORMAL);
207 #endif
208  std::cout << (uFormat("%s%s\n", uPad(iter->first + "=", padding).c_str(), iter->second.c_str()));
209  }
210  }
211  else if(!defaultValueSet)
212  {
213  //red
214 #ifdef _WIN32
215  SetConsoleTextAttribute(H,COLOR_RED);
216 #else
217  printf("%s", COLOR_RED);
218 #endif
219  std::cout << (uFormat("%s%s (%s=NA)\n", uPad(iter->first + "=", padding).c_str(), iter->second.c_str(), otherDatabasePath.empty()?"default":otherDatabasePathName.c_str()));
220  }
221  else if(!diff)
222  {
223  //green
224 #ifdef _WIN32
225  SetConsoleTextAttribute(H,COLOR_NORMAL);
226 #else
227  printf("%s", COLOR_NORMAL);
228 #endif
229  std::cout << (uFormat("%s%s\n", uPad(iter->first + "=", padding).c_str(), iter->second.c_str()));
230  }
231 #ifdef _WIN32
232  SetConsoleTextAttribute(H,COLOR_NORMAL);
233 #else
234  printf("%s", COLOR_NORMAL);
235 #endif
236  }
237 
238  for(ParametersMap::iterator iter=defaultParameters.begin(); iter!=defaultParameters.end(); ++iter)
239  {
240  ParametersMap::const_iterator jter = parameters.find(iter->first);
241  if(jter == parameters.end())
242  {
243  //red
244 #ifdef _WIN32
245  SetConsoleTextAttribute(H,COLOR_RED);
246 #else
247  printf("%s", COLOR_RED);
248 #endif
249  std::cout << (uFormat("%sNA (%s=\"%s\")\n", uPad(iter->first + "=", padding).c_str(), otherDatabasePath.empty()?"default":otherDatabasePathName.c_str(), iter->second.c_str()));
250 
251 #ifdef _WIN32
252  SetConsoleTextAttribute(H,COLOR_NORMAL);
253 #else
254  printf("%s", COLOR_NORMAL);
255 #endif
256  }
257  }
258 
259  if(otherDatabasePath.empty())
260  {
261  printf("\nInfo:\n\n");
262  std::string info;
263  std::set<int> ids;
264  driver->getAllNodeIds(ids);
265  Transform lastLocalization;
266  std::map<int, Transform> optimizedPoses = driver->loadOptimizedPoses(&lastLocalization);
267  cv::Vec3f min, max;
268  if(!optimizedPoses.empty())
269  {
270  graph::computeMinMax(optimizedPoses, min, max);
271  }
272  std::multimap<int, int> mapIdsLinkedToLastGraph;
273  int lastMapId=0;
274  double previousStamp = 0.0f;
275  Transform previousPose;
276  float infoTotalOdom = 0.0f;
277  double infoTotalTime = 0.0f;
278  int sessions = !ids.empty()?1:0;
279  int odomPoses = 0;
280  int gtPoses = 0;
281  int gpsValues = 0;
282  for(std::set<int>::iterator iter=ids.begin(); iter!=ids.end(); ++iter)
283  {
284  Transform p, g;
285  int w;
286  std::string l;
287  double s;
288  int mapId;
289  std::vector<float> v;
290  GPS gps;
291  EnvSensors sensors;
292  int id = *iter;
293  driver->getNodeInfo(id, p, mapId, w, l, s, g, v, gps, sensors);
294  if(!p.isNull())
295  {
296  ++odomPoses;
297  }
298  if(!g.isNull())
299  {
300  ++gtPoses;
301  }
302  if(gps.stamp()>0.0)
303  {
304  ++gpsValues;
305  }
306  if(optimizedPoses.find(id) != optimizedPoses.end())
307  {
308  mapIdsLinkedToLastGraph.insert(std::make_pair(mapId, id));
309  }
310  if(iter!=ids.begin())
311  {
312  if(lastMapId == mapId)
313  {
314  if(!p.isNull() && !previousPose.isNull())
315  {
316  infoTotalOdom += p.getDistance(previousPose);
317  }
318 
319  if(previousStamp > 0.0 && s > 0.0)
320  {
321  infoTotalTime += s-previousStamp;
322  }
323  }
324  else
325  {
326  ++sessions;
327  }
328  }
329  lastMapId = mapId;
330  previousStamp=s;
331  previousPose=p;
332  }
333  std::cout << (uFormat("%s%s\n", uPad("Path:").c_str(), driver->getUrl().c_str()));
334  std::cout << (uFormat("%s%s\n", uPad("Version:").c_str(), driver->getDatabaseVersion().c_str()));
335  std::cout << (uFormat("%s%d\n", uPad("Sessions:").c_str(), sessions));
336  std::multimap<int, Link> links;
337  driver->getAllLinks(links, true, true);
338  bool reducedGraph = false;
339  std::vector<int> linkTypes(Link::kEnd, 0);
340  std::vector<std::vector<float> > linkLengths(Link::kEnd);
341  std::multimap<int, Link> uniqueLinks = graph::filterDuplicateLinks(links);
342  for(std::multimap<int, Link>::iterator iter=uniqueLinks.begin(); iter!=uniqueLinks.end(); ++iter)
343  {
344  if(iter->second.type() == Link::kNeighborMerged)
345  {
346  reducedGraph = true;
347  }
348  if(iter->second.type()>=0 && iter->second.type()<Link::kEnd)
349  {
350  ++linkTypes[iter->second.type()];
351  linkLengths[iter->second.type()].push_back(iter->second.transform().getNorm());
352  }
353  }
354  if(reducedGraph)
355  {
356  std::cout << (uFormat("%s%f m (approx. as graph has been reduced)\n", uPad("Total odom:").c_str(), infoTotalOdom));
357  }
358  else
359  {
360  std::cout << (uFormat("%s%f m\n", uPad("Total odometry length:").c_str(), infoTotalOdom));
361  }
362 
363  std::stringstream sessionsInOptGraphStr;
364  std::list<int> mapsLinkedToLastGraph = uUniqueKeys(mapIdsLinkedToLastGraph);
365  for(std::list<int>::iterator iter=mapsLinkedToLastGraph.begin(); iter!=mapsLinkedToLastGraph.end(); ++iter)
366  {
367  if(iter!=mapsLinkedToLastGraph.begin())
368  {
369  sessionsInOptGraphStr << ", ";
370  }
371  sessionsInOptGraphStr << *iter << "(" << mapIdsLinkedToLastGraph.count(*iter) << ")";
372  }
373 
374  int lastWordIdId = 0;
375  int wordsDim = 0;
376  int wordsType = 0;
377  driver->getLastWordId(lastWordIdId);
378  if(lastWordIdId>0)
379  {
380  std::set<int> ids;
381  ids.insert(lastWordIdId);
382  std::list<VisualWord *> vws;
383  driver->loadWords(ids, vws);
384  if(!vws.empty())
385  {
386  wordsDim = vws.front()->getDescriptor().cols;
387  wordsType = vws.front()->getDescriptor().type();
388  delete vws.front();
389  vws.clear();
390  }
391  }
392 
393  std::cout << (uFormat("%s%fs\n", uPad("Total time:").c_str(), infoTotalTime));
394  std::cout << (uFormat("%s%d nodes and %d words (dim=%d type=%s)\n", uPad("LTM:").c_str(), (int)ids.size(), driver->getTotalDictionarySize(), wordsDim, wordsType==CV_8UC1?"8U":wordsType==CV_32FC1?"32F":uNumber2Str(wordsType).c_str()));
395  std::cout << (uFormat("%s%d nodes and %d words\n", uPad("WM:").c_str(), driver->getLastNodesSize(), driver->getLastDictionarySize()));
396  std::cout << (uFormat("%s%d poses and %d links\n", uPad("Global graph:").c_str(), odomPoses, links.size()));
397  std::cout << (uFormat("%s%d poses (x=%d->%d, y=%d->%d, z=%d->%d)\n", uPad("Optimized graph:").c_str(), (int)optimizedPoses.size(), links.size(), (int)min[0], (int)max[0], (int)min[1], (int)max[1], min[2], (int)max[2]));
398  std::cout << (uFormat("%s%d/%d [%s]\n", uPad("Maps in graph:").c_str(), (int)mapsLinkedToLastGraph.size(), sessions, sessionsInOptGraphStr.str().c_str()));
399  std::cout << (uFormat("%s%d poses\n", uPad("Ground truth:").c_str(), gtPoses));
400  std::cout << (uFormat("%s%d poses\n", uPad("GPS:").c_str(), gpsValues));
401  std::cout << (uFormat("Links:\n"));
402  for(size_t i=0; i<linkTypes.size(); ++i)
403  {
404  float avg = uMean(linkLengths[i]);
405  float std = uVariance(linkLengths[i], avg);
406  float max = uMax(linkLengths[i]);
407  if(std>0)
408  {
409  std = std::sqrt(std);
410  }
411  std::cout << (uFormat("%s%d\t(length avg: %.2fm, std: %.2fm, max: %.2fm)\n",
413  linkTypes[i],
414  avg,
415  std,
416  max));
417  }
418  std::cout << ("\n");
419  long total = 0;
420  long dbSize = UFile::length(driver->getUrl());
421  long mem = dbSize;
422  std::cout << (uFormat("%s%d %s\n", uPad("Database size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes"));
423  mem = driver->getNodesMemoryUsed();
424  total+=mem;
425  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Nodes size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
426  mem = driver->getLinksMemoryUsed();
427  total+=mem;
428  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Links size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
429  mem = driver->getImagesMemoryUsed();
430  total+=mem;
431  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("RGB Images size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
432  mem = driver->getDepthImagesMemoryUsed();
433  total+=mem;
434  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Depth Images size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
435  mem = driver->getCalibrationsMemoryUsed();
436  total+=mem;
437  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Calibrations size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
438  mem = driver->getGridsMemoryUsed();
439  total+=mem;
440  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Grids size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
441  mem = driver->getLaserScansMemoryUsed();
442  total+=mem;
443  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Scans size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
444  mem = driver->getUserDataMemoryUsed();
445  total+=mem;
446  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("User data size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
447  mem = driver->getWordsMemoryUsed();
448  total+=mem;
449  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Dictionary size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
450  mem = driver->getFeaturesMemoryUsed();
451  total+=mem;
452  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Features size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
453  mem = driver->getStatisticsMemoryUsed();
454  total+=mem;
455  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Statistics size:").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
456  mem = dbSize - total;
457  std::cout << (uFormat("%s%d %s\t(%.2f%%)\n", uPad("Other (indexing, unused):").c_str(), mem>1000000?mem/1000000:mem>1000?mem/1000:mem, mem>1000000?"MB":mem>1000?"KB":"Bytes", dbSize>0?double(mem)/double(dbSize)*100.0:0.0));
458  std::cout << ("\n");
459  }
460 
461  return 0;
462 }
w
RowVector3d w
glm::min
GLM_FUNC_DECL genType min(genType const &x, genType const &y)
rtabmap::DBDriver::loadWords
void loadWords(const std::set< int > &wordIds, std::list< VisualWord * > &vws)
Definition: DBDriver.cpp:616
H
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set set xzeroaxis lt lw set x2zeroaxis lt lw set yzeroaxis lt lw set y2zeroaxis lt lw set tics in set ticslevel set tics set mxtics default set mytics default set mx2tics default set my2tics default set xtics border mirror norotate autofreq set ytics border mirror norotate autofreq set ztics border nomirror norotate autofreq set nox2tics set noy2tics set timestamp bottom norotate set rrange[ *:*] noreverse nowriteback set trange[ *:*] noreverse nowriteback set urange[ *:*] noreverse nowriteback set vrange[ *:*] noreverse nowriteback set xlabel matrix size set x2label set timefmt d m y n H
rtabmap::DBDriver::loadOptimizedPoses
std::map< int, Transform > loadOptimizedPoses(Transform *lastlocalizationPose=0) const
Definition: DBDriver.cpp:1197
rtabmap::DBDriver::getNodesMemoryUsed
long getNodesMemoryUsed() const
Definition: DBDriver.cpp:119
UFile::getName
std::string getName()
Definition: UFile.h:135
rtabmap::DBDriver::getLastParameters
ParametersMap getLastParameters() const
Definition: DBDriver.cpp:239
uMean
T uMean(const T *v, unsigned int size)
Definition: UMath.h:399
uPad
std::string uPad(const std::string &title, int padding=20)
Definition: UStl.h:812
s
RealScalar s
COLOR_NORMAL
#define COLOR_NORMAL
Definition: tools/Info/main.cpp:49
rtabmap::DBDriver::getImagesMemoryUsed
long getImagesMemoryUsed() const
Definition: DBDriver.cpp:135
rtabmap::DBDriver::openConnection
bool openConnection(const std::string &url, bool overwritten=false)
Definition: DBDriver.cpp:86
rtabmap::DBDriver::getLastNodesSize
int getLastNodesSize() const
Definition: DBDriver.cpp:207
UFile::length
long length()
Definition: UFile.h:110
UDirectory.h
uUniqueKeys
std::list< K > uUniqueKeys(const std::multimap< K, V > &mm)
Definition: UStl.h:46
rtabmap::GPS
Definition: GPS.h:35
uStr2Double
double UTILITE_EXPORT uStr2Double(const std::string &str)
Definition: UConversion.cpp:147
uVariance
T uVariance(const T *v, unsigned int size, T meanV)
Definition: UMath.h:489
rtabmap::ParametersMap
std::map< std::string, std::string > ParametersMap
Definition: Parameters.h:43
rtabmap::Transform::isNull
bool isNull() const
Definition: Transform.cpp:107
rtabmap::DBDriver::getUserDataMemoryUsed
long getUserDataMemoryUsed() const
Definition: DBDriver.cpp:175
rtabmap::DBDriver::getDepthImagesMemoryUsed
long getDepthImagesMemoryUsed() const
Definition: DBDriver.cpp:143
VisualWord.h
UDirectory::homeDir
static std::string homeDir()
Definition: UDirectory.cpp:355
rtabmap::DBDriver::getLastDictionarySize
int getLastDictionarySize() const
Definition: DBDriver.cpp:215
rtabmap::Parameters::getDefaultParameters
static const ParametersMap & getDefaultParameters()
Definition: Parameters.h:896
rtabmap::DBDriver::getStatisticsMemoryUsed
long getStatisticsMemoryUsed() const
Definition: DBDriver.cpp:199
g
float g
uNumber2Str
std::string UTILITE_EXPORT uNumber2Str(unsigned int number)
Definition: UConversion.cpp:91
glm::sqrt
GLM_FUNC_DECL vecType< T, P > sqrt(vecType< T, P > const &x)
rtabmap::DBDriver::getLastWordId
void getLastWordId(int &id) const
Definition: DBDriver.cpp:1003
rtabmap::DBDriver::getUrl
const std::string & getUrl() const
Definition: DBDriver.h:72
glm::max
GLM_FUNC_DECL genType max(genType const &x, genType const &y)
rtabmap::graph::filterDuplicateLinks
std::multimap< int, Link > RTABMAP_CORE_EXPORT filterDuplicateLinks(const std::multimap< int, Link > &links)
Definition: Graph.cpp:1238
rtabmap::DBDriver::getNodeInfo
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
Definition: DBDriver.cpp:786
info
else if n * info
rtabmap_netvlad.argv
argv
Definition: rtabmap_netvlad.py:15
COLOR_YELLOW
#define COLOR_YELLOW
Definition: tools/Info/main.cpp:52
rtabmap::DBDriver::getDatabaseVersion
std::string getDatabaseVersion() const
Definition: DBDriver.cpp:275
p
Point3_ p(2)
rtabmap::GPS::stamp
const double & stamp() const
Definition: GPS.h:59
rtabmap::DBDriver::getWordsMemoryUsed
long getWordsMemoryUsed() const
Definition: DBDriver.cpp:183
DBDriver.h
main
int main(int argc, char *argv[])
Definition: tools/Info/main.cpp:67
rtabmap::Parameters::getBackwardCompatibilityMap
static const ParametersMap & getBackwardCompatibilityMap()
Definition: Parameters.cpp:450
rtabmap::DBDriver::getCalibrationsMemoryUsed
long getCalibrationsMemoryUsed() const
Definition: DBDriver.cpp:151
rtabmap::graph::computeMinMax
void RTABMAP_CORE_EXPORT computeMinMax(const std::map< int, Transform > &poses, cv::Vec3f &min, cv::Vec3f &max)
Definition: Graph.cpp:2427
rtabmap::DBDriver
Definition: DBDriver.h:62
rtabmap::DBDriver::getLinksMemoryUsed
long getLinksMemoryUsed() const
Definition: DBDriver.cpp:127
uFormat
std::string UTILITE_EXPORT uFormat(const char *fmt,...)
Definition: UConversion.cpp:365
uReplaceChar
std::string UTILITE_EXPORT uReplaceChar(const std::string &str, char before, char after)
Definition: UConversion.cpp:33
rtabmap::Transform
Definition: Transform.h:41
showUsage
void showUsage()
Definition: tools/Info/main.cpp:55
rtabmap::EnvSensors
std::map< EnvSensor::Type, EnvSensor > EnvSensors
Definition: EnvSensor.h:81
Graph.h
iter
iterator iter(handle obj)
std
c_str
const char * c_str(Args &&...args)
UStl.h
Wrappers of STL for convenient functions.
rtabmap::DBDriver::getFeaturesMemoryUsed
long getFeaturesMemoryUsed() const
Definition: DBDriver.cpp:191
diff
diff
v
Array< int, Dynamic, 1 > v
rtabmap::Parameters::getType
static std::string getType(const std::string &paramKey)
Definition: Parameters.cpp:470
sessions
sessions
rtabmap::DBDriver::getLaserScansMemoryUsed
long getLaserScansMemoryUsed() const
Definition: DBDriver.cpp:167
rtabmap::DBDriver::getAllNodeIds
void getAllNodeIds(std::set< int > &ids, bool ignoreChildren=false, bool ignoreBadSignatures=false, bool ignoreIntermediateNodes=false) const
Definition: DBDriver.cpp:886
uMax
T uMax(const T *v, unsigned int size, unsigned int &index)
Definition: UMath.h:92
rtabmap::DBDriver::getTotalDictionarySize
int getTotalDictionarySize() const
Definition: DBDriver.cpp:231
UFile.h
rtabmap
Definition: CameraARCore.cpp:35
rtabmap::DBDriver::getGridsMemoryUsed
long getGridsMemoryUsed() const
Definition: DBDriver.cpp:159
UFile::exists
bool exists()
Definition: UFile.h:104
i
int i
rtabmap::Parameters::writeINI
static void writeINI(const std::string &configFile, const ParametersMap &parameters)
Definition: Parameters.cpp:1287
rtabmap::DBDriver::getAllLinks
void getAllLinks(std::multimap< int, Link > &links, bool ignoreNullLinks=true, bool withLandmarks=false) const
Definition: DBDriver.cpp:925
rtabmap::DBDriver::closeConnection
void closeConnection(bool save=true, const std::string &outputUrl="")
Definition: DBDriver.cpp:64
COLOR_RED
#define COLOR_RED
Definition: tools/Info/main.cpp:50
rtabmap::DBDriver::create
static DBDriver * create(const ParametersMap &parameters=ParametersMap())
Definition: DBDriver.cpp:41


rtabmap
Author(s): Mathieu Labbe
autogenerated on Thu Jul 25 2024 02:50:12