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. ABB 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

Using one vision job to teach another

  • ColoradoTaco
  • February 28, 2024 at 6:49 PM
  • Thread is Resolved
  • ColoradoTaco
    Reactions Received
    16
    Trophies
    3
    Posts
    103
    • February 28, 2024 at 6:49 PM
    • #1

    As the title suggests... Is it possible to use one vision job to help define the parameters of a second job? I am trying to set up a pick-and-place arrangement that should be capable of handling a vast array of parts. I want to have the operator place a single part on the feeder tray, in order to "train" the current part profile, then have a second job that simply uses that first piece as a pattern in order to locate all the similar parts for picking.

    Parts vary in length, diameter, and shape (all different types of orthopedic screws and fasteners).

    My alternative is to use the first piece to pull a bunch of measurements using calipers and such, then measure EVERY SINGLE PART with the same calipers, and compare the results in RAPID do determine whether or not that part is correct. I would really like to avoid having to do all that data transfer though. If I can just extract a PATMAX from the single-part first image, then run everything else according to that (until I reset it).

    Ideas? Or am I dreaming?

  • Go to Best Answer
  • Online
    SkyeFire
    Reactions Received
    1,038
    Trophies
    12
    Posts
    9,375
    • February 28, 2024 at 8:37 PM
    • #2

    What vision system are you using?

    Quote from ColoradoTaco

    Parts vary in length, diameter, and shape (all different types of orthopedic screws and fasteners).

    Mmm... not simple. Usually you teach the vision system each part, with enough details that it can identify each one separate from the others. That said, this:

    Quote from ColoradoTaco

    My alternative is to use the first piece to pull a bunch of measurements using calipers and such, then measure EVERY SINGLE PART with the same calipers,

    doesn't make sense to me. Vision systems can usually ID parts from each other without any precision measurement being required.

    Of course, a 2D vision system looking down at a jumbled pile of screws is going to have issues. A screw that's not flat could look several % shorter or longer. A circular hole in a part can look elliptical. Two screws lying just right will look like one double-length screw. And so on.

    Now, if you have your vision system set up to reliably identify cylinders (for example) and pass back a reliable dimensional measurement of any/all cylinders it finds, what you're suggesting might be possible. You could create a program that would ask the operator for inputs (part name, part ID number, array index, etc), then would take the "training shot" you mentioned, then save all those user-entered values, along with the length/diameter/etc of the trained part, into an array entry in RAPID.

  • ColoradoTaco
    Reactions Received
    16
    Trophies
    3
    Posts
    103
    • February 28, 2024 at 9:13 PM
    • #3
    Quote from SkyeFire

    You could create a program that would ask the operator for inputs (part name, part ID number, array index, etc), then would take the "training shot" you mentioned, then save all those user-entered values, along with the length/diameter/etc of the trained part, into an array entry in RAPID.

    The idea is to use the first part image essentially in place of any operator input. We actually have a Fanuc robot running iRVision that is doing this (although rudimentary). It looks at blob area, circumference, circularity, and major axis length, and uses those data points to filter results from all the production images.

    I'm trying to replicate the same thing in Integrated Vision (we have a Cognex 5000-series smart camera, connected to an OmniCore controller). I had hoped I might be able to do it without measuring all the discrete data every single time, because that gets slow and tedious. Something like First Part Image >> Locate black-on-white blob >> save as pattern in second job to ID all other parts

  • ColoradoTaco
    Reactions Received
    16
    Trophies
    3
    Posts
    103
    • February 28, 2024 at 9:17 PM
    • #4

    I have a vision job that can find and extract all the relevant information from a single part, and I *could* use that for the bulk processing, but one of the tools doesn't work near the edge of the camera field and I haven't found a suitable alternative.

    Images of a test part and the data collection

    Images

    • First Part.jpg
      • 49.76 kB
      • 735 × 552
      • 4
    • First Part_Data.jpg
      • 36.3 kB
      • 595 × 157
      • 2
  • ColoradoTaco
    Reactions Received
    16
    Trophies
    3
    Posts
    103
    • February 28, 2024 at 9:21 PM
    • #5

    And here is another image, showing a closeup of the tool I'm using (twice, in opposite directions) to find the edges of the screw at each end. I then do a distance measure between those edges to find the length.

    In the Fanuc iRVision, this appears to be MUCH EASIER. At least, based on what I've been able to figure out the previous programmer did... Looks like their blob tool can output major axis (length and orientation). Am I missing an easier way of doing this?

    Images

    • End Tool Closeup.jpg
      • 72.27 kB
      • 1,016 × 583
      • 1
  • ColoradoTaco
    Reactions Received
    16
    Trophies
    3
    Posts
    103
    • February 28, 2024 at 9:23 PM
    • #6

    And here's what happens when my parts get too close to the edge. The calipers to find the ends of the screw (and therefore calculate length) exceed the edge of the image, and it fails the measurement.

    Images

    • Part Near Edge Failure.jpg
      • 60.11 kB
      • 873 × 480
      • 4
  • Online
    SkyeFire
    Reactions Received
    1,038
    Trophies
    12
    Posts
    9,375
    • February 28, 2024 at 10:09 PM
    • Best Answer
    • #7

    So, ABB IV then. The thing about IV is that it's essentially an ABB skin on top of Cognex InSight. And you can modify the InSight spreadsheet in the Cognex camera, although that can be a bit risky unless you know what you're doing. ABB puts a spreadsheet program into the Cognex to act as the interface between the RAPID vision routines and the camera.

    I can't claim to be any more than a novice with ABB IV, but it should be possible to do anything a Cognex InSight camera can do, although IV's existing infrastructure can make some tricks harder to pull off.

    I do know ABB tech support has a couple of really good vision engineers who know all the nooks and crannies of both ABB and Cognex (and how they interconnect). I think talking to them first will save you a lot of struggle -- at minimum, they can outline the steps you need to take (and what pitfalls to avoid).

  • ColoradoTaco February 28, 2024 at 10:16 PM

    Selected a post as the best answer.

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