![]() |
Visual Servoing Platform
version 3.6.0 under development (2023-09-29)
|
#include <visp3/visual_features/vpFeaturePointPolar.h>
Public Types | |
enum | { FEATURE_ALL = 0xffff } |
enum | vpBasicFeatureDeallocatorType { user , vpServo } |
Public Member Functions | |
vpFeaturePointPolar () | |
virtual | ~vpFeaturePointPolar () |
void | buildFrom (double rho, double theta, double Z) |
void | display (const vpCameraParameters &cam, const vpImage< unsigned char > &I, const vpColor &color=vpColor::green, unsigned int thickness=1) const |
void | display (const vpCameraParameters &cam, const vpImage< vpRGBa > &I, const vpColor &color=vpColor::green, unsigned int thickness=1) const |
vpFeaturePointPolar * | duplicate () const |
vpColVector | error (const vpBasicFeature &s_star, unsigned int select=FEATURE_ALL) |
void | init () |
double | get_rho () const |
double | get_theta () const |
double | get_Z () const |
vpMatrix | interaction (unsigned int select=FEATURE_ALL) |
void | print (unsigned int select=FEATURE_ALL) const |
void | set_rho (double rho) |
void | set_theta (double theta) |
void | set_Z (double Z) |
void | set_rhoThetaZ (double rho, double theta, double Z) |
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 2D image point visual feature with polar coordinates described in [10].
Let us denote the polar coordinates of an image point, with
the radius of the feature point with respect to the optical center and
the angle. From cartesian coordinates
of a image point, polar coordinates are obtained by:
From polar coordinates, cartesian coordinates of the feature point can be obtained by:
This class is intended to manipulate the 2D image point visual feature in polar coordinates . The interaction matrix related to
is given by:
where is the 3D depth of the considered point in the camera frame.
Two ways are allowed to initialize the feature.
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 four 2D point features with polar coordinates. First we create four current features (p var name in the code) and four desired
(pd var name in the code) point features with polar coordinates, set the task to use the interaction matrix associated to the current feature
and than compute the camera velocity
. The current feature
is updated in the while() loop, while
is initialized at the beginning.
If you want to deal only with the subset feature from the 2D point feature set, you have just to modify the addFeature() call in the previous example by the following line. In that case, the dimension of
is four.
If you want to build your own control law, this other example shows how to create a current ( ) and desired (
) 2D point visual feature with polar coordinates, compute the corresponding error vector
and finally build the interaction matrix
.
Definition at line 255 of file vpFeaturePointPolar.h.
|
inherited |
Enumerator | |
---|---|
FEATURE_ALL |
Definition at line 81 of file vpBasicFeature.h.
|
inherited |
Indicates who should deallocate the feature.
Enumerator | |
---|---|
user | |
vpServo |
Definition at line 87 of file vpBasicFeature.h.
vpFeaturePointPolar::vpFeaturePointPolar | ( | ) |
Default constructor that build a 2D point visual feature with polar coordinates and initialize it to .
The 3D depth of the point requested in the interaction matrix (see interaction()) is initialized to .
Definition at line 99 of file vpFeaturePointPolar.cpp.
References init().
Referenced by duplicate().
|
inlinevirtual |
Destructor. Does nothing.
Definition at line 266 of file vpFeaturePointPolar.h.
void vpFeaturePointPolar::buildFrom | ( | double | rho, |
double | theta, | ||
double | Z_ | ||
) |
Build a 2D image point visual feature with polar coordinates.
rho,theta | : Polar coordinates ![]() |
Z_ | : 3D depth of the point in the camera frame. |
vpFeatureException::badInitializationError | If the depth ( ![]() |
vpFeatureException::badInitializationError | If the depth ( ![]() |
Definition at line 467 of file vpFeaturePointPolar.cpp.
References vpFeatureException::badInitializationError, vpBasicFeature::flags, vpBasicFeature::nbParameters, vpBasicFeature::s, and vpERROR_TRACE.
|
inlineinherited |
Return the dimension of the feature vector .
Definition at line 109 of file vpBasicFeature.h.
|
virtual |
Display image point feature.
cam | : Camera parameters. |
I | : Image. |
color | : Color to use for the display |
thickness | : Thickness of the feature representation. |
Implements vpBasicFeature.
Definition at line 503 of file vpFeaturePointPolar.cpp.
References vpFeatureDisplay::displayPoint(), get_rho(), get_theta(), and vpERROR_TRACE.
|
virtual |
Display image point feature.
cam | : Camera parameters. |
I | : color Image. |
color | : Color to use for the display |
thickness | : Thickness of the feature representation. |
Implements vpBasicFeature.
Definition at line 532 of file vpFeaturePointPolar.cpp.
References vpFeatureDisplay::displayPoint(), get_rho(), get_theta(), and vpERROR_TRACE.
|
virtual |
Create an object with the same type.
Implements vpBasicFeature.
Definition at line 563 of file vpFeaturePointPolar.cpp.
References vpFeaturePointPolar().
|
virtual |
Compute the error between the current and the desired visual features from a subset of the possible features.
For the angular component , we define the error as
, where
is modulo
subtraction.
s_star | : Desired 2D image point visual feature with polar coordinates. |
select | : The error can be computed for a selection of a subset of the possible 2D point polar coordinate features.
|
The code below shows how to use this method to manipulate the component.
Reimplemented from vpBasicFeature.
Definition at line 382 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::s, selectRho(), selectTheta(), and vpColVector::stack().
double vpFeaturePointPolar::get_rho | ( | ) | const |
Get the image point polar coordinate.
Definition at line 157 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::s.
Referenced by display(), interaction(), and print().
|
inherited |
Get the feature vector .
Definition at line 112 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().
double vpFeaturePointPolar::get_theta | ( | ) | const |
Get the image point polar coordinate.
Definition at line 164 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::s.
Referenced by display(), interaction(), and print().
double vpFeaturePointPolar::get_Z | ( | ) | const |
Get the 3D point depth in the camera frame.
Definition at line 169 of file vpFeaturePointPolar.cpp.
Referenced by vpFeatureBuilder::create(), interaction(), and print().
|
inlineinherited |
Definition at line 122 of file vpBasicFeature.h.
|
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.
|
virtual |
Initialise the memory space requested for a 2D point visual feature with polar coordinates.
By default this feature is initialized to . The 3D depth of the point requested in the interaction matrix (see interaction()) is initialized to
.
Implements vpBasicFeature.
Definition at line 72 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::dim_s, vpBasicFeature::flags, vpBasicFeature::nbParameters, vpColVector::resize(), and vpBasicFeature::s.
Referenced by vpFeaturePointPolar().
|
virtual |
Compute and return the interaction matrix associated to a subset of the possible 2D image point features with polar coordinates
.
where is the 3D depth of the considered point.
select | : Selection of a subset of the possible polar point coordinate features.
|
vpFeatureException::badInitializationError | : If the point is behind the camera ![]() ![]() ![]() |
The code below shows how to compute the interaction matrix associated to the visual feature .
The interaction matrix could also be build by:
In both cases, L is a 2 by 6 matrix. The first line corresponds to the visual feature while the second one to the
visual feature.
It is also possible to build the interaction matrix associated to one of the possible features. The code below shows how to consider only the component.
In that case, L_theta is a 1 by 6 matrix.
Implements vpBasicFeature.
Definition at line 245 of file vpFeaturePointPolar.cpp.
References vpFeatureException::badInitializationError, vpBasicFeature::deallocate, vpBasicFeature::flags, get_rho(), get_theta(), get_Z(), vpBasicFeature::nbParameters, vpBasicFeature::resetFlags(), selectRho(), selectTheta(), vpMatrix::stack(), vpBasicFeature::user, vpERROR_TRACE, and vpTRACE.
|
inlinevirtualinherited |
Return element i in the state vector (usage : x = s[i] )
Definition at line 129 of file vpBasicFeature.h.
|
virtual |
Print to stdout the values of the current visual feature.
select | : Selection of a subset of the possible 2D image point feature coordinates.
|
Implements vpBasicFeature.
Definition at line 439 of file vpFeaturePointPolar.cpp.
References get_rho(), get_theta(), get_Z(), selectRho(), and selectTheta().
|
protectedinherited |
Definition at line 129 of file vpBasicFeature.cpp.
References vpBasicFeature::flags, and vpBasicFeature::nbParameters.
Referenced by vpFeatureVanishingPoint::interaction(), vpFeatureDepth::interaction(), vpFeatureEllipse::interaction(), vpFeatureLine::interaction(), vpFeaturePoint::interaction(), vpFeaturePoint3D::interaction(), interaction(), vpFeatureThetaU::interaction(), and vpFeatureTranslation::interaction().
|
inlinestaticinherited |
Select all the features.
Definition at line 141 of file vpBasicFeature.h.
|
static |
Function used to select the subset polar coordinate of the image point visual feature.
This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to 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:
Definition at line 592 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::FEATURE_LINE.
Referenced by error(), interaction(), and print().
|
static |
Function used to select the subset polar coordinate of the image point visual feature.
This function is to use in conjunction with interaction() in order to compute the interaction matrix associated to 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:
Definition at line 616 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::FEATURE_LINE.
Referenced by error(), interaction(), and print().
void vpFeaturePointPolar::set_rho | ( | double | rho | ) |
Set the image point polar coordinate.
Definition at line 106 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::flags, and vpBasicFeature::s.
Referenced by vpFeatureBuilder::create(), and set_rhoThetaZ().
void vpFeaturePointPolar::set_rhoThetaZ | ( | double | rho, |
double | theta, | ||
double | Z_ | ||
) |
Initialize the image point visual feature with polar coordinates.
rho,theta | : Polar coordinates ![]() |
Z_ | : 3D depth of the point in the camera frame. |
Definition at line 142 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::flags, vpBasicFeature::nbParameters, set_rho(), set_theta(), and set_Z().
void vpFeaturePointPolar::set_theta | ( | double | theta | ) |
Set the image point polar coordinate.
Definition at line 116 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::flags, and vpBasicFeature::s.
Referenced by vpFeatureBuilder::create(), and set_rhoThetaZ().
void vpFeaturePointPolar::set_Z | ( | double | Z_ | ) |
Set the 3D point depth in the camera frame.
Definition at line 126 of file vpFeaturePointPolar.cpp.
References vpBasicFeature::flags.
Referenced by vpFeatureBuilder::create(), and set_rhoThetaZ().
|
inlineinherited |
Definition at line 136 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 139 of file vpBasicFeature.cpp.
References vpBasicFeature::flags, and vpBasicFeature::nbParameters.
|
protectedinherited |
Definition at line 147 of file vpBasicFeature.h.
Referenced by vpFeatureVanishingPoint::interaction(), vpFeatureDepth::interaction(), vpFeatureEllipse::interaction(), vpFeatureLine::interaction(), vpFeaturePoint::interaction(), vpFeaturePoint3D::interaction(), interaction(), vpFeatureSegment::interaction(), vpFeatureThetaU::interaction(), vpFeatureTranslation::interaction(), and vpBasicFeature::operator=().
|
protectedinherited |
Dimension of the visual feature.
Definition at line 93 of file vpBasicFeature.h.
Referenced by vpFeatureMoment::duplicate(), vpGenericFeature::duplicate(), vpBasicFeature::error(), vpGenericFeature::error(), vpFeatureLuminance::error(), vpBasicFeature::get_s(), vpGenericFeature::get_s(), vpBasicFeature::getDimension(), vpFeatureMoment::getDimension(), vpFeatureDepth::init(), vpFeatureEllipse::init(), vpFeatureLine::init(), vpFeaturePoint::init(), vpFeaturePoint3D::init(), init(), vpFeatureSegment::init(), vpFeatureThetaU::init(), vpFeatureTranslation::init(), vpFeatureVanishingPoint::init(), vpFeatureLuminance::init(), vpFeatureMoment::init(), vpFeatureMoment::interaction(), vpGenericFeature::interaction(), vpFeatureLuminance::interaction(), vpBasicFeature::operator=(), vpFeatureLuminance::operator=(), vpFeatureMoment::print(), vpGenericFeature::print(), vpGenericFeature::set_s(), vpGenericFeature::setError(), vpGenericFeature::setInteractionMatrix(), vpFeatureMoment::update(), vpFeatureLuminance::vpFeatureLuminance(), and vpGenericFeature::vpGenericFeature().
|
staticinherited |
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(), vpFeatureSegment::selectAlpha(), vpFeatureVanishingPoint::selectAlpha(), vpFeatureVanishingPoint::selectAtanOneOverRho(), vpFeatureSegment::selectL(), vpFeatureEllipse::selectMu02(), vpFeatureEllipse::selectMu11(), vpFeatureEllipse::selectMu20(), vpFeatureVanishingPoint::selectOneOverRho(), vpFeatureLine::selectRho(), selectRho(), vpFeatureLine::selectTheta(), 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 iteraction matrix are set.
Definition at line 97 of file vpBasicFeature.h.
Referenced by vpFeatureTranslation::buildFrom(), vpFeaturePoint3D::buildFrom(), vpFeatureLine::buildFrom(), buildFrom(), vpFeatureEllipse::buildFrom(), vpFeaturePoint::buildFrom(), vpFeatureDepth::buildFrom(), vpFeatureThetaU::buildFrom(), vpFeatureMoment::duplicate(), vpFeatureDepth::init(), vpFeatureEllipse::init(), vpFeatureLine::init(), vpFeatureLuminance::init(), vpFeaturePoint::init(), vpFeaturePoint3D::init(), init(), vpFeatureSegment::init(), vpFeatureThetaU::init(), vpFeatureTranslation::init(), vpFeatureVanishingPoint::init(), vpFeatureMoment::init(), vpFeatureVanishingPoint::interaction(), vpFeatureDepth::interaction(), vpFeatureEllipse::interaction(), vpFeatureLine::interaction(), vpFeaturePoint::interaction(), vpFeaturePoint3D::interaction(), interaction(), vpFeatureSegment::interaction(), vpFeatureThetaU::interaction(), vpFeatureTranslation::interaction(), vpBasicFeature::operator=(), vpBasicFeature::resetFlags(), set_rho(), set_rhoThetaZ(), 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(), 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().
|
protectedinherited |
Number of parameters needed to compute the interaction matrix.
Definition at line 99 of file vpBasicFeature.h.
Referenced by vpFeaturePoint3D::buildFrom(), vpFeatureLine::buildFrom(), buildFrom(), vpFeatureEllipse::buildFrom(), vpFeaturePoint::buildFrom(), vpFeatureDepth::buildFrom(), vpFeatureThetaU::buildFrom(), vpFeatureMoment::duplicate(), vpFeatureDepth::init(), vpFeatureEllipse::init(), vpFeatureLine::init(), vpFeatureLuminance::init(), vpFeaturePoint::init(), vpFeaturePoint3D::init(), init(), vpFeatureSegment::init(), vpFeatureThetaU::init(), vpFeatureTranslation::init(), vpFeatureVanishingPoint::init(), vpFeatureMoment::init(), vpFeatureVanishingPoint::interaction(), vpFeatureDepth::interaction(), vpFeatureEllipse::interaction(), vpFeatureLine::interaction(), vpFeaturePoint::interaction(), vpFeaturePoint3D::interaction(), interaction(), vpFeatureSegment::interaction(), vpFeatureThetaU::interaction(), vpFeatureTranslation::interaction(), vpBasicFeature::operator=(), vpBasicFeature::resetFlags(), set_rhoThetaZ(), vpFeaturePoint::set_xyZ(), vpFeaturePoint3D::set_XYZ(), vpFeatureDepth::set_xyZLogZoverZstar(), vpFeatureEllipse::setABC(), vpFeatureLine::setABCD(), vpBasicFeature::setFlags(), vpFeatureMoment::update(), and vpFeatureLuminance::vpFeatureLuminance().
|
protectedinherited |
State of the visual feature.
Definition at line 91 of file vpBasicFeature.h.
Referenced by vpFeatureTranslation::buildFrom(), vpFeaturePoint3D::buildFrom(), vpFeatureLine::buildFrom(), buildFrom(), vpFeatureEllipse::buildFrom(), vpFeaturePoint::buildFrom(), vpFeatureDepth::buildFrom(), vpFeatureLuminance::buildFrom(), vpFeatureThetaU::buildFrom(), vpFeatureEllipse::display(), vpFeatureMoment::duplicate(), vpFeatureVanishingPoint::error(), vpBasicFeature::error(), vpFeatureDepth::error(), vpFeatureEllipse::error(), vpFeatureLine::error(), vpFeatureMomentAlpha::error(), vpFeaturePoint::error(), vpFeaturePoint3D::error(), error(), vpFeatureThetaU::error(), vpFeatureTranslation::error(), vpGenericFeature::error(), vpFeatureLuminance::error(), vpFeatureDepth::get_LogZoverZstar(), get_rho(), vpBasicFeature::get_s(), vpGenericFeature::get_s(), 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(), init(), vpFeatureSegment::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(), vpFeatureSegment::print(), vpFeatureThetaU::print(), vpFeatureTranslation::print(), vpGenericFeature::print(), vpFeatureDepth::set_LogZoverZstar(), set_rho(), vpGenericFeature::set_s(), 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().