Roles Founding Pro, Tactile Sensor Beta Testers
Full Name Matthew Bush
Job Title COO/Cofounder
Country US - United States
Company (optional) Hirebotics, LLC
@abeachy_HG24 here is the script function that we use:
To use this in your program you would just call runSlow(1) to set the speed slider to 100% or runSlow(0.25) to set it to 25%. I have put this in a background thread before when I wanted to enforce a given speed slider ratio for a program, that way if someone moved the slider in production it automatically moved it back. You can also choose whether to show the speed slider on the run screen or not.
def runSlow(speed): socket_open("127.0.0.1",30003) socket_send_string("set speed") socket_send_string(speed) socket_send_byte(10) socket_close() end
There is a way to do that, you open a TCP connection to port 30003 and can then send the command. Ill post up here when I get back to my laptop the function that we created to set the speed slider. We just call it at the top of the program to set it wherever we want, so if I'm debugging I may set it slow and then I can speed up the robot manually. If I have a long program but there's a particular spot I want to go slow I can automatically slow it down so I can see what's happening in a small section for instance.
The minimum thickness that can be reliably detected is 1.2 mm according to this thread. If you are opening and closing your gripper all the way each bit in the register results in moving the gripper approximately .39 mm for the 2F85 and 0.65mm for a 2F140. If you could limit the amount the gripper is opening and closing you still get the same number of steps but they would now be a thinner slice, for instance if you limited the gripper to 20mm each bit in the register becomes approximately 0.17mm and may help you to register if you have a part or not, hard to say though without trying it.
@Ryan_Weaver That is really cool. Great example of using the real time feedback of the UR for control. Thanks for the white paper as well, really concise. We did a proof of concept last year for a customer for a dual armed UR3 that had a small portion of the program that had coordinated motion. The rest of the time the robots were doing different tasks. When they needed to coordinate we used the modbus register to let them communicate with each other but this would have been so much better! Basically we let the master tell the slave it was time to move, they would both move and then the master would wait for the slave to say that motion was complete and then it started again until the motions were totally complete.
Did you see any issues with differences in joint kinematics between the two causing the actual positions to not be the exact same?
The hardest part is knowing the difference between pause and stop as setting an output to be high when the program is not running goes high when the program is stopped or paused. You will also need to reset the output low by having a background thread running that just keeps that output low when the program is running. The running is straightforward as it goes high when the program is running and low when its not. You could wire this to a relay and then use the relay to cycle between running and not running on the light tower, this keeps the programming to an absolute minimum as nothing is required to switch between these two states using the relay.
What we have done is we wire yellow to be NOT running (stopped or paused) and Green to be running. We then use the red light internally in the program when we want to notify an operator that there is something the robot needs help with, for instance out of raw material or time to take away the finished goods. We then can control this light and make it blink if we want. Then if we have different notifications that we want to visually indicate to the operator we can do that through controlling how it blinks. For instance, I need help, flash the SOS pattern, take material away, long off (2 seconds), short on (1/2 second), give me more material, short off (1/2 second), long on (2 seconds), some other notification, 1 second on, 1 second off. Obviously you just play around with the timing until you get what you and the operator can decipher with a quick look at the light.