34#ifndef VP_MB_DEPTH_NORMAL_TRACKER_H
35#define VP_MB_DEPTH_NORMAL_TRACKER_H
37#include <visp3/core/vpConfig.h>
38#include <visp3/core/vpPlane.h>
39#include <visp3/mbt/vpMbTracker.h>
40#include <visp3/mbt/vpMbtFaceDepthNormal.h>
42#if DEBUG_DISPLAY_DEPTH_NORMAL
43#include <visp3/core/vpDisplay.h>
69 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false) VP_OVERRIDE;
72 const vpColor &col,
unsigned int thickness = 1,
bool displayFullModel =
false) VP_OVERRIDE;
81 virtual std::vector<std::vector<double> >
getModelForDisplay(
unsigned int width,
unsigned int height,
84 bool displayFullModel =
false) VP_OVERRIDE;
90 virtual void loadConfigFile(
const std::string &configFile,
bool verbose =
true) VP_OVERRIDE;
93 bool verbose = false);
94#if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_COMMON)
95 void reInitModel(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud,
const std::string &cad_name,
103 virtual
void setDepthNormalFaceCentroidMethod(const
vpMbtFaceDepthNormal::vpFaceCentroidType &method);
105 virtual
void setDepthNormalFeatureEstimationMethod(const
vpMbtFaceDepthNormal::vpFeatureEstimationType &method);
107 virtual
void setDepthNormalPclPlaneEstimationMethod(
int method);
109 virtual
void setDepthNormalPclPlaneEstimationRansacMaxIter(
int maxIter);
111 virtual
void setDepthNormalPclPlaneEstimationRansacThreshold(
double thresold);
113 virtual
void setDepthNormalSamplingStep(
unsigned int stepX,
unsigned int stepY);
117 virtual
void setOgreVisibilityTest(const
bool &v) VP_OVERRIDE;
121#if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_COMMON)
127 void setUseDepthNormalTracking(
const std::string &name,
const bool &useDepthNormalTracking);
131 virtual
void track(const
vpImage<
unsigned char> &) VP_OVERRIDE;
132 virtual
void track(const
vpImage<
vpRGBa> &I_color) VP_OVERRIDE;
133#if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_SEGMENTATION) && defined(VISP_HAVE_PCL_FILTERS) && defined(VISP_HAVE_PCL_COMMON)
134 virtual void track(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud);
136 virtual void track(
const std::vector<vpColVector> &point_cloud,
unsigned int width,
unsigned int height);
173#if DEBUG_DISPLAY_DEPTH_NORMAL
189 const std::
string &name =
"") VP_OVERRIDE;
192 const std::
string &name =
"") VP_OVERRIDE;
198#if defined(VISP_HAVE_PCL) && defined(VISP_HAVE_PCL_SEGMENTATION) && defined(VISP_HAVE_PCL_FILTERS) && defined(VISP_HAVE_PCL_COMMON)
199 void segmentPointCloud(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud);
201 void segmentPointCloud(
const std::vector<vpColVector> &point_cloud,
unsigned int width,
unsigned int height);
Generic class defining intrinsic camera parameters.
Implementation of column vector and the associated operations.
Class to define RGB colors available for display functionalities.
Class that defines generic functionalities for display.
Implementation of an homogeneous matrix and operations on such kind of matrices.
Definition of the vpImage class member functions.
Implementation of a matrix and operations on matrices.
virtual void computeVVSInteractionMatrixAndResidu() VP_OVERRIDE
void segmentPointCloud(const pcl::PointCloud< pcl::PointXYZ >::ConstPtr &point_cloud)
virtual void initCylinder(const vpPoint &p1, const vpPoint &p2, double radius, int idFace=0, const std::string &name="") VP_OVERRIDE
virtual void initCircle(const vpPoint &p1, const vpPoint &p2, const vpPoint &p3, double radius, int idFace=0, const std::string &name="") VP_OVERRIDE
vpMatrix m_L_depthNormal
Interaction matrix.
virtual vpColVector getError() const VP_OVERRIDE
vpRobust m_robust_depthNormal
Robust.
vpMbtFaceDepthNormal::vpFeatureEstimationType m_depthNormalFeatureEstimationMethod
Method to estimate the desired features.
std::vector< vpMbtFaceDepthNormal * > m_depthNormalFaces
List of faces.
int m_depthNormalPclPlaneEstimationRansacMaxIter
PCL RANSAC maximum number of iterations.
unsigned int m_depthNormalSamplingStepY
Sampling step in y-direction.
double m_depthNormalPclPlaneEstimationRansacThreshold
PCL RANSAC threshold.
void addFace(vpMbtPolygon &polygon, bool alreadyClose)
bool m_depthNormalUseRobust
If true, use Tukey robust M-Estimator.
virtual std::vector< std::vector< double > > getFeaturesForDisplayDepthNormal()
vpColVector m_w_depthNormal
Robust weights.
vpColVector m_error_depthNormal
(s - s*)
vpColVector m_weightedError_depthNormal
Weighted error.
std::vector< vpMbtFaceDepthNormal * > m_depthNormalListOfActiveFaces
List of current active (visible and with features extracted) faces.
virtual void initFaceFromCorners(vpMbtPolygon &polygon) VP_OVERRIDE
int m_depthNormalPclPlaneEstimationMethod
PCL plane estimation method.
virtual void initFaceFromLines(vpMbtPolygon &polygon) VP_OVERRIDE
virtual vpColVector getRobustWeights() const VP_OVERRIDE
std::vector< vpColVector > m_depthNormalListOfDesiredFeatures
List of desired features.
void computeVisibility(unsigned int width, unsigned int height)
vpMbHiddenFaces< vpMbtPolygon > m_depthNormalHiddenFacesDisplay
Set of faces describing the object used only for display with scan line.
virtual vpMbtFaceDepthNormal::vpFeatureEstimationType getDepthFeatureEstimationMethod() const
std::vector< std::vector< double > > m_featuresToBeDisplayedDepthNormal
Display features.
unsigned int m_depthNormalSamplingStepX
Sampling step in x-direction.
Implementation of the polygons management for the model-based trackers.
virtual void track(const vpImage< unsigned char > &I)=0
virtual void resetTracker()=0
virtual void init(const vpImage< unsigned char > &I)=0
virtual std::vector< std::vector< double > > getModelForDisplay(unsigned int width, unsigned int height, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, bool displayFullModel=false)=0
virtual void setScanLineVisibilityTest(const bool &v)
virtual void setPose(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cdMo)=0
virtual void display(const vpImage< unsigned char > &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam, const vpColor &col, unsigned int thickness=1, bool displayFullModel=false)=0
virtual void computeVVSInit()=0
virtual void testTracking()=0
virtual void loadConfigFile(const std::string &configFile, bool verbose=true)
Manage depth normal features for a particular face.
Implementation of a polygon of the model used by the model-based tracker.
Class that defines a 3D point in the object frame and allows forward projection of a 3D point in the ...
Contains an M-estimator and various influence function.