gtsam
4.1.0
gtsam

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 "GemanMcClure" 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...  
The mEstimator name space contains all robust error functions.
It mirrors the exposition at https://members.loria.fr/MOBerger/Enseignement/Master2/Documents/ZhangIVC9701.pdf which talks about minimizing \sum \rho(r_i), where \rho is a loss function of choice.
To illustrate, let's consider the leastsquares (L2), L1, and Huber estimators as examples:
Name Symbol LeastSquares L1norm Huber Loss \rho(x) 0.5*x^2 x 0.5*x^2 if x<k, 0.5*k^2 + kxk 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 Mestimator in the mEstimator name space simply implements the above functions.