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>
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>(),
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);
124 const std::string & filePath,
125 const std::map<int, GPS> & gpsValues,
126 unsigned int rgba = 0xFFFFFFFF);
145 const std::vector<Transform> &poses_gt,
146 const std::vector<Transform> &poses_result,
168 const std::vector<Transform> &poses_gt,
169 const std::vector<Transform> &poses_result,
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,
304std::multimap<int, std::pair<int, Link::Type> >::iterator RTABMAP_CORE_EXPORT
findLink(
305 std::multimap<
int, std::pair<int, Link::Type> > & links,
308 bool checkBothWays =
true,
312std::multimap<int, int>::iterator RTABMAP_CORE_EXPORT
findLink(
313 std::multimap<int, int> & links,
316 bool checkBothWays =
true);
319std::multimap<int, Link>::const_iterator RTABMAP_CORE_EXPORT
findLink(
320 const std::multimap<int, Link> & links,
323 bool checkBothWays =
true,
327std::multimap<int, std::pair<int, Link::Type> >::const_iterator RTABMAP_CORE_EXPORT
findLink(
328 const std::multimap<
int, std::pair<int, Link::Type> > & links,
331 bool checkBothWays =
true,
335std::multimap<int, int>::const_iterator RTABMAP_CORE_EXPORT
findLink(
336 const std::multimap<int, int> & links,
339 bool checkBothWays =
true);
353 const std::multimap<int, Link> & links,
366 const std::multimap<int, Link> & links);
381 const std::multimap<int, Link> & links,
383 bool inverted =
false);
387 const std::map<int, Link> & links,
389 bool inverted =
false);
407 const std::map<int, Transform> & poses,
409 float horizontalFOV = 45.0f,
410 float verticalFOV = 45.0f,
411 float nearClipPlaneDistance = 0.1f,
412 float farClipPlaneDistance = 100.0f,
413 bool negative =
false);
430 const std::map<int, Transform> & poses,
433 bool keepLatest =
true);
447 const std::map<int, Transform> & poses,
468 const std::map<int, Transform> & poses,
469 const std::multimap<int, Link> & links,
470 std::multimap<int, int> & hyperNodes,
471 std::multimap<int, Link> & hyperLinks);
486std::list<std::pair<int, Transform> > RTABMAP_CORE_EXPORT
computePath(
487 const std::map<int, rtabmap::Transform> & poses,
488 const std::multimap<int, int> & links,
491 bool updateNewCosts =
false);
507 const std::multimap<int, Link> & links,
510 bool updateNewCosts =
false,
511 bool useSameCostForAllLinks =
false);
545std::list<std::pair<int, Transform> > RTABMAP_CORE_EXPORT
computePath(
549 bool lookInDatabase =
true,
550 bool updateNewCosts =
false,
551 float linearVelocity = 0.0f,
552 float angularVelocity = 0.0f,
553 bool ignoreDirectLinks =
false);
566 const std::map<int, rtabmap::Transform> & poses,
568 float * distance = 0);
586 const std::map<int, Transform> & poses,
601 const std::map<int, Transform> & poses,
611 const std::map<int, Transform> & poses,
619 const std::map<int, Transform> & poses,
627RTABMAP_DEPRECATED std::map<int, float> RTABMAP_CORE_EXPORT
getNodesInRadius(
int nodeId,
const std::map<int, Transform> & nodes,
float radius);
629RTABMAP_DEPRECATED std::map<int, float> RTABMAP_CORE_EXPORT
getNodesInRadius(
const Transform & targetPose,
const std::map<int, Transform> & nodes,
float radius);
631RTABMAP_DEPRECATED std::map<int, Transform> RTABMAP_CORE_EXPORT
getPosesInRadius(
int nodeId,
const std::map<int, Transform> & nodes,
float radius,
float angle = 0.0f);
633RTABMAP_DEPRECATED std::map<int, Transform> RTABMAP_CORE_EXPORT
getPosesInRadius(
const Transform & targetPose,
const std::map<int, Transform> & nodes,
float radius,
float angle = 0.0f);
644 const std::vector<std::pair<int, Transform> > & path);
656 const std::map<int, Transform> & path);
670std::list<std::map<int, Transform> > RTABMAP_CORE_EXPORT
getPaths(
671 std::map<int, Transform> poses,
672 const std::multimap<int, Link> & links);
681void 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.
std::list< std::map< int, Transform > > RTABMAP_CORE_EXPORT getPaths(std::map< int, Transform > poses, const std::multimap< int, Link > &links)
Splits poses into chains connected only by neighbor links.
std::map< int, Transform > RTABMAP_CORE_EXPORT radiusPosesFiltering(const std::map< int, Transform > &poses, float radius, float angle, bool keepLatest=true)
Subsamples poses that are spatially (and optionally angularly) redundant.
std::list< Link > RTABMAP_CORE_EXPORT findLinks(const std::multimap< int, Link > &links, int from)
Lists all links incident on node from.
void RTABMAP_CORE_EXPORT computeMinMax(const std::map< int, Transform > &poses, cv::Vec3f &min, cv::Vec3f &max)
Axis-aligned bounding box of pose positions.
void RTABMAP_CORE_EXPORT calcKittiSequenceErrors(const std::vector< Transform > &poses_gt, const std::vector< Transform > &poses_result, float &t_err, float &r_err)
KITTI odometry benchmark error over fixed trajectory segments.
float RTABMAP_CORE_EXPORT computePathLength(const std::vector< std::pair< int, Transform > > &path)
Path length along an ordered list of poses.
int RTABMAP_CORE_EXPORT findNearestNode(const std::map< int, rtabmap::Transform > &poses, const rtabmap::Transform &targetPose, float *distance=0)
Id of the nearest pose to targetPose.
MaxGraphErrors RTABMAP_CORE_EXPORT computeMaxGraphErrors(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, bool for3DoF=false)
Finds the worst pose-graph constraint residuals after optimization.
std::multimap< int, Link > RTABMAP_CORE_EXPORT filterLinks(const std::multimap< int, Link > &links, Link::Type filteredType, bool inverted=false)
Filters links by type or self-reference.
bool RTABMAP_CORE_EXPORT importPoses(const std::string &filePath, int format, std::map< int, Transform > &poses, std::multimap< int, Link > *constraints=0, std::map< int, double > *stamps=0)
Loads poses (and optional constraints) from disk.
Transform RTABMAP_CORE_EXPORT calcRMSE(const std::map< int, Transform > &groundTruth, const std::map< int, Transform > &poses, float &translational_rmse, float &translational_mean, float &translational_median, float &translational_std, float &translational_min, float &translational_max, float &rotational_rmse, float &rotational_mean, float &rotational_median, float &rotational_std, float &rotational_min, float &rotational_max, bool align2D=false)
Absolute trajectory error (ATE) with Sim(3)-style alignment (TUM RGB-D tool).
std::multimap< int, Link > RTABMAP_CORE_EXPORT filterDuplicateLinks(const std::multimap< int, Link > &links)
Removes duplicate undirected links.
std::list< std::pair< int, Transform > > RTABMAP_CORE_EXPORT computePath(const std::map< int, rtabmap::Transform > &poses, const std::multimap< int, int > &links, int from, int to, bool updateNewCosts=false)
A* shortest path on a pose graph with Euclidean edge costs.
std::vector< double > RTABMAP_CORE_EXPORT getMaxOdomInf(const std::multimap< int, Link > &links)
Maximum information-matrix diagonal over odometry neighbor links.
std::map< int, Transform > RTABMAP_CORE_EXPORT frustumPosesFiltering(const std::map< int, Transform > &poses, const Transform &cameraPose, float horizontalFOV=45.0f, float verticalFOV=45.0f, float nearClipPlaneDistance=0.1f, float farClipPlaneDistance=100.0f, bool negative=false)
Keeps poses inside (or outside) a camera frustum.
void RTABMAP_CORE_EXPORT calcRelativeErrors(const std::vector< Transform > &poses_gt, const std::vector< Transform > &poses_result, float &t_err, float &r_err)
Mean frame-to-frame relative pose error (RPE-style, one step).
std::map< int, Transform > RTABMAP_CORE_EXPORT findNearestPoses(int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)
Like findNearestNodes(int,const std::map<int,Transform>&,float,float,int) but returns full Transform ...
std::map< int, float > RTABMAP_CORE_EXPORT findNearestNodes(int nodeId, const std::map< int, Transform > &poses, float radius, float angle=0.0f, int k=0)
Spatial neighbors of a node (KD-tree radius or k-NN search).
bool RTABMAP_CORE_EXPORT exportGPS(const std::string &filePath, const std::map< int, GPS > &gpsValues, unsigned int rgba=0xFFFFFFFF)
Exports GPS samples to a PLY point cloud.
std::multimap< int, Link >::iterator RTABMAP_CORE_EXPORT findLink(std::multimap< int, Link > &links, int from, int to, bool checkBothWays=true, Link::Type type=Link::kUndef)
Finds the first link from from to to in a multimap keyed by source id.
void reduceGraph(const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, std::multimap< int, int > &hyperNodes, std::multimap< int, Link > &hyperLinks)
Reduces a pose graph into hyper-nodes and hyper-links.
std::multimap< int, int > RTABMAP_CORE_EXPORT radiusPosesClustering(const std::map< int, Transform > &poses, float radius, float angle)
Radius-neighbor clustering of poses.
RTABMAP_DEPRECATED std::map< int, Transform > RTABMAP_CORE_EXPORT getPosesInRadius(int nodeId, const std::map< int, Transform > &nodes, float radius, float angle=0.0f)
bool RTABMAP_CORE_EXPORT exportPoses(const std::string &filePath, int format, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints=std::multimap< int, Link >(), const std::map< int, double > &stamps=std::map< int, double >(), const ParametersMap ¶meters=ParametersMap())
Writes poses (and optional constraints) to disk.
RTABMAP_DEPRECATED std::map< int, float > RTABMAP_CORE_EXPORT getNodesInRadius(int nodeId, const std::map< int, Transform > &nodes, float radius)
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
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.