gtsam 4.1.1
gtsam
gtsam::noiseModel::mEstimator Namespace Reference

The mEstimator name space contains all robust error functions. More...

Classes

class  Base
 
class  Cauchy
 Cauchy implements the "Cauchy" robust error model (Lee2013IROS). More...
 
class  DCS
 DCS implements the Dynamic Covariance Scaling robust error model from the paper Robust Map Optimization (Agarwal13icra). More...
 
class  Fair
 Fair implements the "Fair" robust error model (Zhang97ivc) More...
 
class  GemanMcClure
 GemanMcClure implements the "Geman-McClure" robust error model (Zhang97ivc). More...
 
class  Huber
 Huber implements the "Huber" robust error model (Zhang97ivc) More...
 
class  L2WithDeadZone
 L2WithDeadZone implements a standard L2 penalty, but with a dead zone of width 2*k, centered at the origin. More...
 
class  Null
 Null class should behave as Gaussian. More...
 
class  Tukey
 Tukey implements the "Tukey" robust error model (Zhang97ivc) More...
 
class  Welsch
 Welsch implements the "Welsch" robust error model (Zhang97ivc) More...
 

Detailed Description

The mEstimator name space contains all robust error functions.

It mirrors the exposition at https://members.loria.fr/MOBerger/Enseignement/Master2/Documents/ZhangIVC-97-01.pdf which talks about minimizing \sum \rho(r_i), where \rho is a loss function of choice.

To illustrate, let's consider the least-squares (L2), L1, and Huber estimators as examples:

Name Symbol Least-Squares L1-norm Huber Loss \rho(x) 0.5*x^2 |x| 0.5*x^2 if |x|<k, 0.5*k^2 + k|x-k| otherwise Derivative \phi(x) x sgn(x) x if |x|<k, k sgn(x) otherwise Weight w(x)=\phi(x)/x 1 1/|x| 1 if |x|<k, k/|x| otherwise

With these definitions, D(\rho(x), p) = \phi(x) D(x,p) = w(x) x D(x,p) = w(x) D(L2(x), p), and hence we can solve the equivalent weighted least squares problem \sum w(r_i) \rho(r_i)

Each M-estimator in the mEstimator name space simply implements the above functions.