January 17, 2019, 07:30:45 PM
Robotforum | Industrial Robots Community

 Geometric Operator and pick offset


Author Topic:  Geometric Operator and pick offset  (Read 1121 times)

0 Members and 1 Guest are viewing this topic.

February 23, 2018, 12:49:04 PM
Read 1121 times
Offline

ShaM


Hi guys!

I have a palletizing robot V8.3.33 and use a camera to receive the picking offset. During the high possible rotation degree - from -180 to +180 I need to change the last bit of "T" in E6POS. Firstly I tried to solve this problem as:
Code: [Select]
IF XPICKING_POS.A < A_zero_switching_degree THEN
   XPICKING_POS.T='B100000' B_OR XPICKING_POS.T
ENDIF
And if A6 goes belove zero it will change the last bit to "1". But when the position changes, the "zero switching degree" of A (RZ) also changes, so I cannot use it. As I understand I need somehow to calculate the Turn bits for every new point. Please, correct me if I am wrong.

Any suggestions how to figure it out?

Linkback: https://www.robot-forum.com/robotforum/index.php?topic=25938.0
« Last Edit: February 26, 2018, 10:44:13 AM by ShaM »
  • Like    Thanks

Today at 07:30:45 PM
Reply #1

Advertisement

Guest

February 23, 2018, 06:45:44 PM
Reply #1
Offline

DannyDJ


Hello, maybe you can define your point as FRAME(X,Y,Z,A,B,C) E6POS uses S and T values, FRAME don't...
  • Like    Thanks

February 24, 2018, 11:40:28 AM
Reply #2
Offline

SkyeFire

Global Moderator
How are you receiving and applying the offset from the vision system?  Normally this shouldn't be an issue -- simply apply the offset to your original point using the Geometric Operator, and allow the robot to find the shortest route to the desired Cartesian coordinates.  I'm confused as to why you would need a specific T value.  Normally in situations like this I simply limit the rotation input to +/- 179.999 degrees and allow the path planner to do the rest.
  • Like    Thanks

February 24, 2018, 05:11:59 PM
Reply #3
Offline

ShaM


SkyeFire, at the beginning I was trying to do the same as you explained. I offset the Reference Position with Pick Offset using the Geometrik Operator:
Code: [Select]
FRAME pick_offset={X 100.0000,Y 100.0000,Z 200.0000,A -100.0,B 0.0,C 0.0}
DECL E6POS XPICKING_POS={X 610.000,Y -1540.00,Z -193.000,A 7.000,B 0.0,C -180.000}
E6POS Xref_pos={X 510.000,Y -1640.00,Z -393.000,A 107.000,B 0.0,C 180.000,S 6,T 50,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}

Xpicking_pos = pick_offset : Xref_pos

And it works fine without rotation angle "A". As I understand, it shifts reference position with the offset in active Base, so I rotate the point according to Base coordinate system and this is not correct. At list this is what I got - my point became in totally different position than it should be. Please, correct me if I am wrong.

Thereby, I have changed the calculations to:

Code: [Select]
XPICKING_POS = Xref_pos
XPICKING_POS.X=XPICKING_POS.X + pick_offset.X
XPICKING_POS.Y=XPICKING_POS.Y + pick_offset.Y
XPICKING_POS.Z=XPICKING_POS.Z + pick_offset.Z
XPICKING_POS.A=XPICKING_POS.A + pick_offset.A

But after that, I got the "A6 axis limit error", as the reference position is taught in positive rotation of A6 and the offset was -100. That is why I came to the calculation of "T" value.

Do you think there is another way of doing this?
« Last Edit: February 26, 2018, 09:13:35 AM by ShaM »
  • Like    Thanks

February 26, 2018, 10:39:48 AM
Reply #4
Offline

ShaM


I tryed to use Geometric Operator only for point rotation in TOOL coordinat system. It works only with negative values of offset. With big positive offset values, it rotates in the negative direction, even the start moving point and reference point have same A angle. So the path planner cannot solve it by himself and I could make to work only with this code:
Code: [Select]
XPICKING_POS=Xref_input

IF pick_offset.A<0 THEN
   A_reversed_offset.A = - pick_offset.A
   XPICKING_POS = Xref_point : A_reversed_offset ; Rotate PICKING_POS with A angle of active Tool coordinate system
ELSE
   XPICKING_POS.A = Xref_point.A + pick_offset.A ; Add rotation angle to PICKING_POS
ENDIF

; Shift PICKING_POS along every axis of active Base coordinate system
XPICKING_POS.X=Xref_point.X + pick_offset.X
XPICKING_POS.Y=Xref_point.Y + pick_offset.Y
XPICKING_POS.Z=Xref_point.Z + pick_offset.Z

It does not look like the best code, but it actually works.
« Last Edit: February 26, 2018, 12:52:06 PM by ShaM »
  • Like    Thanks

February 26, 2018, 12:08:52 PM
Reply #5
Offline

SkyeFire

Global Moderator
All right...

1.  Why are you performing a shift on the Pick position, instead of on the Base?
2.  Is your vision system carried on the robot end effector, or stationary above the pick area?
3.  When your Offset.A value is 0, what is the value of A6?  Ideally, your "neutral" pick position should be programmed as close to A6=0 as possible, in order to maximize the available rotattion envelope.

Normally, performing simple addition on the A value of a Cartesian coordinate will not work properly -- a Palletizing robot is a rather special case where this can work, at least part of the time.  But to perform the Euler rotation properly, the Geometric Operator should be used.  However, neither of these options provides control over the S or T values.

One issue here is that when the Offset.A value exceeds +/-180deg, the "shortest path" in Axis space from where the robot begins, to the Offset position, is to "shortcut" around the other way.  So achieving an offset of +190deg is easier to reach by rotating -170deg, and the robot will do that naturally.  The end result is the same position in Cartesian space, simply with a different A6 value.

In this case, making your motion LIN, or reducing your Pick position to a FRAME variable rather than a POS type, should allow the robot to work out its own path to the offset pickup without exceeding any axis limits. 
  • Like    Thanks

February 26, 2018, 12:51:22 PM
Reply #6
Offline

ShaM


SkyeFire,

1. This is the concept of the previous projects that I do not want to change. I think there should not be any difference to shift the Base or Reference Point, or there is? Also, how you can rotate the base if your reference position is not in the center of your Base?
2. The vision system is stationary.
3.  When Offset.A value is 0 the A6=20 degree, it is because the middle of possible gripper rotation is also shifted by 20 degrees.

I have the limits +/- 179.99 degrees, as you suggested, so the offset every time is the shortest path.

Reducing the Pick position to a FRAME variable does not help, but I think you are right, making the motion LIN will do the right trick.
« Last Edit: February 27, 2018, 12:48:06 PM by ShaM »
  • Like    Thanks

Today at 07:30:45 PM
Reply #7

Advertisement

Guest

February 27, 2018, 02:09:36 PM
Reply #7
Offline

SkyeFire

Global Moderator
I don't think I've ever seen a point shift used with a stationary vision system -- only with vision systems carried on the end effector.  It can be made to work mathematically, but I don't know why anyone would bother.

For a Base shift, the key is to create your original Base (with 0 offsets), and align it to the vision system frame of reference (or vice versa -- it doesn't matter who gets changed, but they have to match).  Put your work piece in a position where you want the vision system to produce 0 offsets, tell the vision system to use that as its zero reference, and teach your Pickup point there.  Then, whenever the vision system finds the workpiece at some other location, it feeds an offset relative to the zero-reference position to the robot, and the robot shifts the Base to match.  Having the Base origin centered doesn't matter -- the saved value of the Base simply has to agree with the vision system's base when all offsets are zero.

With a starting A6 value of 20, there should not be any issues -- A6 can rotate by +/- 350 degrees.  As long as the A correction from the vision system doesn't exceed +/-180....

Wait... I meant to limit the vision system's rotation to +/- 179.999 -- did you do that, or did you limit A6?  Because the latter definitely won't work.
  • Like    Thanks

March 01, 2018, 12:00:11 PM
Reply #8
Offline

ShaM


SkyeFire,

The concept works exactly as you described with pick_offset.A limitation to +/- 179.99.

I think that BASE shifting idea will work only if you do not have the rotation. For example, the points in BASE_DATA[1] and shifted BASE_DATA[2]
Code: [Select]
BASE_DATA[1]={X 1000.0,Y 1000.0,Z 100.0,A 0.0,B 0.0,C 0.0}
BASE_DATA[2]={X 1100.0,Y 1100.0,Z 300.0,A -100.0,B 0.0,C 0.0}

will be totally in the different position, because the rotation of BASE.A was performed.

That is why the concept of shifting the point was used.
  • Like    Thanks

March 01, 2018, 01:31:03 PM
Reply #9
Offline

SkyeFire

Global Moderator
No, it works fine -- I've done it many times.  It simply depends on the relationships between the pre-shift Robot Base, Vision Base, and Pickup Position being set up properly at the beginning. 

Hm... I don't have any graphics handy, but imagine it like this:
1.  The original, un-shifted Robot Base and Vision Base are taught to be co-located and aligned at one corner of the pallet
2.  The un-shifted Pickup Position is taught to the center of the workpiece, with one corner of the workpiece touching the Origin of the Bases, and with X&Y aligned with the Bases' X&Y.
3.  A workpiece is then placed on the pallet at X 100, Y 200, A 45deg, relative to the original un-shifted position.  The vision measures this 3-DOF offset
4.  The robot receives this offset from the vision system, and applies it to the Base using the Geometric Operator.  The Base is shifted relative to it's original, un-shifted position by X, then Y, then A
5.  After the shift, the robot Base will be co-located and aligned with the corner of the shifted workpiece, just like it was during setup, and the Pickup Position will be above the center of the workpiece, and aligned with it, b/c it was "carried" by the Base -- the relationhip between the Pickup Position and the Base never changes.  The Base simply gets shifted to follow the workpiece, as measured relative to the original un-shifted position by the Vision system.
  • Like    Thanks

March 05, 2018, 08:52:39 AM
Reply #10
Offline

ShaM


Thank you, SkyeFire!

Now I see the important condition to make it work with BASE shift:

1. The original Robot Base and Vision Base must be co-located
  • Like    Thanks


Share via facebook Share via linkedin Share via pinterest Share via reddit Share via twitter

xx
Geometric operator

Started by eusty on KUKA Robot Forum

1 Replies
2200 Views
Last post October 21, 2014, 12:02:38 PM
by SkyeFire
xx
geometric operator

Started by knowledgesharing on KUKA Robot Forum

3 Replies
1749 Views
Last post May 07, 2014, 11:05:09 PM
by SkyeFire
xx
Geometric operator

Started by rumoroso on KUKA Robot Forum

6 Replies
4305 Views
Last post December 09, 2014, 02:12:05 PM
by BluesMatt
xx
geometric operator....

Started by wes_mcgee on KUKA Robot Forum

6 Replies
3937 Views
Last post September 13, 2013, 07:13:44 PM
by wes_mcgee