46 #include <visp/vpColVector.h>
47 #include <visp/vpDebug.h>
48 #include <visp/vpAdaptiveGain.h>
77 this ->initFromVoid ();
103 initStandard(gain_at_zero, gain_at_infinity, slope_at_zero);
155 const double gain_at_infinity,
156 const double slope_at_zero)
160 this ->coeff_a = gain_at_zero - gain_at_infinity;
162 if (std::fabs(
this ->coeff_a) <= std::numeric_limits<double>::epsilon())
168 this ->coeff_b = slope_at_zero / (
this ->coeff_a);
170 this ->coeff_c = gain_at_infinity;
173 this ->coeff_a,
this ->coeff_b,
this ->coeff_c);
193 double res =
this ->coeff_a +
this ->coeff_c;
197 this ->coeff_c = res;
221 double res =
this ->coeff_a * exp (-
this ->coeff_b * x) +
this ->coeff_c;
237 double res =
this ->coeff_c;
259 this ->lambda =
this ->value_const (x);
276 this ->lambda =
this ->limitValue_const ();
306 return this ->value (x);
318 return this ->limitValue ();
330 return this ->value (x .infinityNorm());
349 VISP_EXPORT std::ostream& operator<< (std::ostream &os,
const vpAdaptiveGain& lambda)
351 os <<
"Zero= " << lambda .coeff_a + lambda .coeff_c
352 <<
"\tInf= " << lambda .coeff_c
353 <<
"\tDeriv= " << lambda .coeff_a * lambda .coeff_b;
Adaptive gain computation.
static const double DEFAULT_LAMBDA_ZERO
static const double DEFAULT_LAMBDA_INFINITY
static const double DEFAULT_LAMBDA_SLOPE
double value(double x) const
void initStandard(double gain_at_zero, double gain_at_infinity, double slope_at_zero)
double limitValue_const(void) const
double operator()(void) const
double value_const(double x) const
void initFromConstant(double c)
Class that provides a data structure for the column vectors as well as a set of operations on these v...
double limitValue(void) const