Third party camera vision system

  • Hello,
    I have experience with Fanuc iRvision, but now I have been asked to help with Keyence camera. Situation is following - one stationary camera (mentioned Keyence camera) has to detect position of part (X,Y, R) and pass it to the robot, other camera (robot mounted = EOAT) makes some measurements at defined points and should use sent "offset". Communication between stationary camera and robot uses GI, and it works, I can get offset X, Y and rotation. I already tried to use Offset function to move robot in X and Y coordinates and it works. But when it comes to rotation it's more complicated, or at least I suppose... So can anyone, please, tell me, what is necessary to setup when robot has to cooperate with third party vision system? Just same UFrames? Or more things? What is your experience? I could setup this process very easy with Fanucs vision, but that's not a solution...


    Thanks, Tomas

  • without fanuc vision system, robot uframe must be at the same position to the camera calibration frame
    i think it's not your case but if you need to combine results of two camera(stationary and robot mounted), it's necessary to do vector calculation (in Karel)

  • thanks for answer, I thouht so... And you're right I don't need to use two cameras, second one is really just EOAT without any influence to positioning. Anyway - let say I have UFrame and calibration frames same, how can I transfer information from camera to robot? I mean what function should I use to offset robot? Should I use just "offset" or should I "offset uframe"?

  • put your vision result in a position register PR[X]
    now depend how you are using your vision system
    _if you are using master part and vision return only the offset from this master part
    use in your program "L P[1] 100mm/s CNT0 OFFSET PR[X]"
    _if you are using direct cartesian position
    use in your program "L PR[X] 100mm/s CNT0 "

  • Hi
    With the Keyence, do you use a grid or some kind of axis coordinates ? I guess, somehow the Keyence is going to give you values based on something


    If that is your setup , then the answer to your question is very simple.


    Your TCP has to somehow match the pick point. Normally is.


    1) Locate grid on the FOV (obviously). I'm assuming the grid has some marks that allow you to create Cartesian coordinates axis.
    2) Using the robot create an UF that has the same Orig, X an Y mark.
    3) Once you are done, move to that origin and create a PR with that UF. Let say is PR[a]=0,0,...,...,...,21.7
    At this point Keyence and Fanuc have the same reference Cartesian plane


    4) Remove grid
    5) Place the part, anywhere on the FOV, take pictures and move the part until you get rotation = zero.
    Let's say results are 75,42,0


    Here is the tricky part.
    5) Jog the robot until you reach 75,42 and higher than the part . Now your TCP is dead on on top of the part
    6) Start rotating robot on Tool until your EOAT matches the part. Read the angle. Let say is 5 degrees
    7) If you look at user coord, you will see 75,42,...,...,...,26.7


    That's it, you are done


    On the TP, you write


    PR[v:x off Key] = GI x
    PR[v:y off Key] = GI y
    PR[v:rot off Key] = GI rot + 5 This 5 is the discrepancy between your tooling and the Keyence
    I do it this way (redundant) because I might have to manipulate the values
    PR[a,1] = PR[v,1]
    PR[a,2] = PR[v,2]
    PR[a,3] = whatever height you want
    PR[a,6] = PR[v,6]
    L PR[a] 100mm/sec Fine


    or (I hope you understand my idea above)


    There's others ways to do it
    You could have you origin point, then


    PR[v:x off Key] = GI x
    PR[v:y off Key] = GI y
    PR[v:rot off Key] = GI rot + 5
    L PR[origin] 100mm/sec Fine OFFSET, PR[v]

    Retired but still helping

  • So I tried it and it doesn't work. Or to be honest, it works but not as I need. I explained it wrong. Now I attached picture so hopefully it will be more clear. Both suggested ways of course can move robot to X,Y and rotate wrist, but I need to shift positions out of FOV, so rotation of part is nut just EOAT rotation but X,Y movement as well... Does anybode have some solution?


    Thanks,
    Tomas

  • Are both cameras keyence???


    You can locate the part with the camera mounted on the robot
    Anyway, the part is located either by the fixed camera or the camera mounted on the robot


    Since you need to offset multiple points the best way is to offset a user frame


    Keyence has robot vision tools to generate the X,Y,R offset


    X,Y,R are real values, how do you read them using GI?

  • Hi robotero,
    yes, both are keyence. And you're right, I could but I can't as I have to work with cell as it was designed.


    Anyway I think a found a solution - I made UFRAME which corresponds with keyence camera "frame", then I take all information from keyence and I put them to PR[Keyence], then I make UFRAME[Offset]=PR[Keyence], after this PR[Offset]=UFRAME[Keyence]. Result of these operations is PR with N,O,A,L config, and I can use this PR as a standard movement modifier - Offset,PR[Offset]. I tried it with other robot which I have and it works.
    Is there another, easier or better way how to do it?


    Yes, they are real, it was one of my biggest complaints, as they round it... Of course we could multiple it to transfer it over GI's but it wasn't last trouble, so I was able to persuade them to make revision of this system. And they agreed, as I'm pretty sure it won't work as they think. Or at least it won't work in this configuration with all their demands.


    Thanks,
    Tomas

  • Hello every body,
    I have same case with this. I use Keyence's camera to guiding the Fanuc Robot to pick up bag(workpiece). I make Uframe same as origin of the camera like the instruction of this forum. X and Y coordinat is work, robot follow the coordinat of camera. But if the rotation is bigger than +20 degree or -20 degree, Robot has fault INTP-106 cause of MCTL-003. Is any suggestion to configure that?

  • My guess is that PR 92 isn't fully defined. Check PR 92s position in the data menu. If you see any ***** in the coordinates then change them to zero.


    Also, unrelated to your issue, this is a very strange program. Too many jump labels. And why would the pick move be joint, Cnt100?

  • My guess is that PR 92 isn't fully defined. Check PR 92s position in the data menu. If you see any ***** in the coordinates then change them to zero.


    Also, unrelated to your issue, this is a very strange program. Too many jump labels. And why would the pick move be joint, Cnt100?

    Yes, the uframe coordinat is out of range only when robot recieve the angle data from camera up to 20 degree. Now is already working, because I change the uframe data. X, Y, Z fill zero and w, p, r same with the coordinat of keyence camera.
    Thank you for your advice.

Advertising from our partners