I would like to change a plane feature during program run. In the Installation tab, under the plane feautre, the three points of the plane can be variable, but if I change them in the program it doesn’t change the plane (the plane and the points are variable as well). So my question is, how can I change the plane? Can I use this three points of plane or should I use some pose script for it?
We have had the same feature request and were told that it is not possible to do that since the feature is not created with URScript. This would be a great feature to have so that as robots are moved around facilities you could allow operators to simply reteach the location by picking 3 known points or scanning some targets with a camera mounted on the arm.
What I have found as a workaround is to use a point feature instead. Since a plane and a point both get stored as a pose, you could program relative to a point feature and change the point variable in a program.
I’ve already tried to use only a Point feature but the problem is that the robot position and the reference position is changing and one point isn’t precise enough.
Any features, at runtime are just a Pose.
Plane features are also ultimately stores as a single pose, with the offset in respect to Base.
You should not tick the underlying Plane points to variable, but if the plane itself is variable, then this can be changed programatically at runtime.
Say you have a variable plane “Plane_1”, then when the program is running, you can change this simply by overwriting with a new value Plane-_1 = p[x, y, z, rx, ry, rz].
Hence, following movements will be done in respect to the new plane.
In the application I would like to use the Plane Feature as a reference because we have to move away the robot. For this I defined a MoveL command which is relative to this Feature, and after we put the robot back I always reteach this Plane. During testing I experienced strange offset, I mean the reference Plane was shifted about 10 mm along X-axis, but the positions was shifted along x,y,z axis.
I know that UR only guarantee repeatability not absolute precision, so my question is that is it a good solution for a reference? How else can I make a MoveL movement relative to a feature and how precise can it be?
You don’t measure the Plane accurately enough. When I measure a pallet as my reference point I put the 3 points at least a meter apart (but I have a very primitive and not pointy tool for measurement).
Your TCP is not accurate, so you maybe you don’t measure what you think.
You use relative movements. Relative movements are always remembered relative to base.
Read the manual. When I first measured the plane without looking into instruction, I thought that I should move along X axis, then Y axis and I am done. That’s how I done it with other robots. Turned out it worked completely different and orientation of the tool is very important in the first point.
Hope that helped. Good luck!
EDIT: Besides, if you do it so often, maybe think about some kind of docking station for the robot to ensure the same position every time.
The robot has a docking station, and for defining the Plane I use two pins in the robot with a precise TCP. It’s orientation is teached with orientation wizard where I set the Base feauture. The distance isn’t bigger than the distance between the points of the Feature.