Purpose
The purpose of this addition is to create performance monitors for detecting performance degradation.
In autonomous systems, a "monitor" is something that keeps track of variables of interest to ensure they remain within acceptable ranges. If the variable goes outside the acceptable range for a persistence, the monitor goes into alarm and typically takes an action.
For example, let's say you have a battery system that could experience a thermal runaway. To mitigate this risk and protect the system, a monitor could be used to shut off power if the system exceeds a certain temperature. The following monitor could be appropriate for this application:
Monitor Type: Below Threshold Monitor
Variable: Temperature
Threshold: User defined max temperature
Persistence: User defined
Action: Turn off system
In this addition we should add some basic monitors that we can use on our robot, such as:
Variable Below / Above threshold
Variable equal / not equal monitor
Variable inside/outside range (can be implemented using the above two monitors)
Project Scope
[ ] Add base class Monitor that takes a generic supplier (variable to monitor), a threshold, a persistence, and a generic consumer (action to take if the monitor is in alarm). There should also be a getter function for if the monitor is in alarm.
[ ] Make specific classes that inherit the monitor class for the threshold and equality check monitors
[ ] Make Monitor types that combine these logical monitors (OR, AND for now).
Purpose The purpose of this addition is to create performance monitors for detecting performance degradation.
In autonomous systems, a "monitor" is something that keeps track of variables of interest to ensure they remain within acceptable ranges. If the variable goes outside the acceptable range for a persistence, the monitor goes into alarm and typically takes an action.
For example, let's say you have a battery system that could experience a thermal runaway. To mitigate this risk and protect the system, a monitor could be used to shut off power if the system exceeds a certain temperature. The following monitor could be appropriate for this application:
In this addition we should add some basic monitors that we can use on our robot, such as:
Project Scope