Hello. I’m interested in knowing if ROS users would find value adding additional levels in the diagnostic_msgs/DiagnosticStatus
message type.
I work on systems with large amounts of ROS diagnostics and it can often be hard to convey to end users what to focus on when issues occur. Now in ROS diagnostics world you can create custom analyzer plugins (and that’s something I’m working on) but I still fine the OK
, WARN
and ERROR
levels to be a bit limiting.
Taking some inspiration from OpenCyphal’s Severity level message I think the following could be useful.
byte INFO=0 # Purely informational
byte OK=1 # Component's diagnostic is in an OK state
byte NOTICE=2 # Level at which user awareness might be recommended but action is not necessarily required
byte WARN=3 # Begin to bring awareness to users, as there might be an issue
byte ERROR=4 # An error condition has been detected
byte CRITICAL=5 # Failure is imminent
byte ALERT=6 # User attention is required
byte STALE=7 # Reserved for use by the aggregator
The distinction between INFO
and OK
would be in some cases we have a diagnostics that just report some values because it’s convenient but the level is not expected to change, as opposed to a diagnostic reporting OK
which might not always be OK
.
The distinction between ERROR
and CRITICAL
would be the operational context. For example we do a lot of configuration checksum validation at startup. If there’s a mismatch in what we expect that would be an ERROR
. An example of a CRITICAL
level might be critically low battery levels. This is not necessarily an error, it is a state of the battery (a BMS on the other hand could report errors and that could be an ERROR
level diagnostic).
An example of ALERT
might be usage of an emergency stop button. It’s usage is not necessarily an error, but as it is related to safety we need to report it at the highest level possible.
Regardless of specific states, I think more granularity could be helpful.