Visual Servoing Platform  version 3.1.0
vpMbtDistanceCircle Class Reference

#include <visp3/mbt/vpMbtDistanceCircle.h>

Public Member Functions

 vpMbtDistanceCircle ()
 
 ~vpMbtDistanceCircle ()
 
void buildFrom (const vpPoint &_p1, const vpPoint &_p2, const vpPoint &_p3, const double r)
 
void computeInteractionMatrixError (const vpHomogeneousMatrix &cMo)
 
void display (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, const unsigned int thickness=1, const bool displayFullModel=false)
 
void display (const vpImage< vpRGBa > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, const unsigned int thickness=1, const bool displayFullModel=false)
 
void displayMovingEdges (const vpImage< unsigned char > &I)
 
void getCameraParameters (vpCameraParameters &camera)
 
unsigned int getIndex ()
 
double getMeanWeight () const
 
std::string getName () const
 
void initInteractionMatrixError ()
 
bool initMovingEdge (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
 
bool isTracked () const
 
bool isVisible () const
 
void reinitMovingEdge (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
 
void setCameraParameters (const vpCameraParameters &camera)
 
void setTracked (const bool &track)
 
void setIndex (const unsigned int i)
 
void setMeanWeight (const double _wmean)
 
void setMovingEdge (vpMe *Me)
 
void setName (const std::string &circle_name)
 
void setName (const char *circle_name)
 
void setVisible (bool _isvisible)
 
void trackMovingEdge (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
 
void updateMovingEdge (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo)
 

Public Attributes

vpMbtMeEllipse * meEllipse
 
vpCirclecircle
 
double radius
 
vpPointp1
 
vpPointp2
 
vpPointp3
 
vpMatrix L
 
vpColVector error
 
unsigned int nbFeature
 
bool Reinit
 
vpMbHiddenFaces< vpMbtPolygon > * hiddenface
 
int index_polygon
 
bool isvisible
 

Detailed Description

Manage a circle used in the model-based tracker.

Definition at line 61 of file vpMbtDistanceCircle.h.

Constructor & Destructor Documentation

◆ vpMbtDistanceCircle()

vpMbtDistanceCircle::vpMbtDistanceCircle ( )

Basic constructor

Definition at line 61 of file vpMbtDistanceCircle.cpp.

◆ ~vpMbtDistanceCircle()

vpMbtDistanceCircle::~vpMbtDistanceCircle ( )

Basic destructor useful to deallocate the memory.

Definition at line 71 of file vpMbtDistanceCircle.cpp.

References circle, meEllipse, p1, p2, p3, and vpForwardProjection::project().

Member Function Documentation

◆ buildFrom()

void vpMbtDistanceCircle::buildFrom ( const vpPoint _p1,
const vpPoint _p2,
const vpPoint _p3,
const double  r 
)

Build a vpMbtDistanceCircle thanks to its center, 3 points (including the center) with coordinates expressed in the object frame and defining the plane that contain the circle and its radius.

Parameters
_p1: Center of the circle.
_p2,_p3: Two points on the plane containing the circle. With the center of the circle we have 3 points defining the plane that contains the circle.
r: Radius of the circle.

Definition at line 103 of file vpMbtDistanceCircle.cpp.

References circle, vpPoint::get_oX(), vpPoint::get_oY(), vpPoint::get_oZ(), vpPlane::getA(), vpPlane::getB(), vpPlane::getC(), vpPlane::object_frame, p1, p2, p3, radius, and vpCircle::setWorldCoordinates().

Referenced by vpMbKltTracker::addCircle(), and vpMbEdgeTracker::addCircle().

◆ computeInteractionMatrixError()

◆ display() [1/2]

void vpMbtDistanceCircle::display ( const vpImage< unsigned char > &  I,
const vpHomogeneousMatrix cMo,
const vpCameraParameters camera,
const vpColor col,
const unsigned int  thickness = 1,
const bool  displayFullModel = false 
)

Display the circle. The 3D circle is projected into the image as an ellipse.

Parameters
I: The image.
cMo: Pose used to project the 3D model into the image.
camera: The camera parameters.
col: The desired color.
thickness: The thickness of the lines.
displayFullModel: When true, display the circle even if non visible. If false, display the circle only if visible.

Definition at line 267 of file vpMbtDistanceCircle.cpp.

References vpCircle::changeFrame(), circle, vpMeterPixelConversion::convertEllipse(), vpDisplay::displayEllipse(), isvisible, and vpCircle::projection().

◆ display() [2/2]

void vpMbtDistanceCircle::display ( const vpImage< vpRGBa > &  I,
const vpHomogeneousMatrix cMo,
const vpCameraParameters camera,
const vpColor col,
const unsigned int  thickness = 1,
const bool  displayFullModel = false 
)

Display the cylinder. The 3D cylinder is projected into the image.

Parameters
I: The image.
cMo: Pose used to project the 3D model into the image.
camera: The camera parameters.
col: The desired color.
thickness: The thickness of the lines.
displayFullModel: When true, display the circle even if non visible. If false, display the circle only if visible.

Definition at line 299 of file vpMbtDistanceCircle.cpp.

References vpCircle::changeFrame(), circle, vpMeterPixelConversion::convertEllipse(), vpDisplay::displayEllipse(), isvisible, and vpCircle::projection().

◆ displayMovingEdges()

void vpMbtDistanceCircle::displayMovingEdges ( const vpImage< unsigned char > &  I)

Enable to display the points along the ellipse with a color corresponding to their state.

  • If green : The vpMeSite is a good point.
  • If blue : The point is removed because of the vpMeSite tracking phase (constrast problem).
  • If purple : The point is removed because of the vpMeSite tracking phase (threshold problem).
  • If blue : The point is removed because of the robust method in the virtual visual servoing.
Parameters
I: The image.

Definition at line 334 of file vpMbtDistanceCircle.cpp.

References vpDisplay::flush(), meEllipse, and vpDEBUG_ENABLE.

Referenced by vpMbEdgeTracker::displayFeaturesOnImage(), and vpMbEdgeKltTracker::postTracking().

◆ getCameraParameters()

void vpMbtDistanceCircle::getCameraParameters ( vpCameraParameters camera)
inline

Get the camera paramters.

Parameters
camera: The vpCameraParameters used to store the camera parameters.

Definition at line 144 of file vpMbtDistanceCircle.h.

◆ getIndex()

unsigned int vpMbtDistanceCircle::getIndex ( )
inline

Get the index of the circle.

Returns
Return the index of the line.

Definition at line 151 of file vpMbtDistanceCircle.h.

◆ getMeanWeight()

double vpMbtDistanceCircle::getMeanWeight ( ) const
inline

Get the mean weight of the circle. The mean weight is computed thanks to the weight of each moving edge. Those weights are computed by the robust estimation method used during the virtual visual servoing.

Returns
The mean weight of the circle.

Definition at line 160 of file vpMbtDistanceCircle.h.

◆ getName()

std::string vpMbtDistanceCircle::getName ( ) const
inline

Get the name of the circle.

Returns
Return the name of the circle.

Definition at line 167 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::removeCircle().

◆ initInteractionMatrixError()

void vpMbtDistanceCircle::initInteractionMatrixError ( )

Get the polygon associated to the circle.

Returns
poly.

Initialize the size of the interaction matrix and the error vector.

Definition at line 346 of file vpMbtDistanceCircle.cpp.

References error, isvisible, L, meEllipse, nbFeature, vpArray2D< Type >::resize(), and vpColVector::resize().

Referenced by vpMbEdgeKltTracker::initMbtTracking(), and vpMbEdgeTracker::initMbtTracking().

◆ initMovingEdge()

bool vpMbtDistanceCircle::initMovingEdge ( const vpImage< unsigned char > &  I,
const vpHomogeneousMatrix cMo 
)

Initialize the moving edge thanks to a given pose of the camera. The 3D model is projected into the image to create moving edges along the circle.

Parameters
I: The image.
cMo: The pose of the camera used to initialize the moving edges.
Returns
false if an error occur, true otherwise.

Definition at line 146 of file vpMbtDistanceCircle.cpp.

References vpCircle::changeFrame(), circle, vpMeterPixelConversion::convertEllipse(), vpMe::getRange(), isvisible, meEllipse, and vpCircle::projection().

Referenced by vpMbEdgeTracker::initMovingEdge(), reinitMovingEdge(), and vpMbEdgeTracker::trackMovingEdge().

◆ isTracked()

◆ isVisible()

bool vpMbtDistanceCircle::isVisible ( ) const
inline

◆ reinitMovingEdge()

void vpMbtDistanceCircle::reinitMovingEdge ( const vpImage< unsigned char > &  I,
const vpHomogeneousMatrix cMo 
)

Reinitialize the circle if it is required.

A circle is reinitialized if the ellipse do not match enough with the projected 3D circle.

Parameters
I: the image.
cMo: The pose of the camera.

Definition at line 243 of file vpMbtDistanceCircle.cpp.

References initMovingEdge(), meEllipse, and Reinit.

Referenced by vpMbEdgeTracker::reInitLevel(), and vpMbEdgeTracker::reinitMovingEdge().

◆ setCameraParameters()

void vpMbtDistanceCircle::setCameraParameters ( const vpCameraParameters camera)
inline

Set the camera paramters.

Parameters
camera: The camera parameters.

Definition at line 199 of file vpMbtDistanceCircle.h.

Referenced by vpMbKltTracker::addCircle(), and vpMbEdgeTracker::addCircle().

◆ setIndex()

void vpMbtDistanceCircle::setIndex ( const unsigned int  i)
inline

Set the index of the circle.

Parameters
i: The index number

Definition at line 213 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::addCircle().

◆ setMeanWeight()

void vpMbtDistanceCircle::setMeanWeight ( const double  _wmean)
inline

Set the mean weight of the circle.

Parameters
_wmean: The mean weight of the circle.

Definition at line 220 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeKltTracker::postTrackingMbt(), and vpMbEdgeTracker::updateMovingEdgeWeights().

◆ setMovingEdge()

void vpMbtDistanceCircle::setMovingEdge ( vpMe _me)

Set the moving edge parameters.

Parameters
_me: an instance of vpMe containing all the desired parameters

Definition at line 129 of file vpMbtDistanceCircle.cpp.

References meEllipse.

Referenced by vpMbEdgeTracker::addCircle(), and vpMbEdgeTracker::setMovingEdge().

◆ setName() [1/2]

void vpMbtDistanceCircle::setName ( const std::string &  circle_name)
inline

Set the name of the circle.

Parameters
circle_name: The name of the circle.

Definition at line 229 of file vpMbtDistanceCircle.h.

Referenced by vpMbKltTracker::addCircle(), and vpMbEdgeTracker::addCircle().

◆ setName() [2/2]

void vpMbtDistanceCircle::setName ( const char *  circle_name)
inline

Set the name of the circle.

Parameters
circle_name: The name of the circle.

Definition at line 236 of file vpMbtDistanceCircle.h.

◆ setTracked()

void vpMbtDistanceCircle::setTracked ( const bool &  track)
inline

Set if the circle has to considered during tracking phase.

Parameters
track: True if the circle has to be tracked, False otherwise.

Definition at line 206 of file vpMbtDistanceCircle.h.

◆ setVisible()

void vpMbtDistanceCircle::setVisible ( bool  _isvisible)
inline

Set a boolean parameter to indicates if the circle is visible in the image or not.

Parameters
_isvisible: Set to true if the circle is visible

Definition at line 244 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::initMovingEdge().

◆ trackMovingEdge()

void vpMbtDistanceCircle::trackMovingEdge ( const vpImage< unsigned char > &  I,
const vpHomogeneousMatrix cMo 
)

Track the moving edges in the image.

Parameters
I: the image.
cMo: The pose of the camera.

Definition at line 185 of file vpMbtDistanceCircle.cpp.

References isvisible, meEllipse, nbFeature, and Reinit.

Referenced by vpMbEdgeTracker::trackMovingEdge().

◆ updateMovingEdge()

void vpMbtDistanceCircle::updateMovingEdge ( const vpImage< unsigned char > &  I,
const vpHomogeneousMatrix cMo 
)

Update the moving edges internal parameters.

Warning
: Not implemented.
Parameters
I: the image.
cMo: The pose of the camera.

Definition at line 209 of file vpMbtDistanceCircle.cpp.

References vpCircle::changeFrame(), circle, vpMeterPixelConversion::convertEllipse(), isvisible, meEllipse, nbFeature, vpCircle::projection(), and Reinit.

Referenced by vpMbEdgeTracker::updateMovingEdge().

Member Data Documentation

◆ circle

vpCircle* vpMbtDistanceCircle::circle

◆ error

◆ hiddenface

vpMbHiddenFaces<vpMbtPolygon>* vpMbtDistanceCircle::hiddenface

Pointer to the list of faces.

Definition at line 101 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::addCircle(), and vpMbEdgeTracker::initMovingEdge().

◆ index_polygon

int vpMbtDistanceCircle::index_polygon

Index of the faces which contain the line.

Definition at line 103 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::addCircle(), and vpMbEdgeTracker::initMovingEdge().

◆ isvisible

bool vpMbtDistanceCircle::isvisible

Indicates if the circle is visible or not.

Definition at line 105 of file vpMbtDistanceCircle.h.

Referenced by computeInteractionMatrixError(), display(), initInteractionMatrixError(), initMovingEdge(), trackMovingEdge(), and updateMovingEdge().

◆ L

◆ meEllipse

◆ nbFeature

◆ p1

vpPoint* vpMbtDistanceCircle::p1

The center of the circle.

Definition at line 86 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::addCircle(), buildFrom(), and ~vpMbtDistanceCircle().

◆ p2

vpPoint* vpMbtDistanceCircle::p2

A point on the plane containing the circle.

Definition at line 88 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::addCircle(), buildFrom(), and ~vpMbtDistanceCircle().

◆ p3

vpPoint* vpMbtDistanceCircle::p3

An other point on the plane containing the circle.

Definition at line 90 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::addCircle(), buildFrom(), and ~vpMbtDistanceCircle().

◆ radius

double vpMbtDistanceCircle::radius

The radius of the circle.

Definition at line 83 of file vpMbtDistanceCircle.h.

Referenced by vpMbEdgeTracker::addCircle(), and buildFrom().

◆ Reinit