@@ -47,6 +47,27 @@ void signalHandler(int signum)
4747 exit (signum);
4848}
4949
50+ void update_msg_stats (diagnostic_msgs::DiagnosticStatus &stat,
51+ std::string stat_name,
52+ std::chrono::duration<double > min_stat,
53+ std::chrono::duration<double > max_stat,
54+ std::chrono::duration<double > total_stat,
55+ long num_loops)
56+ {
57+ diagnostic_msgs::KeyValue min_stat_kv;
58+ min_stat_kv.key = " min " + stat_name + " (s)" ;
59+ min_stat_kv.value = std::to_string (min_stat.count ());
60+ stat.values .push_back (min_stat_kv);
61+ diagnostic_msgs::KeyValue max_stat_kv;
62+ max_stat_kv.key = " max " + stat_name + " (s)" ;
63+ max_stat_kv.value = std::to_string (max_stat.count ());
64+ stat.values .push_back (max_stat_kv);
65+ diagnostic_msgs::KeyValue avg_stat_kv;
66+ avg_stat_kv.key = " avg " + stat_name + " (s)" ;
67+ avg_stat_kv.value = std::to_string (total_stat.count () / num_loops);
68+ stat.values .push_back (avg_stat_kv);
69+ }
70+
5071int main (int argc, char ** argv)
5172{
5273 // Set up ROS.
@@ -225,44 +246,50 @@ int main(int argc, char** argv)
225246 avg_period_kv.value = std::to_string (period_totals.toSec () / debug_loops);
226247 robot_status.values .push_back (avg_period_kv);
227248
228- diagnostic_msgs::KeyValue min_read_kv;
229- min_read_kv.key = " min read (s)" ;
230- min_read_kv.value = std::to_string (min_read.count ());
231- robot_status.values .push_back (min_read_kv);
232- diagnostic_msgs::KeyValue max_read_kv;
233- max_read_kv.key = " max read (s)" ;
234- max_read_kv.value = std::to_string (max_read.count ());
235- robot_status.values .push_back (max_read_kv);
236- diagnostic_msgs::KeyValue avg_read_kv;
237- avg_read_kv.key = " avg read (s)" ;
238- avg_read_kv.value = std::to_string (read_totals.count () / debug_loops);
239- robot_status.values .push_back (avg_read_kv);
240-
241- diagnostic_msgs::KeyValue min_cm_update_kv;
242- min_cm_update_kv.key = " min cm_update (s)" ;
243- min_cm_update_kv.value = std::to_string (min_cm_update.count ());
244- robot_status.values .push_back (min_cm_update_kv);
245- diagnostic_msgs::KeyValue max_cm_update_kv;
246- max_cm_update_kv.key = " max cm_update (s)" ;
247- max_cm_update_kv.value = std::to_string (max_cm_update.count ());
248- robot_status.values .push_back (max_cm_update_kv);
249- diagnostic_msgs::KeyValue avg_cm_update_kv;
250- avg_cm_update_kv.key = " avg cm_update (s)" ;
251- avg_cm_update_kv.value = std::to_string (cm_update_totals.count () / debug_loops);
252- robot_status.values .push_back (avg_cm_update_kv);
253-
254- diagnostic_msgs::KeyValue min_write_kv;
255- min_write_kv.key = " min write (s)" ;
256- min_write_kv.value = std::to_string (min_write.count ());
257- robot_status.values .push_back (min_write_kv);
258- diagnostic_msgs::KeyValue max_write_kv;
259- max_write_kv.key = " max write (s)" ;
260- max_write_kv.value = std::to_string (max_write.count ());
261- robot_status.values .push_back (max_write_kv);
262- diagnostic_msgs::KeyValue avg_write_kv;
263- avg_write_kv.key = " avg write (s)" ;
264- avg_write_kv.value = std::to_string (write_totals.count () / debug_loops);
265- robot_status.values .push_back (avg_write_kv);
249+
250+
251+ update_msg_stats (robot_status, " read" , min_read, max_read, read_totals, debug_loops);
252+ update_msg_stats (robot_status, " cm_update" , min_cm_update, max_cm_update, cm_update_totals, debug_loops);
253+ update_msg_stats (robot_status, " write" , min_write, max_write, write_totals, debug_loops);
254+
255+ // diagnostic_msgs::KeyValue min_read_kv;
256+ // min_read_kv.key = "min read (s)";
257+ // min_read_kv.value = std::to_string(min_read.count());
258+ // robot_status.values.push_back(min_read_kv);
259+ // diagnostic_msgs::KeyValue max_read_kv;
260+ // max_read_kv.key = "max read (s)";
261+ // max_read_kv.value = std::to_string(max_read.count());
262+ // robot_status.values.push_back(max_read_kv);
263+ // diagnostic_msgs::KeyValue avg_read_kv;
264+ // avg_read_kv.key = "avg read (s)";
265+ // avg_read_kv.value = std::to_string(read_totals.count() / debug_loops);
266+ // robot_status.values.push_back(avg_read_kv);
267+
268+ // diagnostic_msgs::KeyValue min_cm_update_kv;
269+ // min_cm_update_kv.key = "min cm_update (s)";
270+ // min_cm_update_kv.value = std::to_string(min_cm_update.count());
271+ // robot_status.values.push_back(min_cm_update_kv);
272+ // diagnostic_msgs::KeyValue max_cm_update_kv;
273+ // max_cm_update_kv.key = "max cm_update (s)";
274+ // max_cm_update_kv.value = std::to_string(max_cm_update.count());
275+ // robot_status.values.push_back(max_cm_update_kv);
276+ // diagnostic_msgs::KeyValue avg_cm_update_kv;
277+ // avg_cm_update_kv.key = "avg cm_update (s)";
278+ // avg_cm_update_kv.value = std::to_string(cm_update_totals.count() / debug_loops);
279+ // robot_status.values.push_back(avg_cm_update_kv);
280+
281+ // diagnostic_msgs::KeyValue min_write_kv;
282+ // min_write_kv.key = "min write (s)";
283+ // min_write_kv.value = std::to_string(min_write.count());
284+ // robot_status.values.push_back(min_write_kv);
285+ // diagnostic_msgs::KeyValue max_write_kv;
286+ // max_write_kv.key = "max write (s)";
287+ // max_write_kv.value = std::to_string(max_write.count());
288+ // robot_status.values.push_back(max_write_kv);
289+ // diagnostic_msgs::KeyValue avg_write_kv;
290+ // avg_write_kv.key = "avg write (s)";
291+ // avg_write_kv.value = std::to_string(write_totals.count() / debug_loops);
292+ // robot_status.values.push_back(avg_write_kv);
266293
267294 dia_array.status .push_back (robot_status);
268295 diagnostic_pub.publish (dia_array);
0 commit comments