Universal Robots Forum

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.


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”.


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. .


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.


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