RTAB-Map 0.23.10
Real-Time Appearance-Based Mapping
Loading...
Searching...
No Matches
rtabmap::OptimizerCeres Class Reference
Inheritance diagram for rtabmap::OptimizerCeres:
Collaboration diagram for rtabmap::OptimizerCeres:

Public Member Functions

 OptimizerCeres (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon())
 
 OptimizerCeres (const ParametersMap &parameters)
 
virtual Type type () const
 Returns the concrete back-end identifier (one of Type).
 
virtual void parseParameters (const ParametersMap &parameters)
 Reads shared knobs from parameters and applies them to this instance.
 
virtual std::map< int, Transformoptimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &edgeConstraints, cv::Mat &outputCovariance, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization with marginal covariance of rootId.
 
virtual std::map< int, TransformoptimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, std::vector< CameraModel > > &models, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).
 
- Public Member Functions inherited from rtabmap::Optimizer
void getConnectedGraph (int fromId, const std::map< int, Transform > &posesIn, const std::multimap< int, Link > &linksIn, std::map< int, Transform > &posesOut, std::multimap< int, Link > &linksOut) const
 Extracts the connected component reachable from fromId.
 
std::map< int, TransformoptimizeIncremental (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization that grows the graph one node at a time.
 
std::map< int, Transformoptimize (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &constraints, std::list< std::map< int, Transform > > *intermediateGraphes=0, double *finalError=0, int *iterationsDone=0)
 Pose-graph optimization (single shot).
 
std::map< int, TransformoptimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA wrapper that derives camera models and correspondences from signatures.
 
std::map< int, TransformoptimizeBA (int rootId, const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, bool rematchFeatures=false, const ParametersMap &registrationParameters=ParametersMap())
 BA convenience wrapper: like the overload above but ignores the refined 3D points and observation map.
 
Transform optimizeBA (const Link &link, const CameraModel &model, std::map< int, cv::Point3f > &points3DMap, const std::map< int, std::map< int, FeatureBA > > &wordReferences, BAOutliers *outliers=0)
 Refine a single two-frame link via BA.
 
void computeBACorrespondences (const std::map< int, Transform > &poses, const std::multimap< int, Link > &links, const std::map< int, Signature > &signatures, std::map< int, cv::Point3f > &points3DMap, std::map< int, std::map< int, FeatureBA > > &wordReferences, bool rematchFeatures=false, bool useLinkTransformAsGuess=false, ParametersMap registrationParameters=ParametersMap())
 Build BA correspondences (3D points + per-frame observations) from signatures.
 
int iterations () const
 Max solver iterations.
 
bool isSlam2d () const
 True if optimizing in SE(2) instead of SE(3).
 
bool isCovarianceIgnored () const
 If true, all edges share an identity information matrix.
 
double epsilon () const
 Convergence threshold on cost decrease.
 
bool isRobust () const
 If true, use a robust kernel / switchable factors against bad loop closures.
 
bool priorsIgnored () const
 If true, unary priors on poses are dropped.
 
bool landmarksIgnored () const
 If true, landmark/marker observations are dropped.
 
float gravitySigma () const
 Std-dev (rad) of the gravity prior on roll/pitch; 0 disables it.
 
void setIterations (int iterations)
 
void setSlam2d (bool enabled)
 
void setCovarianceIgnored (bool enabled)
 
void setEpsilon (double epsilon)
 
void setRobust (bool enabled)
 
void setPriorsIgnored (bool enabled)
 
void setLandmarksIgnored (bool enabled)
 
void setGravitySigma (float value)
 

Static Public Member Functions

static bool available ()
 
- Static Public Member Functions inherited from rtabmap::Optimizer
static bool isAvailable (Optimizer::Type type)
 Returns whether type was compiled in (its third-party dependency was found).
 
static Optimizercreate (const ParametersMap &parameters)
 Factory: build an optimizer from a ParametersMap.
 
static Optimizercreate (Optimizer::Type type, const ParametersMap &parameters=ParametersMap())
 Factory: build an optimizer of a specific type. Caller owns the result.
 

Additional Inherited Members

- Public Types inherited from rtabmap::Optimizer
enum  Type {
  kTypeUndef = -1 , kTypeTORO = 0 , kTypeG2O = 1 , kTypeGTSAM = 2 ,
  kTypeCeres = 3 , kTypeCVSBA = 4
}
 Graph-optimizer back-end identifier. More...
 
- Protected Member Functions inherited from rtabmap::Optimizer
 Optimizer (int iterations=Parameters::defaultOptimizerIterations(), bool slam2d=Parameters::defaultRegForce3DoF(), bool covarianceIgnored=Parameters::defaultOptimizerVarianceIgnored(), double epsilon=Parameters::defaultOptimizerEpsilon(), bool robust=Parameters::defaultOptimizerRobust(), bool priorsIgnored=Parameters::defaultOptimizerPriorsIgnored(), bool landmarksIgnored=Parameters::defaultOptimizerLandmarksIgnored(), float gravitySigma=Parameters::defaultOptimizerGravitySigma())
 
 Optimizer (const ParametersMap &parameters)
 

Detailed Description

Definition at line 35 of file OptimizerCeres.h.

Constructor & Destructor Documentation

◆ OptimizerCeres()

rtabmap::OptimizerCeres::OptimizerCeres ( int  iterations = Parameters::defaultOptimizerIterations(),
bool  slam2d = Parameters::defaultRegForce3DoF(),
bool  covarianceIgnored = Parameters::defaultOptimizerVarianceIgnored(),
double  epsilon = Parameters::defaultOptimizerEpsilon() 
)
inline

Definition at line 41 of file OptimizerCeres.h.

◆ ~OptimizerCeres()

virtual rtabmap::OptimizerCeres::~OptimizerCeres ( )
inlinevirtual

Definition at line 52 of file OptimizerCeres.h.

Member Function Documentation

◆ type()

virtual Type rtabmap::OptimizerCeres::type ( ) const
inlinevirtual

Returns the concrete back-end identifier (one of Type).

Implements rtabmap::Optimizer.

Definition at line 54 of file OptimizerCeres.h.

◆ parseParameters()

virtual void rtabmap::OptimizerCeres::parseParameters ( const ParametersMap parameters)
virtual

Reads shared knobs from parameters and applies them to this instance.

Subclasses override to additionally read back-end-specific keys (e.g. g2o/Solver, GTSAM/Optimizer); they should call this base implementation first.

Reimplemented from rtabmap::Optimizer.

◆ optimize()

virtual std::map< int, Transform > rtabmap::OptimizerCeres::optimize ( int  rootId,
const std::map< int, Transform > &  poses,
const std::multimap< int, Link > &  constraints,
cv::Mat &  outputCovariance,
std::list< std::map< int, Transform > > *  intermediateGraphes = 0,
double *  finalError = 0,
int *  iterationsDone = 0 
)
virtual

Pose-graph optimization with marginal covariance of rootId.

This is the primary back-end entry point — concrete subclasses override it. The base implementation just emits an error.

Parameters
rootIdPose to hold fixed during optimization.
posesInitial pose estimates.
constraintsRelative-pose constraints between pose ids (and optionally to landmarks).
outputCovarianceOutput: 6x6 covariance of the last optimized pose w.r.t. rootId (3x3 for 2D mode). Filled only if the back-end supports it.
intermediateGraphesOptional: appended at each iteration for debug/visualization.
finalErrorOptional: written with the solver's final cost.
iterationsDoneOptional: written with the solver's actual iteration count.
Returns
Refined poses, or empty on failure.

Reimplemented from rtabmap::Optimizer.

◆ optimizeBA()

virtual std::map< int, Transform > rtabmap::OptimizerCeres::optimizeBA ( int  rootId,
const std::map< int, Transform > &  poses,
const std::multimap< int, Link > &  links,
const std::map< int, std::vector< CameraModel > > &  models,
std::map< int, cv::Point3f > &  points3DMap,
const std::map< int, std::map< int, FeatureBA > > &  wordReferences,
BAOutliers *  outliers = 0 
)
virtual

Bundle adjustment: jointly refine poses and 3D points (back-end-level entry point).

Concrete subclasses (g2o, Ceres, cvsba) override this; the base implementation errors out. The other optimizeBA() overloads ultimately funnel here.

Parameters
rootIdPose to hold fixed. If negative, ALL poses other than the (positive) lowest id are held fixed.
posesInitial pose estimates keyed by frame id.
linksEdges used to define the BA problem topology.
modelsCamera model(s) per frame; for stereo, Tx must be set on the model (= -baseline*fx). Multi-camera rigs have multiple entries per frame.
points3DMapIn/out: world 3D points keyed by word id; refined on return.
wordReferencesObservations: <wordId, <frameId, FeatureBA>>. See FeatureBA.
outliersOptional output: word ids dropped by the back-end's outlier rejection.
Returns
Refined poses, or empty on failure.

Reimplemented from rtabmap::Optimizer.


The documentation for this class was generated from the following file: