gtsam 4.2.0
gtsam
|
Implementation of the "Cauchy" robust error model (Lee2013IROS).
Contributed by: Dipl.-Inform. Jan Oberlaender (M.Sc.), FZI Research Center for Information Technology, Karlsruhe, Germany. oberl.nosp@m.aend.nosp@m.er@fz.nosp@m.i.de Thanks Jan!
This model has a scalar parameter "k".
Public Member Functions | |
Cauchy (double k=0.1, const ReweightScheme reweight=Block) | |
double | weight (double distance) const override |
This method is responsible for returning the weight function for a given amount of error. More... | |
double | loss (double distance) const override |
This method is responsible for returning the total penalty for a given amount of error. More... | |
void | print (const std::string &s) const override |
bool | equals (const Base &expected, double tol=1e-8) const override |
double | modelParameter () const |
![]() | |
Base (const ReweightScheme reweight=Block) | |
ReweightScheme | reweightScheme () const |
Returns the reweight scheme, as explained in ReweightScheme. | |
virtual double | loss (double distance) const |
This method is responsible for returning the total penalty for a given amount of error. More... | |
virtual double | weight (double distance) const =0 |
This method is responsible for returning the weight function for a given amount of error. More... | |
virtual void | print (const std::string &s) const =0 |
virtual bool | equals (const Base &expected, double tol=1e-8) const =0 |
double | sqrtWeight (double distance) const |
Vector | weight (const Vector &error) const |
produce a weight vector according to an error vector and the implemented robust function | |
Vector | sqrtWeight (const Vector &error) const |
square root version of the weight function | |
void | reweight (Vector &error) const |
reweight block matrices and a vector according to their weight implementation | |
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 |
Static Public Member Functions | |
static shared_ptr | Create (double k, const ReweightScheme reweight=Block) |
Public Types | |
typedef boost::shared_ptr< Cauchy > | shared_ptr |
![]() | |
enum | ReweightScheme { Scalar , Block } |
the rows can be weighted independently according to the error or uniformly with the norm of the right hand side | |
typedef boost::shared_ptr< Base > | shared_ptr |
Protected Attributes | |
double | k_ |
double | ksquared_ |
![]() | |
ReweightScheme | reweight_ |
Strategy for reweighting. More... | |
Friends | |
class | boost::serialization::access |
Serialization function. | |
|
overridevirtual |
Implements gtsam::noiseModel::mEstimator::Base.
|
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.
|
overridevirtual |
Implements gtsam::noiseModel::mEstimator::Base.
|
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.