Visual Servoing Platform
version 3.6.1 under development (2024-11-14)
|
#include <visp3/visual_features/vpFeatureLine.h>
Public Types | |
enum | vpBasicFeatureSelect { FEATURE_ALL = 0xffff } |
enum | vpBasicFeatureDeallocatorType { user , vpServo } |
Public Member Functions | |
vpFeatureLine () | |
vpFeatureLine & | buildFrom (const double &rho, const double &theta) |
vpFeatureLine & | buildFrom (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 |
vpFeatureLine * | duplicate () 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 () |
Class that defines a 2D line visual feature which is composed by two parameters that are and , the polar coordinates of a line.
In this class, the equation of the line in the image plane is given by :
Here and 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 and the angle .
You have to note that the angle has its value between and and that the 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 associated to the visual feature, while the error() method computes the error vector 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 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 ( ) 2D line feature. Then we set the task to use the interaction matrix associated to the current feature . And finally we compute the camera velocity . The current feature is updated in the while() loop.
If you want to build your own control law, this other example shows how to create a current ( ) and desired ( ) 2D line visual feature, compute the corresponding error vector and finally build the interaction matrix .
Definition at line 199 of file vpFeatureLine.h.
|
inherited |
Indicates who should deallocate the feature.
Enumerator | |
---|---|
user | |
vpServo |
Definition at line 88 of file vpBasicFeature.h.
|
inherited |
Enumerator | |
---|---|
FEATURE_ALL |
Definition at line 83 of file vpBasicFeature.h.
vpFeatureLine::vpFeatureLine | ( | ) |
Default constructor that build a visual feature.
Definition at line 96 of file vpFeatureLine.cpp.
References init().
Referenced by duplicate().
vpFeatureLine & vpFeatureLine::buildFrom | ( | const double & | rho, |
const double & | theta | ||
) |
Build a 2D line visual feature from the line equation parameters and given in the image plan.
See the vpFeatureLine class description for more details about and .
rho | : The parameter. |
theta | : The parameter. |
Definition at line 386 of file vpFeatureLine.cpp.
References vpBasicFeature::flags, and vpBasicFeature::s.
vpFeatureLine & vpFeatureLine::buildFrom | ( | 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 and 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.
See the vpFeatureLine class description for more details about and .
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 !
rho | : The parameter. |
theta | : The 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 424 of file vpFeatureLine.cpp.
References vpBasicFeature::flags, vpBasicFeature::nbParameters, and vpBasicFeature::s.
|
inlineinherited |
Return the dimension of the feature vector .
Definition at line 110 of file vpBasicFeature.h.
|
virtual |
Display line feature.
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.
Definition at line 464 of file vpFeatureLine.cpp.
References vpFeatureDisplay::displayLine(), getRho(), and getTheta().
|
virtual |
Display line feature.
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 491 of file vpFeatureLine.cpp.
References vpFeatureDisplay::displayLine(), getRho(), and getTheta().
|
virtual |
Create an object with the same type.
Implements vpBasicFeature.
Definition at line 448 of file vpFeatureLine.cpp.
References vpFeatureLine().
|
virtual |
Compute the error between the current and the desired visual features from a subset of the possible features.
s_star | : Desired visual feature. |
select | : The error can be computed for a selection of a subset of the possible line features.
|
The code below shows how to use this method to manipulate the subset:
Reimplemented from vpBasicFeature.
Definition at line 308 of file vpFeatureLine.cpp.
References vpBasicFeature::s, selectRho(), selectTheta(), and vpColVector::stack().
|
inherited |
Get the feature vector .
Definition at line 115 of file vpBasicFeature.cpp.
References vpBasicFeature::dim_s, vpBasicFeature::FEATURE_LINE, vpBasicFeature::s, and vpColVector::stack().
Referenced by vpServo::computeError(), vpBasicFeature::error(), vpFeatureDepth::error(), vpFeatureThetaU::error(), vpFeatureTranslation::error(), and vpGenericFeature::error().
|
inlineinherited |
Definition at line 123 of file vpBasicFeature.h.
|
inherited |
Get the feature vector dimension.
Definition at line 102 of file vpBasicFeature.cpp.
References vpBasicFeature::dim_s, vpBasicFeature::FEATURE_LINE, vpArray2D< Type >::getRows(), and vpBasicFeature::s.
|
inline |
Return the subset value of the visual feature .
Definition at line 226 of file vpFeatureLine.h.
Referenced by vpMbtDistanceLine::computeInteractionMatrixError(), vpMbtDistanceCylinder::computeInteractionMatrixError(), vpFeatureBuilder::create(), and display().
|
inline |
Return the subset value of the visual feature .
Definition at line 231 of file vpFeatureLine.h.
Referenced by vpMbtDistanceLine::computeInteractionMatrixError(), vpMbtDistanceCylinder::computeInteractionMatrixError(), vpFeatureBuilder::create(), and display().
|
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().
|
virtual |
Compute and return the interaction matrix . The computation is made thanks to the values of the line feature and and the equation of a plan to which the line belongs.
Where :
select | : Selection of a subset of the possible line features.
|
The code below shows how to compute the interaction matrix associated to the visual feature .
The code below shows how to compute the interaction matrix associated to the visual feature .
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(), and vpBasicFeature::user.
Referenced by vpMbtDistanceLine::computeInteractionMatrixError(), and vpMbtDistanceCylinder::computeInteractionMatrixError().
|
inlinevirtualinherited |
Return element i in the state vector (usage : x = s[i] )
Definition at line 130 of file vpBasicFeature.h.
|
virtual |
Print to stdout the values of the current visual feature .
select | : Selection of a subset of the possible line features.
|
Implements vpBasicFeature.
Definition at line 360 of file vpFeatureLine.cpp.
References vpBasicFeature::s, selectRho(), and selectTheta().
|
protectedinherited |
Definition at line 132 of file vpBasicFeature.cpp.
References vpBasicFeature::flags, and vpBasicFeature::nbParameters.
Referenced by vpFeatureVanishingPoint::interaction(), vpFeatureDepth::interaction(), vpFeatureEllipse::interaction(), interaction(), vpFeaturePoint::interaction(), vpFeaturePoint3D::interaction(), vpFeaturePointPolar::interaction(), vpFeatureThetaU::interaction(), and vpFeatureTranslation::interaction().
|
inlinestaticinherited |
|
static |
Function used to select the subset of the line visual feature.
This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to .
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:
Definition at line 526 of file vpFeatureLine.cpp.
References vpBasicFeature::FEATURE_LINE.
Referenced by error(), interaction(), and print().
|
static |
Function used to select the subset of the line visual feature.
This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to .
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:
Definition at line 547 of file vpFeatureLine.cpp.
References vpBasicFeature::FEATURE_LINE.
Referenced by error(), interaction(), and print().
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.
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 !
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().
|
inlineinherited |
Definition at line 137 of file vpBasicFeature.h.
Referenced by vpServo::addFeature().
|
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.
void vpFeatureLine::setRhoTheta | ( | double | rho, |
double | theta | ||
) |
Sets the values of and which represent the parameters of the 2D line feature.
rho | : value to set. |
theta | : value to set. |
Definition at line 105 of file vpFeatureLine.cpp.
References vpBasicFeature::flags, and vpBasicFeature::s.
Referenced by vpFeatureBuilder::create().
|
protectedinherited |
Definition at line 148 of file vpBasicFeature.h.
Referenced by vpFeatureVanishingPoint::interaction(), vpFeatureDepth::interaction(), vpFeatureEllipse::interaction(), interaction(), vpFeaturePoint::interaction(), vpFeaturePoint3D::interaction(), vpFeaturePointPolar::interaction(), vpFeatureSegment::interaction(), vpFeatureThetaU::interaction(), vpFeatureTranslation::interaction(), and vpBasicFeature::operator=().
|
protectedinherited |
Dimension of the visual feature.
Definition at line 94 of file vpBasicFeature.h.
Referenced by vpFeatureMoment::duplicate(), vpGenericFeature::duplicate(), vpBasicFeature::error(), vpFeatureLuminanceMapping::error(), vpGenericFeature::error(), vpFeatureLuminance::error(), vpBasicFeature::get_s(), vpGenericFeature::get_s(), vpBasicFeature::getDimension(), vpFeatureMoment::getDimension(), vpFeatureDepth::init(), vpFeatureEllipse::init(), init(), vpFeatureLuminanceMapping::init(), vpFeaturePoint::init(), vpFeaturePoint3D::init(), vpFeaturePointPolar::init(), vpFeatureSegment::init(), vpFeatureThetaU::init(), vpFeatureTranslation::init(), vpFeatureVanishingPoint::init(), vpFeatureLuminance::init(), vpFeatureMoment::init(), vpFeatureLuminanceMapping::interaction(), vpFeatureMoment::interaction(), vpGenericFeature::interaction(), vpFeatureLuminance::interaction(), vpBasicFeature::operator=(), vpFeatureLuminance::operator=(), vpFeatureLuminanceMapping::operator=(), vpFeatureMoment::print(), vpGenericFeature::print(), vpGenericFeature::set_s(), vpGenericFeature::setError(), vpGenericFeature::setInteractionMatrix(), vpFeatureMoment::update(), vpFeatureLuminance::vpFeatureLuminance(), and vpGenericFeature::vpGenericFeature().
|
staticinherited |
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(), 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().
|
protectedinherited |
Ensure that all the parameters needed to compute the interaction matrix are set.
Definition at line 98 of file vpBasicFeature.h.
Referenced by buildFrom(), vpFeaturePointPolar::buildFrom(), vpFeatureEllipse::buildFrom(), vpFeaturePoint::buildFrom(), vpFeatureDepth::buildFrom(), vpFeatureTranslation::buildFrom(), vpFeaturePoint3D::buildFrom(), vpFeatureThetaU::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().
|
protectedinherited |
Number of parameters needed to compute the interaction matrix.
Definition at line 100 of file vpBasicFeature.h.
Referenced by buildFrom(), vpFeaturePointPolar::buildFrom(), vpFeatureEllipse::buildFrom(), vpFeaturePoint::buildFrom(), vpFeatureDepth::buildFrom(), vpFeaturePoint3D::buildFrom(), vpFeatureThetaU::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_rhoThetaZ(), vpFeaturePoint::set_xyZ(), vpFeaturePoint3D::set_XYZ(), vpFeatureDepth::set_xyZLogZoverZstar(), vpFeatureEllipse::setABC(), setABCD(), vpBasicFeature::setFlags(), vpFeatureMoment::update(), and vpFeatureLuminance::vpFeatureLuminance().
|
protectedinherited |
State of the visual feature.
Definition at line 92 of file vpBasicFeature.h.
Referenced by buildFrom(), vpFeaturePointPolar::buildFrom(), vpFeatureEllipse::buildFrom(), vpFeaturePoint::buildFrom(), vpFeatureDepth::buildFrom(), vpFeatureTranslation::buildFrom(), vpFeaturePoint3D::buildFrom(), vpFeatureThetaU::buildFrom(), vpFeatureLuminance::buildFrom(), vpFeatureLuminanceMapping::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().