-
Notifications
You must be signed in to change notification settings - Fork 282
Description
It seems that any commands to the robot (via send_program) can only be sent at 10Hz.
I have spoken at length with the support team at Universal Robot, and they tell me that commands can be sent to the secondary interface at 30002 at near 125Hz. I am not sure what rate the robot broadcasts its information over 30002. I will ask them tomorrow morning.
I looked fairly deep into the code, and it looks like you are using a blocking socket.recv call. I tried setting the timeout of the socket to .01 seconds, but this causes several problems with other functions timing out. Would it make sense to have a shorter timeout, and have handling for when the socket doesn't receive anything? That would then allow commands to be sent to the robot faster than 10Hz, because the socket wouldn't be blocking and thus restricting the command rate.
Conversely, would it be easier to put the command code (`send_program') on a different client that the receive code, so that you don't have to mess around with that code?
This is related to Ticket #1, because (also from UR support) the best way to send smooth continuous commands to the robot is via speedl, because it is the only command that does not impose a velocity profile, which causes sequences of other commands (such as movel) to be jittery (as the robot is repeatidly command zero velocity in between commands).
I have written a PID velocity controller which can do this, but it requires fast (~100Hz) commands to the robot, as well as equivelently fast updates from the robot about its current pose. I will continue to discuss this with the UR support team.
I am happy to try and resolve this issue, I would just like to know what your design decisions were.
Cheers,
Kel