Public Types | Public Member Functions | Protected Attributes | List of all members
gtsam::noiseModel::mEstimator::Base Class Referenceabstract

#include <LossFunctions.h>

Inheritance diagram for gtsam::noiseModel::mEstimator::Base:
Inheritance graph
[legend]

Public Types

enum  ReweightScheme { Scalar, Block }
 
typedef std::shared_ptr< Baseshared_ptr
 

Public Member Functions

 Base (const ReweightScheme reweight=Block)
 
virtual bool equals (const Base &expected, double tol=1e-8) const =0
 
virtual double loss (double distance) const
 
virtual void print (const std::string &s) const =0
 
void reweight (Vector &error) const
 
void reweight (std::vector< Matrix > &A, Vector &error) const
 
void reweight (Matrix &A, Vector &error) const
 
void reweight (Matrix &A1, Matrix &A2, Vector &error) const
 
void reweight (Matrix &A1, Matrix &A2, Matrix &A3, Vector &error) const
 
ReweightScheme reweightScheme () const
 Returns the reweight scheme, as explained in ReweightScheme. More...
 
double sqrtWeight (double distance) const
 
Vector sqrtWeight (const Vector &error) const
 
virtual double weight (double distance) const =0
 
Vector weight (const Vector &error) const
 
virtual ~Base ()
 

Protected Attributes

ReweightScheme reweight_
 Strategy for reweighting. More...
 

Detailed Description

Pure virtual class for all robust error function classes.

It provides the machinery for block vs scalar reweighting strategies, in addition to defining the interface of derived classes.

Definition at line 65 of file LossFunctions.h.

Member Typedef Documentation

◆ shared_ptr

Definition at line 70 of file LossFunctions.h.

Member Enumeration Documentation

◆ ReweightScheme

the rows can be weighted independently according to the error or uniformly with the norm of the right hand side

Enumerator
Scalar 
Block 

Definition at line 69 of file LossFunctions.h.

Constructor & Destructor Documentation

◆ Base()

gtsam::noiseModel::mEstimator::Base::Base ( const ReweightScheme  reweight = Block)
inline

Definition at line 77 of file LossFunctions.h.

◆ ~Base()

virtual gtsam::noiseModel::mEstimator::Base::~Base ( )
inlinevirtual

Definition at line 78 of file LossFunctions.h.

Member Function Documentation

◆ equals()

virtual bool gtsam::noiseModel::mEstimator::Base::equals ( const Base expected,
double  tol = 1e-8 
) const
pure virtual

◆ loss()

virtual double gtsam::noiseModel::mEstimator::Base::loss ( double  distance) const
inlinevirtual

This method is responsible for returning the total penalty for a given amount of error. For example, this method is responsible for implementing the quadratic function for an L2 penalty, the absolute value function for an L1 penalty, etc.

TODO(mikebosse): When the loss function has as input the norm of the error vector, then it prevents implementations of asymmeric loss functions. It would be better for this function to accept the vector and internally call the norm if necessary.

This returns (x) in mEstimator

Reimplemented in gtsam::noiseModel::mEstimator::L2WithDeadZone, gtsam::noiseModel::mEstimator::DCS, gtsam::noiseModel::mEstimator::GemanMcClure, gtsam::noiseModel::mEstimator::Welsch, gtsam::noiseModel::mEstimator::Tukey, gtsam::noiseModel::mEstimator::Cauchy, gtsam::noiseModel::mEstimator::Huber, gtsam::noiseModel::mEstimator::Fair, and gtsam::noiseModel::mEstimator::Null.

Definition at line 96 of file LossFunctions.h.

◆ print()

virtual void gtsam::noiseModel::mEstimator::Base::print ( const std::string &  s) const
pure virtual

◆ reweight() [1/5]

void Base::reweight ( Vector error) const

reweight block matrices and a vector according to their weight implementation

Definition at line 50 of file LossFunctions.cpp.

◆ reweight() [2/5]

void Base::reweight ( std::vector< Matrix > &  A,
Vector error 
) const

Definition at line 60 of file LossFunctions.cpp.

◆ reweight() [3/5]

void Base::reweight ( Matrix A,
Vector error 
) const

Definition at line 78 of file LossFunctions.cpp.

◆ reweight() [4/5]

void Base::reweight ( Matrix A1,
Matrix A2,
Vector error 
) const

Definition at line 92 of file LossFunctions.cpp.

◆ reweight() [5/5]

void Base::reweight ( Matrix A1,
Matrix A2,
Matrix A3,
Vector error 
) const

Definition at line 108 of file LossFunctions.cpp.

◆ reweightScheme()

ReweightScheme gtsam::noiseModel::mEstimator::Base::reweightScheme ( ) const
inline

Returns the reweight scheme, as explained in ReweightScheme.

Definition at line 81 of file LossFunctions.h.

◆ sqrtWeight() [1/2]

double gtsam::noiseModel::mEstimator::Base::sqrtWeight ( double  distance) const
inline

Definition at line 113 of file LossFunctions.h.

◆ sqrtWeight() [2/2]

Vector Base::sqrtWeight ( const Vector error) const

square root version of the weight function

Definition at line 43 of file LossFunctions.cpp.

◆ weight() [1/2]

virtual double gtsam::noiseModel::mEstimator::Base::weight ( double  distance) const
pure virtual

This method is responsible for returning the weight function for a given amount of error. The weight function is related to the analytic derivative of the loss function. See https://members.loria.fr/MOBerger/Enseignement/Master2/Documents/ZhangIVC-97-01.pdf for details. This method is required when optimizing cost functions with robust penalties using iteratively re-weighted least squares.

This returns w(x) in mEstimator

Implemented in gtsam::noiseModel::mEstimator::L2WithDeadZone, gtsam::noiseModel::mEstimator::DCS, gtsam::noiseModel::mEstimator::GemanMcClure, gtsam::noiseModel::mEstimator::Welsch, gtsam::noiseModel::mEstimator::Tukey, gtsam::noiseModel::mEstimator::Cauchy, gtsam::noiseModel::mEstimator::Huber, gtsam::noiseModel::mEstimator::Fair, and gtsam::noiseModel::mEstimator::Null.

◆ weight() [2/2]

Vector Base::weight ( const Vector error) const

produce a weight vector according to an error vector and the implemented robust function

Definition at line 35 of file LossFunctions.cpp.

Member Data Documentation

◆ reweight_

ReweightScheme gtsam::noiseModel::mEstimator::Base::reweight_
protected

Strategy for reweighting.

See also
ReweightScheme

Definition at line 74 of file LossFunctions.h.


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


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:47:25