Describe the feature that you would like to include:
This is an open discussion on order to extend HRIM error management.
Additional context
Currently errors in HRIM are just a subfield on certain topics. There is not a common way to deal with errors for all the components. For instance, in the case of HRIM/models/actuator/servo/topics/state.xml the error are specified in field called fault with the following faults:
"FAULT_NONE": 0
"FAULT_CURRENT": 1
"FAULT_TEMPERATURE": 2
"FAULT_BUS_VOLTAGE": 3
"FAULT_BRIDGE_DRIVER": 4
It would be good to have a common definition of error that can be shared by all modules. In this way, error management could be consistent for different types of modules. The error semantic would be different for each component, but not the structure. That means that I can call the same function in order to retrieve the error for an actuator or a gripper.
I propose to follow a structure similar to the one used in CMM machine standard language (I++ DME (Dimensional Measurement Equipment) | NIST) (chapter 8 Error Handling):
In this implementation the error is composed by:
- A severity code (F1)
- A code defined inside the standard (F2). This could be an error defined in HRIM.
- Native error code (F3). An error code which is provided each component vendor. i.e: 0x0080 (Position following error).
- A string describing the error.
Apart from the message structure we would need to define an error classification for each component type. Some error codes could be common for all modules (i.e: communications failure, generic, wrong parameter, etc..) and other specific for each module type.