I’m trying to scale the bin on the tool of UR10e. I’ve read many articles about this, but non of them worked properly. Robot picks up the bin the same way as forklift.
force_values=get_tcp_force()
fx=force_values[0]
fy=force_values[1]
fz=force_values[2]
global weight = (sqrt (pow(fx,2) + pow(fy,2) + pow(fz,2)))/9.82
end
N2
def test():
move under the bin and touch bottom surface.
zero_ftsensor()
sleep(1)
pickup a bin
global force_values=get_tcp_force()
global tcp=get_actual_tcp_pose()
global fx=force_values[3]/tcp[1]
global fy=force_values[4]/tcp[2]
global fz=force_values[5]/tcp[3]
global weight = ((sqrt (pow(fx,2) + pow(fy,2) + pow(fz,2)))/9.82)
end
N2
def test():
move under the bin and touch bottom surface.
zero_ftsensor()
sleep(1)
pickup a bin
global force_values=get_tcp_force()
global tcp=get_actual_tcp_pose()
global fx=force_values[3]/tcp[1]
global fy=force_values[4]/tcp[2]
global fz=force_values[5]/tcp[3]
global weight = ((sqrt (pow(fx,2) + pow(fy,2) + pow(fz,2)))/9.82)/0.295
end
#“0.295” is distance between tool flange and center of bin
I know exact bin weight before scaling with robot.
All of the abovementioned methods are inaccurate (± 0.6kg).
What I might be doing wrong?
The force sensing capabilities of UR Robots are limited. According to UR-Support the accuracy is
Force: +/- 10 N
Torque: +/- 5 Nm
In practice it is a bit more accurate than these values (from my personal experience) but you should not try to detect weights or differences in weight smaller than 1kg (10N).
You would need an external force sensor for higher accuracy.
The most amazing thing was that robot scaled the same bin at different places and showed me different values.
As it is visible on the picture, fork is a little bit uneven just to prevent box from falling down.
I just looked through your code again. It seems like you’re zeroing your FT sensor while touching the object?
You should zero right before touching the object. And put a delay before the zeroing, as well, so you’re sure the robot isn’t vibrating after a potential movement while zeroing it.
Hi. I’ve also tried to weigh accurately with my UR10e - however, as I want to be able to get a reading ± 10 grams, you may be able to guess that I simply couldn’t. The results would bounce around even when the robot was truly motionless. Whilst it may be accurate to ± 1kg, I was never going to be able to determine to my desired level of precision.
I did manage to get around this via other methods - whether it was using an external set of scales and having the operator give a yes/no answer, or have the robot probe for contact (something that my UR was able to do very well). So whilst I can tell if something is there, I can’t tell (repeatedly to within a tolerance of 1kg) how much it weighs.
From what I’ve read a lot of users tend to opt for external sensors to achieve this. Something that can be attached to the flange of the robot that wires to the port by the flange. If you come up with a method of doing this without extra hardware please do share!