Modern inventory systems, such as those in mail order warehouses, supply chain distribution centers, airport luggage systems, and custom-order manufacturing facilities, face significant challenges in responding to requests for inventory items. As inventory systems grow, the challenges of simultaneously completing a large number of packing, storing, and other inventory-related tasks become non-trivial. In inventory systems tasked with responding to large numbers of diverse inventory requests, inefficient utilization of system resources, including space, equipment, and manpower, can result in lower throughput, unacceptably long response times, an ever-increasing backlog of unfinished or incorrectly finished tasks, and, in general, poor system performance.
Various embodiments in accordance with the present disclosure will be described with reference to the drawings, in which:
In the following description, various embodiments will be described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will also be apparent to one skilled in the art that the embodiments may be practiced without the specific details. Furthermore, well-known features may be omitted or simplified in order not to obscure the embodiment being described.
Embodiments herein are directed to, among other things, multi-check in-line container inspection. Defects of a container can be detected based on sensor data of sensors attached to a frame of a multi-check in-line container inspection system. The frame can form a scanning tunnel through which the container is moved. The sensors may include, for example, one or more photo eyes, a three-dimensional scanner, a container identification reader (e.g., a barcode reader, a radio frequency identification (RFID) reader, a quick response (QR) code reader, etc.), a weight sensor, and/or a red, green, blue (RGB) camera. The frame can be installed in line relative to a material handling equipment that moves the container (e.g., the scanning tunnel can surround a portion of a conveyor belt or conveyor rollers). Container integrity checks can be performed based on the sensor data to determine whether one or more defects are associated with the container. For instance, the container integrity checks may relate to container identifier read (e.g., to determine whether all barcodes of the container are present and/or readable), a container fill level (to determine whether the container is over-filled or under-filled), an item over-height detection (to determine if an item expands beyond an upper surface of the container), a container weight (e.g., if the container is over-weight or under-weight), a container assembly (e.g., if the container is properly assembled such that its corners properly mate), a container crack (e.g., if the container includes a crack on one or more sides), or a container warping (e.g., if the walls of the container are warped). If one or more of the container integrity checks indicate a defect, a corrective action can be taken for the container, such as diverting the container to an area designated for defective containers.
To illustrate, consider an example of a conveyor in an inventory handling system. Containers move along the conveyor, which is controlled by a conveyor controller. The containers can pass through a scanning tunnel, which includes an inspection controller that receives sensor data from various sensors of the scanning tunnel. For instance, the inspection controller can receive sensor data from a barcode reader and a three-dimensional scanner. The inspection controller performs a container fill integrity check based on sensor data from the three-dimensional scanner to determine whether a fill level of the container is within a fill range. In addition, the inspection controller performs a container identifier read to determine whether a barcode of the container is readable. If the fill level is outside of the fill range and/or the barcode is not readable, the inspection controller determines that the container is defective. In response, the inspection controller sends an indication of the defect to the conveyor controller, which causes the container to be rerouted on the conveyor to an area designated for defective containers.
Embodiments of the present disclosure provide several technical advantages over conventional container inspection systems. For instance, a scanning tunnel of the container inspection system can be mounted in-line with material handling equipment, meaning that containers do not need to be stopped or diverted to be analyzed for defects. In addition, the scanning tunnel can include multiple types of sensors so that containers can be analyzed for various defects simultaneously. The analysis may be performed in real-time to the containers moving through the scanning tunnel, and corrective actions can be performed for containers before the containers even reach an end of the material handling equipment. In this way, the overall throughout of the material handling equipment can be increased, while reducing detects to containers and possible damage to items or portions of the material handling equipment. In addition, the container inspection system can include a container detector before the scanning tunnel, which triggers processing of sensor data. Thus, if no container is detected, computing resources can be conserved until a container is detected.
The scanning tunnel 110 can be mounted around a portion of the conveyor 102 to surround at least a section of the conveyor belt or a set of the conveyor rolls. Although not shown in
The integrity checks may involve determining a container identifier read (e.g., barcode, quick response (QR) code, radio frequency identification (RFID), etc.), a container fill level, an item over-height detection, a container weight, a container assembly, a container crack, or a container warping. The scanner controller 120A can send an indication to the conveyor controller 120B about whether the integrity checks indicate a defect of the container 104. For instance, if the container identifier check results in an incomplete or an inaccurate read of the container identifier, the scanner controller 120A can determine that there is a container defect. So, the scanner controller 120A can send a defect indication 122 to the conveyor controller 120B indicating the container defect. The defect indication 122 can be sent in real-time (e.g., as the container 104 is passing through the tunnel or a soon as the container 104 exits the tunnel, where this exit can be detected based on sensor data from one of the sensors installed in the scanning tunnel 110 near its exit or on the conveyor 102 by the exit from the scanning tunnel 110). The conveyor controller 120B can then cause a corrective action to be initiated by the conveyor 102 after the container 104 exits the scanning tunnel 110. As an example, the corrective action may be causing the container 104 to be moved from a first conveyor lane to a second conveyor lane that is associated with defective containers. Alternatively, the corrective action may be causing a robotic manipulator 130 of the container inspection system 100 to pick up the container 104 and place the container 104 in an area for defective containers. In an example, the defect indication 122 can indicate the type of the defect. The corrective action can depend on the type of the defect. For instance, a barcode defect (e.g., missing barcode or unreadable defect) can cause the container 104 to be moved to one conveyor lane specific to barcode defects. In comparison, an incorrectly assembled container defect (e.g., the corners of the container 104 do not properly mate) can cause sending the container 104 to a station dedicated to assembly fixing.
The controller 120A may additionally send an indication of the inspection of the container 104 to a computer system 140. The computer system 140 may be in a control room associated with the container inspection system 100 and can display a result 124 of the inspection of the container 104 based on the received indication in real-time to the container 104 moving through the scanning tunnel 110. In this way, container defects may be monitored in real-time as the containers are being processed.
In an example, if the scanner controller 120A determines that the container 104 is not defective, the indication sent to the conveyor controller 120B may indicate that no corrective action is to be initiated. As a result, the container 104 can remain on the first conveyor lane until reaching an end of the conveyor 102. Then, the robotic manipulator 130 can pick up the container 104 and place the container 104 into a vertical rack 132 of containers for subsequent inventory actions.
A database 150 may also be accessible to the scanner controller 120A. The database 150 can receive and store the sensor data and the indication from the scanner controller 120A. In an example, the stored sensor data and indications may be used for auditing and/or to train a machine learning model to detect container defects.
The sensors can generate sensor data about a container 204 as the conveyor 202 moves the container 204 into and through the scanning tunnel 210. For instance, the sensors may include a photo eye 222 positioned outside of an entrance 214 of the scanning tunnel 210 through which the container 204 is moved into the scanning tunnel 210. The photo eye 222 can generate sensor data indicating a detection of the container 204 prior to the container 204 reaching the entrance 214. The photo eye 222 can send the sensor data to a controller (e.g., the scanner controller 120A in
In an example, the sensors can also include a three-dimensional scanner 224 attached to an upper surface 216 of the frame 212. The three-dimensional scanner 224 can have a field of view directed inside the scanning tunnel 210. The three-dimensional scanner 224 may generate sensor data that is used for container integrity checks involving detecting a fill level of the container 204 and/or an item over-height detection. For the fill level integrity check, the sensor data can represent a volume percentage of the container 204. If the controller determines, based on the sensor data, that the fill level is outside of a fill range, the controller may determine that the container 204 has a defect. In addition, if the controller determines that at least a portion of an item in the container 204 extends beyond an upper surface 205 of the container 204, the controller may determine that the container 204 has a defect.
The sensor data from the three-dimensional scanner 224 may additionally be used for crack detection to determine whether the container 204 includes a crack. The sensor data can include image data. A computer vision algorithm can be used to process the image data and detect cracks, if any. The processing can involve determining a pixel color change (e.g., from blue, the color of the container 204, to white or black) and the number of pixels in the pixel color change. If the number of pixels of an edge exceeds a threshold, the controller can determine that the container 204 includes a crack defect.
The sensors can also include container identification readers 226A-226B that read container identifiers (e.g., barcodes, QR codes, RFIDs, etc.) of the container 204. The container identification readers 226A-226B are attached to respective locations of the frame 212 based on expected locations of the container identifiers installed on the container 204. For instance,
Although not shown in
Similar to
The photo eye 325 inside the scanning tunnel 310 can be used for over-height detection. The photo eye 325 can be disposed at a height of an upper surface of the container 304 and can generate sensor data that can be used by the controller to determine an item over-height of a height of an item in the container 304 extending beyond the upper surface. The sensor data may indicate the item over-height and, based on the sensor data, the controller may trigger processing of data generated by the three-dimensional scanner 324 to determine an over-height defect of the container 304. If multiple types of containers are to be scanned, and each type has a different height, multiple photo eyes, each similar to the photo eye 325, can be used and each can be installed at the expected height of the corresponding type of container. Alternatively, the phot eye 325 can be mounted to an actuator controlled by the scanner controller to move the photo eye 325 to the proper height of a container depending on its type. To determine the container type, a container identifier reader sensor (e.g., a barcode sensor) can first generate sensor data indicating an identifier of the container. Next, the scanner controller can look up a database (local or remote) to determine the type of the container and its corresponding height. The scanner controller can then control which of the photo eyes to activate (e.g., in the case of multiple photo eyes) or can control the actuator to move the photo eye 325 to the proper height.
In an example, the weight sensor 328 is installed in-line in the conveyor 302 inside or outside of the scanning tunnel 310. In
In another example, the weight sensor 328 can be weight scale positioned underneath a section of a conveyor belt and can become in contact with the conveyor belt upon the container 324 being over the section. In another example, the weight sensor 328 can be distributed among a plurality of conveyor roller and can measure the weight of the container 324 when the container 324 is in contact with such rollers. For example, the end of the rolls can be actuated vertically. The actuation distance and/or pressure can be correlated to the weight. As the container 304 moves over the weight sensor 328, the scanner controller can receive weight data and determine whether the weight is outside of the weight range. If the weight is outside of the weight range, the scanner controller may determine that the container 304 has a defect.
If any defect is detected for the container 304, the scanner controller can cause a corrective action to be initiated. The scanner controller may send an indication of the defect to a conveyor controller associated with the conveyor 302, which initiates the corrective action. For instance, the conveyor controller of the conveyor 302 may cause the container 304 to be moved from a first conveyor lane 306 to a second conveyor lane 308. The frame 312 is in-line with the first conveyor lane 306 and the second conveyor lane 308 is associated with defective containers. Once reaching an end of the first conveyor lane 306 or the second conveyor lane 308, a robotic manipulator (e.g., robotic manipulator 130 in
In an example, the data collecting module 413 receives sensor data from a photo eye 422, an encoder 427, a barcode reader 426A (or any other container identification reader), a three-dimensional scanner 424, a barcode reader 426B, an over-height detection sensor 425 (e.g., photo eye 325 in
The inspection system controller 420 then determines, based on the sensor data, whether a container has a defect. If the container is determined to have a defect, the inspection system controller 420 can output a status indicator 415 of the defect. The status indicator 415 may be sent to a conveyor controller, which causes a corrective action to be taken.
The sensors can include container identification readers 526A-526B that read container identifiers of the container 504. The container identification readers 526A-526B are attached to respective locations of the frame 512 based on expected locations of the container identifiers installed on the container 504. The container identification readers 526A-526B generate sensor data corresponding to reads of the container identifiers. If a controller determines, based on the sensor data, that either of the reads does not detect a container identifier, or if an incorrect container is detected, the controller may determine that the container 504 has a defect.
If the defect is detected for the container 504, the scanner controller can cause a corrective action to be initiated. The controller may send an indication of the defect to a conveyor controller associated with the conveyor 502, which initiates the corrective action. For instance, the conveyor controller of the conveyor 502 may cause the container 504 to be moved from a first conveyor lane to a second conveyor lane. Once reaching an end of the first conveyor lane or the second conveyor lane, a robotic manipulator (e.g., robotic manipulator 130 in
In an example, a weight sensor 628 is installed in-line in the conveyor 602 inside or outside of the scanning tunnel 610. In
If the defect is detected for the container 604, the scanner controller can cause a corrective action to be initiated. The scanner controller may send an indication of the defect to a conveyor controller associated with the conveyor 602, which initiates the corrective action. For instance, the conveyor controller of the conveyor 602 may cause the container 604 to be moved from a first conveyor lane 606 to a second conveyor lane 608. Once reaching an end of the first conveyor lane 606 or the second conveyor lane 608, a robotic manipulator (e.g., robotic manipulator 130 in
In an example, the sensors include a three-dimensional scanner 724 attached to an upper surface of the frame 712. The three-dimensional scanner 724 can have a field of view directed inside the scanning tunnel 710. The three-dimensional scanner 724 may generate sensor data (e.g., images) that is used for container integrity checks involving detecting a fill level of the container 704. For the fill level integrity check, a scanner controller of the container inspection system 700 may determine a type of the container 704 and a total volume of the container 704 based on the type. Based on the sensor data, the scanner controller may determine a used volume and/or a free volume of the container 704. The used volume corresponds to an occupancy of the container 704 by a set of items contained in the container 704. The scanner controller can then determine a fill level based on the total volume and the used volume and/or the free volume. The scanner controller can determine whether the fill level is within or outside of a fill range (e.g., 20%-80%). If the fill level is outside of the fill range, the scanner controller may determine that the container 704 has a fill level defect.
If the defect is detected for the container 704, the scanner controller can cause a corrective action to be initiated. The scanner controller may send an indication of the defect to a conveyor controller associated with the conveyor 702, which initiates the corrective action. For instance, the conveyor controller of the conveyor 702 may cause the container 704 to be moved from a first conveyor lane to a second conveyor lane. Once reaching an end of the first conveyor lane or the second conveyor lane, a robotic manipulator (e.g., robotic manipulator 130 in
A photo eye 825 inside the scanning tunnel 810 can be used for over-height detection. The photo eye 825 can be disposed at a height of an upper surface of the container 804 and can generate sensor data that can be used by a scanner controller of the container inspection system 800 to determine an item over-height of a height of an item in the container 804 extending beyond the upper surface. Since the conveyor 802 may transport different types of containers with different heights, the container inspection system 800 may include a set of photo eyes inside the scanning tunnel 810, and each photo eye can be disposed at a height of a particular type of container. From the sensor data and information about the type of the container 804, the scanner controller may determine an edge of an upper surface of the container 804 and that an item contained in the container 804 extends beyond the upper surface. The scanner controller may then trigger processing of data generated by a three-dimensional scanner 824 to determine an over-height level defect of the container 804.
If the defect is detected for the container 804, the scanner controller can cause a corrective action to be initiated. The scanner controller may send an indication of the defect to a conveyor controller associated with the conveyor 802, which initiates the corrective action. For instance, the conveyor controller of the conveyor 802 may cause the container 804 to be moved from a first conveyor lane 806 to a second conveyor lane 808. Once reaching an end of the first conveyor lane 806 or the second conveyor lane 808, a robotic manipulator (e.g., robotic manipulator 130 in
In an example, the sensors include a three-dimensional scanner 924 attached to an upper surface of the frame 912. The three-dimensional scanner 924 can have a field of view directed inside the scanning tunnel 910. The three-dimensional scanner 924 may generate sensor data (e.g., images) that is used for container integrity checks involving detecting a warping of the container 904. Based on the sensor data, a scanner controller of the scanning tunnel 910 can determine a first distance (d1) between a first point 941 on a first wall 932 of the container 904 and a second point 942 on a second wall 934 of the container 904. The scanner controller can also determine a second distance (d2) between a third point 943 on the first wall 932 of the container 904 and a fourth point 944 on the second wall 934 of the container 904. Additional distances between points on the first wall 932 and the second wall 934 may also be determined. The scanner controller can then determine a difference between the first distance and the second distance. If the difference is larger than a threshold (e.g., 0.5 inches), the scanner controller can determine a warping defect of the container 904. When more than two distances are determined, multiple differences can be generated and compared to the threshold. Only if a certain number or a percentage of the differences exceeds the threshold, then the scanner container can declare a defect. In an example, a threshold depends on the type of the container (e.g., the larger or wider the container is, the larger the threshold is). In this case, the scanner controller can use a container identifier in a look-up to a local or remote database to determine the proper threshold to use.
If the defect is detected for the container 904, the scanner controller can cause a corrective action to be initiated. The scanner controller may send an indication of the defect to a conveyor controller associated with the conveyor 902, which initiates the corrective action. For instance, the conveyor controller of the conveyor 902 may cause the container 904 to be moved from a first conveyor lane 906 to a second conveyor lane 908. Once reaching an end of the first conveyor lane 906 or the second conveyor lane 908, a robotic manipulator (e.g., robotic manipulator 130 in
In an example, the sensors include a three-dimensional scanner 1024 attached to an upper surface of the frame 1012. The three-dimensional scanner 1024 can have a field of view directed inside the scanning tunnel 1010. The three-dimensional scanner 1024 may generate sensor data (e.g., images) that is used for container integrity checks involving detecting an assembly of the container 1004. Based on the sensor data, a scanner controller of the scanning tunnel 1010 can determine a corner 1045 of the container 1004. The corner 1045 is formed by a first wall 1032 and a second wall 1033 of the container 1004. The scanner controller can determine a distance between a first edge point 1041 of the first wall 1032 and a second edge point 1042 of the second wall 1033. The scanner controller can then determine of the distance is within a distance range. If the distance is outside of the distance range (e.g., larger than an upper bound or smaller than a lower bound of the distance range), the scanner controller can determine an assembly defect of the container 1004. In an example, a distance range depends on the type of the container (e.g., the larger or wider the container is, the larger the threshold is). In this case, the scanner controller can use a container identifier in a look-up to a local or remote database to determine the proper distance range to use.
If the defect is detected for the container 1004, the scanner controller can cause a corrective action to be initiated. The scanner controller may send an indication of the defect to a conveyor controller associated with the conveyor 1002, which initiates the corrective action. For instance, the conveyor controller of the conveyor 1002 may cause the container 1004 to be moved from a first conveyor lane 1006 to a second conveyor lane 1008. Once reaching an end of the first conveyor lane 1006 or the second conveyor lane 1008, a robotic manipulator (e.g., robotic manipulator 130 in
Although in the previous figures, a scanner controller is described as causing a corrective action and a conveyor controller as initiating the corrective action, the embodiments of the present disclosure are not limited as such. For example, these two controllers can be integrated as a single controller. In another example, the scanner controller can initiate the corrective action. For instance, the scanner controller can control a gate installed on a conveyor at a distance after the exist from a scanning tunnel. The gate can be at a split between two conveyor lanes: a first lane for containers that are not associated with defects, and a second lane for containers associated with defects. The scanner controller can actuate the gate to cause a defective container to move to the second lane. In yet another example, the scanner controller can control a robotic manipulator to handle a defective container.
Once trained, the machine learning model 1150 can be stored as program code on a scanner controller. The scanner controller can execute this program code and provide an input to the machines learning model. The input can be based on sensor data generated from at least two sensors while a container is moving through a scanning tunnel. For instance, the sensors can include a photo eye 1122, an encoder 1127, barcode readers 1126 (or any other container identification reader), a three-dimensional scanner 1124, an over-height detection sensor 1125 (e.g., photo eye 325 in
In an example, the flow includes operation 1204, where the controller performs a first container integrity check based on the first sensor data. For instance, if the first sensor is a container identification reader, the first container integrity check may be a container identifier read. Other container integrity checks involve a container fill level, an item over-height detection, a container assembly, or a container warping.
In an example, the flow includes operation 1206, where the controller performs a second container integrity check based on the second sensor data. For instance, if the second sensor is a three-dimensional scanner, the second container integrity check may be a container fill level. The controller may determine a total volume of the container and a free volume of the container based on the second sensor data to determine a fill level of the container.
In an example, the flow includes operation 1208, where the controller determines an integrity of the container based on the first container integrity check and the second container integrity check. The integrity may represent whether the container is associated with a defect. For instance, the first integrity check may indicate that a barcode is not detected, and therefore the container has a container identification read defect. Or, the second integrity check may indicate that the fill level is outside of a fill range, and therefore the container has a container fill defect.
In an example, the flow includes operation 1210, where the controller causes a corrective action based on the integrity of the container indicating the defect. The defect can be indicated to a conveyor controller of the material handling equipment, which initiates the corrective action. The corrective action may involve moving the container to another path of the material handling equipment or off of the material handling equipment to an area designated for defective containers.
In an example, the flow includes operation 1304, where the controller causes processing of second sensor data and third sensor data during movement of the container in the scanning tunnel. Based on the detection of the container, the controller can cause the processing of the second sensor data and the third sensor data. The second sensor data and the third sensor data may be generated by one or more of a three-dimensional scanner, a container identification reader, and a weight sensor.
In an example, the flow includes operation 1306, where the controller receives fourth sensor data indicating a speed of the container or a container-to-container distance. The fourth sensor data can be generated by a set of encoders.
In an example, the flow includes operation 1308, where the controller causes a change to a speed of the container based on the fourth sensor data. The controller may additionally or alternative cause a change to a rate at which sensor data is generated or a rate at which sensor data is processed.
The scanner computer 1402, may be configured to receive sensor data as part of a container inspection system. The scanner computer 1402 may include at least one memory 1442 and one or more processing units (or processor(s)) 1444. The processor(s) 1444 may be implemented as appropriate in hardware, computer-executable instructions, software, firmware, or combinations thereof. Computer-executable instruction, software or firmware implementations of the processor(s) 1444 may include computer-executable or machine-executable instructions written in any suitable programming language to perform the various functions described.
The memory 1442 may include more than one memory. The memory 1442 may store program instructions that are loadable and executable on the processor(s) 1444, as well as data generated during the execution of these programs. Depending on the configuration and type of memory, the memory 1442 may be volatile (such as random access memory (RAM)) and/or non-volatile (such as read-only memory (ROM), flash memory, or other memory). The scanner computer 1402 may also include additional removable storage and/or non-removable storage including, but not limited to, magnetic storage, optical disks, and/or tape storage. The disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computing devices. In some implementations, the memory 1442 may include multiple different types of memory, such as static random access memory (SRAM), dynamic random access memory (DRAM), or ROM.
Turning to the contents of the memory 1442 in more detail, the memory 1442 may include an operating system 1448 and one or more application programs, modules or services for implementing the features disclosed herein including a management module 1446. The management module 1446 may be configured to receive sensor data, detect defects based on the sensor data, and send indications of defects to another controller to perform a corrective action.
In some examples, the scanner computer 1402 may also include additional storage 1450, which may include removable storage and/or non-removable storage. The additional storage 1450 may include, but is not limited to, magnetic storage, optical disks, and/or tape storage. The disk drives and their associated computer-readable media may provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computing devices.
The memory 1442 and the additional storage 1450, both removable and non-removable, are examples of computer-readable storage media. For example, computer-readable storage media may include volatile or non-volatile, removable, or non-removable media implemented in any suitable method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. As used herein, modules may refer to programming modules executed by computing systems (e.g., processors) that are part of the scanner computer 1402. The modules of the scanner computer 1402 may include one or more components. The scanner computer 1402 may also include input/output (I/O) device(s) 1452 and/or ports, such as for enabling connection with a keyboard, a mouse, a pen, a voice input device, a touch input device, a display, speakers, a printer, or other I/O device.
In some examples, the scanner computer 1402 may also include data store 1454. The data store 1454 may include one or more databases, data structures, or the like for storing and/or retaining any suitable information associated with the scanner computer 1402. In some examples, the scanner computer 1402 may store the sensor data with various containers, defects of containers, or any suitable information related to the examples provided herein.
The various embodiments can be implemented in a wide variety of operating environments, which in some cases can include one or more user computers, computing devices or processing devices which can be used to operate any of a number of applications. User or client devices can include any of a number of general purpose personal computers, such as desktop or laptop computers running a standard operating system, as well as cellular, wireless and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system also can include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices also can include other electronic devices, such as dummy terminals, thin-clients, gaming systems and other devices capable of communicating via a network.
Most embodiments utilize at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially-available protocols, such as Transmission Control Protocol/Internet Protocol (“TCP/IP”), Open System Interconnection (“OSI”), File Transfer Protocol (“FTP”), Universal Plug and Play (“UpnP”), Network File System (“NFS”), Common Internet File System (“CIFS”) and AppleTalk. The network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, and/or any combination thereof.
In embodiments utilizing a Web server, the Web server can run any of a variety of server or mid-tier applications, including Hypertext Transfer Protocol (“HTTP”) servers, FTP servers, Common Gateway Interface (“CGI”) servers, data servers, Java servers and business application servers. The server(s) also may be capable of executing programs or scripts in response requests from user devices, such as by executing one or more Web applications that may be implemented as one or more scripts or programs written in any programming language, such as Java®, C, C# or C++, or any scripting language, such as Perl, Python or TCL, as well as combinations thereof. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase®, and IBM®.
The environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device can include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (“CPU”), at least one input device (e.g., a mouse, keyboard, controller, touch screen or keypad) and at least one output device (e.g., a display device, printer or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices and solid-state storage devices such as random access memory (“RAM”) or read-only memory (“ROM”), as well as removable media devices, memory cards, flash cards, etc.
Such devices also can include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device, etc.) and working memory as described above. The computer-readable storage media reader can be connected with, or configured to receive, a computer-readable storage medium, representing remote, local, fixed, and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules, services or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or Web browser. It should be appreciated that alternate embodiments may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets) or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules or other data, including RAM, ROM, Electrically Erasable Programmable Read-Only Memory (“EEPROM”), flash memory or other memory technology, Compact Disc Read-Only Memory (“CD-ROM”), digital versatile disk (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 the a system device. Based at least in part on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the disclosure as set forth in the claims.
Other variations are within the spirit of the present disclosure. Thus, while the disclosed techniques are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions and equivalents falling within the spirit and scope of the invention, as defined in the appended claims.
The use of the terms “a” and “an” and “the” and similar referents in the context of describing the disclosed embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms “comprising,” “having,” “including,” and “containing” are to be construed as open-ended terms (i.e., meaning “including, but not limited to,”) unless otherwise noted. The term “connected” is to be construed as partly or wholly contained within, attached to, or joined together, even if there is something intervening. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein and each separate value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate embodiments of the invention and does not pose a limitation on the scope of the invention unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the invention.
Preferred embodiments of this disclosure are described herein, including the best mode known to the inventors for carrying out the invention. Variations of those preferred embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate and the inventors intend for the invention to be practiced otherwise than as specifically described herein. Accordingly, this invention includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the invention unless otherwise indicated herein or otherwise clearly contradicted by context.
All references, including publications, patent applications and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.
Number | Name | Date | Kind |
---|---|---|---|
7814734 | Bilkie, Jr. | Oct 2010 | B2 |
8489232 | Mishra | Jul 2013 | B2 |
20200124484 | Fuller | Apr 2020 | A1 |
20220127083 | Elmardini | Apr 2022 | A1 |