How to use different payloads

Good morning,

it´s the first time I´ve ever worked with a Robot. In the “Webinar” they said, that when your Roboter has gripped something, changing the payload is mandatory.
The payload of an empty gripper is 2,3kg. When i go to the point, where i wanna grip something (after i closed the gripper) i set the payload to 4,3kg (empty gripper plus weight of the part that has to b gripped).
The program is running (not a simulation) and it like its not making any difference, whether I´m using the “Emtpy Gripper” or select the new payload.
Can anyone maybe explain me what´s the reason for changing the payload?
Thanks in advance.

Hello,

The robot needs accurate payload information so it can compensate correctly. Proper payload settings help maintain the integrity of the robot’s path, the safety settings, and the mechanical health of the robot.

Honestly, you shouldn’t “see a difference” in your robot if you’re setting the payload correctly. It’s motion and performance should be smooth and seamless with an empty gripper and while holding a product if the payload is set correctly.

Incorrect payload settings often reveal themselves as random protective stops. Imagine the following:

You’re empty gripper is 2.3kg. You pick up your part, total payload is 4.3 kg, but you don’t tell the robot that. Then you tell the robot to travel at max speed and acceleration. When you get to the end of your move, the robot has done a bunch of background calculations to determine the deceleration profile so the robot stops smoothly and reaches the waypoint you set. However, those calculations are based on a 2.3kg payload. Since you’re holding 4.3kg now, it’s likely the robot won’t stop in time and miss the target point, which will result in a position deviation protective stop.

Sometimes, the discrepancy may not be enough to create a protective stop, but it is still putting easily preventable wear on your robot.

Keep doing what you’re doing. Also, after releasing your part, don’t forget to return the payload back to that of the empty gripper. You should also consider the center of gravity of the gripper and gripper+part system. If you have CAD data, it’s easy to pull CoG data from there. If not, it will need to be hand calculated. The link below has a CoG calculation example.

Edit: If you have an e-series robot, the robot also has the payload and CoG wizard you should use if you don’t have accurate data. This uses the built in force-torque sensor on the robot to calculate the payload and CoG for you. You can run it for the empty gripper and while the gripper is holding a part.

Good Morning Miwa,

thank you very much for your quick and helpful response.
In addition to your answer, i have a new question.

The situation is like this:
The Roboter should grip 4 pieces at once (each is 0.5 kg), that´s why the payload with the product is 4,3kg (Empty gripper plus 4 pieces). I was thinking/ hoping, that the Robot would compare it´s workload with the programmed workload and it would stop with an error if not all 4 pieces are gripped (cause then the workload is not the way I´ve set it in the software).
If I understood your answer correctly, the workload is “only” used for the performance and motion of the Robot, not for actual checking/ comparing the “preset” workload and its actual workload (once the pieces are gripped).

Is there any way to use /compare the preset payload with its actual payload? Or am I just thinking wrong on how the Robot is working.

Kind regards.

That would be a cool feature.

If the answer is “no”, there might be other options for you.

When I load parts into the machine with the robot arm I have to test to make sure it 1) is actually in the vise, 2) that it’s sitting flat in Z axis and 3) that it’s up against the stop in X axis.

After I place a part and close the vise I position the now-empty gripper at various locations and use Direction nodes with an Until Distance and an Until Contact actions to make sure it’s loaded correctly.

For example, I test to see if the part sits flat in the vise by loading in the vise and closing the jaws, then setting the gripper to a position off the part and just above, then use Direction to glide over the top. If it hits the part during the Contact action it pauses and sends a message to the Pendant so when the Operator see’s the robot stopped they come over re-seat the part manually and continue. If it doesn’t hit the part and reaches the Distance that means it is loaded correctly and it continues on.

I’ve been able to test positions less than 1/64 of an inch, so if your parts are at least that thick you should be able to come up with something.

1 Like

Good mornning fuknrekd,

Thanks for your answer. I asume that you are using a gripper where you can check the status of it (whether its open or closed). Up to now, i only have a simply gripper with 2 valves (without any feedback). That gripper is connected directly to 2 DQ of the Controller. So all i can do is to open/close the gripper but I don´t have any feedback if the gripper really has gripped something.

Do you maybe know, if there is any possibility to check the weight via a script?
Like after the Robot reaches the point, where he should grip the 4 pieces, close the gripper, move the Z-Axis a little bit up (so that the pieces don´t touch the ground) and then compare the “actual” workload with the actual “set workload” (4.3kg).
So if 1 piece would be missing the actual workload will be less then the calculated/set workload.
Maybe I´m thinking to much like an PLC-programmer. But that´s what i would do if I work with a PLC.

Kind regards.

1 Like

Yes, I use Robotiq grippers so it can tell me if it failed to grab a part.

I don’t know of a way to test weight that’s user-configurable but I know the functionality is there in my UR10e because it can measure Mass and COG using a script that has you move the robot to various positions to measure it.

What model robot are you using? If it has force feedback you should be able to set up a “testing” routine after pickup where the robot moves and tries to touch an object. With the UR10es I have I have a Force node and a Direction node.

I usually use Direction to test if parts are seated because I can nest actions and one of those actions is “Until Contact”.

In the below image I position the gripper finger above the part and off the edge by about 1/64th inches then use Direction to move down 3/8 inches.

If the gripper makes it the full 3/8" it will return to the test position and continue.

If the gripper makes contact before it makes it to 3/8" it stops and throws a popup telling the user it missed.

At this point the user will seat the part manually (if possible) and press “Continue”.

image

If you tell us more about what you are doing and what equipment you’re using I’m sure we can find a solution, provided you have any type of force feedback. .

kadams,

You can use the zero_ftsensor() and get_tcp_force() script functions to get the forces applied at the tool flange of the robot. This function returns the following 6d result: [Fx, Fy, Fz, TRx, TRy, TRz], where the forces are in Newtons, and the torques are in Newton-meters. These forces are measured using the base coordinate system, so a mass at the tool will be a negative Z value.

Below is a screenshot of some code using the functions. You need to evaluate the force at the tool after gripping your parts, but before setting your 4.3kg payload. The set payload command also zeros the FT sensor, so setting payload too soon will not give you the right measurement. The -5.0N I used is arbitrary. You’ll need to adjust that for your application.

3 Likes

Hallo miwa,

thank you for your answer.

At your screenshot, could you maybe explain me why you use “weight[2]”?
What is the purpose of the brackets inkluding the number 2 [2]?

Thank you very much.

Weight is a 6D list representing the forces and torques at the TCP of the robot.

Weight[2] represents Fz in the list; force in the z direction. Weight[0] would be Fx, Weight[5] would be TRz, etc.

More information on the get_tcp_force() function can be found in the script manual which can be downloaded from the support site.

1 Like

Hello miwa,

I´m trying to implement that at my roboter program.
But every time i get a different value at “Weight= get_tcp_force”.

Even if I´m running with 0 Bottles, the value is everytime different.

Do you maybe have any idea?

How accurate is that measurement?

Thank you very much for your help.

Hello,

What size robot do you have? The FT sensor specs are below for UR5e and UR10e:

UR5e
Accuracy: 4.0N
Resolution: 2.5N

UR10e
Accuracy: 5.5N
Resolution: 2.0N

You will see some fluctuation of the FT sensor measurement at times. If the payload of the robot is moving around for some reason when the reading is taken, that fluctuation will be greater. How much change are you seeing?

With your added payload of 2.0kg, I would think your Weight[2] criteria should be more like -17N to -19N depending on the readings you see at the FT sensor.

Hello miwa,

we are using a UR10e.

In my gripper there fit max. 6 Bottles (each around 400g).
If i test the function (with an empty gripper) the value of the tag “Weight” somewhere between -0.5 and +2.3.
If i test the function with 3 gripped bottles its somwhere between -2 and +xxx.
Worst part is, that if i gripp 6 Bottles, the value is nearly same like with 3 gripped bottles.

Which i really don´t understand.

You can try writing a quick test program to monitor the force value, then manually operate your gripper with varying payloads and check if the values you get are logical. See below.

If the sensor provides the readings you need well in the test program, it may have to due with the waypoints prior to zeroing the sensor and taking the reading. If you have high accelerations on those waypoints, there could be some external influence on the force.

If the readings still aren’t what you need, and knowing the number of bottles is critical to your application, some additional sensors may need to be added to the gripper assembly or the work environment. You can also reach out to your distributor who can provide onsite support to develop a solution with you.

Good morning miwa,

i´ve made a test-programm just like yours.

If the grippers are empty, the value of “Weight_Z” is jumping between -0.01 to -2

If i put 5 Bottles into the gripper, the value is jumping between -1.2 and +0.5

Those measurements are done without any movement of the robot.

So i don´t see how can i use that function for checking if the robot has gripped the bottles (or as an add on, if the bottles are not
completely filled).

Yes, the number of gripped bottles (and their measured weight) is important, cause the Robot will pick the bottles from a conveyor and will place it into a carton.
So I´m not to sure, whether these robot functions are usefull for our need.

Kind regards

Is your robot mounted flat on its base?

If the base Z axis isn’t mounted in the direction of gravity, your force will actually be a component of both Z and X or Y forces.

If it is mounted flat on its base, I would recommend having your distributor come take a look at the application.

Good morning miwa,

the robot is mounted on a flat base.
I´ve added “unrealistly” long waiting times between the movement.
Only then the measurement is “more or less” stabel.
But then the whole process is not efficiant anymore.
So i guess using the functionalties of “Zero_ftsensor” and “get_tcp_force” is not
the perfect fit if the whole programm is really fast (Without any big waiting times).

Thank you very much for all of your help.
Greetings from Luxembourg.