| I was trying to avoid running off into the endless weeds of details and
acronyms and talking, but oh well... ;) I'm not very familiar with the more advance microscopy based AOI systems
used on silicon and chip level manufacturing (e.g. wire bonding checks).
I'm also not familiar with advanced AOI used in robotic assembly. On the
bright side, I am familiar with the comparatively "simple" form of AOI
used on PCB assembly lines. With PCB's most of the AOI identification and spatial orientation issues
are solved through Fiducial Marks [1] and pattern recognition. Some PCB
AOI systems even read/record chip/board lettering with OCR, as well as
handling Bar and QR codes. Most of the rules and routines controlling
the AOI are consistently derived directly from the PCB design files, so
there is little need for custom setup programming on each new PCB run. That last point is critical; The rules and routines are automatically
and consistently _derived_ from the authoritative data sources. Manually
writing every tiny step in the AOI automation routines for each PCB
design would never be time/cost effective, so it has never been done. Given sufficient example 2D images, 3D scan models, or CAD files, doing
the object recognition and spatial orientation with OpenCV is reasonably
straight forward, even without fiducials. The extremely tricky part will
be automatically deriving rules and routines for the GetScale AOI-like
capabilities from authoritative data sources. If the human assembly task
is to attach the top cover and secure it with four screws from the other
side, you should _never_ need to manually write the AOI routine for
checking the existence of a screw in each of the four corners when
viewing the bottom of the product. I'm sure you're really busy, so I think I'll stop here. ;) If you want to know about the projects I'm working on, email would be a
lot better for me. My address is on my HN profile page. Also, I spotted
a few places where your website could use a little TLC, and it's better
to point them out through email rather than publicly. [1] https://en.wikipedia.org/wiki/Fiducial_marker#PCB |