Skip to main content
Version: 7

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:

  1. Fault status topic

    name: /protective_stop_manager_node/robot_fault_status

    messageType: moveit_studio_agent_msgs/FaultStatus

  2. 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.