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

0 Members and 1 Guest are viewing this topic.

Offline ShaM

  • Full Member
  • ***
  • Thank You
  • -Given: 11
  • -Receive: 4
  • Posts: 102
Geometric Operator and pick offset
« on: February 23, 2018, 12:49:04 PM »
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?
« Last Edit: February 26, 2018, 10:44:13 AM by ShaM »

Offline DannyDJ

  • Full Member
  • ***
  • Thank You
  • -Given: 3
  • -Receive: 26
  • Posts: 224
Re: Need to calculate Turn "T" bits after offsetting the point
« Reply #1 on: February 23, 2018, 06:45:44 PM »
Hello, maybe you can define your point as FRAME(X,Y,Z,A,B,C) E6POS uses S and T values, FRAME don't...

Offline SkyeFire

  • Global Moderator
  • Hero Member
  • *****
  • Thank You
  • -Given: 32
  • -Receive: 947
  • Posts: 6429
Re: Need to calculate Turn "T" bits after offsetting the point
« Reply #2 on: February 24, 2018, 11:40:28 AM »
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.

Offline ShaM

  • Full Member
  • ***
  • Thank You
  • -Given: 11
  • -Receive: 4
  • Posts: 102
Re: Need to calculate Turn "T" bits after offsetting the point
« Reply #3 on: February 24, 2018, 05:11:59 PM »
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 »

Offline ShaM

  • Full Member
  • ***
  • Thank You
  • -Given: 11
  • -Receive: 4
  • Posts: 102
Re: Need to calculate Turn "T" bits after offsetting the point
« Reply #4 on: February 26, 2018, 10:39:48 AM »
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 »

Offline SkyeFire

  • Global Moderator
  • Hero Member
  • *****
  • Thank You
  • -Given: 32
  • -Receive: 947
  • Posts: 6429
Re: Geometric Operator and pick offset
« Reply #5 on: February 26, 2018, 12:08:52 PM »
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. 

Offline ShaM

  • Full Member
  • ***
  • Thank You
  • -Given: 11
  • -Receive: 4
  • Posts: 102
Re: Geometric Operator and pick offset
« Reply #6 on: February 26, 2018, 12:51:22 PM »
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 »

Offline SkyeFire

  • Global Moderator
  • Hero Member
  • *****
  • Thank You
  • -Given: 32
  • -Receive: 947
  • Posts: 6429
Re: Geometric Operator and pick offset
« Reply #7 on: February 27, 2018, 02:09:36 PM »
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.

Offline ShaM

  • Full Member
  • ***
  • Thank You
  • -Given: 11
  • -Receive: 4
  • Posts: 102
Re: Geometric Operator and pick offset
« Reply #8 on: March 01, 2018, 12:00:11 PM »
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.

Offline SkyeFire

  • Global Moderator
  • Hero Member
  • *****
  • Thank You
  • -Given: 32
  • -Receive: 947
  • Posts: 6429
Re: Geometric Operator and pick offset
« Reply #9 on: March 01, 2018, 01:31:03 PM »
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.

Offline ShaM

  • Full Member
  • ***
  • Thank You
  • -Given: 11
  • -Receive: 4
  • Posts: 102
Re: Geometric Operator and pick offset
« Reply #10 on: March 05, 2018, 08:52:39 AM »
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