Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _obstacle_detection_normals_alg_h_
00026 #define _obstacle_detection_normals_alg_h_
00027
00028 #include <iri_obstacle_detection_normals/ObstacleDetectionNormalsConfig.h>
00029 #include "mutex.h"
00030
00031
00032 #include <pcl/point_types.h>
00033 #include <pcl/io/pcd_io.h>
00034 #include <pcl/features/normal_3d.h>
00035 #include <pcl/features/integral_image_normal.h>
00036 #include <pcl/kdtree/kdtree_flann.h>
00037 #include <pcl/impl/point_types.hpp>
00038
00039 #include <boost/make_shared.hpp>
00040
00041 using namespace pcl;
00042 using namespace std;
00043
00044 typedef KdTree<PointXYZ>::Ptr KdTreePtr;
00045
00046
00047
00053 class ObstacleDetectionNormalsAlgorithm
00054 {
00055 protected:
00062 CMutex alg_mutex_;
00063
00064
00065 int KSearch;
00066 float normal_z,normal_y,normal_x,min_dist;
00067
00068 KdTreePtr tree;
00069
00070
00071
00072
00073
00074
00075 public:
00082 typedef iri_obstacle_detection_normals::ObstacleDetectionNormalsConfig Config;
00083
00090 Config config_;
00091
00100 ObstacleDetectionNormalsAlgorithm(void);
00101
00107 void lock(void) { alg_mutex_.enter(); };
00108
00114 void unlock(void) { alg_mutex_.exit(); };
00115
00123 bool try_enter(void) { return alg_mutex_.try_enter(); };
00124
00136 void config_update(Config& new_cfg, uint32_t level=0);
00137
00138
00139
00140
00147 ~ObstacleDetectionNormalsAlgorithm(void);
00148
00149
00150
00151
00152
00153
00154 void cloud_all(int KSearch, float normal_z,
00155 float normal_y, float normal_x, float min_dist,
00156 const pcl::PointCloud<pcl::PointXYZ>& cloud,
00157 pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr& cloud_out, pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr& cloud_obs);
00158
00159 };
00160
00161 #endif