RTAB-Map 0.24.5
Real-Time Appearance-Based Mapping
Loading...
Searching...
No Matches
Rtabmap.h
1/*
2Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, 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
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23ON 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
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*/
27
28#ifndef RTABMAP_H_
29#define RTABMAP_H_
30
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
32
33#include "rtabmap/core/Parameters.h"
34#include "rtabmap/core/SensorData.h"
35#include "rtabmap/core/Statistics.h"
36#include "rtabmap/core/Link.h"
37#include "rtabmap/core/ProgressState.h"
38#include "rtabmap/core/Graph.h"
39
40#include <opencv2/core/core.hpp>
41#include <list>
42#include <stack>
43#include <set>
44
45namespace rtabmap
46{
47
48class EpipolarGeometry;
49class Memory;
50class BayesFilter;
51class Signature;
52class Optimizer;
53
193class RTABMAP_CORE_EXPORT Rtabmap
194{
195public:
202
203public:
204 Rtabmap();
205 virtual ~Rtabmap();
206
224 const SensorData & data,
225 Transform odomPose,
226 const cv::Mat & odomCovariance = cv::Mat::eye(6,6,CV_64FC1),
227 const std::vector<float> & odomVelocity = std::vector<float>(),
228 const std::map<std::string, float> & externalStats = std::map<std::string, float>());
237 const SensorData & data,
238 Transform odomPose,
239 float odomLinearVariance,
240 float odomAngularVariance,
241 const std::vector<float> & odomVelocity = std::vector<float>(),
242 const std::map<std::string, float> & externalStats = std::map<std::string, float>());
254 const cv::Mat & image,
255 int id=0, const std::map<std::string, float> & externalStats = std::map<std::string, float>());
256
271 void init(const ParametersMap & parameters, const std::string & databasePath = "", bool loadDatabaseParameters = false);
282 void init(const std::string & configFile = "", const std::string & databasePath = "", bool loadDatabaseParameters = false);
283
294 void close(bool databaseSaved = true, const std::string & ouputDatabasePath = "");
295
297 const std::string & getWorkingDir() const {return _wDir;}
299 bool isRGBDMode() const { return _rgbdSlamMode; }
301 int getLoopClosureId() const {return _loopClosureHypothesis.first;}
303 float getLoopClosureValue() const {return _loopClosureHypothesis.second;}
305 int getHighestHypothesisId() const {return _highestHypothesis.first;}
307 float getHighestHypothesisValue() const {return _highestHypothesis.second;}
309 int getLastLocationId() const;
311 std::list<int> getWM() const;
313 std::set<int> getSTM() const;
315 int getWMSize() const;
317 int getSTMSize() const;
319 std::map<int, int> getWeights() const;
321 int getTotalMemSize() const;
323 double getLastProcessTime() const {return _lastProcessTime;};
325 bool isInSTM(int locationId) const;
327 bool isIDsGenerated() const;
329 const Statistics & getStatistics() const;
331 const std::map<int, Transform> & getLocalOptimizedPoses() const {return _optimizedPoses;}
333 const std::multimap<int, Link> & getLocalConstraints() const {return _constraints;}
337 Transform getPose(int locationId) const;
349 Transform getMapCorrection() const {return _mapCorrection;}
351 const Memory * getMemory() const {return _memory;}
353 float getGoalReachedRadius() const {return _goalReachedRadius;}
355 float getLocalRadius() const {return _localRadius;}
363 const Transform & getLastLocalizationPose() const {return _lastLocalizationPose;}
364
369 float getTimeThreshold() const {return _maxTimeAllowed;}
383 void setTimeThreshold(float maxTimeAllowed);
388 int getMemoryThreshold() const {return _maxMemoryAllowed;}
399 void setMemoryThreshold(int maxMemoryAllowed);
400
448 void setInitialPose(const Transform & initialPose);
465 bool labelLocation(int id, const std::string & label);
481 bool setUserData(int id, const cv::Mat & data);
488 void generateDOTGraph(const std::string & path, int id=0, int margin=5);
504 const std::string & path,
505 bool optimized,
506 bool global,
507 int format
508 );
517 void dumpPrediction() const;
519 void dumpData() const;
524 void parseParameters(const ParametersMap & parameters);
526 const ParametersMap & getParameters() const {return _parameters;}
535 void setWorkingDirectory(std::string path);
568 void setOptimizedPoses(const std::map<int, Transform> & poses, const std::multimap<int, Link> & constraints);
576 Signature getSignatureCopy(int id, bool images, bool scan, bool userData, bool occupancyGrid, bool withWords, bool withGlobalDescriptors) const;
581 RTABMAP_DEPRECATED
582 void get3DMap(std::map<int, Signature> & signatures,
583 std::map<int, Transform> & poses,
584 std::multimap<int, Link> & constraints,
585 bool optimized,
586 bool global) const;
603 void getGraph(std::map<int, Transform> & poses,
604 std::multimap<int, Link> & constraints,
605 bool optimized,
606 bool global,
607 std::map<int, Signature> * signatures = 0,
608 bool withImages = false,
609 bool withScan = false,
610 bool withUserData = false,
611 bool withGrid = false,
612 bool withWords = true,
613 bool withGlobalDescriptors = true) const;
624 std::map<int, Transform> getNodesInRadius(const Transform & pose, float radius, int k=0, std::map<int, float> * distsSqr=0);
635 std::map<int, Transform> getNodesInRadius(int nodeId, float radius, int k=0, std::map<int, float> * distsSqr=0);
664 float clusterRadiusMax = 0.5f,
665 float clusterAngle = M_PI/6.0f,
666 int iterations = 1,
667 bool intraSession = true,
668 bool interSession = true,
669 const ProgressState * state = 0,
670 float clusterRadiusMin = 0.0f,
671 int toFromMapId = -1);
685 int optimizerType = 1 /*g2o*/,
686 bool rematchFeatures = true,
687 int iterations = 0,
688 float pixelVariance = 0.0f);
698 const std::map<int, Transform> & mapPoses,
699 const cv::Mat & map,
700 float xMin,
701 float yMin,
702 float cellSize,
703 int cropRadius = 1,
704 bool filterScans = false);
729 bool addLink(const Link & link);
735 cv::Mat getInformation(const cv::Mat & covariance) const;
750 void addNodesToRepublish(const std::vector<int> & ids);
773 void setDummyDictionary(bool enabled = true);
774
776 int getPathStatus() const {return _pathStatus;}
781 void clearPath(int status);
794 bool computePath(int targetNode, bool global);
803 bool computePath(const Transform & targetPose, float tolerance = -1.0f);
805 const std::vector<std::pair<int, Transform> > & getPath() const {return _path;}
807 std::vector<std::pair<int, Transform> > getPathNextPoses() const;
809 std::vector<int> getPathNextNodes() const;
813 unsigned int getPathCurrentIndex() const {return _pathCurrentIndex;}
815 unsigned int getPathCurrentGoalIndex() const {return _pathGoalIndex;}
817 const Transform & getPathTransformToGoal() const {return _pathTransformToGoal;}
818
843 std::map<int, Transform> getForwardWMPoses(int fromId, int maxNearestNeighbors, float radius, int maxDiffID) const;
879 std::map<int, std::map<int, Transform> > getPaths(const std::map<int, Transform> & poses, const Transform & target, int maxGraphDepth = 0) const;
910 void adjustLikelihood(std::map<int, float> & likelihood) const;
911
912private:
913 void setInitialGuessFromPreviousMaps(
914 int fromId,
915 const std::map<int, Transform> & guessPoses,
916 const std::multimap<int, Link> & links,
917 std::map<int, Transform> & poses) const;
918 void updatePreviousMapsOptimizedPoses(const std::multimap<int, Link> * newLinks = 0);
919 void optimizeCurrentMap(int id,
920 bool lookInDatabase,
921 std::map<int, Transform> & optimizedPoses,
922 cv::Mat & covariance,
923 std::multimap<int, Link> * constraints = 0,
924 double * error = 0,
925 int * iterationsDone = 0) const;
926 std::map<int, Transform> optimizeGraph(
927 int fromId,
928 const std::set<int> & ids,
929 const std::map<int, Transform> & guessPoses,
930 bool lookInDatabase,
931 cv::Mat & covariance,
932 std::multimap<int, Link> * constraints = 0,
933 double * error = 0,
934 int * iterationsDone = 0) const;
935 Link findLoopClosureToRepair(
936 const graph::MaxGraphErrors & maxGraphErrors,
937 const std::map<int, Transform> & poses,
938 const std::multimap<int, Link> & constraints,
939 const std::set<std::pair<int, int> > & newLinks) const;
940 std::list<std::pair<int, int> > repairGraph(
941 const Link & linkToRemove,
942 graph::MaxGraphErrors & maxGraphErrors,
943 std::map<int, Transform> & poses,
944 std::multimap<int, Link> & constraints,
945 double & optimizationError,
946 int & optimizationIterations,
947 cv::Mat & optimizationCovariance,
948 const std::set<std::pair<int, int> > & newLinks);
949 bool hasLocalizationLinksInOdomCache() const;
950 bool isLandmarkNormalValid(const Signature * signature, int landmarkId, const Link & landmarkLink, bool localized, float * error = 0) const;
951 void updateGoalIndex();
952 bool computePath(int targetNode, std::map<int, Transform> nodes, const std::multimap<int, rtabmap::Link> & constraints);
953
954 void createGlobalScanMap();
955
956 void setupLogFiles(bool overwrite = false);
957 void flushStatisticLogs();
958
959private:
960 // Modifiable parameters
961 bool _publishStats;
962 bool _publishLastSignatureData;
963 bool _publishPdf;
964 bool _publishLikelihood;
965 bool _publishRAMUsage;
966 bool _computeRMSE;
967 bool _saveWMState;
968 float _maxTimeAllowed;
969 unsigned int _maxMemoryAllowed;
970 float _loopThr;
971 float _loopRatio;
972 float _aggressiveLoopThr;
973 int _virtualPlaceLikelihoodRatio;
974 float _maxLoopClosureDistance;
975 bool _verifyLoopClosureHypothesis;
976 unsigned int _maxRetrieved;
977 unsigned int _maxLocalRetrieved;
978 unsigned int _maxRepublished;
979 bool _rawDataKept;
980 bool _statisticLogsBufferedInRAM;
981 bool _statisticLogged;
982 bool _statisticLoggedHeaders;
983 bool _rgbdSlamMode;
984 float _rgbdLinearUpdate;
985 float _rgbdAngularUpdate;
986 float _rgbdLinearSpeedUpdate;
987 float _rgbdAngularSpeedUpdate;
988 float _newMapOdomChangeDistance;
989 bool _neighborLinkRefining;
990 bool _proximityByTime;
991 bool _proximityBySpace;
992 bool _scanMatchingIdsSavedInLinks;
993 bool _loopClosureIdentityGuess;
994 float _localRadius;
995 float _localImmunizationRatio;
996 int _proximityMaxGraphDepth;
997 int _proximityMaxPaths;
998 int _proximityMaxNeighbors;
999 float _proximityFilteringRadius;
1000 bool _proximityRawPosesUsed;
1001 float _proximityAngle;
1002 bool _proximityOdomGuess;
1003 double _proximityMergedScanCovFactor;
1004 std::string _databasePath;
1005 bool _optimizeFromGraphEnd;
1006 float _optimizationMaxError;
1007 float _optimizationMaxErrorRepairRadius;
1008 bool _startNewMapOnLoopClosure;
1009 bool _startNewMapOnGoodSignature;
1010 float _goalReachedRadius;
1011 bool _goalsSavedInUserData;
1012 int _pathStuckIterations;
1013 float _pathLinearVelocity;
1014 float _pathAngularVelocity;
1015 bool _forceOdom3doF;
1016 bool _restartAtOrigin;
1017 bool _loopCovLimited;
1018 bool _loopGPS;
1019 int _maxOdomCacheSize;
1020 float _landmarkMaxNormalError;
1021 bool _localizationSmoothing;
1022 double _localizationPriorInf;
1023 bool _localizationSecondTryWithoutProximityLinks;
1024 bool _createGlobalScanMap;
1025 float _markerPriorsLinearVariance;
1026 float _markerPriorsAngularVariance;
1027
1028 std::pair<int, float> _loopClosureHypothesis;
1029 std::pair<int, float> _highestHypothesis;
1030 double _lastProcessTime;
1031 bool _someNodesHaveBeenTransferred;
1032 float _distanceTravelled;
1033 float _distanceTravelledSinceLastLocalization;
1034 bool _optimizeFromGraphEndChanged;
1035
1036 // Abstract classes containing all loop closure
1037 // strategies for a type of signature or configuration.
1038 EpipolarGeometry * _epipolarGeometry;
1039 BayesFilter * _bayesFilter;
1040 Optimizer * _graphOptimizer;
1041 ParametersMap _parameters;
1042
1043 Memory * _memory;
1044
1045 FILE* _foutFloat;
1046 FILE* _foutInt;
1047 std::list<std::string> _bufferedLogsF;
1048 std::list<std::string> _bufferedLogsI;
1049
1050 Statistics statistics_;
1051
1052 std::string _wDir;
1053
1054 std::map<int, Transform> _optimizedPoses;
1055 std::multimap<int, Link> _constraints;
1056 std::list<std::map<int, Transform> > _previousMapsOptimizedPoses;
1057 Transform _mapCorrection;
1058 Transform _mapCorrectionBackup;
1059 Transform _lastLocalizationPose;
1060 int _lastLocalizationNodeId;
1061 bool _localizationApplied;
1062 cv::Mat _localizationCovariance;
1063 std::map<int, std::pair<cv::Point3d, Transform> > _gpsGeocentricCache;
1064 bool _currentSessionHasGPS;
1065 LaserScan _globalScanMap;
1066 std::map<int, Transform> _globalScanMapPoses;
1067 std::map<int, Transform> _odomCachePoses;
1068 std::multimap<int, Link> _odomCacheConstraints;
1069 std::map<int, Transform> _markerPriors;
1070 std::pair<int, int> _lastRejectedLoopClosureIds;
1071
1072 std::set<int> _nodesToRepublish;
1073
1074 // Planning stuff
1075 int _pathStatus;
1076 std::vector<std::pair<int,Transform> > _path;
1077 std::set<unsigned int> _pathUnreachableNodes;
1078 unsigned int _pathCurrentIndex;
1079 unsigned int _pathGoalIndex;
1080 Transform _pathTransformToGoal;
1081 int _pathStuckCount;
1082 float _pathStuckDistance;
1083
1084 bool _dummyDictionary;
1085};
1086
1087} // namespace rtabmap
1088#endif /* RTABMAP_H_ */
Recursive Bayesian filter for loop-closure hypothesis estimation in RTAB-Map.
Definition BayesFilter.h:82
Represents 2D or 3D laser scan data with support for multiple point data formats.
Definition LaserScan.h:46
Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
Definition Memory.h:102
Abstract base for pose-graph and bundle-adjustment optimizers.
Definition Optimizer.h:91
Top-level RTAB-Map SLAM pipeline (mapping, localization and loop closure).
Definition Rtabmap.h:194
bool setUserData(int id, const cv::Mat &data)
Attaches user data to signature id, compressing it on the fly if needed.
const Memory * getMemory() const
Definition Rtabmap.h:351
void addNodesToRepublish(const std::vector< int > &ids)
Marks node ids whose data should be re-emitted on the next process().
bool computePath(const Transform &targetPose, float tolerance=-1.0f)
Plans a path in the current optimized map toward a metric goal pose.
std::map< int, Transform > getNodesInRadius(const Transform &pose, float radius, int k=0, std::map< int, float > *distsSqr=0)
Returns optimized poses within a metric radius of pose.
int getWMSize() const
void setWorkingDirectory(std::string path)
Sets the working directory used for dumps, logs and temporary files.
void init(const std::string &configFile="", const std::string &databasePath="", bool loadDatabaseParameters=false)
Initializes Rtabmap from a configuration file and a database.
int getLoopClosureId() const
Definition Rtabmap.h:301
const Transform & getLastLocalizationPose() const
Definition Rtabmap.h:363
std::map< int, int > getWeights() const
bool process(const cv::Mat &image, int id=0, const std::map< std::string, float > &externalStats=std::map< std::string, float >())
Appearance-only convenience overload (loop-closure detection without odometry).
void dumpData() const
Dumps the Memory state (signatures, words, dictionary) to the working directory.
void generateDOTGraph(const std::string &path, int id=0, int margin=5)
Writes a Graphviz DOT file of the pose graph.
void getGraph(std::map< int, Transform > &poses, std::multimap< int, Link > &constraints, bool optimized, bool global, std::map< int, Signature > *signatures=0, bool withImages=false, bool withScan=false, bool withUserData=false, bool withGrid=false, bool withWords=true, bool withGlobalDescriptors=true) const
Extracts a full snapshot of the current pose graph.
std::vector< int > getPathNextNodes() const
int getSTMSize() const
int triggerNewMap()
Starts a new map session (next process() will create a fresh map id).
const std::multimap< int, Link > & getLocalConstraints() const
Definition Rtabmap.h:333
void setDummyDictionary(bool enabled=true)
Loads the visual word dictionary as ids only, without descriptors.
float getHighestHypothesisValue() const
Definition Rtabmap.h:307
void clearPath(int status)
Clears the current path and sets its terminal status.
bool isInSTM(int locationId) const
void parseParameters(const ParametersMap &parameters)
Re-parses parameters and propagates them to owned sub-objects (Memory, BayesFilter,...
const Statistics & getStatistics() const
void close(bool databaseSaved=true, const std::string &ouputDatabasePath="")
Closes Rtabmap and releases the underlying Memory.
bool isIDsGenerated() const
int getPathCurrentGoalId() const
const std::vector< std::pair< int, Transform > > & getPath() const
Definition Rtabmap.h:805
int detectMoreLoopClosures(float clusterRadiusMax=0.5f, float clusterAngle=M_PI/6.0f, int iterations=1, bool intraSession=true, bool interSession=true, const ProgressState *state=0, float clusterRadiusMin=0.0f, int toFromMapId=-1)
Post-processing: searches for additional loop closures over the existing graph.
float getGoalReachedRadius() const
Definition Rtabmap.h:353
const std::string & getWorkingDir() const
Definition Rtabmap.h:297
int refineLinks()
Re-runs registration on every link of the current graph and updates the ones that converge.
void setMemoryThreshold(int maxMemoryAllowed)
Sets the maximum number of signatures kept in WM (0 = unbounded).
bool isRGBDMode() const
Definition Rtabmap.h:299
float getLocalRadius() const
Definition Rtabmap.h:355
void init(const ParametersMap &parameters, const std::string &databasePath="", bool loadDatabaseParameters=false)
Initializes Rtabmap with parameters and a database.
Signature getSignatureCopy(int id, bool images, bool scan, bool userData, bool occupancyGrid, bool withWords, bool withGlobalDescriptors) const
Returns a copy of signature id with optional payloads attached.
unsigned int getPathCurrentGoalIndex() const
Definition Rtabmap.h:815
void setOptimizedPoses(const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints)
Replaces the current optimized poses and constraints with externally provided ones.
Transform getMapCorrection() const
Definition Rtabmap.h:349
std::set< int > getSTM() const
void setTimeThreshold(float maxTimeAllowed)
Sets the per-iteration time budget (ms).
std::map< int, Transform > getForwardWMPoses(int fromId, int maxNearestNeighbors, float radius, int maxDiffID) const
Returns optimized poses of WM nodes located in front of fromId.
int getMemoryThreshold() const
Definition Rtabmap.h:388
double getLastProcessTime() const
Definition Rtabmap.h:323
bool process(const SensorData &data, Transform odomPose, float odomLinearVariance, float odomAngularVariance, const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())
Convenience overload: builds a diagonal covariance from scalar variances.
int getLastLocationId() const
unsigned int getPathCurrentIndex() const
Definition Rtabmap.h:813
void setInitialPose(const Transform &initialPose)
Sets the localization prior pose used to seed the next process() call (localization mode only).
const ParametersMap & getParameters() const
Definition Rtabmap.h:526
std::map< int, Transform > getNodesInRadius(int nodeId, float radius, int k=0, std::map< int, float > *distsSqr=0)
Returns optimized poses within a metric radius of node nodeId.
void adjustLikelihood(std::map< int, float > &likelihood) const
Applies the standard RTAB-Map likelihood adjustment.
void rejectLastLoopClosure()
Removes the loop-closure link added at the last process() iteration.
bool globalBundleAdjustment(int optimizerType=1, bool rematchFeatures=true, int iterations=0, float pixelVariance=0.0f)
Runs a global bundle adjustment over the optimized graph.
int getHighestHypothesisId() const
Definition Rtabmap.h:305
int getTotalMemSize() const
bool computePath(int targetNode, bool global)
Plans a path from the current location to node targetNode.
Transform getPose(int locationId) const
int cleanupLocalGrids(const std::map< int, Transform > &mapPoses, const cv::Mat &map, float xMin, float yMin, float cellSize, int cropRadius=1, bool filterScans=false)
Filters spurious obstacles from every node's local grid using a reference 2D map.
void dumpPrediction() const
Dumps the Bayes-filter prediction matrix to a file in the working directory.
std::map< int, std::map< int, Transform > > getPaths(const std::map< int, Transform > &poses, const Transform &target, int maxGraphDepth=0) const
Segments a set of optimized poses into paths connected by neighbor links.
bool process(const SensorData &data, Transform odomPose, const cv::Mat &odomCovariance=cv::Mat::eye(6, 6, CV_64FC1), const std::vector< float > &odomVelocity=std::vector< float >(), const std::map< std::string, float > &externalStats=std::map< std::string, float >())
Main RTAB-Map iteration: ingests one sensor frame and updates the map.
float getLoopClosureValue() const
Definition Rtabmap.h:303
std::list< int > getWM() const
RTABMAP_DEPRECATED void get3DMap(std::map< int, Signature > &signatures, std::map< int, Transform > &poses, std::multimap< int, Link > &constraints, bool optimized, bool global) const
Deprecated: use getGraph() instead with withImages=true, withScan=true, withUserData=true and withGri...
const std::map< int, Transform > & getLocalOptimizedPoses() const
Definition Rtabmap.h:331
const Transform & getPathTransformToGoal() const
Definition Rtabmap.h:817
void deleteLastLocation()
Deletes the most recent (non-intermediate) location from the map.
cv::Mat getInformation(const cv::Mat &covariance) const
Converts an odometry covariance into an information matrix, clipping by Memory::getOdomMaxInf() when ...
bool addLink(const Link &link)
Adds an external link to the map.
void exportPoses(const std::string &path, bool optimized, bool global, int format)
Exports the current pose graph to a text file.
void resetMemory()
Clears all in-memory state and resets the database.
bool labelLocation(int id, const std::string &label)
Assigns or clears a label on signature id.
float getTimeThreshold() const
Definition Rtabmap.h:369
std::vector< std::pair< int, Transform > > getPathNextPoses() const
VhStrategy
Loop-closure verification strategy.
Definition Rtabmap.h:197
@ kVhEpipolar
Epipolar geometry verification (mostly historical, RGB-only mode).
Definition Rtabmap.h:199
@ kVhNone
No verification: the highest hypothesis above threshold is accepted.
Definition Rtabmap.h:198
int getPathStatus() const
Definition Rtabmap.h:776
Container class for all sensor data captured at a specific time.
Definition SensorData.h:97
Represents a node in RTAB-Map's pose graph.
Definition Signature.h:84
Collects and manages runtime statistics for RTAB-Map.
Definition Statistics.h:108
Represents a 3D rigid body transformation (rotation + translation).
Definition Transform.h:53
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44
Largest pose-graph constraint violations after optimization.
Definition Graph.h:232