Hi all,
Here is an update on how we were able to find a solution for this situation:
The templates provided in versions 1.1.15 and previous of our Force Torque Sensor legacy driver package (DFU-X.X.X), as well as our first URCaps release, will recreate this kind of situation. The TCP port we normally use with UR in our templates is 63351. However, this port continuously outputs data to the controller. Thus, when a program is paused (for instance, during the safeguard stop described in this post), the thread will also be paused. During the pause, the FT Sensor would keep on sending out data through TCP port 63351 and all of those values would be kept in a buffer. When the program is resumed, all of those values would be read by the thread. This results in a delay in the values read in the thread and the actual forces applied to the FT Sensor. We need to use the 63350 port for the FT Sensor. This port will only return values when it is asked to.
To do all of this with a template we provided, you need to modify the program at three places :
- In the BeforeStart section of the program, change the TCP port from the socket_open function to : socket_open("127.0.0.1", 63350, "stream")
- In the thread that gets data from the FT Sensor, add the following line right before the socket_read_ascii_float function : socket_send_string("READ DATA", "stream")
- At the very end of the thread, make sure you use the sync() function. No Wait is necessary.
The templates provided in our legacy driver package for Robotiq's Force Torque Sensor will be updated in a future release. Note that all of the above applies to the new URCaps software for the FT Senor. The same will be updated in a future version of the sensor's URCaps.
If you would like to know more, please leave your question or comment below!
Hey All,
I have a program where light curtains are hard wired into the safeguard stop of a UR3 with auto reset so when you reach into the work cell, the robot will pause. When leaving the protective area resuming the program, a thread in the program would occasionally get stuck at the end "sync()" command and not return to the top of the thread. We noticed that the longer the robot was paused, over 5 seconds, you are almost guaranteed the error we are experiencing.
This thread is responsible for reading force data from the robotiq force torque sensor. We would then apply a force too large causing a protective stop. Is there a solution for this? Possibly a return function after sync or something like that?
To summarize, when the robot enters safeguard stop from the light curtains, and then resumes after we leave the protective area, our force monitoring thread freezes up (even though the Force values appear to be updating) and we end up pushing too hard against the FT150 because our Fz value isn’t updating.
Has anyone delt with this?
Thanks,
Eric