Public Member Functions | Protected Attributes | List of all members
ecl::FrequencyMonitor Class Reference

Lightweight and fast frequency monitor. More...

#include <frequency.hpp>

Public Member Functions

const FrequencyDiagnosticsanalyse ()
 Analyse the recent updates to generate monitoring statistics. More...
const FrequencyDiagnosticsdiagnostics () const
 Diagnostics getter function. More...
 FrequencyMonitor (const float &window_period=2.0, const bool &use_realtime_clock=false)
 Setup the frequency monitor. More...
void update ()
 Let the diagnostics know that new data has arrived. More...

Protected Attributes

FrequencyDiagnostics current_diagnostics
unsigned int incoming_counter
ecl::TimeStamp last_anyalsed
ecl::TimeStamp last_incoming
ecl::TimeStamp maximum_interval
ecl::TimeStamp minimum_interval
ecl::TimeStamp period
bool use_realtime_clock

Detailed Description

Lightweight and fast frequency monitor.

This class doesn't dynamically update over a window, nor does it collect and store data to compute characteristics like standard deviations. It is however, suitable for most use case scenarios where you are simply interested in the hz/minimum_interval/maximum_interval of data over a fixed period.


float window_period = 2.0;
FrequencyMonitor monitor(window_period, false);
FrequencyMonitor ros_monitor(window_period, true); // use the realtime clock to match ros timestamps
FrequencyDiagnostics diagnostics;
void incomingDataCallback() {
monitor.update(); // register that new data has arrived
void process() {
diagnostics = monitor.analyse();
void process2() {
diagnostics = monitor.getDiagnostics();

Definition at line 83 of file frequency.hpp.

Constructor & Destructor Documentation

◆ FrequencyMonitor()

ecl::FrequencyMonitor::FrequencyMonitor ( const float &  window_period = 2.0,
const bool &  use_realtime_clock = false 

Setup the frequency monitor.

window_period: time interval over which updates are analysed.
use_realtime_clock: better to use the monotonic clock, but sometimes (e.g. ros), realtime is required.

Definition at line 20 of file lib/frequency.cpp.

Member Function Documentation

◆ analyse()

const FrequencyDiagnostics & ecl::FrequencyMonitor::analyse ( )

Analyse the recent updates to generate monitoring statistics.

Right now this just uses a fixed window (not moving) that only updates the information if the period since the last analyse() request was made has been exceeded.

every two seconds, we update the status as follows

Definition at line 57 of file lib/frequency.cpp.

◆ diagnostics()

const FrequencyDiagnostics& ecl::FrequencyMonitor::diagnostics ( ) const

Diagnostics getter function.


Definition at line 113 of file frequency.hpp.

◆ update()

void ecl::FrequencyMonitor::update ( )

Let the diagnostics know that new data has arrived.

This updates the internal counter, with a timestamp.

Definition at line 39 of file lib/frequency.cpp.

Member Data Documentation

◆ current_diagnostics

FrequencyDiagnostics ecl::FrequencyMonitor::current_diagnostics

Definition at line 113 of file frequency.hpp.

◆ incoming_counter

unsigned int ecl::FrequencyMonitor::incoming_counter

Definition at line 117 of file frequency.hpp.

◆ last_anyalsed

ecl::TimeStamp ecl::FrequencyMonitor::last_anyalsed

Definition at line 118 of file frequency.hpp.

◆ last_incoming

ecl::TimeStamp ecl::FrequencyMonitor::last_incoming

Definition at line 123 of file frequency.hpp.

◆ maximum_interval

ecl::TimeStamp ecl::FrequencyMonitor::maximum_interval

Definition at line 121 of file frequency.hpp.

◆ minimum_interval

ecl::TimeStamp ecl::FrequencyMonitor::minimum_interval

Definition at line 120 of file frequency.hpp.

◆ period

ecl::TimeStamp ecl::FrequencyMonitor::period

Definition at line 119 of file frequency.hpp.

◆ use_realtime_clock

bool ecl::FrequencyMonitor::use_realtime_clock

Definition at line 122 of file frequency.hpp.

The documentation for this class was generated from the following files:

Author(s): Daniel Stonier
autogenerated on Mon Feb 28 2022 22:18:29