The controller_stopper node ensures that ROS motion commands are only sent when the robot is actually running a program. It monitors the /io_and_status_controller/robot_program_running topic.
When the robot program is not running, the controller_stopper automatically deactivates all motion controllers (unless they are explicitly marked as 'consistent'). This behavior provides two main benefits:
- Transparency: Callers attempting to send commands to an inactive controller are immediately informed that the controller cannot accept commands.
- Safety/State Management: Any running actions on the ROS controller are aborted when the program stops.
Once the robot program starts running again, any previously active motion controllers are automatically reactivated.