@@ -175,10 +175,8 @@ int main(int argc, char** argv)
175175
176176 double expected_cycle_time = 1.0 / (static_cast <double >(g_hw_interface->getControlFrequency ()));
177177
178- ros::Duration min_period = ros::Duration (0 );
179- ros::Duration max_period = ros::Duration (0 );
180- ros::Duration period_totals = ros::Duration (0 );
181-
178+ msgStats period_stats;
179+ reset_msg_stats (period_stats);
182180 msgStats read_stats;
183181 reset_msg_stats (read_stats);
184182 msgStats cm_update_stats;
@@ -229,7 +227,9 @@ int main(int argc, char** argv)
229227 // Get current time and elapsed time since last read
230228 timestamp = ros::Time::now ();
231229 stopwatch_now = std::chrono::steady_clock::now ();
232- period.fromSec (std::chrono::duration_cast<std::chrono::duration<double >>(stopwatch_now - stopwatch_last).count ());
230+ const std::chrono::duration<double > period_chrono = stopwatch_now - stopwatch_last;
231+ update_msg_stats (period_chrono, period_stats);
232+ period.fromSec (period_chrono.count ());
233233 stopwatch_last = stopwatch_now;
234234
235235 const std::chrono::steady_clock::time_point cm_update_start = std::chrono::steady_clock::now ();
@@ -242,9 +242,6 @@ int main(int argc, char** argv)
242242 const std::chrono::duration<double > write_elapsed = std::chrono::steady_clock::now () - write_start;
243243 update_msg_stats (write_elapsed, write_stats);
244244
245- if (min_period.isZero () || period < min_period) min_period = period;
246- if (max_period.isZero () || period > max_period) max_period = period;
247- period_totals += period;
248245 ++debug_loops;
249246
250247 // Check if it's time to print
@@ -266,19 +263,8 @@ int main(int argc, char** argv)
266263 num_loops.key = " Number of loops" ;
267264 num_loops.value = std::to_string (debug_loops);
268265 robot_status.values .push_back (num_loops);
269- diagnostic_msgs::KeyValue min_period_kv;
270- min_period_kv.key = " min loop period (s)" ;
271- min_period_kv.value = std::to_string (min_period.toSec ());
272- robot_status.values .push_back (min_period_kv);
273- diagnostic_msgs::KeyValue max_period_kv;
274- max_period_kv.key = " max loop period (s)" ;
275- max_period_kv.value = std::to_string (max_period.toSec ());
276- robot_status.values .push_back (max_period_kv);
277- diagnostic_msgs::KeyValue avg_period_kv;
278- avg_period_kv.key = " avg loop period (s)" ;
279- avg_period_kv.value = std::to_string (period_totals.toSec () / debug_loops);
280- robot_status.values .push_back (avg_period_kv);
281266
267+ push_msg_stats (robot_status, " period loop" , period_stats, debug_loops);
282268 push_msg_stats (robot_status, " read" , read_stats, debug_loops);
283269 push_msg_stats (robot_status, " cm_update" , cm_update_stats, debug_loops);
284270 push_msg_stats (robot_status, " write" , write_stats, debug_loops);
@@ -293,9 +279,7 @@ int main(int argc, char** argv)
293279 dia_array.status .push_back (robot_status);
294280 diagnostic_pub.publish (dia_array);
295281
296- min_period = ros::Duration (0 );
297- max_period = ros::Duration (0 );
298- period_totals = ros::Duration (0 );
282+ reset_msg_stats (period_stats);
299283 reset_msg_stats (read_stats);
300284 reset_msg_stats (cm_update_stats);
301285 reset_msg_stats (write_stats);
0 commit comments