Skip to content

Commit dc5d6a4

Browse files
committed
factor better
1 parent 66d6091 commit dc5d6a4

File tree

1 file changed

+65
-38
lines changed

1 file changed

+65
-38
lines changed

ur_robot_driver/src/ros/hardware_interface_node.cpp

Lines changed: 65 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
5071
int 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

Comments
 (0)