@@ -265,11 +265,27 @@ void EOD_ROS::detect(const eod::InfoImage& rgb, const eod::InfoImage& depth, std
265265 for (auto & bo : simples_msg.objects ){
266266 mrk_array_msg.markers .push_back (base_object_to_marker_arrow (bo, rgb.K (), header, cv::Scalar (0 , 255 , 0 ),id_cnt));
267267 mrk_array_msg.markers .push_back (base_object_to_marker_frame (bo, rgb.K (), header, cv::Scalar (0 , 255 , 0 ),id_cnt));
268+ mrk_array_msg.markers .push_back (base_object_to_marker_text (bo, rgb.K (), header, cv::Scalar (0 , 255 , 0 ),id_cnt));
268269 id_cnt++;
269270 }
270271 simple_objects_markers_pub_.publish (mrk_array_msg);
271- }
272-
272+ #ifdef USE_IGRAPH
273+ visualization_msgs::MarkerArray cmplx_mrk_array_msg;
274+ id_cnt = 0 ;
275+ for (auto & co : complex_msg.objects ){
276+ cmplx_mrk_array_msg.markers .push_back (base_object_to_marker_arrow (co.complex_object , rgb.K (), header, cv::Scalar (0 , 255 , 255 ),id_cnt));
277+ cmplx_mrk_array_msg.markers .push_back (base_object_to_marker_frame (co.complex_object , rgb.K (), header, cv::Scalar (0 , 255 , 255 ),id_cnt));
278+ cmplx_mrk_array_msg.markers .push_back (base_object_to_marker_text (co.complex_object , rgb.K (), header, cv::Scalar (0 , 255 , 255 ),id_cnt));
279+ id_cnt++;
280+ for ( auto & so : co.simple_objects ){
281+ cmplx_mrk_array_msg.markers .push_back (base_object_to_marker_frame (so, rgb.K (), header, cv::Scalar (0 , 255 , 255 ),id_cnt));
282+ id_cnt++;
283+ }
284+ }
285+
286+ complex_objects_markers_pub_.publish (cmplx_mrk_array_msg);
287+ #endif
288+ }
273289 if (publish_image_output){
274290 sensor_msgs::ImagePtr detected_image_msg = cv_bridge::CvImage (std_msgs::Header (), " bgr8" , image_to_draw).toImageMsg ();
275291 output_image_pub_.publish (detected_image_msg);
@@ -372,6 +388,27 @@ visualization_msgs::Marker EOD_ROS::base_object_to_marker_frame(extended_object_
372388}
373389
374390
391+ visualization_msgs::Marker EOD_ROS::base_object_to_marker_text (extended_object_detection::BaseObject& base_object, const cv::Mat& K, std_msgs::Header header, cv::Scalar color, int id){
392+ visualization_msgs::Marker mrk;
393+ mrk.header = header;
394+ mrk.ns = base_object.type_name +" _text" ;
395+ mrk.id = id;
396+ mrk.type = visualization_msgs::Marker::TEXT_VIEW_FACING;
397+ mrk.pose .position = fromVector (base_object.transform .translation );
398+ mrk.pose .position .y = base_object.rect .cornerTranslates [0 ].y - 0.14 ; // place text upper top frame part
399+ mrk.text = std::to_string (base_object.type_id )+" :" +base_object.type_name +" [" +std::to_string (base_object.score ).substr (0 ,4 )+" ]" ;
400+ mrk.scale .x = 0.02 ;
401+ mrk.scale .y = 0.02 ;
402+ mrk.scale .z = 0.1 ;
403+ mrk.pose .orientation .w = 1 ;
404+ mrk.color .r = color[0 ]/255 ;
405+ mrk.color .g = color[1 ]/255 ;
406+ mrk.color .b = color[2 ]/255 ;
407+ mrk.color .a = 1 ;
408+ return mrk;
409+ }
410+
411+
375412int EOD_ROS::find_simple_obj_index_by_id (int id){
376413 for ( int i = 0 ; i < selected_simple_objects.size () ; i++ ){
377414 if ( selected_simple_objects[i]->ID == id )
0 commit comments