Skip to content

Commit 57221d4

Browse files
added rate calculation
1 parent 34cfb59 commit 57221d4

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

src/extended_object_detection_node/eod_node.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ EOD_ROS::EOD_ROS(ros::NodeHandle nh, ros::NodeHandle nh_p){
3838
sub_rgb_.subscribe(*rgb_it_, "camera/image_raw", 10);
3939
sub_info_.subscribe(nh_, "camera/info", 10);
4040

41+
detect_rate_values = new boost::circular_buffer<double>(10);
42+
4143
// get params
4244
nh_p_.param("subscribe_depth", subscribe_depth, false);
4345
nh_p_.param("rate_limit_sec", rate_limit_sec, 0.1);
@@ -234,6 +236,9 @@ void EOD_ROS::rgbd_info_cb(const sensor_msgs::ImageConstPtr& rgb_image, const se
234236

235237
void EOD_ROS::detect(const eod::InfoImage& rgb, const eod::InfoImage& depth, std_msgs::Header header){
236238
ROS_INFO("Detecting...");
239+
if( frame_sequence != 0 ){
240+
detect_rate_values->push_back((ros::Time::now() - prev_detected_time).toSec());
241+
}
237242
prev_detected_time = ros::Time::now();
238243

239244
cv::Mat image_to_draw;
@@ -397,7 +402,8 @@ visualization_msgs::Marker EOD_ROS::base_object_to_marker_arrow(extended_object_
397402
mrk.header = header;
398403
mrk.ns = base_object.type_name +"_arrow";
399404
mrk.id = id;
400-
mrk.type = visualization_msgs::Marker::ARROW;
405+
mrk.type = visualization_msgs::Marker::ARROW;
406+
mrk.lifetime = ros::Duration(get_detect_rate());
401407
mrk.points.push_back(geometry_msgs::Point());
402408
geometry_msgs::Point end = fromVector(base_object.transform.translation);
403409
mrk.points.push_back(end);
@@ -419,6 +425,7 @@ visualization_msgs::Marker EOD_ROS::base_object_to_marker_frame(extended_object_
419425
mrk.ns = base_object.type_name +"_frame";
420426
mrk.id = id;
421427
mrk.type = visualization_msgs::Marker::LINE_STRIP;
428+
mrk.lifetime = ros::Duration(get_detect_rate());
422429
for( auto& corner : base_object.rect.cornerTranslates )
423430
mrk.points.push_back(fromVector(corner));
424431
mrk.points.push_back(mrk.points[0]);
@@ -439,7 +446,8 @@ visualization_msgs::Marker EOD_ROS::base_object_to_marker_text(extended_object_d
439446
mrk.header = header;
440447
mrk.ns = base_object.type_name +"_text";
441448
mrk.id = id;
442-
mrk.type = visualization_msgs::Marker::TEXT_VIEW_FACING;
449+
mrk.type = visualization_msgs::Marker::TEXT_VIEW_FACING;
450+
mrk.lifetime = ros::Duration(get_detect_rate());
443451
mrk.pose.position = fromVector(base_object.transform.translation);
444452
mrk.pose.position.y = base_object.rect.cornerTranslates[0].y - 0.14; // place text upper top frame part
445453
mrk.text = std::to_string(base_object.type_id)+":"+base_object.type_name+"["+std::to_string(base_object.score).substr(0,4)+"]";
@@ -574,6 +582,17 @@ bool EOD_ROS::set_complex_objects_cb(extended_object_detection::SetObjects::Requ
574582
}
575583
#endif
576584

585+
586+
double EOD_ROS::get_detect_rate(){
587+
if( detect_rate_values->empty() )
588+
return 0;
589+
double sum_rate = 0;
590+
for(auto& rate : *detect_rate_values)
591+
sum_rate += rate;
592+
return sum_rate / detect_rate_values->size();
593+
}
594+
595+
577596
int main(int argc, char **argv)
578597
{
579598
ros::init(argc, argv, "extended_object_detection_node");

src/extended_object_detection_node/eod_node.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#include "extended_object_detection/ComplexObjectArray.h"
2222
#include "extended_object_detection/SetObjects.h"
2323

24+
#include <boost/circular_buffer.hpp>
25+
2426
#include "ObjectBase.h"
2527

2628

@@ -78,6 +80,7 @@ class EOD_ROS{
7880
// vars
7981
int frame_sequence;
8082
ros::Time prev_detected_time;
83+
boost::circular_buffer<double>* detect_rate_values;
8184

8285
// callbacks
8386
void rgb_info_cb(const sensor_msgs::ImageConstPtr& image, const sensor_msgs::CameraInfoConstPtr& info);
@@ -106,6 +109,7 @@ class EOD_ROS{
106109
#ifdef USE_IGRAPH
107110
int find_complex_obj_index_by_id(int id);
108111
#endif
112+
double get_detect_rate();
109113

110114
// EOD
111115
eod::ObjectBase * object_base;

0 commit comments

Comments
 (0)