Go to the documentation of this file.00001 #include <ros/ros.h>
00002 #include <pr2_tilt_laser_interface/GetSnapshotActionResult.h>
00003 #include <pr2_tilt_laser_interface/GetSnapshotActionFeedback.h>
00004 #include <sensor_msgs/PointCloud2.h>
00005 #include <pcl/io/pcd_io.h>
00006
00007 ros::Publisher pub;
00008 void
00009 resultCallback(const pr2_tilt_laser_interface::GetSnapshotActionResultConstPtr& action_result)
00010 {
00011 if (action_result->result.cloud.height*action_result->result.cloud.height == 0)
00012 return;
00013 pub.publish (action_result->result.cloud);
00014 ROS_INFO ("Published point cloud from action result!\n");
00015 }
00016
00017 void
00018 feedbackCallback(const pr2_tilt_laser_interface::GetSnapshotActionFeedbackConstPtr& action_feedback)
00019 {
00020 if (action_feedback->feedback.cloud.height*action_feedback->feedback.cloud.height == 0)
00021 return;
00022 pub.publish (action_feedback->feedback.cloud);
00023 ROS_INFO ("Published point cloud from action feedback!\n");
00024 }
00025
00026 int
00027 main (int argc, char** argv)
00028 {
00029 ros::init (argc, argv, "result_grabber");
00030 ros::NodeHandle nh;
00031 pub = nh.advertise<sensor_msgs::PointCloud2>("snapshot", 1, true);
00032 ros::Subscriber result_subscriber = nh.subscribe("get_laser_snapshot/result", 1, resultCallback);
00033 ros::Subscriber feedback_subscriber = nh.subscribe("get_laser_snapshot/feedback", 1, feedbackCallback);
00034
00035 ROS_INFO ("Waiting for cloud to come in over ROS");
00036 ros::spin();
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 return (0);
00052 }