Weight calculation with UR10e

Hello everyone.

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.

Articles: Universal Robots - Weight detection of any picked object using e-series (universal-robots.com)
Weight sensing with UR10e - Technical Questions - Universal Robots Forum (universal-robots.com)
and many others.
I’ve tried scripts:
N1:
def test():
move under the robot and touch bottom surface.

zero_ftsensor()
sleep(1)

pickup bin

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?

Giorgi

Can you upload a picture of your physical setup? :slight_smile:

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.

I was gonna say the same, but when UR themselves say something else in the article Giorgi links to, it’s difficult to say otherwise. :upside_down_face:

I imagine you’re getting worse results, if you’re not sticking to a force in the z-axis alone.

Here is a picture.

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 have tried that as well.

I think I’ve tried everything what was written on the forum by far…

I think ±10% is very overrated accuracy. Anyways, If I can’t find correct formula, I’ll integrate additional force/torque sensor.

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.

Ah, I see, i will give a try and write the response here. Thanks a lot.

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!

1 Like