38 #ifndef DIAGNOSTIC_UPDATER__UPDATE_FUNCTIONS_HPP_
39 #define DIAGNOSTIC_UPDATER__UPDATE_FUNCTIONS_HPP_
46 #include "diagnostic_updater/diagnostic_updater.hpp"
54 struct FrequencyStatusParam
61 double * min_freq,
double * max_freq,
62 double tolerance = 0.1,
int window_size = 5)
111 class FrequencyStatus :
public DiagnosticTask
114 const FrequencyStatusParam
params_;
117 std::vector<rclcpp::Time>
times_;
121 rclcpp::Logger debug_logger_;
131 debug_logger_(rclcpp::get_logger(
"FrequencyStatus_debug_logger"))
151 std::unique_lock<std::mutex> lock(
lock_);
168 std::unique_lock<std::mutex> lock(
lock_);
169 RCLCPP_DEBUG(debug_logger_,
"TICK %i",
count_);
175 std::unique_lock<std::mutex> lock(
lock_);
181 double freq = events / window;
187 stat.
summary(2,
"No events recorded.");
189 stat.
summary(1,
"Frequency too low.");
191 stat.
summary(1,
"Frequency too high.");
193 stat.
summary(0,
"Desired frequency met");
196 stat.
addf(
"Events in window",
"%d", events);
197 stat.
addf(
"Events since startup",
"%d",
count_);
198 stat.
addf(
"Duration of window (s)",
"%f", window);
199 stat.
addf(
"Actual frequency (Hz)",
"%f", freq);
205 "Minimum acceptable frequency (Hz)",
"%f",
210 "Maximum acceptable frequency (Hz)",
"%f",
221 struct TimeStampStatusParam
228 const double min_acceptable = -1,
229 const double max_acceptable = 5)
284 const TimeStampStatusParam & params,
286 const rclcpp::Clock::SharedPtr & clock = std::make_shared<rclcpp::Clock>())
298 const TimeStampStatusParam & params,
299 const rclcpp::Clock::SharedPtr & clock = std::make_shared<rclcpp::Clock>())
311 const rclcpp::Clock::SharedPtr & clock = std::make_shared<rclcpp::Clock>())
321 void tick(
double stamp)
323 std::unique_lock<std::mutex> lock(
lock_);
328 const double delta = clock_ptr_->now().seconds() - stamp;
352 std::unique_lock<std::mutex> lock(
lock_);
354 stat.
summary(0,
"Timestamps are reasonable.");
356 stat.
summary(1,
"No data since last update.");
359 stat.
summary(2,
"Timestamps too far in future seen.");
364 stat.
summary(2,
"Timestamps too far in past seen.");
369 stat.
summary(2,
"Zero timestamp seen.");
377 "Earliest acceptable timestamp delay:",
"%f",
380 "Latest acceptable timestamp delay:",
"%f",
401 const rclcpp::Clock::SharedPtr clock_ptr_;
411 class Heartbeat :
public DiagnosticTask
428 #endif // DIAGNOSTIC_UPDATER__UPDATE_FUNCTIONS_HPP_