1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. Industrial Robot Support and Discussion Center
  4. KUKA Robot Forum
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

KUKA : Part Presentation Vision *Correction*

  • SU05LLY
  • November 30, 2020 at 1:44 PM
  • Thread is Unresolved
  • SU05LLY
    Trophies
    3
    Posts
    30
    • November 30, 2020 at 1:44 PM
    • #1

    Good morning community,

    Where words/descriptions might fail, pictures I'm hoping make up. therefore please find my two examples of the task I need to query and reach out for assistance on:

    Firstly the tech specs:

    KR3 - R540

    KSS 8.6.6

    KRC4 Compact

    Machine Concept:

    The machine is a fixtureless design, where an operator can present a mechanical component that is detected by a STATIC Cognex camera mounted to the roof of the machine. ( each part is taught into the machine so that parts presented position is a mathematical sum from its "Gold-Standard" ). The robot then moves end of arm tooling to the position of this part for indepth evaluation.

    [ Pose to part constant even when part is presented differently ]

    Status Quo:

    ### The Cognex optical axis's ( X/Y ) are orientated and aligned to the exact same direction as the BASE_DATA[1] ###

    ## The Cognex optical axis's ( X/Y ) are calibrated to metric mm units ##

    I'm using simplistic Base switching / Geometric maths to apply the sum / delta from the Cognex ( X / Y ) and the already calibrated base ( Base_Data[1] ) to an available base : BASE_DATA[10].

    BASE_DATA[10] = BASE_DATA[1] : fCognexOffset ; fCognexOffset.X/Y = sum of part position minus "GoldStandard"

    I then apply the Cognex ANGLE math to the end effector TCP.A so that the evaluation pose of the end effector is always consistent regardless of part presentation.

    This all works fine for TOP DOWN inspections where no angle is applied to the inspection and therefore the end effector is parallel to the machine plate that the parts are placed on.

    The above is limiting as if a part inspection requires an angled evaluation angle then applying a TCP.A correction is negated and actually incorrect.

    I have applied the .A delta to the fCognexOffset FRAME, but this then behaves incorrectly too, as the pose of the robot is now presented out of FOV of the part. I believe because it is orientating on the BASE_DATA[1] origin.

    Question:

    Can anyone aid in a calculation that can accommodate part orientation that can be applied to BASE_DATA[10]?. There could be multiple checks per part but for ease of understanding I reference just this one evaluation pose.

    Thank you in advance community......


    Images

    • Image Datum.jpg
      • 52.76 kB
      • 640 × 480
      • 28

    Edited 2 times, last by SU05LLY (November 30, 2020 at 4:41 PM).

  • SU05LLY
    Trophies
    3
    Posts
    30
    • November 30, 2020 at 1:45 PM
    • #2

    Image 2

    Images

    • Image_Angled.jpg
      • 53.89 kB
      • 640 × 480
      • 16
  • SU05LLY
    Trophies
    3
    Posts
    30
    • November 30, 2020 at 1:45 PM
    • #3

    Side View of possible xEvaluationPose

    Images

    • Image_RobotPose.jpg
      • 48.03 kB
      • 640 × 480
      • 17
  • Online
    SkyeFire
    Reactions Received
    1,052
    Trophies
    12
    Posts
    9,429
    • November 30, 2020 at 1:59 PM
    • #4

    You said the camera is static, but if so, then how is it inspecting the part from different angles? If the camera is being moved to different positions, then at minimum you would need a different camera calibration for each camera position. Probably require a different Job file in the Congex for each position, and each Job file with its own calibration.

    And, given that the Cognex can only measure in X,Y,Rz, putting it at anything other than an orthogonal angle will make its measurements incorrect. You might be able to perform mathematical convolution on the Cognex measurement values to convert into robot Base coordinates, but it's going to be tricky, rather imprecise, and reliant on having a perfect 6DOF measurement of the camera vs the Base.

  • SU05LLY
    Trophies
    3
    Posts
    30
    • November 30, 2020 at 2:15 PM
    • #5

    Hi SkkyeFire:

    Apologies, my error is putting across, the Cognex is static (roof of the machine) and is used to send the robot to the part for it to use the end effector (Keyence) camera(s) to do the evaluations. Think of the Cognex as a course adjustment.

  • Koppel
    Reactions Received
    19
    Trophies
    3
    Posts
    132
    • December 3, 2020 at 8:22 AM
    • #6

    Ok... I think I understand.

    The Congex overhead just gets the location of the part.

    The Keyence camera is mounted on the robot and only shows the correct part when the camera is directly overhead.

    When you rotate the TCP the Keyence will no longer look directly at the part.

    If the Keyence is always looking at say a 45° angle, you can apply a constant XY coordinate correction to make the part appear into frame again.

    Its just Pythagorean theorem twice. Once for the X offset and once for the Y offset.

    Just offset the tool in a way that the tool center point is is the target.

    Then when you rotate the TCP the part is always centered in the KEYENCE camera.

    And the COGNEX always sends the robot to the same coordinate.

    Images

    • CameraTargetAsTCP.PNG
      • 7.16 kB
      • 566 × 338
      • 19

    Edited once, last by Koppel (December 3, 2020 at 8:33 AM).

  • Online
    SkyeFire
    Reactions Received
    1,052
    Trophies
    12
    Posts
    9,429
    • December 3, 2020 at 4:27 PM
    • #7

    So, using the Cognex data to perform a Base shift to bring the part into the Keyence's FOV? Hm...

    That should work. But it would require that the Cognex/Robot Base (Base 1 in this case) have it's origin located located exactly at the key feature of the part when the part is in 0,0,0 position. Or, the Cognex data would have to be relative to the ideal part position, not just simply measuring the part's position in Base 1.

    And, of course, the Keyence Vision position would have to be taught in Base 10.

  • Online
    panic mode
    Reactions Received
    1,280
    Trophies
    11
    Posts
    13,085
    • December 3, 2020 at 4:41 PM
    • #8

    i read this more than once and ... it is not very clear....

    the way i understand is there is one vision camera mounted on ceiling (Cognex) .

    on the EOAT is another camera or inspection device (Keyence).

    Cognex is used to locate part (coarse), then robot comes closer and use Keyence to do ... fine location... (and/or inspection).

    It also seems that there is no question about Cognex result..., question seem to be about Keyence result because EOAT can be in a different position and orientation. as usual, key part (Keyence) was not mentioned until post 5.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • SU05LLY
    Trophies
    3
    Posts
    30
    • December 8, 2020 at 12:26 PM
    • #9

    Good morning all,

    So to conclude this thread ( and thank you for your replies ), the job was ongoing up until last Friday, then I stumbled across Fiducial calibration ( classed as a GRID calibration within Insight Explorer ).

    Once performed within the ISE, the pixels are converted to REAL WORLD metric values from the Fiducial origin. I then made BASE_DATA[1] the co-ordinates of this Fiducial via 3-point method. ( essentially making the Cognex and BASE_DATA[1] identical ).

    Each Cognex job is representative of the part placed under its FoV, therefore a unique Cognex job number / part. Within each of these jobs, I have performed this GRID calibration ( luckily , the GRID parameters are saved explicitly to the job number and NOT to the camera itself). - A point to note is that each job number has had the fiducial plate raised or lowered to coincide with the "Patmax" feature it is looking for. ( If the Feature of the part is say 100.0mm from the machine base plate, then the Fiducial plate is also raised to this height, giving a sizeable GRID calibration).

    ## I will take an image of our mechanical Fiducial calibration set up to aid what I've written once the tool shop have finished the mechanism ##

    Upon a trigger within a job, the "Patmax" reports the X/Y/A offset to the Fiducial origin, I then apply these values to:

    fCognex.X/Y/A

    BASE_DATA[10] = BASE_DATA[1] : fCognexOffset

    The PLC sends down to the robot the SLIN Cartesian positions ( PreAquisition / ToAquisition ) that were recorded against BASE_DATA[10].

    In summary, I was using Horizontal and Vertical scaling values that the robots was sending to the Cognex camera, although these values calculated the pixel - real world, it wasn't accurate in my application.

  • SU05LLY
    Trophies
    3
    Posts
    30
    • December 9, 2020 at 8:24 AM
    • #10

    This is the mechanical "Jig" used for Fiducial / origin calibration.

    fiducial origin maintained regardless of height adjustment.

    Thus accurate GRID calibration ( in this case 6.35mm ) to BASE_DATA[1] origin.

    NOTE:

    BASE_DATA[1] = fiducial plate placed into the aluminium plate without the blue scissor adjuster. So the Cognex ORIGIN and the robot BASE origin are identical.

    Images

    • fiducialPlate (2)_autoscaled.jpg
      • 123.77 kB
      • 899 × 1,200
      • 21
  • Koppel
    Reactions Received
    19
    Trophies
    3
    Posts
    132
    • December 9, 2020 at 10:13 AM
    • #11

    Why on earth do you have different parts on different heights?

    Why are you doing the fiducial calibration multiple times for different parts.

    You can have one COGNEX program that turns on a specific pattern to search based on an input.

    Just calibrate the COGNEX camera to give out values based on the robot coordinate system. Pixel coordinates to World coordinates.

    The static COGNEX camera will find where the pattern is that you are looking for.... the X / Y and rotation.

    And you just transfer the X, Y and rotation values to the KUKA.
    The robot will go to this location without any conversation.

    Now for the camera that is attached to the robot... the Keyence. Define a new tool for that. So that the tool center point is not the tip of the camera lens but the target location. Like a really long invisible tool...
    When you command the robot to use this tool and go directly to the position that CONGEX sent you... you will look directly at the part. Even if you set some weird angles to the tool... it will still be focused on the part.

    I find it really difficult to understand what you try to achieve.

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download