height_from_plane_map.h
Go to the documentation of this file.
00001 #ifndef _HEIGHT_FROM_PLANE_MAP_H_
00002 #define _HEIGHT_FROM_PLANE_MAP_H_
00003 
00004 // [Eigen]
00005 #include "Eigen/Core"
00006 
00007 // [ROS]
00008 #include "ros/ros.h"
00009 #include "ros/callback_queue.h"
00010 #include "ros/this_node.h"
00011 
00012 // [PCL_ROS]
00013 #include <pcl/ros/conversions.h>
00014 #include <pcl/point_cloud.h>
00015 #include <pcl/point_types.h>
00016 #include <pcl/ModelCoefficients.h>
00017 
00018 //pcl::toROSMsg
00019 #include <pcl/io/pcd_io.h>
00020 
00021 //iriutils
00022 #include "mutex.h"
00023 
00024 // [OpenCV]
00025 // [publisher subscriber headers]
00026 #include <message_filters/subscriber.h>
00027 #include <message_filters/time_synchronizer.h>
00028 #include "sensor_msgs/PointCloud2.h"
00029 
00030 // [services]
00031 #include <dynamic_reconfigure/server.h>
00032 #include <iri_pcl_filters/IriPclFiltersParametersConfig.h>
00033 
00034 // static const char WINDOW[] = "Image window";
00035 
00036 typedef union {
00037     struct /*anonymous*/
00038     {
00039       unsigned char Blue;
00040       unsigned char Green;
00041       unsigned char Red;
00042       unsigned char Alpha;
00043     };
00044     float float_value;
00045     long long_value;
00046 } RGBValue;
00047 
00048 class HeightFromPlaneMap {
00049     public:
00050       HeightFromPlaneMap();
00051      
00052     private:
00053 
00054       CMutex mutex;
00055 
00056       ros::NodeHandle nh_;
00057 
00058       pcl::PointCloud<pcl::PointXYZRGB> pcl_xyzrgb_;
00059 
00060       message_filters::TimeSynchronizer<pcl::ModelCoefficients, sensor_msgs::PointCloud2> *sync_;
00061       // [Subscribers]
00062       message_filters::Subscriber<pcl::ModelCoefficients> coefficients_sub_;
00063       message_filters::Subscriber<sensor_msgs::PointCloud2> pcl2_sub_; 
00064 
00065       // [Publishers]
00066       ros::Publisher pcl2_pub_;
00067       sensor_msgs::PointCloud2 pcl2_score_map_msg_;
00068 
00069       dynamic_reconfigure::Server<iri_pcl_filters::IriPclFiltersParametersConfig> dyn_reconfig_srv;
00070       
00071       void reconfigureCallback(iri_pcl_filters::IriPclFiltersParametersConfig &config, uint32_t level);
00072 
00073       void height_map_callback(const pcl::ModelCoefficients::ConstPtr& coefficients_msg, const sensor_msgs::PointCloud2::ConstPtr& pcl2_msg);
00074       
00075       float distance_from_plane(double x, double y, double z, std::vector<float> coefs);
00076 
00077 };
00078 #endif


iri_pcl_filters
Author(s): Sergi Foix
autogenerated on Fri Dec 6 2013 20:44:42