Universal Robots Forum

How can I check if a SafeGuard Stop has occured?

If SafeGuard Stop occurs during program execution, I want to stop the Gripper.
To do this, my code should run even if SafeGuard Stop occurs while my Node is not running.
How can I do this?

If this doesn’t work, please let me know how to check that SafeGuard Stop has occurred even when my node is running.

hi zerom

I think you need to run a service/daemon in background checking the controller: RTDE / Realtime Interface from python.
RealTime Interface: Safety Mode or Safety Status will provide information Client_Interface_V3.12andV5.6.xlsx (last tab)
RTDE Outputs: safety_status_bits, safety_mode, safety_status RTDE Guide

In robot program I would implement a thread which is permanently checking the service for changes.
How do you stop the gripper? Are you able to stop your gripper by the service/daemon cause of if the program will stop I suspect you wont be able to fire a cmd to the gripper via urscript.

@URTeam this would be a nice feature: events. eg if an event happens like “critical stop” and urscript will go from run to stop-mode a handler to fire an action.


You are right about that Mike.
Either you need to check the RTDE server (old or new version) or you can use the modbus server if your gripper can be connected to that (https://www.universal-robots.com/how-tos-and-faqs/how-to/ur-how-tos/modbus-server-16377/).

I some time ago requested that they put it as a safe electrical signal just like Emg. Stop (Safeguard Stopped as Electrical Output).
If you could use that to stop the robot please take the time to upvote the feature - I think it is a largely underrated feature when it comes to making the UR a safe collaborative robot which is connected to other HW components.