49 double dsqrReci = 1. / dsqr;
67 double sqrte = sqrt(e);
71 rho[2] = -0.5 * rho[1] /
78 double dsqrReci = 1. / dsqr;
79 double aux1 = dsqrReci * e2 + 1.0;
80 double aux2 = sqrt(aux1);
81 rho[0] = 2 * dsqr * (aux2 - 1);
83 rho[2] = -0.5 * dsqrReci * rho[1] / aux1;
88 double dsqrReci = 1. / dsqr;
89 double aux = dsqrReci * e2 + 1.0;
90 rho[0] = dsqr * log(aux);
92 rho[2] = -dsqrReci * std::pow(rho[1], 2);
96 const double aux = 1. / (
_delta + e2);
97 rho[0] =
_delta * e2 * aux;
99 rho[2] = -2. * rho[1] * aux;
104 const double aux = e2 / dsqr;
105 const double aux2 = exp(-aux);
106 rho[0] = dsqr * (1. - aux2);
108 rho[2] = -aux2 / dsqr;
112 const double sqrte = sqrt(e2);
114 const double aux = sqrte /
_delta;
115 rho[0] = 2. * dsqr * (aux - log1p(aux));
116 rho[1] = 1. / (1. + aux);
118 const double drec = 1. /
_delta;
119 const double e_3_2 = 1. / (sqrte * e2);
120 const double aux2 = drec * sqrte + 1;
123 (1 / (4 * dsqr * aux2 * aux2 * e2) + (drec * e_3_2) / (4 * aux2) -
130 const double aux = e2 / delta2;
131 rho[0] = delta2 * (1. - std::pow((1. - aux), 3)) / 3.;
132 rho[1] = std::pow((1. - aux), 2);
133 rho[2] = -2. * (1. - aux) / delta2;
135 rho[0] = delta2 / 3.;
156 const double& phi =
_delta;
157 double scale = (2.0 * phi) / (phi + e2);
163 double phi_sqr = phi * phi;
164 rho[0] = scale * e2 * scale;
165 rho[1] = (4 * phi_sqr * (phi - e2)) / std::pow(phi + e2, 3);
166 rho[2] = -(8 * phi_sqr * (2 * phi - e2)) / std::pow(phi + e2, 4);
virtual void robustify(double e2, Vector3 &rho) const
Dynamic covariance scaling - DCS.
virtual void robustify(double e2, Vector3 &rho) const
virtual void robustify(double e2, Vector3 &rho) const
Geman-McClure cost function.
virtual void robustify(double e2, Vector3 &rho) const
virtual void robustify(double e2, Vector3 &rho) const
Pseudo Huber Cost Function.
virtual void robustify(double e2, Vector3 &rho) const
virtual void robustify(double e2, Vector3 &rho) const
void setKernel(const RobustKernelPtr &ptr)
use another kernel for the underlying operation
void robustify(double error, Vector3 &rho) const
RobustKernelScaleDelta(const RobustKernelPtr &kernel, double delta=1.)
virtual void robustify(double e2, Vector3 &rho) const
virtual void robustify(double e2, Vector3 &rho) const
base for all robust cost functions
virtual void robustify(double squaredError, Vector3 &rho) const =0
std::shared_ptr< RobustKernel > RobustKernelPtr
#define G2O_REGISTER_ROBUST_KERNEL(name, classname)