From 20523d875db8364ab5255b3f70d6652ed32b2ee5 Mon Sep 17 00:00:00 2001 From: NicolaCovallero <nicolacovallero92@gmail.com> Date: Tue, 23 Feb 2016 11:53:52 +0100 Subject: [PATCH] added a publisher of the segmented objcts --- CMakeLists.txt | 9 ++++----- msg/segmented_objects.msg | 1 + src/tos_supervoxels_alg_client_node.cpp | 15 +++++++++++++-- 3 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 msg/segmented_objects.msg diff --git a/CMakeLists.txt b/CMakeLists.txt index b0348e8..ffb02fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,11 +27,10 @@ ENDIF (PCL_FOUND) # Add topic, service and action definition here # ******************************************************************** ## Generate messages in the 'msg' folder -# add_message_files( -# FILES -# Message1.msg -# Message2.msg -# ) +add_message_files( + FILES + segmented_objects.msg +) ## Generate services in the 'srv' folder add_service_files( diff --git a/msg/segmented_objects.msg b/msg/segmented_objects.msg new file mode 100644 index 0000000..474846f --- /dev/null +++ b/msg/segmented_objects.msg @@ -0,0 +1 @@ +sensor_msgs/PointCloud2[] objects diff --git a/src/tos_supervoxels_alg_client_node.cpp b/src/tos_supervoxels_alg_client_node.cpp index 1ad6579..92e8b39 100644 --- a/src/tos_supervoxels_alg_client_node.cpp +++ b/src/tos_supervoxels_alg_client_node.cpp @@ -11,8 +11,11 @@ // srv #include "iri_tos_supervoxels/object_segmentation.h" +// msg +#include "iri_tos_supervoxels/segmented_objects.h" + ros::ServiceClient client; -ros::Publisher pub; +ros::Publisher pub,pub_segmented_objs; std::string service_name; void callback(const sensor_msgs::PointCloud2 cloud_msg) @@ -27,6 +30,9 @@ void callback(const sensor_msgs::PointCloud2 cloud_msg) //creating new point cloud for debugging with random color for each segmented object sensor_msgs::PointCloud2 detected_objects_msg; pcl::PointCloud<pcl::PointXYZRGB> detected_objects_cloud; + + iri_tos_supervoxels::segmented_objects segmented_objects_msg; + for (int i = 0; i < srv.response.objects.size(); ++i) { // convert it to pcl @@ -50,6 +56,8 @@ void callback(const sensor_msgs::PointCloud2 cloud_msg) temp_point.b = b*255; detected_objects_cloud.points.push_back(temp_point); } + + segmented_objects_msg.objects.push_back(srv.response.objects[i]); } detected_objects_cloud.width = detected_objects_cloud.points.size(); @@ -65,6 +73,8 @@ void callback(const sensor_msgs::PointCloud2 cloud_msg) detected_objects_msg.header.stamp = ros::Time::now(); //std::cout << "frame of point cloud: " << detected_objects_msg.header.frame_id << "\n"; pub.publish(detected_objects_msg); + + pub_segmented_objs.publish(segmented_objects_msg); } else ROS_ERROR("Failed to call service %s",service_name.c_str()); @@ -85,7 +95,8 @@ int main(int argc, char **argv) ros::Subscriber sub = n.subscribe<sensor_msgs::PointCloud2>(input_topic, 1, callback); - pub = n.advertise<sensor_msgs::PointCloud2>("/detected_objects/points", 1); + pub = n.advertise<sensor_msgs::PointCloud2>("/segmented_objects/points", 1); + pub_segmented_objs = n.advertise<iri_tos_supervoxels::segmented_objects>("/segmented_objects",1); client = n.serviceClient<iri_tos_supervoxels::object_segmentation>(service_name); -- GitLab