We’ve done a test:
- Move robot to position 1, by setting motor joint values
- Move to a 2nd position, again, by setting motor joint values
- Move back to position 1
- Move to a 3rd location
- Move back to location 1
When the robot arrives at its position, we record approx 60 - 90 motor joint values and average them. We then compare the forward kinematic solution for X,Y,Z position of the robot tool flange. At each stage, we compare position 1 to see differences (a position repeatabilty test). This is what we found:
X position, the same within 0.1mm (what we expect from UR specifications)
Y position, identical in all cases
Z off by 10mm!!!
For Z, we get either the correct location or are 10mm above the location. To rule out mistakes, we’ve attached a laser distance meter to the tool head. It also records a 10mm difference.
After inspection, it’s always motors elbow and wrist 1 that are off. The position is -90 deg, -90deg, -90deg, -90deg, +90deg, 0deg. (we work in radians, though).
In the error case, the expected value is -1.5709… radians, but we get -1.5532… for the elbow and -1.5883… for wrist 1.
We use a UR10 CB3, script version V3.70. the robot is programmed to have a load of 6kg with an offset in bot Z and Y. Speed to move to the locations is 250mm/s and acceleration is 1.25m/s^2.
We send the desired motor joint values via TCP/IP in UR Script. Actual joint values are also read back via UR script. The test is run multiple times, the Z error comes in a seemingly random manner, e.g. sometimes not at all, sometimes 3x in a row and anything in between.
Any help appreciated!
After inspection, I noticed that I made a mistake. I use a 10mm TCP move distance keep out, to prevent the tool crashing into an object. So it stays in effect a safe 10mm distance away from the target position. I disabled the function, but in the wrong way, causing the problems…
Interesting, but I’m confused how the 10mm difference was random?
The test program is part of a much larger program. Because of my mistake, the code that checks whether or not to apply the 10mm safeguard got coupled to a timer which had no relation to the test.
Glad you were able to find the issue! I have had similar issues like that in the past where I am left just shaking my head.
Yes, I thought I checked everything a thousand times before posting, it had me really baffled… The minute I posted the problem, I got the insight on what it might be.
Well, no shame in admitting to making a mistake, right? It’s just a public forum
A lot of the new guys here always lose their minds doing a move with a blend radius immediately followed by a sleep() or Wait and wonder why the robot isn’t quite reaching the pose. That’s another frustrating one.
This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.