28#ifndef RTABMAP_REGISTRATION_H_
29#define RTABMAP_REGISTRATION_H_
31#include "rtabmap/core/rtabmap_core_export.h"
33#include <rtabmap/core/Parameters.h>
34#include <rtabmap/core/Signature.h>
35#include <rtabmap/core/RegistrationInfo.h>
113 Transform guess = Transform::getIdentity(),
119 Transform guess = Transform::getIdentity(),
126 Transform guess = Transform::getIdentity(),
144 virtual bool isImageRequiredImpl()
const {
return false;}
145 virtual bool isScanRequiredImpl()
const {
return false;}
146 virtual bool isUserDataRequiredImpl()
const {
return false;}
147 virtual bool canUseGuessImpl()
const {
return false;}
148 virtual int getMinVisualCorrespondencesImpl()
const {
return 0;}
149 virtual float getMinGeometryCorrespondencesRatioImpl()
const {
return 0.0f;}
154 Registration * child_;
Statistics and diagnostics returned by Registration.
Abstract base for registering two observations (visual, ICP, or both).
virtual void parseParameters(const ParametersMap ¶meters)
Parses Reg/RepeatOnce, Reg/Force3DoF and forwards to the child registration if set.
static Registration * create(Type &type, const ParametersMap ¶meters=ParametersMap())
Creates a registration of type (may be adjusted, e.g. to kTypeVis). Caller owns the pointer.
virtual Transform computeTransformationImpl(Signature &from, Signature &to, Transform guess, RegistrationInfo &info) const =0
Strategy-specific registration.
bool isUserDataRequired() const
True if user data is needed (parent or child).
Transform computeTransformation(const SensorData &from, const SensorData &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
Registers two SensorData observations (wrapped as signatures).
Transform computeTransformationMod(Signature &from, Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
Registers from to to; signatures may be modified by the implementation.
static Registration * create(const ParametersMap ¶meters)
Creates a registration from Reg/Strategy in parameters. Caller owns the pointer.
static double COVARIANCE_LINEAR_EPSILON
Minimum diagonal value for linear covariance (m²).
Registration(const ParametersMap ¶meters=ParametersMap(), Registration *child=0)
child is owned and deleted in the destructor.
bool isScanRequired() const
True if laser scans are needed (parent or child).
Transform computeTransformation(const Signature &from, const Signature &to, Transform guess=Transform::getIdentity(), RegistrationInfo *info=0) const
Registers from to to using immutable signatures (copied internally).
bool canUseGuess() const
True if the strategy can refine an initial guess (parent or child).
int getMinVisualCorrespondences() const
Minimum visual inliers required (max of parent and child thresholds).
void setChildRegistration(Registration *child)
Replaces the current child registration; takes ownership of child.
float getMinGeometryCorrespondencesRatio() const
Minimum geometry inlier ratio required (max of parent and child thresholds).
bool isImageRequired() const
True if images are needed (parent or child).
static double COVARIANCE_ANGULAR_EPSILON
Minimum diagonal value for angular covariance (rad²).
Type
Registration strategy selected by Reg/Strategy.
Container class for all sensor data captured at a specific time.
Represents a node in RTAB-Map's pose graph.
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).