Hello everyone,
Today I am posting here because I encountered a really weird Protective Stop (PS) that I am not able to fully understand. The PS code that I get is the C204A6:5 and it appears when I try to blend 2 movel
s with a continuous force threshold check (lets call it movel_with_force_check
).
What is particular about this PS is that it is really hard to reproduce, even when I execute the same trajectory followed by the UR10 when it stopped for the first time.
First, let me explain you how my movel_with_force_check
works: At a URscript level, whenever I request this move, I create a new thread that executes the motion separately.
thread motion_thread():
movel(thread_pose, a=thread_acc, v=thread_vel, r=thread_blend_radius)
thread_flag = 1
# I add a stopl command with a low acceleration to avoid finishing
# the time frame with no command.
stopl(0.001)
end
In the main thread I check continuously the force reading and if the threshold is exceeded, I kill the motion_thread
and execute a stopl(10.0)
command to abort the motion. Contrarily, if the move returns naturally and no force is detected, I proceed with the next motion command.
I’ve been blending simple movel
+movel
and movel
+movej
combinations with no problems so far, but when I try to blend two movel_with_force_check
the PS sometimes prompts when the robot enters C’s blending radius. A simple representation of the trajectory would look like this:
I don’t fully understand how the driver computes the velocity and acceleration when the robot enters and leaves the blending radius. Nevertheless, I tried to use a “big” radius to play it safe. I also choose B and C positions carefully to avoid overlapping radiuses.
Could performing the motion in a separate thread somehow induce this issue? I read that the thread scheduling in the UR is done in a round robin fashion and that it is not possible to control it. I already detected that sometimes, when the motion_thread
’s movel
finished naturally and the given thread was scheduled last in a time frame, the robot ended up in motion with no following move command. This produced a sudden deceleration that sometimes ended up in PS.
Has someone ever experienced something similar? Or does anyone knows if there is any recommended value for the distance between blending radiuses?
One last thing, anyone knows what is the number printed after the PS code? In this case 5 (from C204A6:5)?
Thanks for all your time and attention! I look forward to read your replies.
David