Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
gtsam::noiseModel::mEstimator::Custom Class Reference

#include <LossFunctions.h>

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

Public Types

typedef std::shared_ptr< Customshared_ptr
 
- Public Types inherited from gtsam::noiseModel::mEstimator::Base
enum  ReweightScheme { Scalar, Block }
 
typedef std::shared_ptr< Baseshared_ptr
 

Public Member Functions

 Custom ()=default
 
 Custom (CustomWeightFunction weight, CustomLossFunction loss, const ReweightScheme reweight=Block, std::string name="Custom")
 
bool equals (const Base &expected, double tol=1e-8) const override
 
double loss (double distance) const override
 
std::function< double(double)> & lossFunction ()
 
std::string & name ()
 
void print (const std::string &s) const override
 
double weight (double distance) const override
 
std::function< double(double)> & weightFunction ()
 
- Public Member Functions inherited from gtsam::noiseModel::mEstimator::Base
 Base (const ReweightScheme reweight=Block)
 
void reweight (Matrix &A, Vector &error) const
 
void reweight (Matrix &A1, Matrix &A2, Matrix &A3, Vector &error) const
 
void reweight (Matrix &A1, Matrix &A2, Vector &error) const
 
void reweight (std::vector< Matrix > &A, Vector &error) const
 
void reweight (Vector &error) const
 
ReweightScheme reweightScheme () const
 Returns the reweight scheme, as explained in ReweightScheme. More...
 
Vector sqrtWeight (const Vector &error) const
 
double sqrtWeight (double distance) const
 
Vector weight (const Vector &error) const
 
virtual ~Base ()
 

Static Public Member Functions

static shared_ptr Create (std::function< double(double)> weight, std::function< double(double)> loss, const ReweightScheme reweight=Block, const std::string &name="Custom")
 

Protected Attributes

std::function< double(double)> loss_
 
std::string name_
 
std::function< double(double)> weight_
 
- Protected Attributes inherited from gtsam::noiseModel::mEstimator::Base
ReweightScheme reweight_
 Strategy for reweighting. More...
 

Detailed Description

Implementation of the "Custom" robust error model.

This model just takes two functions as input, one for the loss and one for the weight.

Definition at line 555 of file LossFunctions.h.

Member Typedef Documentation

◆ shared_ptr

Definition at line 561 of file LossFunctions.h.

Constructor & Destructor Documentation

◆ Custom() [1/2]

gtsam::noiseModel::mEstimator::Custom::Custom ( CustomWeightFunction  weight,
CustomLossFunction  loss,
const ReweightScheme  reweight = Block,
std::string  name = "Custom" 
)

◆ Custom() [2/2]

gtsam::noiseModel::mEstimator::Custom::Custom ( )
inlinedefault

Member Function Documentation

◆ Create()

Custom::shared_ptr gtsam::noiseModel::mEstimator::Custom::Create ( std::function< double(double)>  weight,
std::function< double(double)>  loss,
const ReweightScheme  reweight = Block,
const std::string &  name = "Custom" 
)
static

Definition at line 549 of file LossFunctions.cpp.

◆ equals()

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

Implements gtsam::noiseModel::mEstimator::Base.

Definition at line 541 of file LossFunctions.cpp.

◆ loss()

double gtsam::noiseModel::mEstimator::Custom::loss ( double  distance) const
overridevirtual

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 $\rho(x)$ in mEstimator

Reimplemented from gtsam::noiseModel::mEstimator::Base.

Definition at line 533 of file LossFunctions.cpp.

◆ lossFunction()

std::function<double(double)>& gtsam::noiseModel::mEstimator::Custom::lossFunction ( )
inline

Definition at line 574 of file LossFunctions.h.

◆ name()

std::string& gtsam::noiseModel::mEstimator::Custom::name ( )
inline

Definition at line 571 of file LossFunctions.h.

◆ print()

void gtsam::noiseModel::mEstimator::Custom::print ( const std::string &  s = "") const
overridevirtual

Implements gtsam::noiseModel::mEstimator::Base.

Definition at line 537 of file LossFunctions.cpp.

◆ weight()

double gtsam::noiseModel::mEstimator::Custom::weight ( double  distance) const
overridevirtual

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

Implements gtsam::noiseModel::mEstimator::Base.

Definition at line 529 of file LossFunctions.cpp.

◆ weightFunction()

std::function<double(double)>& gtsam::noiseModel::mEstimator::Custom::weightFunction ( )
inline

Definition at line 573 of file LossFunctions.h.

Member Data Documentation

◆ loss_

std::function<double(double)> gtsam::noiseModel::mEstimator::Custom::loss_
protected

Definition at line 557 of file LossFunctions.h.

◆ name_

std::string gtsam::noiseModel::mEstimator::Custom::name_
protected

Definition at line 558 of file LossFunctions.h.

◆ weight_

std::function<double(double)> gtsam::noiseModel::mEstimator::Custom::weight_
protected

Definition at line 557 of file LossFunctions.h.


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


gtsam
Author(s):
autogenerated on Thu Jun 13 2024 03:18:22