You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
The LifeCycleNode inspired state machine for HardwareComponents does not capture the states of industrial robots fully. In particular, many of them have a "faulted" and/or "safe stop" state.
This state usually doesn't allow motion, and the robot can only leave it with explicit manual acknowledgement from the user.
As an example, the UR driver handles this with a dedicated service.
This pattern seems common enough across industrial robots that it could be worth representing it at the lifecycle level. With a dedicated "faulted" lifecycle state, it would be easy to see when a robot is in this state, rather than having to "overload" the unconfigured or inactive state.
Describe the solution you'd like
A new Faulted lifecycle state
Change things so that ErrorProcessing transitions to Faulted instead of Unconfigured
A new on_faulted() function that is called when entering Faulted
Backwards compatibility: The default implementation of on_faulted() immediately triggers a transition to Unconfigured
Is your feature request related to a problem? Please describe.
The
LifeCycleNodeinspired state machine forHardwareComponents does not capture the states of industrial robots fully. In particular, many of them have a "faulted" and/or "safe stop" state.This state usually doesn't allow motion, and the robot can only leave it with explicit manual acknowledgement from the user.
As an example, the UR driver handles this with a dedicated service.
This pattern seems common enough across industrial robots that it could be worth representing it at the lifecycle level. With a dedicated "faulted" lifecycle state, it would be easy to see when a robot is in this state, rather than having to "overload" the unconfigured or inactive state.
Describe the solution you'd like
Faultedlifecycle stateErrorProcessingtransitions toFaultedinstead ofUnconfiguredon_faulted()function that is called when enteringFaultedon_faulted()immediately triggers a transition toUnconfiguredi.e.
stateDiagram-v2 ErrorProcessing-->Faulted : onError: [SUCCESS] Faulted-->Unconfigured : onFaulted: [SUCCESS]Describe alternatives you've considered
Stay with the current approach: Each
HardwareComponenthandles faults and fault recovery in its own way.This isn't too bad, but it makes it harder for users to use different
HardwareComponentsA standardized topic/service interface (e.g. an
std_msgs/Booltopic/is_faultedand anstd_srvs/Triggerservice/clear_fault)Also nice, but doing that would mean the faulted state is "overlaid" over the existing lifecycle.
Additional context
Add any other context or screenshots about the feature request here.