Visual Servoing Platform  version 3.1.0
vpForwardProjection Class Referenceabstract

#include <visp3/core/vpForwardProjection.h>

+ Inheritance diagram for vpForwardProjection:

Public Types

enum  vpForwardProjectionDeallocatorType { user, vpDisplayForwardProjection }
 

Public Member Functions

virtual void init ()=0
 
virtual ~vpForwardProjection ()
 
virtual void setWorldCoordinates (const vpColVector &oP)=0
 
virtual void changeFrame (const vpHomogeneousMatrix &cMo, vpColVector &cP)=0
 
virtual void changeFrame (const vpHomogeneousMatrix &cMo)=0
 
virtual void projection (const vpColVector &cP, vpColVector &p)=0
 
virtual void projection ()=0
 
void project ()
 
void project (const vpHomogeneousMatrix &cMo)
 
void track (const vpHomogeneousMatrix &cMo)
 
virtual void display (const vpImage< unsigned char > &I, const vpCameraParameters &cam, const vpColor &color=vpColor::green, const unsigned int thickness=1)=0
 
virtual void display (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &color=vpColor::green, const unsigned int thickness=1)=0
 
virtual void print () const
 
virtual vpForwardProjectionduplicate () const =0
 
 vpForwardProjection ()
 
void setDeallocate (vpForwardProjectionDeallocatorType d)
 
vpForwardProjectionDeallocatorType getDeallocate ()
 

Public Attributes

vpColVector oP
 
vpColVector p
 
vpColVector cP
 
bool cPAvailable
 

Detailed Description

Class that defines what is a generic geometric feature.

Each geometric feature has parameters expressed:

  • in the object frame oP. These parameters are located in the public attribute vpForwardProjection::oP.
  • in the camera frame cP. These parameters are located in the public attribute vpTracker::cP.
  • in the image plane p. These parameters are located in the public attribute vpTracker::p. They correspond to normalized coordinates of the feature expressed in meters.

Definition at line 67 of file vpForwardProjection.h.

Member Enumeration Documentation

◆ vpForwardProjectionDeallocatorType

Used for memory issue especially in the vpServo class.

Enumerator
user 
vpDisplayForwardProjection 

Definition at line 211 of file vpForwardProjection.h.

Constructor & Destructor Documentation

◆ ~vpForwardProjection()

virtual vpForwardProjection::~vpForwardProjection ( )
inlinevirtual

Destructor.

Definition at line 86 of file vpForwardProjection.h.

References vpColor::green.

◆ vpForwardProjection()

vpForwardProjection::vpForwardProjection ( )
inline

Definition at line 217 of file vpForwardProjection.h.

Member Function Documentation

◆ changeFrame() [1/2]

virtual void vpForwardProjection::changeFrame ( const vpHomogeneousMatrix cMo,
vpColVector cP 
)
pure virtual

Computes the features parameters in the camera frame (cP) thanks to the parameters given in the object frame (vpForwardProjection::oP) and the homogeneous matrix relative to the pose (cMo) between the object frame and the camera frame.

To set the parameters in the object frame you need to call setWorldCoordinates().

Parameters
cMo: The homogeneous matrix corresponding to the pose between the camera frame and the object frame.
cP: The vector which will contain the feature parameters expressed in the camera frame.

With this method, the vpTracker::cP public attribute is not updated.

Implemented in vpLine, vpCylinder, vpSphere, vpCircle, and vpPoint.

Referenced by vpCircle::getR(), vpSphere::getR(), vpLine::getRho(), project(), and vpPoint::~vpPoint().

◆ changeFrame() [2/2]

virtual void vpForwardProjection::changeFrame ( const vpHomogeneousMatrix cMo)
pure virtual

Computes the features parameters in the camera frame (cP) thanks to the parameters given in the object frame (vpForwardProjection::oP) and the homogeneous matrix relative to the pose (cMo) between the object frame and the camera frame.

To set the parameters in the object frame you need to call setWorldCoordinates().

Parameters
cMo: The homogeneous matrix corresponding to the pose between the camera frame and the object frame.

The features parameters in the camera frame (cP) are updated in the vpTracker::cP public attribute.

Implemented in vpLine, vpCylinder, vpSphere, vpCircle, and vpPoint.

◆ display() [1/2]

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

Displays the feature in the image I thanks to the 2D feature parameters in the image plane (vpTracker::p) and the camera parameters which enable to convert the features from meter to pixel.

Parameters
I: The image where the feature must be displayed in overlay.
cam: The camera parameters to enable the conversion from meter to pixel.
color: The desired color to display the line in the image.
thickness: Thickness of the feature representation.

Implemented in vpLine, vpCylinder, vpSphere, vpCircle, and vpPoint.

Referenced by vpProjectionDisplay::display(), vpCircle::getR(), vpSphere::getR(), vpLine::getRho(), and vpPoint::~vpPoint().

◆ display() [2/2]

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

Displays the feature in the image I thanks to the features in the object frame (vpForwardProjection::oP), the homogeneous matrix relative to the pose between the object frame and the camera frame and the camera parameters which enable to convert the features from meter to pixel.

Parameters
I: The image where the line must be displayed in overlay.
cMo: The homogeneous matrix corresponding to the pose between the camera frame and the object frame.
cam: The camera parameters to enable the conversion from meter to pixel.
color: The desired color to display the line in the image.
thickness: Thickness of the feature representation.

Implemented in vpLine, vpCylinder, vpSphere, vpCircle, and vpPoint.

◆ duplicate()

virtual vpForwardProjection* vpForwardProjection::duplicate ( ) const
pure virtual

Create an object with the same type.

Implemented in vpLine, vpCylinder, vpSphere, vpCircle, and vpPoint.

Referenced by vpCircle::getR(), vpSphere::getR(), vpLine::getRho(), and vpPoint::~vpPoint().

◆ getDeallocate()

vpForwardProjectionDeallocatorType vpForwardProjection::getDeallocate ( )
inline

Definition at line 220 of file vpForwardProjection.h.

◆ init()

virtual void vpForwardProjection::init ( )
pure virtual

Default initialisation of the feature parameters:

  • in the object frame: oP
  • in the camera frame: cP
  • in the image plane: p.

Implemented in vpCylinder, vpLine, vpPoint, vpSphere, and vpCircle.

Referenced by vpCylinder::getR(), and vpPoint::~vpPoint().

◆ print()

void vpForwardProjection::print ( ) const
virtual

Print to stdout the feature parameters in:

  • the object frame
  • the camera frame
  • the image plane.
Examples:
servoSimuCircle2DCamVelocityDisplay.cpp, servoSimuLine2DCamVelocityDisplay.cpp, and servoSimuSquareLine2DCamVelocityDisplay.cpp.

Definition at line 53 of file vpForwardProjection.cpp.

References vpTracker::cP, oP, vpTracker::p, and vpColVector::t().

◆ project() [1/2]

◆ project() [2/2]

void vpForwardProjection::project ( const vpHomogeneousMatrix cMo)

Compute the feature parameters in the camera frame (vpTracker::cP) and than compute the projection of these parameters in the image plane (vpTracker::p).

Warning
The feature parameters in the object frame (vpForwardProjection:oP) need to be set prior the use of this method. To initialize these parameters see setWorldCoordinates().
Parameters
cMo: The homogeneous matrix corresponding to the pose between the camera frame and the object frame.

Definition at line 84 of file vpForwardProjection.cpp.

References changeFrame(), projection(), and vpERROR_TRACE.

◆ projection() [1/2]

virtual void vpForwardProjection::projection ( const vpColVector cP,
vpColVector p 
)
pure virtual

Computes the feature parameters in the image plane from the parameters expressed in the camera frame.

Parameters
cP[input] : Feature parameters expressed in the camera frame.
p[output] : Feature parameters expressed in the image plane.

Implemented in vpCylinder, vpLine, vpPoint, vpSphere, and vpCircle.

◆ projection() [2/2]

virtual void vpForwardProjection::projection ( )
pure virtual

Computes the feature parameters in the image plane. These parameters are than updated in the vpTracker::p public attribute.

Warning
To compute these parameters, the method exploit the feature parameters in the camera frame. Thus, vpTracker::cP need to be updated before the call of this method. For that, a call to changeFrame(const vpHomogeneousMatrix &) is requested.

Implemented in vpCylinder, vpLine, vpPoint, vpSphere, and vpCircle.

Referenced by vpCircle::getR(), vpSphere::getR(), vpCylinder::getR(), vpLine::getRho(), project(), and vpPoint::~vpPoint().

◆ setDeallocate()

void vpForwardProjection::setDeallocate ( vpForwardProjectionDeallocatorType  d)
inline

Definition at line 219 of file vpForwardProjection.h.

◆ setWorldCoordinates()

virtual void vpForwardProjection::setWorldCoordinates ( const vpColVector oP)
pure virtual

Sets the parameters which define the feature in the object frame.

Parameters
oP: Feature parameters expressed in the object frame used to set the vpForwardProjection::oP public attribute.

Implemented in vpCylinder, vpLine, vpPoint, vpSphere, and vpCircle.

Referenced by vpCylinder::getR(), vpLine::getRho(), and vpPoint::~vpPoint().

◆ track()

void vpForwardProjection::track ( const vpHomogeneousMatrix cMo)

Track the feature parameters in the camera frame (vpTracker::cP) and than compute the projection of these parameters in the image plane (vpTracker::p).

This method is similar to project(const vpHomogeneousMatrix &).

Warning
The feature parameters in the object frame (vpForwardProjection:oP) need to be set prior the use of this method. To initialize these parameters see setWorldCoordinates().
Parameters
cMo: The homogeneous matrix corresponding to the pose between the camera frame and the object frame.
Examples:
servoMomentPoints.cpp, servoMomentPolygon.cpp, servoSimu4Points.cpp, servoSimuAfma6FourPoints2DCamVelocity.cpp, servoSimuCircle2DCamVelocity.cpp, servoSimuCircle2DCamVelocityDisplay.cpp, servoSimuFourPoints2DCamVelocity.cpp, servoSimuFourPoints2DCamVelocityDisplay.cpp, servoSimuFourPoints2DPolarCamVelocityDisplay.cpp, servoSimuLine2DCamVelocityDisplay.cpp, servoSimuSphere.cpp, servoSimuSphere2DCamVelocity.cpp, servoSimuSphere2DCamVelocitySecondaryTask.cpp, servoSimuSquareLine2DCamVelocityDisplay.cpp, servoSimuViper850FourPoints2DCamVelocity.cpp, simulateCircle2DCamVelocity.cpp, simulateFourPoints2DCartesianCamVelocity.cpp, simulateFourPoints2DPolarCamVelocity.cpp, tutorial-ibvs-4pts-ogre.cpp, tutorial-ibvs-4pts-plotter-continuous-gain-adaptive.cpp, tutorial-ibvs-4pts-plotter-gain-adaptive.cpp, tutorial-ibvs-4pts-plotter.cpp, tutorial-ibvs-4pts.cpp, tutorial-simu-pioneer-continuous-gain-adaptive.cpp, tutorial-simu-pioneer-continuous-gain-constant.cpp, tutorial-simu-pioneer-pan.cpp, and tutorial-simu-pioneer.cpp.

Definition at line 111 of file vpForwardProjection.cpp.

References project(), and vpERROR_TRACE.

Referenced by vpPoseFeatures::addFeatureSegment(), vpPose::computeResidual(), vpProjectionDisplay::displayCamera(), vpPose::poseRansac(), vpPose::poseVirtualVS(), vpPose::poseVirtualVSrobust(), vpWireFrameSimulator::projectCameraTrajectory(), vpSimulatorAfma6::updateArticularPosition(), and vpSimulatorViper850::updateArticularPosition().

Member Data Documentation

◆ cP

◆ cPAvailable

bool vpTracker::cPAvailable
inherited

Flag used to indicate if the feature parameters cP expressed in the camera frame are available.

Definition at line 81 of file vpTracker.h.

Referenced by vpTracker::init(), vpTracker::operator=(), and vpPoint::operator=().

◆ oP

◆ p