June 17, 2019, 05:01:46 AM
Robotforum | Industrial Robots Community

 Epson Robot Offset / Inverse Position Functions Needed

normal_post Author Topic:  Epson Robot Offset / Inverse Position Functions Needed  (Read 313 times)

0 Members and 1 Guest are viewing this topic.

April 22, 2019, 04:12:34 PM
Read 313 times


Looking for help with an  Epson robot with Cognex vision. I have the system calibrated and communicating through a PLC. I am wondering if anyone has wrote an offset function and an inverse function. This posiition math functionality is probably available if the system has Epson vision but without it there does not seem to be anything in the system to do positional math. I am working on it currently using trig functions to do translate/rotate transforms.

I am trying to achieve the following

  RunTimePickPos =  (RunTimePartPos : INV(GoldPart)) : GoldPickPos

This is what the basic math would be on a Fanuc Karel system. The : is a positional offset operator and the INV is function that inverts a position.  If anyone has done a similiar system on an Epson and used a different approach I would appreciate hearing from you as well.
Any thoughts/code would be much appreciated.

Thanks  Elvicash

Today at 05:01:46 AM
Reply #1



April 22, 2019, 04:27:51 PM
Reply #1

Fabian Munoz

I've got your message
When you say "I have the system calibrated and communicating through a PLC." what exactly do you mean ?

I will try to do the standard procedure, teach the grid with cognex and teach a frame of that grid with the robot. Once you have a common origin and x and y direction (on both) just offset the robot the distance the camera is telling you


April 22, 2019, 05:34:25 PM
Reply #2


Fabian do you teach a tool and move to the points retuirned by the vision system?

How does that work if you want a custom pick location do you just move the point of interest in the vision system?


As to my system

I attached a pointer to the robot taught a tool. Made that tool active. Placed a grid under the camera, calibrated the camera. Taught a frame /local to the grid. Robot is getting world x,y,r values back from the camera. So that is all working.

I actually want to snap the camera before I pick it the first time and then jog the robot to where I want to pick that initial gold part. Teach the pick location. Then as I snap and find at run time I want to use the orig vision golden location and taught robot pick location to take the current run vision location and return/calculate a run robot pick location. 

I do not see any sort of positional offset function in the Epson environment from code I currently have this line
   Move P5_CurrStyle_Pick +X(dRuntime_Offset(LOC_X_VAL)) +Y(dRuntime_Offset(LOC_Y_VAL)) +U(dRuntime_Offset(LOC_U_VAL))

which just adds to to those components of P5 that is not what I want.

What I would like to achieve is a  LINEAR OFFSET ROTATE Transform so I can manipulate X,Y,Z,U,V,W positions relative to each other.

Such as P10 = P5 : P12   

Epson says they provide that sort of functionality internal to their system but it is not a part of the spel system. I have not seen an Epson vision manual so I do nto know what is actually available.

If anyone has done anything more than adding or subtracting to a positions X,Y,U from a point I would appreciate your input.

April 22, 2019, 07:20:33 PM
Reply #3

Fabian Munoz

Fabian do you teach a tool and move to the points returned by the vision system?
 Yes, because the grid made the correspondence. Let say,  Cognex sees the part 5 mm on the x, then you add 5 mm to your x on the obot. To make it clear the origin in cognex is obviously 0,0, but in your robot maybe it is 73,4, 29.3. So, on my example your pick point is at 78.4, 29.3. Same with the angle

How does that work if you want a custom pick location do you just move the point of interest in the vision system?
I dont exactly understand what a custom pick up is.
maybe this is the answer. Put a part, take a picture, write the coord.  Jog the robot until your pick point, write coord. Compare the coord, then you will find out the correct offset

Move P5                           Normal move to P5 , you can use Go or Move
Move P5 +Z(30)               Move 30 mm above P5
Move P5  :X(20)                Move 20 mm until the value of X = 20
Move P5  :X(15)  +Y(5)     Move 15 mm until the value of X = 15 and at the same time , 5 mm on the Y axis

April 23, 2019, 07:22:33 PM
Reply #4



  This methodI posted was not accurate for me after testing it
« Last Edit: May 01, 2019, 11:27:27 PM by elvicash »

May 01, 2019, 02:38:22 PM
Reply #5


I have had limited success with the code I posted that method will not work for high accuracy it does roughly track the part XY and some small rotation. I feel I have to return to finishing the Offset function I was initially trying to roll out. I need to calculate the difference between the original part location and the runtime part location and add that difference to the local. was trying to add the calculated difference to the taught part pos which did not work. What I am trying to accomplish is the following.

Tool 1 Camera calibrated to Local 5 - snap / find  store part location X,Y,U save that info teach pick position P(10) with local  5 

Build up local 6 by the following Loc 6 = Local 5 : (Vis_Run_Part_Loc : INV (Vis_Orig_Part_Loc ))

P(11) = P(10) except its Local 6 relative all components XYZUVW match P10

Move to P(11)


May 01, 2019, 11:25:11 PM
Reply #6


Eureka - I got this to work today I have been battling it for multiple weeks. Epson does not easily support positional robot math. To get this to work I had to do 3 translate rotate matrix equations and then calculate a new frame/local dynamically per pick and I also have copy the original taught taught position into a new position so it has the new local number. This was to do a Fixed Camera part pick - What I would call Vision with Frame Offset.  In my method I calculate a new frame per pick and always go to the same position I went to when the part was initially part. 

My pick sequence looks like the following

    'Move clear of Camera
    Go P10_App_Pick
    If SnapCognex = True Then
      'We had a good snap and find
      Print "Cognex Success - Style ", iTempStyle

        Print "Cognex Failed - Cannot pick part"
        Exit Function
    'Calculate the runtime offset    (2 matrix operations)
    ' Part Diff = RUN_LOC : (INV (GOLD_LOC))
    Call Calc_Runtime_Offset
    Create Local 6 = Local 5 : Part_Diff    (1 matrix operation)
    Call Calc_Runtime_Local
    Tool 1
    'Copy P5 into P6 with Local 6 assigned
    P(6) = P(5) /6
    Go P6_Run_Pick +TLZ(-25)
    Move P6_Run_Pick
    Call Close_Grip
    Move P6_Run_Pick +Z(25)
    'Move clear of the camera
    Go P10_App_Pick


If anyone out there has an easier way to do Epson guidance with a Cognex camera I would be interested in sharing information.

If anyone is reading this I would suggest buying Epson Vision which has canned methods for guidance.

Today at 05:01:46 AM
Reply #7



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

Position gap between vision and EPSON robot

Started by tcyang123 on Robot Vision and Vision Products

1 Replies
Last post March 22, 2019, 05:19:26 PM
by Fabian Munoz
EPSON R+ robot

Started by sambhaji on other Robots

0 Replies
Last post January 10, 2017, 05:49:48 AM
by sambhaji
EPSON Robot RC+ Software

Started by napster3 on other Robots

0 Replies
Last post April 17, 2019, 03:45:52 PM
by napster3
Epson PS3 robot faulting

Started by fitzrobot on other Robots

0 Replies
Last post August 26, 2014, 03:10:14 PM
by fitzrobot