 Visual Servoing Platform  version 3.6.1 under development (2023-11-30)

#include <visp3/vs/vpAdaptiveGain.h>

## Public Member Functions

vpAdaptiveGain (double gain_at_zero, double gain_at_infinity, double slope_at_zero)

void initFromConstant (double c)

void initFromVoid (void)

void initStandard (double gain_at_zero, double gain_at_infinity, double slope_at_zero)

double setConstant (void)

double value_const (double x) const

double value (double x) const

double limitValue_const (void) const

double limitValue (void) const

double getLastValue (void) const

double operator() (double x) const

double operator() (const vpColVector &x) const

double operator() (void) const

## Static Public Attributes

static const double DEFAULT_LAMBDA_ZERO = 1.666

static const double DEFAULT_LAMBDA_INFINITY = 0.1666

static const double DEFAULT_LAMBDA_SLOPE = 1.666

## Friends

VISP_EXPORT std::ostream & operator<< (std::ostream &os, const vpAdaptiveGain &lambda)

## Detailed Description

As described in , a varying gain could be used in the visual servoing control law with where:

• is the gain in 0, that is for very small values of • is the gain to infinity, that is for very high values of • is the slope of at As described in Tutorial: How to boost your visual servo control law, the interest of Using an adaptive gain is to reduce the time to convergence in order to speed up the servo.

The following example shows how to use this class in order to use an adaptive gain with the following parameters , and .

#include <visp3/vs/vpServo.h>
int main()
{
vpAdaptiveGain lambda(4, 0.4, 30); // lambda(0)=4, lambda(oo)=0.4 and lambda'(0)=30
vpServo servo;
servo.setLambda(lambda);
while(1) {
}
}
Implementation of column vector and the associated operations.
Definition: vpColVector.h:163
void setLambda(double c)
Definition: vpServo.h:976
vpColVector computeControlLaw()
Definition: vpServo.cpp:703

This other example shows how to use this class in order to set a constant gain that will ensure an exponential decrease of the task error.

#include <visp3/vs/vpServo.h>
int main()
{
vpServo servo;
servo.setLambda(lambda);
while(1) {
}
}
Examples
mbot-apriltag-2D-half-vs.cpp, mbot-apriltag-ibvs.cpp, mbot-apriltag-pbvs.cpp, servoAfma4Point2DCamVelocityKalman.cpp, servoAfma6AprilTagIBVS.cpp, servoAfma6AprilTagPBVS.cpp, servoBebop2.cpp, servoFlirPtuIBVS.cpp, servoFrankaIBVS.cpp, servoFrankaPBVS.cpp, servoPololuPtuPoint2DJointVelocity.cpp, servoUniversalRobotsIBVS.cpp, servoUniversalRobotsPBVS.cpp, servoViper850Point2DCamVelocityKalman.cpp, tutorial-ibvs-4pts-plotter-continuous-gain-adaptive.cpp, and tutorial-ibvs-4pts-plotter-gain-adaptive.cpp.

Definition at line 116 of file vpAdaptiveGain.h.

## Constructor & Destructor Documentation

Basic constructor which initializes all the parameters with their default value:

Definition at line 51 of file vpAdaptiveGain.cpp.

References initFromVoid().

explicit

Constructor that initializes the gain as constant. In that case .

Parameters
 c : Value of the constant gain. A typical value is 0.5.

Definition at line 58 of file vpAdaptiveGain.cpp.

References initFromConstant().

Constructor that initializes the gain as adaptive.

Parameters
 gain_at_zero : the expected gain when : . gain_at_infinity : the expected gain when : . slope_at_zero : the expected slope of when : .

Definition at line 60 of file vpAdaptiveGain.cpp.

References initStandard().

## ◆ getLastValue()

 double vpAdaptiveGain::getLastValue ( void ) const
inline

Gets the last adaptive gain value which was stored in the class.

Returns
It returns the last adaptive gain value which was stored in the class.

Definition at line 256 of file vpAdaptiveGain.h.

## ◆ initFromConstant()

 void vpAdaptiveGain::initFromConstant ( double c )

Initializes the parameters to have a constant gain. In that case .

Parameters
 c : Value of the constant gain. A typical value is 0.5.
Examples
servoAfma4Point2DCamVelocityKalman.cpp.

Definition at line 66 of file vpAdaptiveGain.cpp.

## ◆ initFromVoid()

Initializes the parameters with the default value :

Definition at line 74 of file vpAdaptiveGain.cpp.

## ◆ initStandard()

 void vpAdaptiveGain::initStandard ( double gain_at_zero, double gain_at_infinity, double slope_at_zero )

Set the parameters used to compute .

Parameters
 gain_at_zero : the expected gain when : . gain_at_infinity : the expected gain when : . slope_at_zero : the expected slope of when : .
Examples
mbot-apriltag-2D-half-vs.cpp, mbot-apriltag-ibvs.cpp, mbot-apriltag-pbvs.cpp, servoAfma4Point2DCamVelocityKalman.cpp, and servoViper850Point2DCamVelocityKalman.cpp.

Definition at line 81 of file vpAdaptiveGain.cpp.

## ◆ limitValue()

 double vpAdaptiveGain::limitValue ( void ) const

Gets the value of the gain at infinity (ie the value of ) and stores it as a parameter of the class.

Returns
It returns the value of the gain at infinity.

Definition at line 128 of file vpAdaptiveGain.cpp.

References limitValue_const().

Referenced by operator()().

## ◆ limitValue_const()

 double vpAdaptiveGain::limitValue_const ( void ) const

Gets the value of the gain at infinity (ie the value of ). This function is similar to limitValue() except that here the value is not stored as a parameter of the class.

Returns
It returns the value of the gain at infinity.

Definition at line 114 of file vpAdaptiveGain.cpp.

Referenced by limitValue().

## ◆ operator()() [1/3]

 double vpAdaptiveGain::operator() ( const vpColVector & x ) const

Operator which computes where Parameters
 x : Input vector to consider.
Returns
It returns the value of the computed gain.

Definition at line 139 of file vpAdaptiveGain.cpp.

References vpColVector::infinityNorm(), and value().

## ◆ operator()() [2/3]

 double vpAdaptiveGain::operator() ( double x ) const

Operator that computes where Parameters
 x : Input value to consider. During a visual servo this value can be the Euclidean norm or the infinity norm of the task function.
Returns
It returns the value of the computed gain.
value()

Definition at line 135 of file vpAdaptiveGain.cpp.

References value().

## ◆ operator()() [3/3]

 double vpAdaptiveGain::operator() ( void ) const

Gets the value of the gain at infinity (ie the value of ).

Returns
It returns the value of the gain at infinity.
limitValue()

Definition at line 137 of file vpAdaptiveGain.cpp.

References limitValue().

## ◆ setConstant()

Sets the internal parameters in order to obtain a constant gain equal to the gain in 0 set through the parameter .

Returns
It returns the value of the constant gain .

Definition at line 96 of file vpAdaptiveGain.cpp.

## ◆ value()

 double vpAdaptiveGain::value ( double x ) const

Computes the value of the adaptive gain using: This value is stored as a parameter of the class.

Parameters
 x : Input value to consider. During a visual servo this value can be the Euclidean norm or the infinity norm of the task function.
Returns
It returns the value of the computed gain.

Definition at line 121 of file vpAdaptiveGain.cpp.

References value_const().

Referenced by operator()().

## ◆ value_const()

 double vpAdaptiveGain::value_const ( double x ) const

Computes the value of the adaptive gain using: Parameters
 x : Input value to consider. During a visual servo this value can be the Euclidean norm or the infinity norm of the task function.
Returns
It returns the value of the computed gain.

Definition at line 107 of file vpAdaptiveGain.cpp.

Referenced by value().

## ◆ operator<<

 VISP_EXPORT std::ostream& operator<< ( std::ostream & os, const vpAdaptiveGain & lambda )
friend

Prints the adaptive gain parameters .

Parameters
 os : The stream where to print the adaptive gain parameters. lambda : The adaptive gain containing the parameters to print.

Definition at line 141 of file vpAdaptiveGain.cpp.

## ◆ DEFAULT_LAMBDA_INFINITY

static

Definition at line 120 of file vpAdaptiveGain.h.

Referenced by initFromVoid().

## ◆ DEFAULT_LAMBDA_SLOPE

static

Definition at line 121 of file vpAdaptiveGain.h.

Referenced by initFromVoid().