Patent Description:
Assembly of products that contain multiple items, such as pharmaceutical packaging, is a complex task. The assembly can proceed in one or more stages with items being placed into the product at each stage. Errors can be introduced at each stage by failing to place a correct item in the product, placing too many of the correct item in the product, and/or placing an incorrect item in the product. Products that are ultimately shipped with errors result in lost revenue, increased customer complaints, and lost time in addressing the customer complaints. In the case of a pharmaceutical product package, one unintended result of improper packaging is that clinicians or patients may be unwilling to use a pharmaceutical product contained within an improperly assembled package, particularly true for pharmaceutical products that are administered parenterally, e.g., subcutaneously, intramuscularly, intravenously, intra-ocularly, or by inhalation. Even if an improperly assembled package is returned to the manufacturer by a clinician or a patient, a regulatory agency, such as the U. Food and Drug Administration, will not allow the pharmaceutical product to be repackaged, resulting in a Notice of Event (NOE). Such NOE's trigger investigations, added expense, and potentially result in an impaired competitive.

<CIT> relates to a medicine inspection device that includes an inspection unit for inspecting a medicine disposed on the inspection unit; a vibrator to impart vibration to the medicine disposed on the inspection unit; and a shooting means capable of photographing the medicine disposed on said inspection unit The medicine inspection device further includes a medicine information detector capable of detecting at least the quantity or type of the medicine based on an image obtained by the shooting means; and a distribution detector configured to detect a distribution of the medicine on the inspection unit based on the image obtained by said shooting means, wherein the vibrator is configured to operate based on a result of detection by the distributor detector.

It would be desirable, therefore, to develop new technologies for product assembly, that overcomes these and other limitations of the prior art, and enhances it by reducing errors and increasing efficiency of package assembly.

The invention is set out by the appended claims.

Additional advantages will be set forth in part in the description which follows or may be learned by practice. The advantages will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.

The accompanying drawings. which are incorporated in and constitute a part of this specification, illustrate embodiments and together with the description, serve to explain the principles of the methods and systems:.

Before the present methods and systems are disclosed and described, it is to be understood that the methods and systems are not limited to specific methods, specific components, or to particular implementations. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.

As used in the specification and the appended claims, the singular forms "a," "an" and "the" include plural referents unless the context clearly dictates otherwise. Similarly, when values are expressed as approximations, by use of the antecedent "about," it will be understood that the particular value forms another embodiment.

Throughout the description and claims of this specification, the word "comprise" and variations of the word, such as "comprising" and "comprises," means "including but not limited to," and is not intended to exclude, for example, other components, integers or steps. "Exemplary" means "an example of" and is not intended to convey an indication of a preferred or ideal embodiment. "Such as" is not used in a restrictive sense, but for explanatory purposes.

Disclosed are components that can be used to perform the disclosed methods and systems. These and other components are disclosed herein, and it is understood that when combinations, subsets, interactions, groups, etc. of these components are disclosed that while specific reference of each various individual and collective combinations and permutation of these may not be explicitly disclosed, each is specifically contemplated and described herein, for all methods and systems. This applies to all aspects of this application including, but not limited to, steps in disclosed methods. Thus, if there are a variety of additional steps that can be performed it is understood that each of these additional steps can be performed with any specific embodiment or combination of embodiments of the disclosed methods.

The present methods and systems may be understood more readily by reference to the following detailed description of preferred embodiments and the examples included therein and to the Figures and their previous and following description.

As will be appreciated by one skilled in the art, the methods and systems may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the methods and systems may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g.. computer software) embodied in the storage medium. More particularly, the present methods and systems may take the form of web-implemented computer software. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices.

Embodiments of the methods and systems are described below with reference to block diagrams and flowchart illustrations of methods, systems, apparatuses and computer program products. It will be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by computer program instructions. These computer program instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create a means for implementing the functions specified in the flowchart block or blocks.

These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.

Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.

The present disclosure relates to improvements in computer functionality related to manufacturing and product assembly.

<FIG> is a block diagram illustrating various aspects of an exemplary system <NUM> in which the present methods and systems can operate One skilled in the art will appreciate that provided herein is a functional description and that the respective functions can be performed by software, hardware, or a combination of software and hardware.

In one aspect, the system <NUM> can comprise a conveyor belt <NUM>. The conveyor belt <NUM> can comprise one or more cleats <NUM>. The one or more cleats <NUM> can be made of rubber or similar material for attachment to the conveyor belt <NUM>. The one or more cleats <NUM> can be raised or otherwise extend above the surface of the conveyor belt <NUM>. The one or more cleats <NUM> can comprise a leading cleat and a trailing cleat based on a direction of travel <NUM>. The leading cleat and the trailing cleat can be relative to an object placed on the belt, such that the leading cleat is in front of the object relative to the direction of travel <NUM> and the trailing cleat is behind the object relative to the direction of travel <NUM>. Accordingly, a leading cleat for a first object can also be a trailing cleat for a second object that is ahead of the first object and so on. One or more objects <NUM> can be placed on the conveyor belt <NUM>. In an aspect, the one or more objects <NUM> can comprise a product in one or more states of assembly. For example, the one or more objects <NUM> can comprise a tray. The tray can be configured to hold one or more items. The one or more items can be related to a medical treatment. For example, the one or more items can comprise one or more syringes, auto injectors, one or more syringe needles, one or more containers of a medicament, one or more pamphlets or sets of written instructions, combinations thereof, and the like.

In one aspect, the set of written instructions sets forth information about how to use and administer a medicament. In another aspect, the written instructions are a medication label approved by a regulatory agency, such as the U. Food and Drug Administration.

In one aspect, the medicament is a solid formulation. In another aspect the medicament is a liquid formulation. In another aspect the medicament is a gel formulation.

In one aspect, the medicament is formulated for oral administration. In another aspect the medicament is formulated for parenteral administration. In another aspect the medicament is formulated for subcutaneous administration. In another aspect the medicament is formulated for intramuscular administration. In another aspect the medicament is formulated for intravenous administration. In another aspect the medicament is formulated for inhalation administration. In another aspect the medicament is formulated for intraocular administration.

In one aspect, the medicament comprises a small molecule active ingredient. In another aspect, the medicament comprises a biologic. In another aspect, the medicament comprises a peptide or polypeptide active ingredient.

In one aspect, the medicament comprises a vascular endothelial growth factor (VEGF) derivative active ingredient. In another aspect, the medicament comprises aflibercept, which is described in one or more of U. Patent Nos. <CIT>; <CIT>; <CIT>: <CIT>;<CIT>; <CIT>; <CIT>;<CIT>: <CIT>: <CIT>: <CIT>; <CIT>; <CIT>.

The conveyor belt <NUM> can pass over a drive roll which can be driven by a stepper motor <NUM>. The use of the stepper motor <NUM> enables precise positioning of the one or more objects <NUM> relative to a camera <NUM>, a camera <NUM>, and a camera <NUM>. The length of each of the one or more objects <NUM> can be represented as a precise number of motor steps. The conveyor belt <NUM> can be precisely advanced or reversed to cause each of the one or more objects <NUM> to be moved into a field of view <NUM>, a field of view <NUM>, and a field of view <NUM>, associated with the camera <NUM>, the camera <NUM>, and the camera <NUM>, respectively. A programmable logic controller (PLC) <NUM> (the PLC <NUM> can comprise a computing device, a PLC, or other controller/processor) can be configured to cause the stepper motor <NUM> to execute any number of steps in either direction to cause the one or more objects <NUM> to be moved into the field of view <NUM>. the field of view <NUM>, and the field of view <NUM>.

In an aspect, the camera <NUM>, the camera <NUM>. and/or the camera <NUM> can be configured for scanning, decoding, reading, sensing, imaging, capturing, and/or interpreting visual codes. In some aspects, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be configured to process laser, linear, or area imaging. For example, in one aspect, the camera <NUM>, the camera <NUM>. and/or the camera <NUM> may include an imager for scanning, reading, and decoding one-dimensional or two-dimensional barcodes. The camera <NUM>, the camera <NUM>. and/or the camera <NUM> can include any imager, barcode scanner, or visual code scanner capable of extracting information from visual codes consistent with the disclosed embodiments. In certain aspects, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be configured to process scanned barcodes, images, and other data. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> can include one or more depth cameras for capturing, processing, sensing, observing, modeling, detecting, and interacting with three-dimensional environments. In certain aspects, the camera <NUM>, the camera <NUM>. and/or the camera <NUM> can recognize and detect depths and colors of objects in the field of view <NUM>, the field of view <NUM>, and the field of view <NUM>, respectively. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> can also provide other camera and video recorder functionalitics, such as taking pictures, recording videos, streaming images or other data, storing data in image buffers, etc. These functionalitics may or may not include depth information. In connection with hardware and/or software processes consistent with the disclosed embodiments, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine sizes, orientations, and visual properties of the one or more objects <NUM>. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> can include or embody any camera known to one of ordinary skill in the art capable of handling the processes disclosed herein. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> can include appropriate hardware and software components (e.g., circuitry, software instructions, etc.) for transmitting signals and information to and from a pass/fail controller <NUM> to conduct processes consistent with the disclosed embodiments. The pass/fail controller can <NUM> comprise a computing device, a PLC, or other controller/processor. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> can output an image and/or one or more notifications to a monitor <NUM>, a monitor <NUM>, and a monitor <NUM>, respectively.

Positioning of the one or more objects <NUM> into the field of view <NUM>, the field of view <NUM>, and the field of view <NUM> can occur at a start-up of the system <NUM> and can be adjusted during use of the system <NUM>. One or more of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be used to ensure proper positioning of the conveyor belt <NUM>. For example, the camera <NUM> can be configured to generate an image of the area within the field of view <NUM>. The camera <NUM> can determine a location of the one or more cleats <NUM> in the image. In an aspect, the camera <NUM> can determine the location of the leading cleat. The camera <NUM> can compare the determined location of the one or more cleats <NUM> in the image to a reference location. If the determined location is equal to the reference location then no adjustment is necessary to the conveyor belt <NUM>. If the determined location is not equal to the reference location, the camera <NUM> can determine an offset based on the difference between the determined location and the reference location. The offset can be determined in a measure of distance, for example, millimeters, centimeters, inches, and the like and/or the offset can be determined as a number of steps. The camera <NUM> can transmit a signal to the PLC <NUM> to advance or reverse the conveyor belt <NUM> by the offset by engaging the stepper motor <NUM>.

In operation, the system <NUM> can be configured to assess a current state of assembly of the one or more objects <NUM> and take one or more actions based on the current state of assembly. As each of the one or more objects <NUM> is advanced by the conveyor belt <NUM>, the one or more objects <NUM> will each be placed in the field of view <NUM>, the field of view <NUM>, and the field of view <NUM> of the camera <NUM>, the camera <NUM>, and/or the camera <NUM>, respectively. While <FIG> illustrates only three cameras, it is specifically contemplated that less than three or more than three cameras can be used. It is further contemplated that the conveyor belt <NUM> can be configured to have more than the illustrated three objects <NUM> disposed thereon, regardless of the number of cameras. As the one or more objects <NUM> progress along the conveyor belt <NUM>, one or more items can be assembled into the one or more objects <NUM> by a human operator or a robot.

When each of the one or more objects <NUM> is within a field of view of one of the cameras, the camera can generate an image of the object <NUM> within the field of view associated with that camera. For example, the camera <NUM> can generate an image of the area within the field of view <NUM>, the camera <NUM> can generate an image of the area within the field of view <NUM>, and the camera <NUM> can generate an image of the area within the field of view <NUM>. Each of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can analyze their respective images. The analysis of an image can comprise determining a presence or absence of one or more patterns. The one or more patterns can comprise a text pattern, a numeric pattern, a symbol pattern, and combinations thereof. For example, a text pattern can comprise any sequence of characters such as, "FILTER NEEDLE". A numeric pattern can comprise any sequence of numbers such as, "<NUM>". The symbol pattern can comprise any sequence of symbols such as. In an aspect, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can utilize optical character recognition (OCR) to "read" the one or more patterns. In another aspect, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be configured to not utilize OCR, but rather can be configured to merely recognize the one or more patterns as a specific pattern.

In an aspect, the one or more patterns can be embodied on the one or more items to be assembled into the one or more objects <NUM>. In an aspect, at least a portion of the one or more items can comprise one or more associated patterns. Thus, in the event the camera <NUM>, the camera <NUM>, and/or the camera <NUM> determines the presence of the one or more patterns, the presence of the one or more patterns indicates a presence of the item associated with a specific pattern. For example, if the camera <NUM> determines the presence of "FILTER NEEDLE" in the image taken of the area within the field of view <NUM>, then a conclusion can be drawn that an item associated with the pattern "FILTER NEEDLE" is present in the object <NUM> within the field of view <NUM>. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be configured to determine the presence or absence of a plurality of patterns within a single image. For example, the camera <NUM> can determine the presence of "FILTER NEEDLE" and "FILTER NEEDLE" in the image taken of the area within the field of view <NUM>. The presence of both patterns can indicate that an item associated with two occurrences of the pattern "FILTER NEEDLE" is present in the object <NUM> within the field of view <NUM>.

Each of the items that can be assembled into the one or more objects <NUM> can be associated with one or more patterns that indicate a presence or absence of a specific number of the item. For example, an item may only be embodied with one occurrence of a specific pattern. If the camera <NUM>, the camera <NUM>. and/or the camera <NUM> determine that the specific pattern only occurs once then the conclusion can be drawn that only one of the item is present. However, if the camera <NUM>, the camera <NUM>. and/or the camera <NUM> determine that the specific pattern occurs two or more times then the conclusion can be drawn that more than one of the item is present. In another example, an item may be embodied with two occurrences of a specific pattern. If the camera <NUM>, the camera <NUM>, and/or the camera <NUM> determine that the specific pattern only occurs twice then the conclusion can be drawn that only one of the item is present. However, if the camera <NUM>, the camera <NUM>, and/or the camera <NUM> determine that the specific pattern occurs one or three or more times then the conclusion can be drawn that more than one of the item is present. In a further example, an item may be embodied with a range of specific patterns. For example, the item may be embodied with one to two occurrences of the specific pattern. If the camera <NUM>, the camera <NUM>, and/or the camera <NUM> determine that the specific pattern occurs once or twice then the conclusion can be drawn that only one of the item is present. However, if the camera <NUM>, the camera <NUM>, and/or the camera <NUM> determine that the specific pattern occurs three or more times then the conclusion can be drawn that more than one of the item is present.

Each of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be configured to analyze an entire image or one or more specific regions of an image. <FIG> illustrates an example image <NUM> of an object <NUM>. The object <NUM> can comprise a tray <NUM> configured for storing one or more items. The one or more items can be assembled into the tray <NUM> such that at least a portion of the one or more items is present in one or more specific regions. The tray <NUM> can comprise one or more regions, for example, a region <NUM>, a region <NUM>, and a region <NUM>. Each of the region <NUM>. the region <NUM>, and the region <NUM> can be associated with an area where the one or more patterns should be present if the item is present in the tray <NUM>. For example, the region <NUM> can be associated with a location of a vial cap of a vial when assembled into the tray <NUM>, the region <NUM> can be associated with a location of one or more syringes and/or one or more needles when assembled into the tray <NUM>, and the region <NUM> can be associated with a location of one or more pamphlets when assembled into the tray <NUM>. Each of the camera <NUM>. the camera <NUM>, and/or the camera <NUM> can be configured to analyze one or more assigned regions of the image <NUM>. For example, the camera <NUM> can be assigned to analyze the region <NUM> and the region <NUM>, the camera <NUM> can be assigned to analyze the region <NUM>, and the camera <NUM> can be assigned to analyze the region <NUM> and the region <NUM>. Any combination of assigned regions is contemplated. Furthermore, each of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be configured to determine presence or absence of one or more assigned patterns in the assigned regions. For example, the camera <NUM> can be assigned to determine presence or absence of a vial cap in the region <NUM> and presence or absence of a first pattern (including a number of occurrences of the first pattern) in the region <NUM>, the camera <NUM> can be assigned to determine presence or absence of a second pattern (including a number of occurrences of the second pattern) in the region <NUM>, and the camera <NUM> can be assigned to determine presence or absence of a third pattern (including a number of occurrences of the third pattern) in the region <NUM> and presence or absence of a fourth pattern (including a number of occurrences of the fourth pattern) in the region <NUM>. Any combination of assigned patterns and assigned regions is contemplated.

Returning to <FIG>. each of the one or more objects <NUM> can be configured to contain a specific number of each of the one or more items. The presence of the specific number of each item indicates that the one or more objects <NUM> is correctly assembled. The presence of anything other than the specific number of each item indicates that the one more objects <NUM> is incorrectly assembled. Each of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be configured to make an independent assessment of the object <NUM> within the respective field of view. If a camera determines that the specific number of items the camera is configured to detect is present, the camera can issue a PASS signal to the pass/fail controller <NUM>. If a camera determines that the specific number of items the camera is configured to detect is not present, the camera can issue a FAIL signal to the pass/fail controller <NUM>. If each of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> issues a PASS signal to the pass/fail controller <NUM>, then the pass/fail controller <NUM> can provide a signal to the PLC <NUM> to cause the stepper motor <NUM> to advance the conveyor belt <NUM> to advance the one or more objects <NUM> to be positioned under the field of view of the next camera. The pass/fail controller <NUM> can further transmit a notification to each of the monitors <NUM>-<NUM> to display a PASS notification. If one or more of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> issues a FAIL signal to the pass/fail controller <NUM>, the pass/fail controller <NUM> will not provide a signal to the PLC <NUM> to cause the stepper motor <NUM> to advance. The pass/fail controller <NUM> can further transmit a notification to the monitors <NUM>-<NUM> associated with the camera(s) issuing the FAIL signal to display a FAIL notification. An operator (e.g., a human or a robot) positioned at the monitors <NUM>-<NUM> displaying the FAIL notification can take corrective action to remedy the FAIL status. For example. if the FAIL signal was issued as a result of a missing item, the operator can replace the missing item whereupon the camera that made the prior FAIL determination can re-generate and re-analyze an image to determine that the item is now present and issue a PASS signal to the pass/fail controller <NUM>. In another example, if the FAIL signal was issued as a result of one or more extra items, the operator can remove the one or more extra items whereupon the camera that made the prior FAIL determination can re-generate and re-analyze an image to determine that the required number of items is now present and issue a PASS signal to the pass/fail controller <NUM>.

In a further aspect, the analysis of an image by the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can comprise not only determining the presence of absence of the one or more patterns, but also determining a rotation of two or more patterns. In an aspect, the two or more patterns can be embodied on the one or more items to be assembled into the one or more objects <NUM> along a specific axis. In an aspect, at least a portion of the one or more items can comprise two or more associated patterns along a specific axis. Thus, in the event the camera <NUM>, the camera <NUM>. and/or the camera <NUM> determines the presence of the two or more patterns along the specific axis, the presence of the two or more patterns along the specific axis indicates a presence of the item associated with a specific pattern along the specific axis. For example, if the camera <NUM> determines the presence of "FILTER NEEDLE" and "FILTER NEEDLE" along the same axis (e.g., <NUM>°, <NUM>°, <NUM>°, <NUM>°, <NUM>°, and the like) in the image taken of the area within the field of view <NUM>, then a conclusion can be drawn that an item associated with the pattern "FILTER NEEDLE" and "FILTER NEEDLE" along the same axis is present in the object <NUM> within the field of view <NUM>. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> can be configured to determine the rotation of a plurality of patterns within a single image. For example, the camera <NUM> can determine the presence of "FILTER NEEDLE" and "FILTER NEEDLE" along a first axis and the presence of "SYRINGE NEEDLE" and "SYRINGE NEEDLE" along a second axis in the image taken of the area within the field of view <NUM>. The presence of both patterns along two different axes can indicate that an item associated with two occurrences of the pattern "FILTER NEEDLE" along the first axis is present in the object <NUM> and an item associated with two occurrences of the pattern "SYRINGE NEEDLE" along the second axis is also present in the object <NUM>. By way of further example, the camera <NUM> can determine the presence of "FILTER NEEDLE" and "FILTER NEEDLE" along a first axis and the presence of "FILTER NEEDLE" along a second axis in the image taken of the area within the field of view <NUM>. The presence of both patterns along two different axes can indicate that two occurrences of an item associated with the pattern "FILTER NEEDLE" are present in the object <NUM>.

Each of the items that can be assembled into the one or more objects <NUM> can be associated with one or more patterns that are embodied along a specific axis that indicate a presence or absence of a specific number of the item. For example, an item may be embodied with two occurrences of a specific pattern along a specific axis. If the camera <NUM>. the camera <NUM>, and/or the camera <NUM> determine that the specific pattern only occurs twice along the specific axis then the conclusion can be drawn that only one of the item is present. However, if the camera <NUM>, the camera <NUM>, and/or the camera <NUM> determine that the specific pattern occurs along more than one axis then the conclusion can be drawn that more than one of the item is present.

<FIG> illustrate an example image <NUM> and <NUM> of a tray <NUM> that comprises an item <NUM> and an item <NUM>. The item <NUM> can be a vial and the item <NUM> can be a filter needle, for example. Whichever of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that a vial cap is present in the region <NUM>. The presence of a single vial cap indicates that the item <NUM> is present. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that, in the region <NUM>, two occurrences of a pattern are present, "TEXT A". In an aspect, the two occurrences of the pattern, "TEXT A", can indicate that a one or more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have either a single occurrence of "TEXT A" or a double occurrence of "TEXT A") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine whether "TEXT A" and "TEXT A" appear on the same axis. If "TEXT A" and "TEXT A" appear on the same axis then the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that a single instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. If "TEXT A" and "TEXT A" appear on different axes then the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that a more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In an aspect, the determination of axes can be used to confirm that any number of the item <NUM> are present and generate a PASS or a FAIL signal based on the expected number of instances of the item <NUM> versus the determined number of instances of the item <NUM>.

<FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM> and two instances of the item <NUM>. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that, in the region <NUM>, three occurrences of a pattern are present, ("TEXT A"). In an aspect, the three occurrences of the pattern, "TEXT A" can indicate that one or more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have a single occurrence of "TEXT A", a double occurrence of "TEXT A", or a triple occurrence of "TEXT A") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine whether the three occurrences of "TEXT A" appear on the same axis. As shown in <FIG>, two occurrences of "TEXT A" appear on the same axis and one occurrence of "TEXT A" appears on a different axis. Accordingly, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In an aspect, the determination of axes can be used to confirm that any number of the item <NUM> are present and generate a PASS or a FAIL signal based on the expected number of instances of the item <NUM> versus the determined number of instances of the item <NUM>.

<FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM>, one instance of the item <NUM>, and one instance of an item <NUM>. In one aspect, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that, in the region <NUM>, two occurrences of a first pattern are present, ("TEXT A") and one occurrence of a second pattern is present. ("TEXT B"). In an aspect, the two occurrences of the pattern, "TEXT A" can indicate that one or more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have a single occurrence of "TEXT A", a double occurrence of "TEXT A", or a triple occurrence of "TEXT A") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine whether the two occurrences of "TEXT A" appear on the same axis. As shown in <FIG>, the two occurrences of "TEXT A" appear on the same axis. Accordingly, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that more one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. However, the one occurrence of the pattern "TEXT B" can indicate that an item has been placed in the tray <NUM> that should not be in the tray <NUM> at this stage in the assembly process. Accordingly, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a FAIL signal based on the presence of a pattern that is not intended to be present.

In another aspect, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that the pattern "TEXT B" is present and can ignore the presence of the pattern "TEXT A" (or any other pattern as required). In an aspect, the one occurrence of the pattern, "TEXT B" can indicate that one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS signal.

<FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM>, the item <NUM>, and a single instance of an item <NUM>. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can be configured to ignore the vial cap in the region <NUM> and to ignore the presence of the pattern "TEXT A" in the region <NUM>. Instead, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that, in the region <NUM>, two occurrences of another pattern are present, ("TEXT B"). In an aspect, the two occurrences of the pattern, "TEXT B" can indicate that either one or more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have a single occurrence of "TEXT B", a double occurrence of "TEXT B", or a triple occurrence of "TEXT B") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine whether the two occurrences of "TEXT B" appear on the same axis. As shown in <FIG>, the two occurrences of "TEXT B" appear on the same axis. Accordingly, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>. and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In an aspect, the determination of axes can be used to confirm that any number of the item <NUM> are present and generate a PASS or a FAIL signal based on the expected number of instances of the item <NUM> versus the determined number of instances of the item <NUM>. <FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM>, the item <NUM>, and a single instance of the item <NUM>. <FIG> is similar to <FIG> with the exception that <FIG> illustrates that the pattern "TEXT B" occurs twice along the same axis, however at a different angle than the axis in <FIG>.

<FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM> and two instances of the item <NUM>. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that, in the region <NUM>, four occurrences of a pattern are present. In an aspect, the four occurrences of the pattern, "TEXT B" can indicate that one or more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have a single occurrence of "TEXT B", a double occurrence of "TEXT B", a triple occurrence of "TEXT B", or a quadruple occurrence of "TEXT B") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine the axes upon which the four occurrences of "TEXT B" appear. As shown in <FIG>, two occurrences of "TEXT B" appear on a first axis and the other two occurrences of "TEXT B" appear on a second axis. Accordingly, as the two sets of "TEXT B" appear on different axes, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In an aspect, the determination of axes can be used to confirm that any number of the item <NUM> are present and generate a PASS or a FAIL signal based on the expected number of instances of the item <NUM> versus the determined number of instances of the item <NUM>.

<FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM>, the item <NUM>, and two instances of the item <NUM>. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that, in the region <NUM>, three occurrences of a pattern are present, "TEXT B". In an aspect, the three occurrences of the pattern, "TEXT B" can indicate that one or more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have a single occurrence of "TEXT B", a double occurrence of "TEXT B", a triple occurrence of "TEXT B", or a quadruple occurrence of "TEXT B") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine the axes upon which the three occurrences of "TEXT B" appear. As shown in <FIG>, two occurrences of "TEXT B" appear on a first axis and the one occurrence of "TEXT B" appears on a second axis. Accordingly, as the two sets of "TEXT B" appear on different axes, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In an aspect, the determination of axes can be used to confirm that any number of the item <NUM> are present and generate a PASS or a FAIL signal based on the expected number of instances of the item <NUM> versus the determined number of instances of the item <NUM>.

<FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM>, the item <NUM>, the item <NUM>, a single instance of an item <NUM>, and a single instance of an item <NUM>. The camera <NUM>. the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can be configured to ignore the vial cap in the region <NUM> and to ignore the presence of the patterns "TEXT A" and "TEXT B" in the region <NUM>. Instead, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that, in the region <NUM>, two occurrences of another pattern are present, ("TEXT D"). In an aspect, the two occurrences of the pattern, "TEXT D" can indicate that either one or more than one instance of the item <NUM> is present and the camera <NUM>. the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have a single occurrence of "TEXT D", a double occurrence of "TEXT D", or a triple occurrence of "TEXT D") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine whether the two occurrences of "TEXT D" appear on the same axis. As shown in <FIG>, the two occurrences of "TEXT D" appear on the same axis. Accordingly, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In an aspect the determination of axes can be used to confirm that any number of the item <NUM> are present and generate a PASS or a FAIL signal based on the expected number of instances of the item <NUM> versus the determined number of instances of the item <NUM>. In the same image <NUM>, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that, in the region <NUM>. two occurrences of another pattern are present, ("TEXT C"). In an aspect, the two occurrences of the pattern, "TEXT C" can indicate that either one or more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have a single occurrence of "TEXT C", a double occurrence of "TEXT C", or a triple occurrence of "TEXT C") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine whether the two occurrences of "TEXT C" appear on the same axis. As shown in <FIG>, the two occurrences of "TEXT C" appear on the same axis. Accordingly, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In an aspect, the determination of axes can be used to confirm that any number of the item <NUM> are present and generate a PASS or a FAIL signal based on the expected number of instances of the item <NUM> versus the determined number of instances of the item <NUM>. <FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM>. the item <NUM>, the item <NUM>, a single instance of the item <NUM>, and a single instance of the item <NUM>. <FIG> is similar to <FIG> with the exception that <FIG> illustrates that the pattern "TEXT D" occurs twice along the same axis, however at a different angle than the axis in <FIG> and similarly the pattern "TEXT C" occurs twice along the same axis, however at a different angle than the axis in <FIG>.

<FIG> illustrates an example image <NUM> of the tray <NUM> that comprises the item <NUM>, the item <NUM>, the item <NUM>, two instances of the item <NUM>, and a single instance of the item <NUM>. The camera <NUM>, the camera <NUM>, and/or the camera <NUM> that generates the image <NUM> can determine that, in the region <NUM>, three occurrences of a pattern are present, "TEXT D". In an aspect, the three occurrences of the pattern, "TEXT D" can indicate that one or more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In another aspect, depending on pattern configuration on the item <NUM> (e.g., a single instance of the item <NUM> can have a single occurrence of "TEXT D", a double occurrence of "TEXT D", a triple occurrence of "TEXT D", or a quadruple occurrence of "TEXT D") the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine the axes upon which the three occurrences of "TEXT D" appear. As shown in <FIG>. two occurrences of "TEXT D" appear on a first axis and the one occurrence of "TEXT D" appears on a second axis. Accordingly, as the two sets of "TEXT D" appear on different axes, the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can determine that more than one instance of the item <NUM> is present and the camera <NUM>, the camera <NUM>, and/or the camera <NUM> can generate a PASS or a FAIL signal as appropriate. In an aspect, the determination of area can be used to confirm that any number of the item <NUM> are present and generate a PASS or a FAIL signal based on the expected number of instances of the item <NUM> versus the determined number of instances of the item <NUM>. <FIG> is similar to <FIG> with the exception that <FIG> illustrates that the pattern "TEXT D" occurs twice along a first axis and once along a second axis, however the first and second axes are at different angles than the axes in <FIG>.

Returning to <FIG>, each of the camera <NUM>, the camera <NUM>, and the camera <NUM> can independently determine both the presence or the absence of one or more patterns in an image and determine a rotation of each the one or more patterns in the image of an object <NUM>. Each of the camera <NUM>, the camera <NUM>, and the camera <NUM> can perform an action based on the presence or absence and the rotation of the one or more patterns in the image. If a camera determines that a correct number of an item is present in the image of an object <NUM> based on presence of pattern and rotation of the pattern, the action can comprise transmitting a PASS signal to the pass/fail controller <NUM>. If the camera determines that an incorrect number of an item is present in the image of an object <NUM> based on presence of pattern and rotation of the pattern, the action can comprise transmitting a FAIL signal to the pass/fail controller <NUM>. If each of the camera <NUM>, the camera <NUM>. and/or the camera <NUM> issues a PASS signal to the pass/fail controller <NUM>, then the pass/fail controller <NUM> can provide a signal to the PLC <NUM> to cause the stepper motor <NUM> to advance the conveyor belt <NUM> to advance the one or more objects <NUM> to be positioned under the field of view of the next camera. The pass/fail controller <NUM> can further transmit a notification to each of the monitors <NUM>-<NUM> to display a PASS notification. If one or more of the camera <NUM>, the camera <NUM>, and/or the camera <NUM> issues a FAIL signal to the pass/fail controller <NUM>, the pass/fail controller <NUM> will not provide a signal to the PLC <NUM> to cause the stepper motor <NUM> to advance. The pass/fail controller <NUM> can further transmit a notification to the monitors <NUM>-<NUM> associated with the camera(s) issuing the FAIL signal to display a FAIL notification. An operator (e.g., a human or a robot) positioned at the monitors <NUM>-<NUM> displaying the FAIL notification can take corrective action to remedy the FAIL status.

In another aspect, one or more of the camera <NUM>. the camera <NUM>, and the camera <NUM> can count a number of the one or more objects <NUM>. For example, a the one or more objects <NUM> pass by one of the camera <NUM>, the camera <NUM>, and the camera <NUM>, the camera can increment a tally of the one or more objects <NUM> imaged by the camera. In a further aspect, a number of empty locations can be interspersed between the one or more objects <NUM>. For example, in certain scenarios one or more of the camera <NUM>, the camera <NUM>, and the camera <NUM> may not have an object <NUM> within a respective field of view. The conveyor belt <NUM> can have a pattern (e.g., a "no tray" pattern) embodied thereon in a position where the object <NUM> would otherwise be placed. The camera <NUM>. the camera <NUM>, and the camera <NUM> can identify the pattern and issue a PASS signal to contribute to advancement of the conveyor belt <NUM>.

<FIG> illustrates an example embodiment of the system <NUM> illustrating positioning of camera <NUM>, the camera <NUM>, and the camera <NUM> relative to the conveyor belt <NUM>. <FIG> further illustrates positioning of the monitors <NUM>-<NUM>. The stepper motor <NUM> is illustrated at one end of the conveyor belt <NUM>. One or more of the PLC <NUM> and/or the pass/fail controller <NUM> can be contained with a housing <NUM>. One or more dispensers <NUM> can be configured for storing one or more items to be accessed during assembly into the one or more objects <NUM>. The system <NUM> can comprise one or more emergency stop ("E-Stop") buttons <NUM>. The E-Stop buttons <NUM> can be engaged at any point in time to temporarily cease operation of the system <NUM>, for any reason. The E-Stop buttons <NUM> can be reset, and the system <NUM> restarted (e.g., by an operator or technician that has determined that it is safe to do so). The system <NUM> can comprise one or more OptoSwitches <NUM>. The OptoSwitches <NUM> can be actuated ("tripped") by placing a finger or thumb in the saddle-like structure of the OptoSwitch <NUM>. This action breaks an optical signal path, causing a switch condition. The OptoSwitches <NUM> can be used to accept a visual inspection during "Manual Trigger" mode, and start/restart the belt motion during "Autonomous" (or "Auto") mode.

The system <NUM> can comprise a key switch mechanism <NUM>. The key switch mechanism <NUM> can be used to toggle between an "Autonomous" Mode and "Manual Trigger" Mode. Under normal operation, regardless of mode, a first operator station can comprise an operator loading trays onto the conveyor belt <NUM>. In an aspect, these trays can be pre-fitted with a prefilled capped vial. In manual trigger mode, at a second operator station, an operator can load a filter needle tip into the tray. After this operation, the camera <NUM> inspects the tray for the appropriate items. At a third operator station, an injection needle tip can be added to the tray. Then, the camera <NUM> inspects the tray for appropriate items. At a fourth operator station, an operator loads an empty blister-packed syringe into the tray. Afterwards, a fifth operator loads a Physician Insert (PI) into the tray. After the PI is loaded, the camera <NUM> inspects the tray for completed loading. Once the tray passes this last station, the fully populated tray exits the conveyor belt <NUM> for boxing.

In automated mode, trays are moved down the conveyor belt <NUM> automatically. The system <NUM> can maintain a dwell time (e.g., <NUM>-<NUM> seconds) before the conveyor belt <NUM> shifts to the next position. The shift occurs only when all three inspection cameras (e.g., the camera <NUM>, the camera <NUM>, and the camera <NUM>) clear the tray ("Pass") that is being inspected by a respective camera. An issue at any inspection station can result in a the conveyor belt <NUM> and a "red light" condition ("Fail"), at which point an operator can correct the issue or pull the tray from the conveyor belt <NUM> (each camera can allow the conveyor belt <NUM> to advance when there is no tray in its field of view). The advancement of the conveyor belt <NUM> can be dependent on all cameras detecting a "passing" tray configuration. A display screen (e.g., the monitors <NUM>-<NUM>) at each camera station can display the associated camera's video stream, with overlaid "Pass", "Fail", or "No Job" statuses depending on the inspection results. Camera online status can be reset from the monitors <NUM>-<NUM> if required during operation.

In an aspect, illustrated in <FIG>, a method <NUM> is disclosed comprising obtaining a first image of a tray at <NUM>. The method <NUM> can comprise determining a presence or absence of one or more first patterns in the first image at <NUM>. The one or more first patterns can comprise text patterns, numeric patterns, symbol patterns, and combinations thereof. The method <NUM> can comprise determining a rotation of each the one or more first patterns in the first image at <NUM>. The method <NUM> can comprise performing an action based on the presence or absence and the rotation of the one or more first patterns in the first image at <NUM>. In an aspect, each step of the method <NUM> can be performed by a computing device, a camera (with processing functionality), or a combination thereof. In some aspect, multiple computing devices and/or cameras can be employed to perform the method <NUM>. For example, multiple cameras can be used wherein a first camera can perform steps <NUM>, <NUM>, and step <NUM> while a second camera performs step <NUM>. In another aspect, the method <NUM> can be repeated at each of several cameras and/or computing devices as a tray proceeds along an assembly line. For example, steps <NUM>, <NUM>, <NUM>, and <NUM> can be performed by a first camera for a specific pattern(s), then steps <NUM>, <NUM>, <NUM>, and <NUM> can be performed again by a second camera for another specific pattern(s). Still further, one or more sub-steps described herein can be performed by a designated camera and/or computing device.

Determining a presence or absence of one or more first patterns in the first image can comprise determining presence of one or two of the one or more first patterns and wherein determining a rotation of each the one or more first patterns in the first image can comprise determining that the one or two of the one or more first patterns are on a first axis. Performing an action based on the presence or absence and the rotation of the one or more first patterns in the first image can comprise generating a pass inspection signal and advancing a belt having the tray disposed thereon. Determining a presence or absence of one or more first patterns in the first image can comprise determining presence of three or more of the one or more first patterns. Performing an action based on the presence or absence and the rotation of the one or more first patterns in the first image can comprise generating a fail inspection signal and notifying an operator that a first item associated with the one or more first patterns should be removed from the tray. Determining a presence or absence of one or more first patterns in the first image can comprise determining presence of two of the one or more first patterns and wherein determining a rotation of each the one or more first patterns in the first image can comprise determining that the two of the one or more first patterns are not on a same axis. Performing an action based on the presence or absence and the rotation of the one or more first patterns in the first image can comprise generating a fail inspection signal and notifying an operator that a first item associated with the one or more first patterns should be removed from the tray.

The method <NUM> can further comprise obtaining a second image of the tray, determining a presence or absence of one or more second patterns in the second image, determining a rotation of each the one or more second patterns in the second image. and performing an action based on the presence or absence and the rotation of the one or more second patterns in the second image. The one or more second patterns can comprise text patterns, numeric patterns, symbol patterns. and combinations thereof. Determining a presence or absence of one or more second patterns in the second image can comprise determining presence of one or two of the one or more second pattems and wherein determining a rotation of each the one or more second patterns in the second image can comprise determining that the one or two of the one or more second patterns are on a second axis. Performing an action based on the presence or absence and the rotation of the one or more second patterns in the second image can comprise generating a pass inspection signal and advancing a belt having the tray disposed thereon. Determining a presence or absence of one or more second patterns in the second image can comprise determining presence of three or more of the one or more second patterns. Performing an action based on the presence or absence and the rotation of the one or more second patterns in the second image can comprise generating a fail inspection signal and notifying an operator that a second item associated with the one or more second patterns should be removed from the tray. Determining a presence or absence of one or more second patterns in the second image can comprise determining presence of two of the one or more second patterns and wherein determining a rotation of each the one or more second patterns in the second image can comprise determining that the two of the one or more second patterns are not on a same axis. Performing an action based on the presence or absence and the rotation of the one or more second patterns in the second image can comprise generating a fail inspection signal and notifying an operator that a second item associated with the one or more second patterns should be removed from the tray.

The method <NUM> can further comprise determining a location of a cleat in the first image, comparing the determined location of the cleat in the first image to a reference location, determining that the determined location is different from the reference location, determining an offset based on the difference between the determined location and the reference location, and transmitting a signal to a belt controller to adjust a distance to advance a belt having the tray disposed thereon by the offset. The offset can be one of a negative value, a positive value, or a zero value. In an aspect, determining the offset based on the difference between the determined location and the reference location, and transmitting the signal to the belt controller to adjust the distance to advance the belt having the tray disposed thereon by the offset can be performed by one or more cameras. For example, a single camera can be designated to determine the offset. The offset determination can be made after each movement of the belt.

The method <NUM> can further comprise repeatedly obtaining a first image of a tray, determining a presence or absence of one or more first patterns in the first image, determining a rotation of each the one or more first patterns in the first image, and performing an action based on the presence or absence and the rotation of the one or more first patterns in the first image for each of a plurality of trays.

The method <NUM> can further comprise counting a number of the plurality of trays, wherein a number of empty tray locations are interspersed between the plurality of trays. The method <NUM> can further comprise counting a number of the empty tray locations. Determining the presence or absence of one or more first patterns in the first image can comprise determining a no tray pattern. Performing the action based on the presence or absence and the rotation of the one or more second patterns in the first image can comprise advancing a belt having the no tray pattern disposed thereon.

In an exemplary aspect, the methods and systems can be implemented on a computer <NUM> as illustrated in <FIG> and described below. By way of example, the camera <NUM>, the camera <NUM>, the camera <NUM>, the PLC <NUM>, and/or the pass/fail controller <NUM> (or a component thereof) of <FIG> can be a computer <NUM> as illustrated in <FIG>. Similarly, the methods and systems disclosed can utilize one or more computers to perform one or more functions in one or more locations. <FIG> is a block diagram illustrating an exemplary operating environment <NUM> for performing the disclosed methods. This exemplary operating environment <NUM> is only an example of an operating environment and is not intended to suggest any limitation as to the scope of use or functionality of operating environment architecture. Neither should the operating environment <NUM> be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment <NUM>.

The present methods and systems can be operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that can be suitable for use with the systems and methods comprise, but are not limited to, personal computers, server computers, laptop devices, and multiprocessor systems. Additional examples comprise set top boxes, programmable consumer clectronics, network PCs, programmable logic controllers (PLCs), minicomputers, mainframe computers, distributed computing environments that comprise any of the above systems or devices, and the like.

The processing of the disclosed methods and systems can be performed by software components. The disclosed systems and methods can be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. Generally, program modules comprise computer code, routines, programs, objects, components, data structures, and/or the like that perform particular tasks or implement particular abstract data types. The disclosed methods can also be practiced in grid-based and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in local and/or remote computer storage media including memory storage devices.

Further, one skilled in the art will appreciate that the systems and methods disclosed herein can be implemented via a general-purpose computing device in the form of a computer <NUM>. The computer <NUM> can comprise one or more components, such as one or more processors <NUM>, a system memory <NUM>, and a bus <NUM> that couples various components of the computer <NUM> including the one or more processors <NUM> to the system memory <NUM>. In the case of multiple processors <NUM>, the system can utilize parallel computing.

The bus <NUM> can comprise one or more of several possible types of bus structures, such as a memory bus, memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. The bus <NUM>, and all buses specified in this description can also be implemented over a wired or wireless network connection.

The computer <NUM> typically comprises a variety of computer readable media. Exemplary readable media can be any available media that is accessible by the computer <NUM> and comprises, for example and not meant to be limiting, both volatile and non-volatile media, removable and non-removable media. The system memory <NUM> can comprise computer readable media in the form of volatile memory, such as random access memory (RAM), and/or non-volatile memory, such as read only memory (ROM). The system memory <NUM> typically can comprise data such as image analysis data <NUM> and/or program modules such as operating system <NUM> and image analysis software <NUM> that are accessible to and/or are operated on by the one or more processors <NUM>.

In another aspect, the computer <NUM> can also comprise other removable/non-removable, volatile/non-volatile computer storage media. The mass storage device <NUM> can provide non-volatile storage of computer code, computer readable instructions, data structures, program modules, and other data for the computer <NUM>. For example, a mass storage device <NUM> can be a hard disk, a removable magnetic disk, a removable optical disk, magnetic cassettes or other magnetic storage devices, flash memory cards. CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like.

Optionally, any number of program modules can be stored on the mass storage device <NUM>, including by way of example, an operating system <NUM> and image analysis software <NUM>. One or more of the operating system <NUM> and image analysis software <NUM> (or some combination thereof) can comprise elements of the programming and the image analysis software <NUM>. Image analysis data <NUM> can also be stored on the mass storage device <NUM>. Image analysis data <NUM> can be stored in any of one or more databases known in the art. Examples of such databases comprise, DB2®, Microsoft® Access, Microsoft® SQL Server, Oracle®, mySQL, PostgreSQL, and the like. The databases can be centralized or distributed across multiple locations within the network <NUM>.

In another aspect, the user can enter commands and information into the computer <NUM> via an input device (not shown). Examples of such input devices comprise, but are not limited to, a keyboard, pointing device (e.g., a computer mouse, remote control), a microphone, a joystick, a scanner, touch-enabled devices such as a touchscreen, tactile input devices such as gloves and other body coverings, motion sensors, and the like. These and other input devices can be connected to the one or more processors <NUM> via a human machine interface <NUM> that is coupled to the bus <NUM>, but can be connected by other interface and bus structures, such as, but not limited to, a parallel port, game port, an IEEE <NUM> Port (also known as a Firewire port), a serial port, network adapter <NUM>, and/or a universal serial bus (USB).

In yet another aspect, a display device <NUM> can also be connected to the bus <NUM> via an interface, such as a display adapter <NUM>. It is contemplated that the computer <NUM> can have more than one display adapter <NUM> and the computer <NUM> can have more than one display device <NUM>. For example, a display device <NUM> can be a monitor, an LCD (Liquid Crystal Display), light emitting diode (LED) display, television, smart lens, smart glass, and/ or a projector. In addition to the display device <NUM>, other output peripheral devices can comprise components such as speakers (not shown) and a printer (not shown) which can be connected to the computer <NUM> via Input/Output Interface <NUM>. Any step and/or result of the methods can be output in any form to an output device. Such output can be any form of visual representation, including, but not limited to, textual, graphical, animation, audio, tactile, and the like. The display <NUM> and computer <NUM> can be part of one device, or separate devices.

In an aspect, the computer <NUM> can be coupled to the system <NUM> via the Input/Output Interface <NUM>. The computer <NUM> can be configured to monitor and store data. The computer <NUM> can be configured to store images acquired by cameras connected to the system <NUM>, store data related to pass/fail statistics generated during system-generated inspections, etc. The computer <NUM> can also be used as a programming interface to one or more smart devices (e.g., smart cameras) and/or embedded logic controllers that require customized firmware to operate. The computer <NUM> can be used to generate, troubleshoot, upload, and store iterations of this software or firmware.

The computer <NUM> can operate in a networked environment using logical connections to one or more remote computing devices 1114a,b,c. By way of example, a remote computing device 1114a,b,c can be a personal computer, computing station (c. workstation), portable computer (c. laptop, mobile phone, tablet device), smart device (e.g., smartphone, smart watch, activity tracker, smart apparel, smart accessory), security and/or monitoring device, a server, a router, a network computer, a peer device, edge device or other common network node, and so on. Logical connections between the computer <NUM> and a remote computing device 1114a,b,c can be made via a network <NUM>, such as a local area network (LAN) and/or a general wide area network (WAN). Such network connections can be through a network adapter <NUM>. A network adapter <NUM> can be implemented in both wired and wireless environments. Such networking environments are conventional and commonplace in dwellings, offices, enterprise-wide computer networks, intranets, and the Internet. In an aspect, the network adapter <NUM> can be configured to provide power to one or more connected devices (e.g., a camera). For example, the network adapter <NUM> can adhere to the Power-over-Ethernet (PoE) standard or the like.

For purposes of illustration, application programs and other executable program components such as the operating system <NUM> are illustrated herein as discrete blocks, although it is recognized that such programs and components can reside at various times in different storage components of the computing device <NUM>, and are executed by the one or more processors <NUM> of the computer <NUM>. An implementation of image analysis software <NUM> can be stored on or transmitted across some form of computer readable media. Any of the disclosed methods can be performed by computer readable instructions embodied on computer readable media. Computer readable media can be any available media that can be accessed by a computer. By way of example and not meant to be limiting, computer readable media can comprise "computer storage media" and "communications media. " "Computer storage media" can comprise volatile and non-volatile, removable and non-removable media implemented in any methods or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Exemplary computer storage media can comprise RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.

The methods and systems can employ artificial intelligence (AI) techniques such as machine learning and iterative learning. Examples of such techniques include, but are not limited to, expert systems, case based reasoning, Bayesian networks, behavior based AI, neural networks, fuzzy systems, evolutionary computation (e.g. genetic algorithms), swarm intelligence (e.g. ant algorithms), and hybrid intelligent systems (e.g. Expert inference rules generated through a neural network or production rules from statistical learning).

The disclosed methods and systems were implemented, tested, and results compared with a standard manual-only, operator-driven assembly line process. The following table indicates the disclosed methods and systems outperform the standard manual-only, operator-driven assembly line process:.

Claim 1:
A system (<NUM>) comprising:
a belt (<NUM>) configured to have an object (<NUM>) disposed thereon;
a plurality of cameras (<NUM>, <NUM>, <NUM>) each configured to
obtain an image of its respective field of view (<NUM>, <NUM>, <NUM>),
analyze the image to determine an orientation and a quantity of one or more items contained in the object (<NUM>) within its respective field of view (<NUM>, <NUM>, <NUM>),
wherein the one or more items comprises one or more patterns, the one or more patterns comprising a text pattern, a numeric pattern, a symbol pattern, and/or a combination thereof; and
wherein, to determine the orientation of the one or more items, each of the plurality of cameras (<NUM>, <NUM>, <NUM>) is further configured to:
determine a presence of two patterns within its respective field of view (<NUM>, <NUM>, <NUM>); and
determine that the two patterns are not aligned on a same axis within its respective field of view (<NUM>, <NUM>, <NUM>);
wherein, to determine the quantity of the one or more items, each of the plurality of cameras (<NUM>, <NUM>, <NUM>) is further configured to:
determine a quantity of the one or more items based on the determined orientation of the one or more items;
compare a determined quantity of the one or more items with an expected quantity of the one or more items;
and generate a pass Inspection signal or a fall inspection signal, based on the comparison; and
a processor, coupled to each of the plurality of cameras (<NUM>, <NUM>, <NUM>), configured to:
receive the pass inspection signal or the fall inspection signal, and
advance the belt (<NUM>) based on receiving a pass inspection signal from each of the plurality of cameras (<NUM>, <NUM>, <NUM>).