Visual Servoing Platform  version 3.1.0
vpMbtFaceDepthNormal Class Reference

#include <visp3/mbt/vpMbtFaceDepthNormal.h>

Public Types

enum  vpFaceCentroidType { GEOMETRIC_CENTROID, MEAN_CENTROID }
 
enum  vpFeatureEstimationType { ROBUST_FEATURE_ESTIMATION = 0, ROBUST_SVD_PLANE_ESTIMATION = 1, PCL_PLANE_ESTIMATION = 2 }
 

Public Member Functions

 vpMbtFaceDepthNormal ()
 
virtual ~vpMbtFaceDepthNormal ()
 
void addLine (vpPoint &p1, vpPoint &p2, vpMbHiddenFaces< vpMbtPolygon > *const faces, int polygon=-1, std::string name="")
 
bool computeDesiredFeatures (const vpHomogeneousMatrix &cMo, const unsigned int width, const unsigned int height, const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &point_cloud, vpColVector &desired_features, const unsigned int stepX, const unsigned int stepY)
 
bool computeDesiredFeatures (const vpHomogeneousMatrix &cMo, const unsigned int width, const unsigned int height, const std::vector< vpColVector > &point_cloud, vpColVector &desired_features, const unsigned int stepX, const unsigned int stepY)
 
void computeInteractionMatrix (const vpHomogeneousMatrix &cMo, vpMatrix &L, vpColVector &features)
 
void computeVisibility ()
 
void computeVisibilityDisplay ()
 
void computeNormalVisibility (const double nx, const double ny, const double nz, const vpColVector &centroid_point, vpColVector &face_normal)
 
void computeNormalVisibility (const float nx, const float ny, const float nz, const pcl::PointXYZ &centroid_point, pcl::PointXYZ &face_normal)
 
void computeNormalVisibility (const double nx, const double ny, const double nz, const vpHomogeneousMatrix &cMo, const vpCameraParameters &camera, vpColVector &correct_normal, vpPoint &centroid)
 
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 displayFeature (const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const double scale=0.05, const unsigned int thickness=1)
 
void displayFeature (const vpImage< vpRGBa > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const double scale=0.05, const unsigned int thickness=1)
 
bool isVisible () const
 
void setCameraParameters (const vpCameraParameters &camera)
 
void setFaceCentroidMethod (const vpFaceCentroidType &method)
 
void setFeatureEstimationMethod (const vpFeatureEstimationType &method)
 
void setPclPlaneEstimationMethod (const int method)
 
void setPclPlaneEstimationRansacMaxIter (const int maxIter)
 
void setPclPlaneEstimationRansacThreshold (const double threshold)
 
void setScanLineVisibilityTest (const bool v)
 

Public Attributes

vpCameraParameters m_cam
 
unsigned int m_clippingFlag
 
double m_distFarClip
 
double m_distNearClip
 
vpMbHiddenFaces< vpMbtPolygon > * m_hiddenFace
 
vpPlane m_planeObject
 
vpMbtPolygonm_polygon
 
bool m_useScanLine
 

Protected Member Functions

bool computeDesiredFeaturesPCL (const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &point_cloud_face, vpColVector &desired_features, vpColVector &desired_normal, vpColVector &centroid_point)
 
void computeDesiredFeaturesRobustFeatures (const std::vector< double > &point_cloud_face_custom, const std::vector< double > &point_cloud_face, const vpHomogeneousMatrix &cMo, vpColVector &desired_features, vpColVector &desired_normal, vpColVector &centroid_point)
 
void computeDesiredFeaturesSVD (const std::vector< double > &point_cloud_face, const vpHomogeneousMatrix &cMo, vpColVector &desired_features, vpColVector &desired_normal, vpColVector &centroid_point)
 
void computeDesiredNormalAndCentroid (const vpHomogeneousMatrix &cMo, const vpColVector &desired_normal, const vpColVector &centroid_point)
 
bool computePolygonCentroid (const std::vector< vpPoint > &points, vpPoint &centroid)
 
void computeROI (const vpHomogeneousMatrix &cMo, const unsigned int width, const unsigned int height, std::vector< vpImagePoint > &roiPts)
 
void estimateFeatures (const std::vector< double > &point_cloud_face, const vpHomogeneousMatrix &cMo, vpColVector &x_estimated, std::vector< double > &weights)
 
void estimatePlaneEquationSVD (const std::vector< double > &point_cloud_face, const vpHomogeneousMatrix &cMo, vpColVector &plane_equation_estimated, vpColVector &centroid)
 
bool samePoint (const vpPoint &P1, const vpPoint &P2) const
 

Protected Attributes

bool m_faceActivated
 
vpFaceCentroidType m_faceCentroidMethod
 
vpPoint m_faceDesiredCentroid
 
vpPoint m_faceDesiredNormal
 
vpFeatureEstimationType m_featureEstimationMethod
 
bool m_isTracked
 
bool m_isVisible
 
std::vector< vpMbtDistanceLine * > m_listOfFaceLines
 
vpPlane m_planeCamera
 
int m_pclPlaneEstimationMethod
 
int m_pclPlaneEstimationRansacMaxIter
 
double m_pclPlaneEstimationRansacThreshold
 
std::vector< PolygonLine > m_polygonLines
 

Detailed Description

Definition at line 53 of file vpMbtFaceDepthNormal.h.

Member Enumeration Documentation

◆ vpFaceCentroidType

Enumerator
GEOMETRIC_CENTROID 

Compute the geometric centroid.

MEAN_CENTROID 

Compute the mean centroid.

Definition at line 56 of file vpMbtFaceDepthNormal.h.

◆ vpFeatureEstimationType

Enumerator
ROBUST_FEATURE_ESTIMATION 
ROBUST_SVD_PLANE_ESTIMATION 
PCL_PLANE_ESTIMATION 

Definition at line 61 of file vpMbtFaceDepthNormal.h.

Constructor & Destructor Documentation

◆ vpMbtFaceDepthNormal()

vpMbtFaceDepthNormal::vpMbtFaceDepthNormal ( )

Definition at line 58 of file vpMbtFaceDepthNormal.cpp.

◆ ~vpMbtFaceDepthNormal()

vpMbtFaceDepthNormal::~vpMbtFaceDepthNormal ( )
virtual

Definition at line 68 of file vpMbtFaceDepthNormal.cpp.

References m_listOfFaceLines.

Member Function Documentation

◆ addLine()

void vpMbtFaceDepthNormal::addLine ( vpPoint P1,
vpPoint P2,
vpMbHiddenFaces< vpMbtPolygon > *const  faces,
int  polygon = -1,
std::string  name = "" 
)

Add a line belonging to the $ index $ the polygon to the list of lines. It is defined by its two extremities.

If the line already exists, the ploygone's index is added to the list of polygon to which it belongs.

Parameters
P1: The first extremity of the line.
P2: The second extremity of the line.
faces: Pointer to vpMbHiddenFaces.
polygon: The index of the polygon to which the line belongs.
name: the optional name of the line

Definition at line 88 of file vpMbtFaceDepthNormal.cpp.

References vpMbtDistanceLine::addPolygon(), vpMbtDistanceLine::buildFrom(), vpPolygon3D::FAR_CLIPPING, vpMbtDistanceLine::getPolygon(), vpMbtDistanceLine::hiddenface, m_cam, m_clippingFlag, m_distFarClip, m_distNearClip, m_listOfFaceLines, m_polygonLines, m_useScanLine, vpPolygon3D::NEAR_CLIPPING, vpPolygon3D::NO_CLIPPING, vpMbtDistanceLine::p1, vpMbtDistanceLine::p2, samePoint(), vpMbtDistanceLine::setCameraParameters(), vpPolygon3D::setClipping(), vpPolygon3D::setFarClippingDistance(), vpMbtDistanceLine::setIndex(), vpMbtDistanceLine::setName(), vpPolygon3D::setNearClippingDistance(), and vpMbtDistanceLine::useScanLine.

Referenced by vpMbDepthNormalTracker::addFace().

◆ computeDesiredFeatures() [1/2]

◆ computeDesiredFeatures() [2/2]

◆ computeDesiredFeaturesPCL()

bool vpMbtFaceDepthNormal::computeDesiredFeaturesPCL ( const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &  point_cloud_face,
vpColVector desired_features,
vpColVector desired_normal,
vpColVector centroid_point 
)
protected

◆ computeDesiredFeaturesRobustFeatures()

void vpMbtFaceDepthNormal::computeDesiredFeaturesRobustFeatures ( const std::vector< double > &  point_cloud_face_custom,
const std::vector< double > &  point_cloud_face,
const vpHomogeneousMatrix cMo,
vpColVector desired_features,
vpColVector desired_normal,
vpColVector centroid_point 
)
protected

Definition at line 528 of file vpMbtFaceDepthNormal.cpp.

References computeNormalVisibility(), and estimateFeatures().

Referenced by computeDesiredFeatures().

◆ computeDesiredFeaturesSVD()

void vpMbtFaceDepthNormal::computeDesiredFeaturesSVD ( const std::vector< double > &  point_cloud_face,
const vpHomogeneousMatrix cMo,
vpColVector desired_features,
vpColVector desired_normal,
vpColVector centroid_point 
)
protected

◆ computeDesiredNormalAndCentroid()

void vpMbtFaceDepthNormal::computeDesiredNormalAndCentroid ( const vpHomogeneousMatrix cMo,
const vpColVector desired_normal,
const vpColVector centroid_point 
)
protected

◆ computeInteractionMatrix()

void vpMbtFaceDepthNormal::computeInteractionMatrix ( const vpHomogeneousMatrix cMo,
vpMatrix L,
vpColVector features 
)

◆ computeNormalVisibility() [1/3]

void vpMbtFaceDepthNormal::computeNormalVisibility ( const double  nx,
const double  ny,
const double  nz,
const vpColVector centroid_point,
vpColVector face_normal 
)

◆ computeNormalVisibility() [2/3]

void vpMbtFaceDepthNormal::computeNormalVisibility ( const float  nx,
const float  ny,
const float  nz,
const pcl::PointXYZ &  centroid_point,
pcl::PointXYZ &  face_normal 
)

Definition at line 809 of file vpMbtFaceDepthNormal.cpp.

References vpColVector::dotProd(), and vpColVector::normalize().

◆ computeNormalVisibility() [3/3]

◆ computePolygonCentroid()

bool vpMbtFaceDepthNormal::computePolygonCentroid ( const std::vector< vpPoint > &  points,
vpPoint centroid 
)
protected

◆ computeROI()

◆ computeVisibility()

void vpMbtFaceDepthNormal::computeVisibility ( )

◆ computeVisibilityDisplay()

void vpMbtFaceDepthNormal::computeVisibilityDisplay ( )

◆ display() [1/2]

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

◆ display() [2/2]

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

◆ displayFeature() [1/2]

◆ displayFeature() [2/2]

◆ estimateFeatures()

void vpMbtFaceDepthNormal::estimateFeatures ( const std::vector< double > &  point_cloud_face,
const vpHomogeneousMatrix cMo,
vpColVector x_estimated,
std::vector< double > &  weights 
)
protected

◆ estimatePlaneEquationSVD()

void vpMbtFaceDepthNormal::estimatePlaneEquationSVD ( const std::vector< double > &  point_cloud_face,
const vpHomogeneousMatrix cMo,
vpColVector plane_equation_estimated,
vpColVector centroid 
)
protected

◆ isVisible()

bool vpMbtFaceDepthNormal::isVisible ( ) const
inline

◆ samePoint()

bool vpMbtFaceDepthNormal::samePoint ( const vpPoint P1,
const vpPoint P2 
) const
protected

Check if two vpPoints are similar.

To be similar : $ (X_1 - X_2)^2 + (Y_1 - Y_2)^2 + (Z_1 - Z_2)^2 < epsilon $.

Parameters
P1: The first point to compare
P2: The second point to compare

Definition at line 1493 of file vpMbtFaceDepthNormal.cpp.

References vpPoint::get_oX(), vpPoint::get_oY(), and vpPoint::get_oZ().

Referenced by addLine().

◆ setCameraParameters()

void vpMbtFaceDepthNormal::setCameraParameters ( const vpCameraParameters camera)

Definition at line 1506 of file vpMbtFaceDepthNormal.cpp.

References m_cam, and m_listOfFaceLines.

◆ setFaceCentroidMethod()

void vpMbtFaceDepthNormal::setFaceCentroidMethod ( const vpFaceCentroidType method)
inline

Definition at line 139 of file vpMbtFaceDepthNormal.h.

◆ setFeatureEstimationMethod()

void vpMbtFaceDepthNormal::setFeatureEstimationMethod ( const vpFeatureEstimationType method)
inline

Definition at line 141 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace().

◆ setPclPlaneEstimationMethod()

void vpMbtFaceDepthNormal::setPclPlaneEstimationMethod ( const int  method)
inline

Definition at line 143 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace().

◆ setPclPlaneEstimationRansacMaxIter()

void vpMbtFaceDepthNormal::setPclPlaneEstimationRansacMaxIter ( const int  maxIter)
inline

Definition at line 145 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace().

◆ setPclPlaneEstimationRansacThreshold()

void vpMbtFaceDepthNormal::setPclPlaneEstimationRansacThreshold ( const double  threshold)
inline

Definition at line 147 of file vpMbtFaceDepthNormal.h.

References vpPolygon3D::p.

Referenced by vpMbDepthNormalTracker::addFace().

◆ setScanLineVisibilityTest()

void vpMbtFaceDepthNormal::setScanLineVisibilityTest ( const bool  v)

Definition at line 1516 of file vpMbtFaceDepthNormal.cpp.

References m_listOfFaceLines, and m_useScanLine.

Member Data Documentation

◆ m_cam

vpCameraParameters vpMbtFaceDepthNormal::m_cam

Camera intrinsic parameters.

Definition at line 70 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace(), addLine(), computeDesiredFeatures(), computeROI(), and setCameraParameters().

◆ m_clippingFlag

unsigned int vpMbtFaceDepthNormal::m_clippingFlag

Flags specifying which clipping to used.

Definition at line 72 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace(), addLine(), and computeROI().

◆ m_distFarClip

double vpMbtFaceDepthNormal::m_distFarClip

Distance for near clipping.

Definition at line 74 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace(), and addLine().

◆ m_distNearClip

double vpMbtFaceDepthNormal::m_distNearClip

Distance for near clipping.

Definition at line 76 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace(), and addLine().

◆ m_faceActivated

bool vpMbtFaceDepthNormal::m_faceActivated
protected

True if the face should be considered by the tracker.

Definition at line 231 of file vpMbtFaceDepthNormal.h.

Referenced by computeDesiredFeatures(), and displayFeature().

◆ m_faceCentroidMethod

vpFaceCentroidType vpMbtFaceDepthNormal::m_faceCentroidMethod
protected

Method to compute the face centroid for the current features.

Definition at line 233 of file vpMbtFaceDepthNormal.h.

Referenced by computeNormalVisibility().

◆ m_faceDesiredCentroid

vpPoint vpMbtFaceDepthNormal::m_faceDesiredCentroid
protected

Desired centroid (computed from the sensor)

Definition at line 235 of file vpMbtFaceDepthNormal.h.

Referenced by computeDesiredNormalAndCentroid(), and displayFeature().

◆ m_faceDesiredNormal

vpPoint vpMbtFaceDepthNormal::m_faceDesiredNormal
protected

Face (normalized) normal (computed from the sensor)

Definition at line 237 of file vpMbtFaceDepthNormal.h.

Referenced by computeDesiredNormalAndCentroid(), and displayFeature().

◆ m_featureEstimationMethod

vpFeatureEstimationType vpMbtFaceDepthNormal::m_featureEstimationMethod
protected

Method to estimate the desired features.

Definition at line 239 of file vpMbtFaceDepthNormal.h.

Referenced by computeDesiredFeatures().

◆ m_hiddenFace

vpMbHiddenFaces<vpMbtPolygon>* vpMbtFaceDepthNormal::m_hiddenFace

Pointer to the list of faces.

Definition at line 78 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace(), computeDesiredFeatures(), and computeROI().

◆ m_isTracked

bool vpMbtFaceDepthNormal::m_isTracked
protected

Definition at line 241 of file vpMbtFaceDepthNormal.h.

◆ m_isVisible

bool vpMbtFaceDepthNormal::m_isVisible
protected

Definition at line 243 of file vpMbtFaceDepthNormal.h.

Referenced by computeVisibility(), and displayFeature().

◆ m_listOfFaceLines

std::vector<vpMbtDistanceLine *> vpMbtFaceDepthNormal::m_listOfFaceLines
protected

◆ m_pclPlaneEstimationMethod

int vpMbtFaceDepthNormal::m_pclPlaneEstimationMethod
protected

PCL plane estimation method.

Definition at line 250 of file vpMbtFaceDepthNormal.h.

Referenced by computeDesiredFeaturesPCL().

◆ m_pclPlaneEstimationRansacMaxIter

int vpMbtFaceDepthNormal::m_pclPlaneEstimationRansacMaxIter
protected

PCL pane estimation max number of iterations.

Definition at line 252 of file vpMbtFaceDepthNormal.h.

Referenced by computeDesiredFeaturesPCL().

◆ m_pclPlaneEstimationRansacThreshold

double vpMbtFaceDepthNormal::m_pclPlaneEstimationRansacThreshold
protected

PCL plane estimation RANSAC threshold.

Definition at line 254 of file vpMbtFaceDepthNormal.h.

Referenced by computeDesiredFeaturesPCL().

◆ m_planeCamera

vpPlane vpMbtFaceDepthNormal::m_planeCamera
protected

Plane equation described in the camera frame and updated with the current pose

Definition at line 248 of file vpMbtFaceDepthNormal.h.

Referenced by computeInteractionMatrix(), displayFeature(), estimateFeatures(), and estimatePlaneEquationSVD().

◆ m_planeObject

vpPlane vpMbtFaceDepthNormal::m_planeObject

Plane equation described in the object frame.

Definition at line 80 of file vpMbtFaceDepthNormal.h.

Referenced by vpMbDepthNormalTracker::addFace(), computeInteractionMatrix(), displayFeature(), estimateFeatures(), and estimatePlaneEquationSVD().

◆ m_polygon

vpMbtPolygon* vpMbtFaceDepthNormal::m_polygon

◆ m_polygonLines

std::vector<PolygonLine> vpMbtFaceDepthNormal::m_polygonLines
protected

Definition at line 256 of file vpMbtFaceDepthNormal.h.

Referenced by addLine(), and computeROI().

◆ m_useScanLine

bool vpMbtFaceDepthNormal::m_useScanLine