31#include "rtabmap/core/rtabmap_core_export.h"
35#include <rtabmap/core/Parameters.h>
36#include <rtabmap/core/Link.h>
37#include <rtabmap/core/GPS.h>
38#include <rtabmap/core/CameraModel.h>
80bool RTABMAP_CORE_EXPORT exportPoses(
81 const std::string & filePath,
83 const std::map<int, Transform> & poses,
84 const std::multimap<int, Link> & constraints = std::multimap<int, Link>(),
85 const std::map<int, double> & stamps = std::map<int, double>(),
86 const ParametersMap & parameters = ParametersMap());
110bool RTABMAP_CORE_EXPORT importPoses(
111 const std::string & filePath,
113 std::map<int, Transform> & poses,
114 std::multimap<int, Link> * constraints = 0,
115 std::map<int, double> * stamps = 0);
123bool RTABMAP_CORE_EXPORT exportGPS(
124 const std::string & filePath,
125 const std::map<int, GPS> & gpsValues,
126 unsigned int rgba = 0xFFFFFFFF);
144void RTABMAP_CORE_EXPORT calcKittiSequenceErrors(
145 const std::vector<Transform> &poses_gt,
146 const std::vector<Transform> &poses_result,
167void RTABMAP_CORE_EXPORT calcRelativeErrors (
168 const std::vector<Transform> &poses_gt,
169 const std::vector<Transform> &poses_result,
208Transform RTABMAP_CORE_EXPORT calcRMSE(
209 const std::map<int, Transform> &groundTruth,
210 const std::map<int, Transform> &poses,
211 float & translational_rmse,
212 float & translational_mean,
213 float & translational_median,
214 float & translational_std,
215 float & translational_min,
216 float & translational_max,
217 float & rotational_rmse,
218 float & rotational_mean,
219 float & rotational_median,
220 float & rotational_std,
221 float & rotational_min,
222 float & rotational_max,
223 bool align2D =
false);
266 const std::map<int, Transform> & poses,
267 const std::multimap<int, Link> & links,
268 bool for3DoF =
false);
280std::vector<double> RTABMAP_CORE_EXPORT getMaxOdomInf(
const std::multimap<int, Link> & links);
296std::multimap<int, Link>::iterator RTABMAP_CORE_EXPORT findLink(
297 std::multimap<int, Link> & links,
300 bool checkBothWays =
true,
303std::multimap<int, std::pair<int, Link::Type> >::iterator RTABMAP_CORE_EXPORT findLink(
304 std::multimap<
int, std::pair<int, Link::Type> > & links,
307 bool checkBothWays =
true,
310std::multimap<int, int>::iterator RTABMAP_CORE_EXPORT findLink(
311 std::multimap<int, int> & links,
314 bool checkBothWays =
true);
316std::multimap<int, Link>::const_iterator RTABMAP_CORE_EXPORT findLink(
317 const std::multimap<int, Link> & links,
320 bool checkBothWays =
true,
323std::multimap<int, std::pair<int, Link::Type> >::const_iterator RTABMAP_CORE_EXPORT findLink(
324 const std::multimap<
int, std::pair<int, Link::Type> > & links,
327 bool checkBothWays =
true,
330std::multimap<int, int>::const_iterator RTABMAP_CORE_EXPORT findLink(
331 const std::multimap<int, int> & links,
334 bool checkBothWays =
true);
347std::list<Link> RTABMAP_CORE_EXPORT findLinks(
348 const std::multimap<int, Link> & links,
360std::multimap<int, Link> RTABMAP_CORE_EXPORT filterDuplicateLinks(
361 const std::multimap<int, Link> & links);
375std::multimap<int, Link> RTABMAP_CORE_EXPORT filterLinks(
376 const std::multimap<int, Link> & links,
378 bool inverted =
false);
380std::map<int, Link> RTABMAP_CORE_EXPORT filterLinks(
381 const std::map<int, Link> & links,
383 bool inverted =
false);
400std::map<int, Transform> RTABMAP_CORE_EXPORT frustumPosesFiltering(
401 const std::map<int, Transform> & poses,
403 float horizontalFOV = 45.0f,
404 float verticalFOV = 45.0f,
405 float nearClipPlaneDistance = 0.1f,
406 float farClipPlaneDistance = 100.0f,
407 bool negative =
false);
423std::map<int, Transform> RTABMAP_CORE_EXPORT radiusPosesFiltering(
424 const std::map<int, Transform> & poses,
427 bool keepLatest =
true);
440std::multimap<int, int> RTABMAP_CORE_EXPORT radiusPosesClustering(
441 const std::map<int, Transform> & poses,
462 const std::map<int, Transform> & poses,
463 const std::multimap<int, Link> & links,
464 std::multimap<int, int> & hyperNodes,
465 std::multimap<int, Link> & hyperLinks);
480std::list<std::pair<int, Transform> > RTABMAP_CORE_EXPORT computePath(
481 const std::map<int, rtabmap::Transform> & poses,
482 const std::multimap<int, int> & links,
485 bool updateNewCosts =
false);
500std::list<int> RTABMAP_CORE_EXPORT computePath(
501 const std::multimap<int, Link> & links,
504 bool updateNewCosts =
false,
505 bool useSameCostForAllLinks =
false);
539std::list<std::pair<int, Transform> > RTABMAP_CORE_EXPORT computePath(
543 bool lookInDatabase =
true,
544 bool updateNewCosts =
false,
545 float linearVelocity = 0.0f,
546 float angularVelocity = 0.0f,
547 bool ignoreDirectLinks =
false);
559int RTABMAP_CORE_EXPORT findNearestNode(
560 const std::map<int, rtabmap::Transform> & poses,
562 float * distance = 0);
578std::map<int, float> RTABMAP_CORE_EXPORT findNearestNodes(
580 const std::map<int, Transform> & poses,
593std::map<int, float> RTABMAP_CORE_EXPORT findNearestNodes(
595 const std::map<int, Transform> & poses,
603std::map<int, Transform> RTABMAP_CORE_EXPORT findNearestPoses(
605 const std::map<int, Transform> & poses,
610std::map<int, Transform> RTABMAP_CORE_EXPORT findNearestPoses(
612 const std::map<int, Transform> & poses,
618RTABMAP_DEPRECATED std::map<int, float> RTABMAP_CORE_EXPORT findNearestNodes(
const std::map<int, rtabmap::Transform> & nodes,
const rtabmap::Transform & targetPose,
int k);
620RTABMAP_DEPRECATED std::map<int, float> RTABMAP_CORE_EXPORT getNodesInRadius(
int nodeId,
const std::map<int, Transform> & nodes,
float radius);
622RTABMAP_DEPRECATED std::map<int, float> RTABMAP_CORE_EXPORT getNodesInRadius(
const Transform & targetPose,
const std::map<int, Transform> & nodes,
float radius);
624RTABMAP_DEPRECATED std::map<int, Transform> RTABMAP_CORE_EXPORT getPosesInRadius(
int nodeId,
const std::map<int, Transform> & nodes,
float radius,
float angle = 0.0f);
626RTABMAP_DEPRECATED std::map<int, Transform> RTABMAP_CORE_EXPORT getPosesInRadius(
const Transform & targetPose,
const std::map<int, Transform> & nodes,
float radius,
float angle = 0.0f);
636float RTABMAP_CORE_EXPORT computePathLength(
637 const std::vector<std::pair<int, Transform> > & path);
648float RTABMAP_CORE_EXPORT computePathLength(
649 const std::map<int, Transform> & path);
663std::list<std::map<int, Transform> > RTABMAP_CORE_EXPORT getPaths(
664 std::map<int, Transform> poses,
665 const std::multimap<int, Link> & links);
674void RTABMAP_CORE_EXPORT computeMinMax(
const std::map<int, Transform> & poses,
Directed constraint between two nodes in RTAB-Map's pose graph.
Type
Link category and filter sentinels.
Three-tiered memory management (STM, WM, LTM) for RTAB-Map.
Pose-graph I/O, trajectory metrics, link utilities, and path planning.
Largest pose-graph constraint violations after optimization.
float angular
Absolute angular error (rad) of the worst link.
float linearRatio
linear / sqrt(trans variance) of the worst link.
float linear
Absolute linear error (m) of the worst link.
Link angularLink
Link with largest angularRatio.
float angularRatio
angular / sqrt(rot variance) of the worst link.
Link linearLink
Link with largest linearRatio.