The ProtectiveStopManager
class provides a service that allows the user to recover when the robot enters a protective stop state and to resume normal execution.
At the moment, this feature is implemented as a service that calls other services, namely unlock_protective_stop
and resend_robot_program
.
In the future, it would be preferable to implement this feature differently, so that one ROS service does not have to call other services.
The resend_robot_program
callback must be implemented by a controller.
So, one option is to re-implement the ROS Dashboard Client as a controller rather than a node, and to use this new controller to advertise the resend_robot_program
service (instead of the GPIOController
).
This controller could also create the recover_from_protective_stop
service (currently created by the ProtectiveStopManager). recover_from_protective_stop
could then directly call the functions that implement unlock_protective_stop
and resend_robot_program
, rather than calling those services.