Public Member Functions | Protected Attributes
ecl::FrequencyMonitor Class Reference

Lightweight and fast frequency monitor. More...

#include <frequency.hpp>

List of all members.

Public Member Functions

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

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.

Usage:

 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() {
   monitor.analyse();
   diagnostics = monitor.getDiagnostics();
 }

Definition at line 83 of file frequency.hpp.


Constructor & Destructor Documentation

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

Setup the frequency monitor.

Parameters:
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 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 getter function.

Returns:
FrequencyDiagnostics

Definition at line 113 of file frequency.hpp.

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

Definition at line 113 of file frequency.hpp.

unsigned int ecl::FrequencyMonitor::incoming_counter [protected]

Definition at line 117 of file frequency.hpp.

ecl::TimeStamp ecl::FrequencyMonitor::last_anyalsed [protected]

Definition at line 118 of file frequency.hpp.

ecl::TimeStamp ecl::FrequencyMonitor::last_incoming [protected]

Definition at line 123 of file frequency.hpp.

ecl::TimeStamp ecl::FrequencyMonitor::maximum_interval [protected]

Definition at line 121 of file frequency.hpp.

ecl::TimeStamp ecl::FrequencyMonitor::minimum_interval [protected]

Definition at line 120 of file frequency.hpp.

ecl::TimeStamp ecl::FrequencyMonitor::period [protected]

Definition at line 119 of file frequency.hpp.

Definition at line 122 of file frequency.hpp.


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


ecl_time
Author(s): Daniel Stonier
autogenerated on Thu Jun 6 2019 21:17:29