Visual Servoing Platform  version 3.6.1 under development (2024-05-26)
vpFeatureSegment Class Reference

#include <visp3/visual_features/vpFeatureSegment.h>

+ Inheritance diagram for vpFeatureSegment:

Public Types

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

Public Member Functions

 vpFeatureSegment (bool normalized=false)
 
void buildFrom (double x1, double y1, double Z1, double x2, double y2, double Z2)
 
vpFeatureSegmentbuild (const double &x1, const double &y1, const double &Z1, const double &x2, const double &y2, const double &Z2)
 
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
 
vpFeatureSegmentduplicate () const vp_override
 
vpColVector error (const vpBasicFeature &s_star, unsigned int select=FEATURE_ALL) vp_override
 
double getXc () const
 
double getYc () const
 
double getL () const
 
double getAlpha () const
 
double getZ1 () const
 
double getZ2 () const
 
void init () vp_override
 
vpMatrix interaction (unsigned int select=FEATURE_ALL) vp_override
 
void print (unsigned int select=FEATURE_ALL) const vp_override
 
bool isNormalized ()
 
void setNormalized (bool normalized)
 
void setXc (double val)
 
void setYc (double val)
 
void setL (double val)
 
void setAlpha (double val)
 
void setZ1 (double val)
 
void setZ2 (double val)
 

Static Public Member Functions

static unsigned int selectXc ()
 
static unsigned int selectYc ()
 
static unsigned int selectL ()
 
static unsigned int selectAlpha ()
 

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 segment visual features. This class allow to consider two sets of visual features:

  • the non normalized features ${\bf s} = (x_c, y_c, l, \alpha)$ where $(x_c,y_c)$ are the coordinates of the segment center, $ l $ the segment length and $ \alpha $ the orientation of the segment with respect to the $ x $ axis.
  • or the normalized features ${\bf s} = (x_n, y_n, l_n, \alpha)$ with $x_n = x_c/l$, $y_n = y_c/l$ and $l_n = 1/l$.

The selection of the feature set is done either during construction using vpFeatureSegment(bool), or by setNormalized(bool).

Examples
servoAfma6Segment2DCamVelocity.cpp, servoPioneerPanSegment3D.cpp, testFeatureSegment.cpp, and testPoseFeatures.cpp.

Definition at line 65 of file vpFeatureSegment.h.

Member Enumeration Documentation

◆ vpBasicFeatureDeallocatorType

Indicates who should deallocate the feature.

Enumerator
user 
vpServo 

Definition at line 86 of file vpBasicFeature.h.

◆ vpBasicFeatureSelect

Enumerator
FEATURE_ALL 

Definition at line 81 of file vpBasicFeature.h.

Constructor & Destructor Documentation

◆ vpFeatureSegment()

vpFeatureSegment::vpFeatureSegment ( bool  normalized = false)
explicit

Default constructor that builds an empty segment visual feature.

Parameters
normalized: If true, use normalized features ${\bf s} = (x_n, y_n, l_n, \alpha)$. If false, use non normalized features ${\bf s} = (x_c, y_c, l_c, \alpha)$.

Definition at line 77 of file vpFeatureSegment.cpp.

References init().

Referenced by duplicate().

Member Function Documentation

◆ build()

vpFeatureSegment & vpFeatureSegment::build ( const double &  x1,
const double &  y1,
const double &  Z1,
const double &  x2,
const double &  y2,
const double &  Z2 
)

Build a segment visual feature from two points and their Z coordinates.

Parameters
x1,y1: coordinates of the first point in the image plane.
Z1: depth of the first point in the camera frame.
x2,y2: coordinates of the second point in the image plane.
Z2: depth of the second point in the camera frame.

Depending on the feature set that is considered, the features ${\bf s} = (x_c, y_c, l, \alpha)$ or ${\bf s} = (x_n, y_n, l_n, \alpha)$ are computed from the two points using the following formulae:

\[ x_c = \frac{x_1 + x_2}{2} \]

\[ y_c = \frac{y_1 + y_2}{2} \]

\[ l = \sqrt{{x_1 - x_2}^2 + {y_1 - y_2}^2} \]

\[ \alpha = arctan(\frac{y_1 - y_2}{x_1 - x_2}) \]

Definition at line 575 of file vpFeatureSegment.cpp.

References setAlpha(), setL(), setXc(), setYc(), setZ1(), and setZ2().

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

◆ buildFrom()

void vpFeatureSegment::buildFrom ( double  x1,
double  y1,
double  Z1,
double  x2,
double  y2,
double  Z2 
)
Deprecated:
You should use build(const double &, const double &, const double &, const double &, const double &, const double &) instead. Build a segment visual feature from two points and their Z coordinates.
Parameters
x1,y1: coordinates of the first point in the image plane.
Z1: depth of the first point in the camera frame.
x2,y2: coordinates of the second point in the image plane.
Z2: depth of the second point in the camera frame.

Depending on the feature set that is considered, the features ${\bf s} = (x_c, y_c, l, \alpha)$ or ${\bf s} = (x_n, y_n, l_n, \alpha)$ are computed from the two points using the following formulae:

\[ x_c = \frac{x_1 + x_2}{2} \]

\[ y_c = \frac{y_1 + y_2}{2} \]

\[ l = \sqrt{{x_1 - x_2}^2 + {y_1 - y_2}^2} \]

\[ \alpha = arctan(\frac{y_1 - y_2}{x_1 - x_2}) \]

Definition at line 554 of file vpFeatureSegment.cpp.

References build().

◆ dimension_s()

unsigned int vpBasicFeature::dimension_s ( )
inlineinherited

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

Definition at line 108 of file vpBasicFeature.h.

◆ display() [1/2]

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

Displays a segment representing the feature on a grayscale image. The two limiting points are displayed in cyan and yellow.

Parameters
cam: Camera parameters.
I: Image.
color: Color to use for the segment.
thickness: Thickness of the feature representation.

Implements vpBasicFeature.

Examples
servoAfma6Segment2DCamVelocity.cpp, and testFeatureSegment.cpp.

Definition at line 469 of file vpFeatureSegment.cpp.

References vpMeterPixelConversion::convertPoint(), vpDisplay::displayCircle(), vpDisplay::displayLine(), and vpColor::yellow.

◆ display() [2/2]

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

Displays a segment representing the feature on a RGBa image. The two limiting points are displayed in cyan and yellow.

Parameters
cam: Camera parameters.
I: Image.
color: Color to use for the segment.
thickness: Thickness of the feature representation.

Implements vpBasicFeature.

Definition at line 507 of file vpFeatureSegment.cpp.

References vpMeterPixelConversion::convertPoint(), vpColor::cyan, vpDisplay::displayCircle(), vpDisplay::displayLine(), and vpColor::yellow.

◆ duplicate()

vpFeatureSegment * vpFeatureSegment::duplicate ( ) const
virtual

Feature duplication.

Create an object with the same type.

s_star = s.duplicate(); // s_star is now a vpFeatureSegment
class that defines what is a visual feature
vpColVector s
State of the visual feature.
Class that defines a 2D segment visual features. This class allow to consider two sets of visual feat...

Implements vpBasicFeature.

Definition at line 452 of file vpFeatureSegment.cpp.

References vpFeatureSegment().

◆ error()

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

Computes the error between the current and the desired visual features from a subset of the possible features ${\bf s} = (x_c, y_c, l, \alpha)$ or ${\bf s} = (x_n, y_n, l_n, \alpha)$.

For the angular component $\alpha$, we define the error as $\alpha \ominus \alpha^*$, where $\ominus$ is modulo $2\pi$ subtraction.

Parameters
s_star: Desired 2D segment feature.
select: The error can be computed for a selection of a subset of the possible segment features.
Returns
The error between the current and the desired visual feature.

Reimplemented from vpBasicFeature.

Definition at line 352 of file vpFeatureSegment.cpp.

References selectAlpha(), selectL(), selectXc(), selectYc(), and vpColVector::stack().

◆ get_s()

◆ getAlpha()

double vpFeatureSegment::getAlpha ( ) const
inline

Get the value of $ \alpha $ which represents the orientation of the segment.

Returns
The value of $ \alpha $.

Definition at line 118 of file vpFeatureSegment.h.

◆ getDeallocate()

vpBasicFeatureDeallocatorType vpBasicFeature::getDeallocate ( )
inlineinherited

Definition at line 121 of file vpBasicFeature.h.

◆ getDimension()

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

Get the feature vector dimension.

Definition at line 99 of file vpBasicFeature.cpp.

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

◆ getL()

double vpFeatureSegment::getL ( ) const
inline

Get the length of the segment.

Returns
If normalized features are used, return $ l_n = 1 / l $. Otherwise return $ l $.

Definition at line 110 of file vpFeatureSegment.h.

◆ getXc()

double vpFeatureSegment::getXc ( ) const
inline

Get the x coordinate of the segment center in the image plane.

Returns
If normalized features are used, return $ x_n = x_c / l $. Otherwise return $ x_c $.

Definition at line 94 of file vpFeatureSegment.h.

◆ getYc()

double vpFeatureSegment::getYc ( ) const
inline

Get the y coordinate of the segment center in the image plane.

Returns
If normalized features are used, return $ y_n = y_c / l $. Otherwise return $ y_c $.

Definition at line 102 of file vpFeatureSegment.h.

◆ getZ1()

double vpFeatureSegment::getZ1 ( ) const
inline

Get the value of $ Z_1 $ which represents the Z coordinate in the camera frame of the 3D point that corresponds to the segment first point.

Returns
The value of the depth $ Z_1 $.

Definition at line 126 of file vpFeatureSegment.h.

◆ getZ2()

double vpFeatureSegment::getZ2 ( ) const
inline

Get the value of $ Z_2 $ which represents the Z coordinate in the camera frame of the 3D point that corresponds to the segment second point.

Returns
The value of the depth $ Z_2 $.

Definition at line 135 of file vpFeatureSegment.h.

◆ init()

void vpFeatureSegment::init ( void  )
virtual

Initialise the memory space requested for segment visual feature.

Implements vpBasicFeature.

Definition at line 56 of file vpFeatureSegment.cpp.

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

Referenced by vpFeatureSegment().

◆ interaction()

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

Compute and return the interaction matrix $ L $ associated to a subset of the possible features ${\bf s} = (x_c, y_c, l, \alpha)$ or ${\bf s} = (x_n, y_n, l_n, \alpha)$.

The interaction matrix of the non normalized feature set is of the following form:

\[ {\bf L} = \left[ \begin{array}{c} L_{x_c} \\ L_{y_c} \\ L_{l} \\ L_{\alpha} \end{array} \right] = \left[ \begin{array}{cccccc} -\lambda_2 & 0 & \lambda_2 x_c - \lambda_1 l \frac{\cos \alpha}{4} & x_c y_c + l^2 \frac{\cos \alpha \sin \alpha}{4} & -(1 + {x_{c}}^{2} + l^2 \frac{\cos^2\alpha}{4}) & y_c \\ 0 & -\lambda_2 & \lambda_2 y_c - \lambda_1 l \frac{\sin \alpha}{4} & 1 + {y_{c}}^{2} + l^2 \frac{\sin^2 \alpha}{4} & -x_c y_c-l^2 \frac{\cos \alpha \sin \alpha}{4} & -x_c \\ \lambda_1 \cos \alpha & \lambda_1 \sin \alpha & \lambda_2 l - \lambda_1 (x_c \cos \alpha + y_c \sin \alpha) & l (x_c \cos \alpha \sin \alpha + y_c (1 + \sin^2 \alpha)) & -l (x_c (1 + \cos^2 \alpha)+y_c \cos \alpha \sin \alpha) & 0 \\ -\lambda_1 \frac{\sin \alpha}{l} & \lambda_1 \frac{\cos \alpha}{l} & \lambda_1 \frac{x_c \sin \alpha - y_c \cos \alpha}{l} & -x_c \sin^2 \alpha + y_c \cos \alpha \sin \alpha & x_c \cos \alpha \sin \alpha - y_c \cos^2 \alpha & -1 \end{array} \right] \]

with $ \lambda_1 = \frac{Z_1 - Z_2}{Z_1 Z_2}$ and $ \lambda_2 = \frac{Z_1 + Z_2}{2 Z_1 Z_2}$ where $Z_i$ are the depths of the points.

Parameters
select: Selection of a subset of the possible segment features.
  • To compute the interaction matrix for all the four subset features $(x_c $, $ y_c $, $ l $, $ \alpha)$ or $(x_n $, $ y_n $, $ l_n $, $ \alpha)$ use vpBasicFeature::FEATURE_ALL. In that case the dimension of the interaction matrix is $ [4 \times 6] $.
  • To compute the interaction matrix for only one of the subset use one of the following functions: selectXc(), selectYc(), selectL(), selectAlpha(). In that case, the returned interaction matrix is of dimension $ [1 \times 6] $ .
Returns
The interaction matrix computed from the segment features.

The code below shows how to compute the interaction matrix associated to the visual feature ${\bf s} = (x_c, y_c, l, \alpha)$.

#include <visp3/core/vpPoint.h>
#include <visp3/visual_features/vpFeatureSegment.h>
int main()
{
// Define two 3D points in the object frame
vpPoint p1(.1, .1, 0.), p2(.3, .2, 0.);
// Define the camera pose wrt the object
vpHomogeneousMatrix cMo (0, 0, 1, 0, 0, 0); // Z=1 meter
// Compute the coordinates of the points in the camera frame
p1.changeFrame(cMo);
p2.changeFrame(cMo);
// Compute the coordinates of the points in the image plane by perspective projection
p1.project(); p2.project();
// Build the segment visual feature
s.build(p1.get_x(), p1.get_y(), p1.get_Z(), p2.get_x(), p2.get_y(), p2.get_Z());
// Compute the interaction matrix
}
Implementation of an homogeneous matrix and operations on such kind of matrices.
Implementation of a matrix and operations on matrices.
Definition: vpMatrix.h:146
Class that defines a 3D point in the object frame and allows forward projection of a 3D point in the ...
Definition: vpPoint.h:77

In this case, L is a 4 by 6 matrix.

It is also possible to build the interaction matrix associated to one of the possible features. The code below shows how to modify the previous code to consider as visual feature $s = (l, \alpha)$.

static unsigned int selectAlpha()
static unsigned int selectL()

In that case, L is a 2 by 6 matrix.

Implements vpBasicFeature.

Definition at line 178 of file vpFeatureSegment.cpp.

References vpBasicFeature::deallocate, vpBasicFeature::flags, vpBasicFeature::nbParameters, selectAlpha(), selectL(), selectXc(), selectYc(), vpMatrix::stack(), vpBasicFeature::user, and vpTRACE.

◆ isNormalized()

bool vpFeatureSegment::isNormalized ( )
inline

Indicates if the normalized features are considered.

Definition at line 148 of file vpFeatureSegment.h.

Referenced by vpFeatureBuilder::create().

◆ operator[]()

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

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

Definition at line 128 of file vpBasicFeature.h.

◆ print()

void vpFeatureSegment::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 segment features ( $ x_c $, $ y_c $, $ l $, $ \alpha $).
s.print();
int print(std::ostream &s, unsigned int length, char const *intro=0) const

produces the following output:

vpFeatureSegment: (xc = -0.255634; yc = -0.13311; l = 0.105005; alpha = 92.1305 deg)
vpFeatureSegment(bool normalized=false)

while

produces the following output:

vpFeatureSegment: (l = 0.105005; alpha = 92.1305 deg)

Implements vpBasicFeature.

Examples
testFeatureSegment.cpp.

Definition at line 413 of file vpFeatureSegment.cpp.

References vpMath::deg(), vpBasicFeature::s, selectAlpha(), selectL(), selectXc(), and selectYc().

◆ resetFlags()

◆ selectAll()

static unsigned int vpBasicFeature::selectAll ( )
inlinestaticinherited

Select all the features.

Definition at line 140 of file vpBasicFeature.h.

◆ selectAlpha()

unsigned int vpFeatureSegment::selectAlpha ( )
static

Function used to select the $\alpha$ subfeature.

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

See the interaction() method for an usage example.

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:

vpFeatureSegment s, s_star; // Current and desired visual feature
vpServo task;
...
// Add only the alpha subset feature from a segment to the task
void addFeature(vpBasicFeature &s_cur, vpBasicFeature &s_star, unsigned int select=vpBasicFeature::FEATURE_ALL)
Definition: vpServo.cpp:329
See also
selectXc(), selectYc(), selectL()
Examples
servoPioneerPanSegment3D.cpp.

Definition at line 697 of file vpFeatureSegment.cpp.

References vpBasicFeature::FEATURE_LINE.

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

◆ selectL()

unsigned int vpFeatureSegment::selectL ( )
static

Function used to select the $l$ or $l_n$ subfeature.

This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to $l$ or $l_n$ feature.

See the interaction() method for an usage example.

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:

vpFeatureSegment s, s_star; // Current and desired visual feature
vpServo task;
...
// Add only the l subset feature from a segment to the task
See also
selectXc(), selectYc(), selectAlpha()
Examples
servoPioneerPanSegment3D.cpp.

Definition at line 673 of file vpFeatureSegment.cpp.

References vpBasicFeature::FEATURE_LINE.

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

◆ selectXc()

unsigned int vpFeatureSegment::selectXc ( )
static

Function used to select the $x_c$ or $x_n$ subfeature.

This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to $x_c$ or $x_n$ feature.

See the interaction() method for an usage example.

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:

vpFeatureSegment s, s_star; // Current and desired visual feature
vpServo task;
...
// Add only the xc subset feature from a segment to the task
static unsigned int selectXc()
See also
selectYc(), selectL(), selectAlpha()
Examples
servoPioneerPanSegment3D.cpp.

Definition at line 625 of file vpFeatureSegment.cpp.

References vpBasicFeature::FEATURE_LINE.

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

◆ selectYc()

unsigned int vpFeatureSegment::selectYc ( )
static

Function used to select the $y_c$ or $y_n$ subfeature.

This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to $y_c$ or $y_n$ feature.

See the interaction() method for an usage example.

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:

vpFeatureSegment s, s_star; // Current and desired visual feature
vpServo task;
...
// Add only the yc subset feature from a segment to the task
static unsigned int selectYc()
See also
selectXc(), selectL(), selectAlpha()

Definition at line 649 of file vpFeatureSegment.cpp.

References vpBasicFeature::FEATURE_LINE.

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

◆ setAlpha()

void vpFeatureSegment::setAlpha ( double  val)
inline

Set the value of $ \alpha $ which represents the orientation of the segment in the image plane. It is one parameter of the visual feature $ s $.

Parameters
val: $ \alpha $ value to set.

Definition at line 211 of file vpFeatureSegment.h.

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

◆ setDeallocate()

void vpBasicFeature::setDeallocate ( vpBasicFeatureDeallocatorType  d)
inlineinherited

Definition at line 135 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 139 of file vpBasicFeature.cpp.

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

◆ setL()

void vpFeatureSegment::setL ( double  val)
inline

Set the value of the segment length in the image plane. It is one parameter of the visual feature $ s $.

Parameters
val: Value to set, that is either equal to $l_n= 1/l $ when normalized features are considered, or equal to $ l $ otherwise.

Definition at line 198 of file vpFeatureSegment.h.

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

◆ setNormalized()

void vpFeatureSegment::setNormalized ( bool  normalized)
inline

Set the king of feature to consider.

Parameters
normalized: If true, use normalized features ${\bf s} = (x_n, y_n, l_n, \alpha)$. If false, use non normalized features ${\bf s} = (x_c, y_c, l_c, \alpha)$.
Examples
testFeatureSegment.cpp.

Definition at line 161 of file vpFeatureSegment.h.

◆ setXc()

void vpFeatureSegment::setXc ( double  val)
inline

Set the value of the x coordinate of the segment center in the image plane. It is one parameter of the visual feature $ s $.

Parameters
val: Value to set, that is either equal to $ x_n = x_c/l $ when normalized features are considered, or equal to $ x_c $ otherwise.

Definition at line 171 of file vpFeatureSegment.h.

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

◆ setYc()

void vpFeatureSegment::setYc ( double  val)
inline

Set the value of the y coordinate of the segment center in the image plane. It is one parameter of the visual feature $ s $.

Parameters
val: Value to set, that is either equal to $ y_n = y_c/l $ when normalized features are considered, or equal to $ y_c $ otherwise.

Definition at line 185 of file vpFeatureSegment.h.

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

◆ setZ1()

void vpFeatureSegment::setZ1 ( double  val)
inline

Set the value of $ Z_1 $ which represents the Z coordinate in the camera frame of the 3D point that corresponds to the segment first point.

This value is requested to compute the interaction matrix.

Parameters
val: $ Z_1 $ value to set.
Exceptions
vpFeatureException::badInitializationError: If Z1 is behind the camera or equal to zero.
Examples
servoAfma6Segment2DCamVelocity.cpp.

Definition at line 230 of file vpFeatureSegment.h.

References vpFeatureException::badInitializationError, and vpERROR_TRACE.

Referenced by build().

◆ setZ2()

void vpFeatureSegment::setZ2 ( double  val)
inline

Set the value of $ Z_2 $ which represents the Z coordinate in the camera frame of the 3D point that corresponds to the segment second point.

This value is requested to compute the interaction matrix.

Parameters
val: $ Z_2 $ value to set.
Exceptions
vpFeatureException::badInitializationError: If Z2 is behind the camera or equal to zero.
Examples
servoAfma6Segment2DCamVelocity.cpp.

Definition at line 262 of file vpFeatureSegment.h.

References vpFeatureException::badInitializationError, and vpERROR_TRACE.

Referenced by build().

Member Data Documentation

◆ deallocate

◆ dim_s

◆ FEATURE_LINE

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 79 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(), selectAlpha(), vpFeatureVanishingPoint::selectAlpha(), vpFeatureVanishingPoint::selectAtanOneOverRho(), selectL(), vpFeatureEllipse::selectMu02(), vpFeatureEllipse::selectMu11(), vpFeatureEllipse::selectMu20(), vpFeatureVanishingPoint::selectOneOverRho(), vpFeatureLine::selectRho(), vpFeaturePointPolar::selectRho(), vpFeatureLine::selectTheta(), vpFeaturePointPolar::selectTheta(), vpFeatureThetaU::selectTUx(), vpFeatureThetaU::selectTUy(), vpFeatureThetaU::selectTUz(), vpFeatureTranslation::selectTx(), vpFeatureTranslation::selectTy(), vpFeatureTranslation::selectTz(), vpFeatureEllipse::selectX(), vpFeaturePoint::selectX(), vpFeaturePoint3D::selectX(), vpFeatureVanishingPoint::selectX(), selectXc(), vpFeatureEllipse::selectY(), vpFeaturePoint::selectY(), vpFeaturePoint3D::selectY(), vpFeatureVanishingPoint::selectY(), 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 96 of file vpBasicFeature.h.

Referenced by vpFeatureLine::build(), vpFeaturePointPolar::build(), vpFeatureEllipse::build(), vpFeaturePoint::build(), vpFeatureDepth::build(), vpFeatureTranslation::build(), vpFeaturePoint3D::build(), vpFeatureThetaU::build(), vpFeatureLine::buildFrom(), vpFeatureMoment::duplicate(), vpFeatureDepth::init(), vpFeatureEllipse::init(), vpFeatureLine::init(), vpFeatureLuminance::init(), vpFeaturePoint::init(), vpFeaturePoint3D::init(), vpFeaturePointPolar::init(), init(), vpFeatureThetaU::init(), vpFeatureTranslation::init(), vpFeatureVanishingPoint::init(), vpFeatureMoment::init(), vpFeatureVanishingPoint::interaction(), vpFeatureDepth::interaction(), vpFeatureEllipse::interaction(), vpFeatureLine::interaction(), vpFeaturePoint::interaction(), vpFeaturePoint3D::interaction(), vpFeaturePointPolar::interaction(), 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(), vpFeatureLine::setABCD(), vpFeatureVanishingPoint::setAlpha(), vpFeatureVanishingPoint::setAtanOneOverRho(), vpBasicFeature::setFlags(), vpFeatureEllipse::setMoments(), vpFeatureVanishingPoint::setOneOverRho(), vpFeatureLine::setRhoTheta(), vpFeatureMoment::update(), vpFeatureLuminance::vpFeatureLuminance(), and vpBasicFeature::~vpBasicFeature().

◆ nbParameters

◆ s

vpColVector vpBasicFeature::s
protectedinherited

State of the visual feature.

Definition at line 90 of file vpBasicFeature.h.

Referenced by vpFeatureLine::build(), vpFeaturePointPolar::build(), vpFeatureEllipse::build(), vpFeaturePoint::build(), vpFeatureDepth::build(), vpFeatureTranslation::build(), vpFeaturePoint3D::build(), vpFeatureThetaU::build(), vpFeatureLuminance::build(), vpFeatureLine::buildFrom(), vpFeatureEllipse::display(), vpFeatureMoment::duplicate(), vpFeatureVanishingPoint::error(), vpBasicFeature::error(), vpFeatureDepth::error(), vpFeatureEllipse::error(), vpFeatureLine::error(), vpFeatureMomentAlpha::error(), vpFeaturePoint::error(), vpFeaturePoint3D::error(), vpFeaturePointPolar::error(), vpFeatureThetaU::error(), vpFeatureTranslation::error(), vpGenericFeature::error(), vpFeatureLuminance::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(), vpFeatureLine::init(), vpFeaturePoint::init(), vpFeaturePoint3D::init(), vpFeaturePointPolar::init(), init(), vpFeatureThetaU::init(), vpFeatureTranslation::init(), vpFeatureVanishingPoint::init(), vpGenericFeature::init(), vpFeatureLuminance::init(), vpFeatureMoment::init(), vpFeatureEllipse::interaction(), vpFeatureLine::interaction(), vpFeatureThetaU::interaction(), vpFeatureTranslation::interaction(), vpBasicFeature::operator=(), vpFeatureEllipse::print(), vpFeatureLine::print(), vpFeatureMoment::print(), 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(), vpFeatureLine::setRhoTheta(), vpFeatureMoment::update(), and vpGenericFeature::vpGenericFeature().