36 #ifndef _vpMbDepthNormalTracker_h_
37 #define _vpMbDepthNormalTracker_h_
39 #include <visp3/core/vpConfig.h>
40 #include <visp3/core/vpPlane.h>
41 #include <visp3/mbt/vpMbTracker.h>
42 #include <visp3/mbt/vpMbtFaceDepthNormal.h>
44 #if DEBUG_DISPLAY_DEPTH_NORMAL
45 #include <visp3/core/vpDisplay.h>
55 const vpColor &col,
const unsigned int thickness = 1,
const bool displayFullModel =
false);
58 const vpColor &col,
const unsigned int thickness = 1,
const bool displayFullModel =
false);
62 return m_depthNormalFeatureEstimationMethod;
74 const bool verbose =
false);
75 #if defined(VISP_HAVE_PCL)
76 void reInitModel(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud,
const std::string &cad_name,
88 virtual void setDepthNormalPclPlaneEstimationMethod(
const int method);
90 virtual void setDepthNormalPclPlaneEstimationRansacMaxIter(
const int maxIter);
92 virtual void setDepthNormalPclPlaneEstimationRansacThreshold(
const double thresold);
94 virtual void setDepthNormalSamplingStep(
const unsigned int stepX,
const unsigned int stepY);
101 #if defined(VISP_HAVE_PCL)
107 void setUseDepthNormalTracking(
const std::string &name,
const bool &useDepthNormalTracking);
112 #if defined(VISP_HAVE_PCL)
113 virtual void track(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud);
115 virtual void track(
const std::vector<vpColVector> &point_cloud,
const unsigned int width,
const unsigned int height);
125 std::vector<vpMbtFaceDepthNormal *> m_depthNormalListOfActiveFaces;
127 std::vector<vpColVector> m_depthNormalListOfDesiredFeatures;
129 std::vector<vpMbtFaceDepthNormal *> m_depthNormalFaces;
131 int m_depthNormalPclPlaneEstimationMethod;
133 int m_depthNormalPclPlaneEstimationRansacMaxIter;
135 double m_depthNormalPclPlaneEstimationRansacThreshold;
137 unsigned int m_depthNormalSamplingStepX;
139 unsigned int m_depthNormalSamplingStepY;
141 bool m_depthNormalUseRobust;
152 #if DEBUG_DISPLAY_DEPTH_NORMAL
157 void addFace(
vpMbtPolygon &polygon,
const bool alreadyClose);
159 void computeVisibility(
const unsigned int width,
const unsigned int height);
166 const int idFace = 0,
const std::string &name =
"");
169 const std::string &name =
"");
176 void segmentPointCloud(
const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &point_cloud);
178 void segmentPointCloud(
const std::vector<vpColVector> &point_cloud,
const unsigned int width,
179 const unsigned int height);