/home/joel/ros_workspace/lar3/perception/parking_detection/src/kinect_freq_mod.cpp

Go to the documentation of this file.
00001 
00008 #include <stdio.h>
00009 #include <ros/ros.h>
00010 #include <visualization_msgs/Marker.h>
00011 #include <sensor_msgs/LaserScan.h>
00012 #include <sensor_msgs/PointCloud2.h>
00013 #include <tf/transform_listener.h>
00014 #include <pcl_ros/transforms.h>
00015 #include <pcl/ros/conversions.h>
00016 #include <pcl/point_cloud.h>
00017 #include <pcl/point_types.h>
00018 #include <pcl/segmentation/extract_polygonal_prism_data.h>
00019 #include <pcl/filters/extract_indices.h>
00020 #include <pcl/filters/project_inliers.h>
00021 #include <pcl/filters/voxel_grid.h>
00022 #include <points_from_volume/points_from_volume.h>
00023 #define PFLN printf("FILE %s LINE %d\n",__FILE__, __LINE__);
00024 
00025 // Namespaces
00026 using namespace std;
00027 
00028 // Global vars
00029 ros::Publisher cloud_pub;
00030 ros::NodeHandle* p_n;
00031 
00038 void conversion (const sensor_msgs::PointCloud2ConstPtr & pcmsg_in)
00039 {
00040   pcl::PointCloud<pcl::PointXYZ> pc_cut;
00041   pcl::PointCloud<pcl::PointXYZ> processed_pc;
00042   sensor_msgs::PointCloud2 pcmsg_out;
00043   
00044   pcl::fromROSMsg(*pcmsg_in,pc_cut);
00045   pc_cut.header.frame_id=pcmsg_in->header.frame_id;
00046 
00047   for (int i=0;i<(int)pc_cut.points.size();i++)
00048   {
00049     if (pc_cut.points[i].z>0.75 && pc_cut.points[i].z<1.5)
00050     {
00051       processed_pc.push_back(pc_cut.points[i]);
00052     }
00053   }
00054   processed_pc.header.frame_id=pc_cut.header.frame_id;
00055   pcl::toROSMsg(processed_pc,pcmsg_out);
00056   
00057   pcmsg_out.header.stamp=pcmsg_in->header.stamp;
00058   cloud_pub.publish(pcmsg_out);
00059 }
00060 
00061 
00062 
00069 int main(int argc, char **argv)
00070 {
00071   ros::init(argc, argv, "kinect_freq_mod");                             
00072   ros::NodeHandle n;
00073   ros::Rate loop_rate(10);
00074   p_n=&n;
00075   
00076   // Subscribe of the Kinect point cloud message
00077   ros::Subscriber sub = n.subscribe ("/point_cloud_from_kinect", 1, conversion);
00078   
00079   // Advertise of the resutant point cloud
00080   cloud_pub = n.advertise<sensor_msgs::PointCloud2>("/point_cloud_input", 1);
00081   
00082   while(ros::ok())
00083   {
00084         ros::spinOnce();
00085         loop_rate.sleep();
00086   }
00087   return 0;
00088 }
 All Files Functions Variables Defines


parking_detection
Author(s): joel
autogenerated on Thu Jul 26 2012 21:39:08