Visual Servoing Platform  version 3.6.1 under development (2024-07-27)

#include <visp3/visual_features/vpFeatureLine.h>

+ Inheritance diagram for vpFeatureLine:

Public Types

enum  vpBasicFeatureSelect { FEATURE_ALL = 0xffff }
 
enum  vpBasicFeatureDeallocatorType { user , vpServo }
 

Public Member Functions

 vpFeatureLine ()
 
void buildFrom (double rho, double theta)
 
void buildFrom (double rho, double theta, double A, double B, double C, double D)
 
vpFeatureLinebuild (const double &rho, const double &theta)
 
vpFeatureLinebuild (const double &rho, const double &theta, const double &A, const double &B, const double &C, const double &D)
 
void display (const vpCameraParameters &cam, const vpImage< unsigned char > &I, const vpColor &color=vpColor::green, unsigned int thickness=1) const VP_OVERRIDE
 
void display (const vpCameraParameters &cam, const vpImage< vpRGBa > &I, const vpColor &color=vpColor::green, unsigned int thickness=1) const VP_OVERRIDE
 
vpFeatureLineduplicate () const VP_OVERRIDE
 
vpColVector error (const vpBasicFeature &s_star, unsigned int select=FEATURE_ALL) VP_OVERRIDE
 
double getRho () const
 
double getTheta () const
 
void init () VP_OVERRIDE
 
vpMatrix interaction (unsigned int select=FEATURE_ALL) VP_OVERRIDE
 
void print (unsigned int select=FEATURE_ALL) const VP_OVERRIDE
 
void setRhoTheta (double rho, double theta)
 
void setABCD (double A, double B, double C, double D)
 

Static Public Member Functions

static unsigned int selectRho ()
 
static unsigned int selectTheta ()
 

Static Public Attributes

static const unsigned int FEATURE_LINE [32]
 

Protected Attributes

vpColVector s
 
unsigned int dim_s
 
bool * flags
 
unsigned int nbParameters
 

Inherited functionalities from vpBasicFeature

unsigned int dimension_s ()
 
vpColVector get_s (unsigned int select=FEATURE_ALL) const
 
vpBasicFeatureDeallocatorType getDeallocate ()
 
unsigned int getDimension (unsigned int select=FEATURE_ALL) const
 
virtual double operator[] (unsigned int i) const
 
void setDeallocate (vpBasicFeatureDeallocatorType d)
 
void setFlags ()
 
static unsigned int selectAll ()
 
vpBasicFeatureDeallocatorType deallocate
 
void resetFlags ()
 

Detailed Description

Class that defines a 2D line visual feature $ s$ which is composed by two parameters that are $ \rho $ and $ \theta $, the polar coordinates of a line.

In this class, the equation of the line in the image plane is given by :

\[ x \; cos(\theta) + y \; sin(\theta) -\rho = 0 \]

Here $ x $ and $ y $ are the coordinates of a point belonging to the line and they are given in meter. The following image shows the meanings of the distance $\rho$ and the angle $\theta$.

You have to note that the $ \theta $ angle has its value between $ -\pi $ and $ \pi $ and that the $ \rho $ distance can be positive or negative. The conventions are illustrated by the image above.

The visual features can be set easily from an instance of the classes vpLine, vpMeLine or vpCylinder. For more precision see the class vpFeatureBuilder.

Once the values of the visual features are set, the interaction() method allows to compute the interaction matrix $ L $ associated to the visual feature, while the error() method computes the error vector $(s - s^*)$ between the current visual feature and the desired one.

The code below shows how to create a eye-in hand visual servoing task using a 2D line feature $(\rho,\theta)$ that correspond to the 2D equation of a line in the image plan. To control six degrees of freedom, at least four other features must be considered like two other line features for example. First we create a current ( $s$) 2D line feature. Then we set the task to use the interaction matrix associated to the current feature $L_s$. And finally we compute the camera velocity $v=-\lambda \; L_s^+ \; (s-s^*)$. The current feature $s$ is updated in the while() loop.

#include <visp3/visual_features/vpFeatureLine.h>
#include <visp3/vs/vpServo.h>
#ifdef ENABLE_VISP_NAMESPACE
using namespace VISP_NAMESPACE_NAME;
#endif
int main()
{
vpServo task; // Visual servoing task
vpFeatureLine sd; //The desired line feature.
// Sets the desired features rho and theta
double rhod = 0;
double thetad = 0;
// Sets the parameters which describe the equation of a plane in the camera frame : AX+BY+CZ+D=0.
// The line described by the features belongs to this plan.
// Normally two plans are needed to describe a line. But to compute the interaction matrix only
// one equation of the two plans is needed.
// Notes that the Dd value must not be equal to zero !
double Ad = 0;
double Bd = 0;
double Cd = 1;
double Dd = -1;
// Set the line feature thanks to the desired parameters.
sd.build(rhod, thetad, Ad,Bd, Cd, Dd);
vpFeatureLine s; //The current line feature.
// Sets the current features rho and theta
double rho; // You have to compute the value of rho.
double theta; // You have to compute the value of theta.
// Set the line feature thanks to the current parameters.
s.build(rho, theta);
// In this case the parameters A, B, C, D are not needed because the interaction matrix is computed
// with the desired visual feature.
// Set eye-in-hand control law.
// The computed velocities will be expressed in the camera frame
// Interaction matrix is computed with the desired visual features sd
// Add the 2D line feature to the task
task.addFeature(s, sd);
// Control loop
for ( ; ; ) {
// The new parameters rho and theta must be computed here.
// Update the current line visual feature
s.build(rho, theta);
// Compute the control law
vpColVector v = task.computeControlLaw(); // camera velocity
}
return 0;
}
vpColVector s
State of the visual feature.
Implementation of column vector and the associated operations.
Definition: vpColVector.h:191
Class that defines a 2D line visual feature which is composed by two parameters that are and ,...
vpFeatureLine & build(const double &rho, const double &theta)
void setInteractionMatrixType(const vpServoIteractionMatrixType &interactionMatrixType, const vpServoInversionType &interactionMatrixInversion=PSEUDO_INVERSE)
Definition: vpServo.cpp:380
@ EYEINHAND_CAMERA
Definition: vpServo.h:161
void addFeature(vpBasicFeature &s_cur, vpBasicFeature &s_star, unsigned int select=vpBasicFeature::FEATURE_ALL)
Definition: vpServo.cpp:331
void setServo(const vpServoType &servo_type)
Definition: vpServo.cpp:134
vpColVector computeControlLaw()
Definition: vpServo.cpp:705
@ DESIRED
Definition: vpServo.h:208

If you want to build your own control law, this other example shows how to create a current ( $s$) and desired ( $s^*$) 2D line visual feature, compute the corresponding error vector $(s-s^*)$ and finally build the interaction matrix $L_s$.

#include <visp3/core/vpMatrix.h>
#include <visp3/visual_features/vpFeatureLine.h>
#ifdef ENABLE_VISP_NAMESPACE
using namespace VISP_NAMESPACE_NAME;
#endif
int main()
{
vpFeatureLine sd; //The desired line feature.
// Sets the desired features rho and theta
double rhod = 0;
double thetad = 0;
// Sets the parameters which describe the equation of a plane in the camera frame : AX+BY+CZ+D=0.
double Ad = 0; double Bd = 0; double Cd = 1; double Dd = -1;
// Set the line feature thanks to the desired parameters.
sd.build(rhod, thetad, Ad,Bd, Cd, Dd);
vpFeatureLine s; // The current line feature.
// Sets the current features rho and theta
double rho; // You have to compute the value of rho.
double theta; // You have to compute the value of theta.
// Sets the parameters which describe the equation of a plane in the camera frame : AX+BY+CZ+D=0.
double A; // You have to compute the value of A.
double B; // You have to compute the value of B.
double C; // You have to compute the value of C.
double D; // You have to compute the value of D. D must not be equal to zero !
// Set the line feature thanks to the current parameters.
s.build(rho, theta, A, B, C, D);
// Compute the interaction matrix L_s for the current line feature
vpMatrix L = s.interaction();
// You can also compute the interaction matrix L_s for the desired line feature
// The corresponding line of code is : vpMatrix L = sd.interaction();
// Compute the error vector (s-sd) for the line feature
s.error(s_star);
}
Implementation of a matrix and operations on matrices.
Definition: vpMatrix.h:169
Examples
servoAfma6Cylinder2DCamVelocity.cpp, servoAfma6Cylinder2DCamVelocitySecondaryTask.cpp, servoAfma6Line2DCamVelocity.cpp, servoAfma6SquareLines2DCamVelocity.cpp, servoAfma6TwoLines2DCamVelocity.cpp, servoSimuCylinder.cpp, servoSimuCylinder2DCamVelocityDisplay.cpp, servoSimuCylinder2DCamVelocityDisplaySecondaryTask.cpp, servoSimuLine2DCamVelocityDisplay.cpp, servoSimuSquareLine2DCamVelocityDisplay.cpp, testPoseFeatures.cpp, and trackMeLine.cpp.

Definition at line 199 of file vpFeatureLine.h.

Member Enumeration Documentation

◆ vpBasicFeatureDeallocatorType

Indicates who should deallocate the feature.

Enumerator
user 
vpServo 

Definition at line 88 of file vpBasicFeature.h.

◆ vpBasicFeatureSelect

Enumerator
FEATURE_ALL 

Definition at line 83 of file vpBasicFeature.h.

Constructor & Destructor Documentation

◆ vpFeatureLine()

vpFeatureLine::vpFeatureLine ( )

Default constructor that build a visual feature.

Definition at line 96 of file vpFeatureLine.cpp.

References init().

Referenced by duplicate().

Member Function Documentation

◆ build() [1/2]

vpFeatureLine & vpFeatureLine::build ( const double &  rho,
const double &  theta 
)

Build a 2D line visual feature from the line equation parameters $ \rho $ and $ \theta $ given in the image plan.

\[ x \; cos(\theta) + y \; sin(\theta) -\rho = 0 \]

See the vpFeatureLine class description for more details about $ \rho $ and $ \theta $.

Parameters
rho: The $ \rho $ parameter.
theta: The $ \theta $ parameter.

Definition at line 442 of file vpFeatureLine.cpp.

References vpBasicFeature::flags, and vpBasicFeature::s.

Referenced by buildFrom(), and vpFeatureBuilder::create().

◆ build() [2/2]

vpFeatureLine & vpFeatureLine::build ( const double &  rho,
const double &  theta,
const double &  A_,
const double &  B_,
const double &  C_,
const double &  D_ 
)

Build a 2D line visual feature from the line equation parameters $ \rho $ and $ \theta $ given in the image plan. The parameters A, B, C and D which describe the equation of a plan to which the line belongs, are set in the same time.

\[ x \; cos(\theta) + y \; sin(\theta) -\rho = 0 \]

\[ AX + BY + CZ + D = 0 \]

See the vpFeatureLine class description for more details about $ \rho $ and $ \theta $.

The A, B, C, D parameters are needed to compute the interaction matrix associated to a visual feature. Normally, two plans are needed to describe a line (the intersection of those two plans). But to compute the interaction matrix only one plan equation is required. The only one restrictions is that the value of D must not be equal to zero !

Parameters
rho: The $ \rho $ parameter.
theta: The $ \theta $ parameter.
A_: A parameter of the plan equation.
B_: B parameter of the plan equation.
C_: C parameter of the plan equation.
D_: D parameter of the plan equation.

Definition at line 480 of file vpFeatureLine.cpp.

References vpBasicFeature::flags, vpBasicFeature::nbParameters, and vpBasicFeature::s.

◆ buildFrom() [1/2]

void vpFeatureLine::buildFrom ( double  rho,
double  theta 
)
Deprecated:
You should use build(const double &, const double &) instead. Build a 2D line visual feature from the line equation parameters $ \rho $ and $ \theta $ given in the image plan.

\[ x \; cos(\theta) + y \; sin(\theta) -\rho = 0 \]

See the vpFeatureLine class description for more details about $ \rho $ and $ \theta $.

Parameters
rho: The $ \rho $ parameter.
theta: The $ \theta $ parameter.

Definition at line 387 of file vpFeatureLine.cpp.

References vpBasicFeature::flags, and vpBasicFeature::s.

◆ buildFrom() [2/2]

void vpFeatureLine::buildFrom ( double  rho,
double  theta,
double  A_,
double  B_,
double  C_,
double  D_ 
)
Deprecated:
You should use build(const double &, const double &, const double &, const double &, const double &, const double &) instead. Build a 2D line visual feature from the line equation parameters $ \rho $ and $ \theta $ given in the image plan. The parameters A, B, C and D which describe the equation of a plan to which the line belongs, are set in the same time.

\[ x \; cos(\theta) + y \; sin(\theta) -\rho = 0 \]

\[ AX + BY + CZ + D = 0 \]

See the vpFeatureLine class description for more details about $ \rho $ and $ \theta $.

The A, B, C, D parameters are needed to compute the interaction matrix associated to a visual feature. Normally, two plans are needed to describe a line (the intersection of those two plans). But to compute the interaction matrix only one plan equation is required. The only one restrictions is that the value of D must not be equal to zero !

Parameters
rho: The $ \rho $ parameter.
theta: The $ \theta $ parameter.
A_: A parameter of the plan equation.
B_: B parameter of the plan equation.
C_: C parameter of the plan equation.
D_: D parameter of the plan equation.

Definition at line 423 of file vpFeatureLine.cpp.

References build().

◆ dimension_s()

unsigned int vpBasicFeature::dimension_s ( )
inlineinherited

Return the dimension of the feature vector $\bf s$.

Definition at line 110 of file vpBasicFeature.h.

◆ display() [1/2]

void vpFeatureLine::display ( const vpCameraParameters cam,
const vpImage< unsigned char > &  I,
const vpColor color = vpColor::green,
unsigned int  thickness = 1 
) const
virtual

Display line feature.

Parameters
cam: Camera parameters.
I: Image on which features have to be displayed.
color: Color used to display the feature.
thickness: Thickness of the feature representation.

Implements vpBasicFeature.

Examples
servoAfma6Cylinder2DCamVelocity.cpp, servoAfma6Cylinder2DCamVelocitySecondaryTask.cpp, servoAfma6Line2DCamVelocity.cpp, servoAfma6SquareLines2DCamVelocity.cpp, and servoAfma6TwoLines2DCamVelocity.cpp.

Definition at line 520 of file vpFeatureLine.cpp.

References vpFeatureDisplay::displayLine(), getRho(), getTheta(), and vpERROR_TRACE.

◆ display() [2/2]

void vpFeatureLine::display ( const vpCameraParameters cam,
const vpImage< vpRGBa > &  I,
const vpColor color = vpColor::green,
unsigned int  thickness = 1 
) const
virtual

Display line feature.

Parameters
cam: Camera parameters.
I: Color image on which features have to be displayed.
color: Color used to display the feature.
thickness: Thickness of the feature representation.

Implements vpBasicFeature.

Definition at line 547 of file vpFeatureLine.cpp.

References vpFeatureDisplay::displayLine(), getRho(), getTheta(), and vpERROR_TRACE.

◆ duplicate()

vpFeatureLine * vpFeatureLine::duplicate ( ) const
virtual

Create an object with the same type.

s_star = s.duplicate(); // s_star is now a vpFeatureLine
class that defines what is a visual feature

Implements vpBasicFeature.

Definition at line 504 of file vpFeatureLine.cpp.

References vpFeatureLine().

◆ error()

vpColVector vpFeatureLine::error ( const vpBasicFeature s_star,
unsigned int  select = FEATURE_ALL 
)
virtual

Compute the error $ (s-s^*)$ between the current and the desired visual features from a subset of the possible features.

Parameters
s_star: Desired visual feature.
select: The error can be computed for a selection of a subset of the possible line features.
  • To compute the error for all the two line features use vpBasicFeature::FEATURE_ALL. In that case the error vector is a 2 dimension column vector.
  • To compute the error for only one of the line component feature ( $ \rho, \theta $) use one of the corresponding function selectRho() or selectTheta(). In that case the error vector is a 1 dimension column vector.
Returns
The error $ (s-s^*)$ between the current and the desired visual feature.

The code below shows how to use this method to manipulate the $ \theta $ subset:

// Creation of the current feature s
s.build(0, 0, 0, 0, 1, -1);
// Creation of the desired feature s*
s_star.build(0, 0, 0, 0, 1, -5);
// Compute the interaction matrix for the theta feature
vpMatrix L_theta = s.interaction( vpFeatureLine::selectTheta() );
// Compute the error vector (s-s*) for the Theta feature
s.error(s_star, vpFeatureLine::selectTheta());
static unsigned int selectTheta()

Reimplemented from vpBasicFeature.

Definition at line 308 of file vpFeatureLine.cpp.

References vpBasicFeature::s, selectRho(), selectTheta(), and vpColVector::stack().

◆ get_s()

◆ getDeallocate()

vpBasicFeatureDeallocatorType vpBasicFeature::getDeallocate ( )
inlineinherited

Definition at line 123 of file vpBasicFeature.h.

◆ getDimension()

unsigned int vpBasicFeature::getDimension ( unsigned int  select = FEATURE_ALL) const
inherited

Get the feature vector dimension.

Examples
testPoint.cpp.

Definition at line 102 of file vpBasicFeature.cpp.

References vpBasicFeature::dim_s, vpBasicFeature::FEATURE_LINE, vpArray2D< Type >::getRows(), and vpBasicFeature::s.

◆ getRho()

double vpFeatureLine::getRho ( ) const
inline

Return the $ \rho $ subset value of the visual feature $ s $.

Examples
trackMeLine.cpp.

Definition at line 230 of file vpFeatureLine.h.

Referenced by vpMbtDistanceLine::computeInteractionMatrixError(), vpMbtDistanceCylinder::computeInteractionMatrixError(), vpFeatureBuilder::create(), and display().

◆ getTheta()

double vpFeatureLine::getTheta ( ) const
inline

Return the $ \theta $ subset value of the visual feature $ s $.

Examples
trackMeLine.cpp.

Definition at line 235 of file vpFeatureLine.h.

Referenced by vpMbtDistanceLine::computeInteractionMatrixError(), vpMbtDistanceCylinder::computeInteractionMatrixError(), vpFeatureBuilder::create(), and display().

◆ init()

BEGIN_VISP_NAMESPACE void vpFeatureLine::init ( void  )
virtual

Initialize the memory space requested for 2D line visual feature.

Implements vpBasicFeature.

Definition at line 74 of file vpFeatureLine.cpp.

References vpBasicFeature::dim_s, vpBasicFeature::flags, vpBasicFeature::nbParameters, vpColVector::resize(), and vpBasicFeature::s.

Referenced by vpFeatureLine().

◆ interaction()

vpMatrix vpFeatureLine::interaction ( unsigned int  select = FEATURE_ALL)
virtual

Compute and return the interaction matrix $ L $. The computation is made thanks to the values of the line feature $ \rho $ and $ \theta $ and the equation of a plan to which the line belongs.

\[ L = \left[\begin{array}{c}L_{\rho} \\ L_{\theta}\end{array}\right] = \left[\begin{array}{cccccc} \lambda_{\rho}cos(\theta) & \lambda_{\rho}sin(\theta) & -\lambda_{\rho}\rho & (1+\rho^2)sin(\theta) & -(1+\rho^2)cos(\theta) & 0 \\ \lambda_{\theta}cos(\theta) & \lambda_{\theta}sin(\theta) & -\lambda_{\theta}\rho & -\rho cos(\theta) & -\rho sin(\theta) & -1 \end{array}\right]\]

Where :

\[ \lambda_{\rho} = (A \; \rho \; cos(\theta) + B \; \rho \; sin(\theta) + C) / D \]

\[ \lambda_{\theta} = (A \; sin(\theta) - B \; cos(\theta)) / D \]

Parameters
select: Selection of a subset of the possible line features.
  • To compute the interaction matrix for all the two line features use vpBasicFeature::FEATURE_ALL. In that case the dimension of the interaction matrix is $ [2 \times 6] $
  • To compute the interaction matrix for only one of the line component feature ( $ \rho, \theta $) use one of the corresponding function selectRho() or selectTheta(). In that case the returned interaction matrix is $ [1 \times 6] $ dimension.
Returns
The interaction matrix computed from the line features.

The code below shows how to compute the interaction matrix associated to the visual feature $ s = \theta $.

// Creation of the current feature s
s.build(0, 0, 0, 0, 1, -1);
vpMatrix L_theta = s.interaction( vpFeatureLine::selectTheta() );

The code below shows how to compute the interaction matrix associated to the visual feature $ s = (\rho, \theta) $.

// Creation of the current feature s
s.build(0, 0, 0, 0, 1, -1);
vpMatrix L_theta = s.interaction( vpBasicFeature::FEATURE_ALL );

Implements vpBasicFeature.

Definition at line 188 of file vpFeatureLine.cpp.

References vpFeatureException::badInitializationError, vpBasicFeature::deallocate, vpBasicFeature::flags, vpBasicFeature::nbParameters, vpBasicFeature::resetFlags(), vpBasicFeature::s, selectRho(), selectTheta(), vpBasicFeature::user, vpERROR_TRACE, and vpTRACE.

Referenced by vpMbtDistanceLine::computeInteractionMatrixError(), and vpMbtDistanceCylinder::computeInteractionMatrixError().

◆ operator[]()

virtual double vpBasicFeature::operator[] ( unsigned int  i) const
inlinevirtualinherited

Return element i in the state vector (usage : x = s[i] )

Definition at line 130 of file vpBasicFeature.h.

◆ print()

void vpFeatureLine::print ( unsigned int  select = FEATURE_ALL) const
virtual

Print to stdout the values of the current visual feature $ s $.

Parameters
select: Selection of a subset of the possible line features.
vpFeatureLine s; // Current visual feature s
// Creation of the current feature s
s.build(0, 0);
s.print(); // print all the 2 components of the feature
s.print(vpBasicFeature::FEATURE_ALL); // same behavior then previous line
s.print(vpFeatureLine::selectRho()); // print only the rho component
int print(std::ostream &s, unsigned int length, char const *intro=0) const
static unsigned int selectRho()

Implements vpBasicFeature.

Examples
servoSimuCylinder2DCamVelocityDisplay.cpp, servoSimuCylinder2DCamVelocityDisplaySecondaryTask.cpp, servoSimuLine2DCamVelocityDisplay.cpp, and servoSimuSquareLine2DCamVelocityDisplay.cpp.

Definition at line 360 of file vpFeatureLine.cpp.

References vpBasicFeature::s, selectRho(), and selectTheta().

◆ resetFlags()

◆ selectAll()

static unsigned int vpBasicFeature::selectAll ( )
inlinestaticinherited

Select all the features.

Examples
testPoint.cpp.

Definition at line 142 of file vpBasicFeature.h.

◆ selectRho()

unsigned int vpFeatureLine::selectRho ( )
static

Function used to select the $ \rho $ subset of the line visual feature.

This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to $ \rho $.

This function is also useful in the vpServo class to indicate that a subset of the visual feature is to use in the control law:

vpServo task;
...
// Add the (rho) subset features from the 2D line

Definition at line 582 of file vpFeatureLine.cpp.

References vpBasicFeature::FEATURE_LINE.

Referenced by error(), interaction(), and print().

◆ selectTheta()

unsigned int vpFeatureLine::selectTheta ( )
static

Function used to select the $ \theta $ subset of the line visual feature.

This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to $ \theta $.

This function is also useful in the vpServo class to indicate that a subset of the visual feature is to use in the control law:

vpServo task;
...
// Add the (rho) subset features from the 2D line

Definition at line 603 of file vpFeatureLine.cpp.

References vpBasicFeature::FEATURE_LINE.

Referenced by error(), interaction(), and print().

◆ setABCD()

void vpFeatureLine::setABCD ( double  A_,
double  B_,
double  C_,
double  D_ 
)

Sets the values of A, B, C and D which represent the parameters used to describe the equation of a plan in the camera frame.

\[ AX + BY + CZ + D = 0 \]

Those parameters are needed to compute the interaction matrix associated to a visual feature. Normally, two plans are needed to describe a line (the intersection of those two plans). But to compute the interaction matrix only one plan equation is required. The only one restrictions is that the value of D must not be equal to zero !

Parameters
A_: A value to set.
B_: B value to set.
C_: C value to set.
D_: D value to set.

Definition at line 127 of file vpFeatureLine.cpp.

References vpBasicFeature::flags, and vpBasicFeature::nbParameters.

Referenced by vpFeatureBuilder::create().

◆ setDeallocate()

void vpBasicFeature::setDeallocate ( vpBasicFeatureDeallocatorType  d)
inlineinherited

Definition at line 137 of file vpBasicFeature.h.

Referenced by vpServo::addFeature().

◆ setFlags()

void vpBasicFeature::setFlags ( )
inherited

Set feature flags to true to prevent warning when re-computing the interaction matrix without having updated the feature.

Definition at line 142 of file vpBasicFeature.cpp.

References vpBasicFeature::flags, and vpBasicFeature::nbParameters.

◆ setRhoTheta()

void vpFeatureLine::setRhoTheta ( double  rho,
double  theta 
)

Sets the values of $ \rho $ and $ \theta $ which represent the parameters of the 2D line feature.

Parameters
rho: $ \rho $ value to set.
theta: $ \theta $ value to set.
Examples
servoAfma6Cylinder2DCamVelocity.cpp, and servoAfma6Cylinder2DCamVelocitySecondaryTask.cpp.

Definition at line 105 of file vpFeatureLine.cpp.

References vpBasicFeature::flags, and vpBasicFeature::s.

Referenced by vpFeatureBuilder::create().

Member Data Documentation

◆ deallocate

◆ dim_s

◆ FEATURE_LINE

BEGIN_VISP_NAMESPACE const unsigned int vpBasicFeature::FEATURE_LINE
staticinherited
Initial value:
= {
(unsigned int)(1 << 0), (unsigned int)(1 << 1), (unsigned int)(1 << 2), (unsigned int)(1 << 3),
(unsigned int)(1 << 4), (unsigned int)(1 << 5), (unsigned int)(1 << 6), (unsigned int)(1 << 7),
(unsigned int)(1 << 8), (unsigned int)(1 << 9), (unsigned int)(1 << 10), (unsigned int)(1 << 11),
(unsigned int)(1 << 12), (unsigned int)(1 << 13), (unsigned int)(1 << 14), (unsigned int)(1 << 15),
(unsigned int)(1 << 16), (unsigned int)(1 << 17), (unsigned int)(1 << 18), (unsigned int)(1 << 19),
(unsigned int)(1 << 20), (unsigned int)(1 << 21), (unsigned int)(1 << 22), (unsigned int)(1 << 23),
(unsigned int)(1 << 24), (unsigned int)(1 << 25), (unsigned int)(1 << 26), (unsigned int)(1 << 27),
(unsigned int)(1 << 28), (unsigned int)(1 << 29), (unsigned int)(1 << 30), (unsigned int)(1 << 31) }

Definition at line 81 of file vpBasicFeature.h.

Referenced by vpBasicFeature::error(), vpGenericFeature::error(), vpBasicFeature::get_s(), vpBasicFeature::getDimension(), vpFeatureMoment::getDimension(), vpFeatureMoment::interaction(), vpGenericFeature::interaction(), vpFeatureMoment::print(), vpGenericFeature::print(), vpFeatureEllipse::select_n02(), vpFeatureEllipse::select_n11(), vpFeatureEllipse::select_n20(), vpFeatureSegment::selectAlpha(), vpFeatureVanishingPoint::selectAlpha(), vpFeatureVanishingPoint::selectAtanOneOverRho(), vpFeatureSegment::selectL(), vpFeatureEllipse::selectMu02(), vpFeatureEllipse::selectMu11(), vpFeatureEllipse::selectMu20(), vpFeatureVanishingPoint::selectOneOverRho(), selectRho(), vpFeaturePointPolar::selectRho(), selectTheta(), vpFeaturePointPolar::selectTheta(), vpFeatureThetaU::selectTUx(), vpFeatureThetaU::selectTUy(), vpFeatureThetaU::selectTUz(), vpFeatureTranslation::selectTx(), vpFeatureTranslation::selectTy(), vpFeatureTranslation::selectTz(), vpFeatureEllipse::selectX(), vpFeaturePoint::selectX(), vpFeaturePoint3D::selectX(), vpFeatureVanishingPoint::selectX(), vpFeatureSegment::selectXc(), vpFeatureEllipse::selectY(), vpFeaturePoint::selectY(), vpFeaturePoint3D::selectY(), vpFeatureVanishingPoint::selectY(), vpFeatureSegment::selectYc(), and vpFeaturePoint3D::selectZ().

◆ flags

bool* vpBasicFeature::flags
protectedinherited

Ensure that all the parameters needed to compute the interaction matrix are set.

Definition at line 98 of file vpBasicFeature.h.

Referenced by build(), vpFeaturePointPolar::build(), vpFeatureEllipse::build(), vpFeaturePoint::build(), vpFeatureDepth::build(), vpFeatureTranslation::build(), vpFeaturePoint3D::build(), vpFeatureThetaU::build(), buildFrom(), vpFeatureMoment::duplicate(), vpFeatureDepth::init(), vpFeatureEllipse::init(), init(), vpFeatureLuminance::init(), vpFeaturePoint::init(), vpFeaturePoint3D::init(), vpFeaturePointPolar::init(), vpFeatureSegment::init(), vpFeatureThetaU::init(), vpFeatureTranslation::init(), vpFeatureVanishingPoint::init(), vpFeatureMoment::init(), vpFeatureVanishingPoint::interaction(), vpFeatureDepth::interaction(), vpFeatureEllipse::interaction(), interaction(), vpFeaturePoint::interaction(), vpFeaturePoint3D::interaction(), vpFeaturePointPolar::interaction(), vpFeatureSegment::interaction(), vpFeatureThetaU::interaction(), vpFeatureTranslation::interaction(), vpBasicFeature::operator=(), vpBasicFeature::resetFlags(), vpFeaturePointPolar::set_rho(), vpFeaturePointPolar::set_rhoThetaZ(), vpFeaturePointPolar::set_theta(), vpFeatureThetaU::set_TUx(), vpFeatureThetaU::set_TUy(), vpFeatureThetaU::set_TUz(), vpFeatureDepth::set_x(), vpFeatureEllipse::set_x(), vpFeaturePoint::set_x(), vpFeaturePoint3D::set_X(), vpFeatureVanishingPoint::set_x(), vpFeatureEllipse::set_xy(), vpFeaturePoint::set_xyZ(), vpFeaturePoint3D::set_XYZ(), vpFeatureDepth::set_xyZLogZoverZstar(), vpFeatureDepth::set_y(), vpFeatureEllipse::set_y(), vpFeaturePoint::set_y(), vpFeaturePoint3D::set_Y(), vpFeatureVanishingPoint::set_y(), vpFeatureDepth::set_Z(), vpFeatureLuminance::set_Z(), vpFeaturePoint::set_Z(), vpFeaturePoint3D::set_Z(), vpFeaturePointPolar::set_Z(), vpFeatureEllipse::setABC(), setABCD(), vpFeatureVanishingPoint::setAlpha(), vpFeatureVanishingPoint::setAtanOneOverRho(), vpBasicFeature::setFlags(), vpFeatureEllipse::setMoments(), vpFeatureVanishingPoint::setOneOverRho(), setRhoTheta(), vpFeatureMoment::update(), vpFeatureLuminance::vpFeatureLuminance(), and vpBasicFeature::~vpBasicFeature().

◆ nbParameters

◆ s

vpColVector vpBasicFeature::s
protectedinherited

State of the visual feature.

Definition at line 92 of file vpBasicFeature.h.

Referenced by build(), vpFeaturePointPolar::build(), vpFeatureEllipse::build(), vpFeaturePoint::build(), vpFeatureDepth::build(), vpFeatureTranslation::build(), vpFeaturePoint3D::build(), vpFeatureThetaU::build(), vpFeatureLuminance::build(), vpFeatureLuminanceMapping::build(), buildFrom(), vpFeatureEllipse::display(), vpFeatureMoment::duplicate(), vpFeatureVanishingPoint::error(), vpBasicFeature::error(), vpFeatureDepth::error(), vpFeatureEllipse::error(), error(), vpFeatureMomentAlpha::error(), vpFeaturePoint::error(), vpFeaturePoint3D::error(), vpFeaturePointPolar::error(), vpFeatureThetaU::error(), vpFeatureTranslation::error(), vpGenericFeature::error(), vpFeatureLuminance::error(), vpFeatureLuminanceMapping::error(), vpFeatureDepth::get_LogZoverZstar(), vpFeaturePointPolar::get_rho(), vpBasicFeature::get_s(), vpGenericFeature::get_s(), vpFeaturePointPolar::get_theta(), vpFeatureThetaU::get_TUx(), vpFeatureThetaU::get_TUy(), vpFeatureThetaU::get_TUz(), vpFeatureTranslation::get_Tx(), vpFeatureTranslation::get_Ty(), vpFeatureTranslation::get_Tz(), vpFeaturePoint::get_x(), vpFeaturePoint3D::get_X(), vpFeatureVanishingPoint::get_x(), vpFeaturePoint::get_y(), vpFeaturePoint3D::get_Y(), vpFeatureVanishingPoint::get_y(), vpFeaturePoint3D::get_Z(), vpFeatureVanishingPoint::getAlpha(), vpFeatureVanishingPoint::getAtanOneOverRho(), vpBasicFeature::getDimension(), vpFeatureVanishingPoint::getOneOverRho(), vpFeatureDepth::init(), vpFeatureEllipse::init(), init(), vpFeaturePoint::init(), vpFeaturePoint3D::init(), vpFeaturePointPolar::init(), vpFeatureSegment::init(), vpFeatureThetaU::init(), vpFeatureTranslation::init(), vpFeatureVanishingPoint::init(), vpGenericFeature::init(), vpFeatureLuminanceMapping::init(), vpFeatureLuminance::init(), vpFeatureMoment::init(), vpFeatureEllipse::interaction(), interaction(), vpFeatureThetaU::interaction(), vpFeatureTranslation::interaction(), vpFeatureLuminanceMapping::interaction(), vpBasicFeature::operator=(), vpFeatureLuminance::operator=(), vpFeatureLuminanceMapping::operator=(), vpFeatureEllipse::print(), print(), vpFeatureLuminanceMapping::print(), vpFeatureMoment::print(), vpFeatureSegment::print(), vpFeatureThetaU::print(), vpFeatureTranslation::print(), vpGenericFeature::print(), vpFeatureDepth::set_LogZoverZstar(), vpFeaturePointPolar::set_rho(), vpGenericFeature::set_s(), vpFeaturePointPolar::set_theta(), vpFeatureThetaU::set_TUx(), vpFeatureThetaU::set_TUy(), vpFeatureThetaU::set_TUz(), vpFeatureTranslation::set_Tx(), vpFeatureTranslation::set_Ty(), vpFeatureTranslation::set_Tz(), vpFeatureEllipse::set_x(), vpFeaturePoint::set_x(), vpFeaturePoint3D::set_X(), vpFeatureVanishingPoint::set_x(), vpFeatureEllipse::set_xy(), vpFeatureEllipse::set_y(), vpFeaturePoint::set_y(), vpFeaturePoint3D::set_Y(), vpFeatureVanishingPoint::set_y(), vpFeaturePoint3D::set_Z(), vpFeatureVanishingPoint::setAlpha(), vpFeatureVanishingPoint::setAtanOneOverRho(), vpFeatureEllipse::setMoments(), vpFeatureVanishingPoint::setOneOverRho(), setRhoTheta(), vpFeatureMoment::update(), and vpGenericFeature::vpGenericFeature().