rotational offset from an image

  • I have a Cognex camera setup to take an image of a part and bring back offset values of x, y, and angular rotation.

    • TCP was taught with QTOOL ON and with the teach pendant. Tool pointer does track with the pointer used to teach the TCP.
    • Robot frame has been taught to the calibration grid that I used in the vision setup. I used the origin of the fiducial on the grid and went out x and y and taught those points to set up my frame. (cam1_frame = frame(cam1_o,cam1_x,cam1_y,cam1_o))
    • Created a master pick position and referenced the robot frame. (cam1_frame+master_pick)
    • Created a final pick instruction. (point final_pick = cam1_frame+master_pick+trans(x,y,0,a,0,0)
    • I execute the shift. (do lmove final_pick)

    Everything works pretty well when shifting in either the x direction, y direction, or both the x and y direction. However, when I try to do an angular shift, it does not shift correctly. My pick position will shift in the correction direction but if I tell the robot to shift 1 degree, it seams like shifts further then 1 degree.

    So I feel confident that my vision system is set up properly, what are some things that I can check/verify on the robot side of things to see why my x/y shifting is ok and why my angular shift is not?

    Please let me know if any more info is needed.

  • If the robot is not producing any errors, then it's doing what it is told to do............but there's oodles that could be influencing it, to name but a few:

    1. Is the zeroing accurate and correct.

    2. What was the BASE set to when you created the frame locations.

    3. What BASE values are you using in your program.

    4. Does you frame have any orientation applied - ie is it parallel to the pick up surface or is there slight orientation difference.

    5. Is the rotation and orientation between the taught frame and master_pick position accurate - ie same plane.

    6. Have you used the align command to align the Z of the tool to make parallel with the Z axis of the frame prior to teaching the master_pick.

    3. Is the received theta value from vision actually correct - ie same orientation as left hand rule (RZ,RY,RZ)

    4. Is your variable 'a' being set to the correct received value from the vision.

    5. What is the result of your compound instruction (this is your target location) - what do you need to do in order to correct it.

    6. Is the 'a' value sending it in the opposite rotation direction - ie positive value making it rotate negative or vice versa.

    7. Have you tried an alternate solution for your calculation as a comparison.


    DECOMPOSE maspick[1] = master_pick; grab all the separate elements XYZOAT values of master pick and dump into arrary elements.

    POINT new_pick = TRANS(maspick[1]+x,maspick[2]+y,maspick[3],maspick[4]+a,maspick[5],maspick[6]); target values

    LMOVE cam1_frame+new_pick

    Without any code or values...……………...I aint got the foggiest...…...Your code and associated location values would be useful

Advertising from our partners