Configuring a Protective Stop Service
Robot hardware typically encounters two types of faults:
- Protective Stops (P-Stop): These are software induced and sometimes can be recovered from programmatically. Examples of P-Stops include a cobot detecting an unexpected collision, the ROS driver not sending commands at the expected rate, dirty power supply, and the robot being near known finger pinch joint configurations.
- Emergency Stops (E-Stop): These are triggered physically via red emergency stop buttons on the robot and require physical intervention to reset.
Many vendors provide APIs to monitor and recover from protective stops, which you can integrate in MoveIt Pro to make recovery faster and more intelligent.
P-Stop integration with MoveIt Pro UI
To have MoveIt Pro monitor for protective stops and provide a modal to recover from a P-Stop, you will need to configure the following in your robot driver:
-
Fault status topic
name: /protective_stop_manager_node/robot_fault_status
messageType: moveit_studio_agent_msgs/FaultStatus
-
Protective stop service
name: /recover_from_protective_stop
serviceType: std_srvs/Trigger
After using the UI to recover from a P-Stop it is common to use Pose Jog teleoepration to move the robot to a safe configuration, sometimes turning off collision checking.
P-Stop integration with Objectives
To interface with your vendor's P-Stop recovery mechanism in an objective, you will wrap it in a behavior. Typically this mechanism is a ROS service, in which case you can refer to this example hpp and cpp.
This allows you build specific objectives that recover from the P-Stop and perform some context aware action, such as reversing the manipulator's motion.