System and method for automated fulfillment of orders in a facility

A system and a method for the automated fulfillment of retail orders in a facility is disclosed. A sorting control device aggregates a plurality of orders into a master picklist divides the master picklist into sub-picklists based on a location of the items. The sub-picklists, a first location of an item, and the location of a dock to a conveyor system are transmitted to an autonomous guided vehicle (AGV). The AGV navigates to the first location and obtains the item. The AGV iterates the sub-picklist navigating and retrieving each item. The AGV navigates to the AGV dock of a conveyor system and deposits the items at an inlet of the conveyor system. The conveyor system scans each of the items as they pass through a scan tube. Based on the scanning, each item is directed by a set of computer controlled rollers and actuated platforms to a destination isolation wing.

BACKGROUND

Order fulfillment can be inefficient in the event that each order is picked when it is received. Inefficient picks of the same item may be performed by more than one picker leading to lost productivity.

DETAILED DESCRIPTION

Described in detail herein is a system for automated fulfillment of retail orders in a facility. A sorting control device aggregates orders into a master picklist. The sorting control device divides the master picklist into one or more sub-picklists based on locations at which items in the master picklist are stored. The sorting control device transmits a notification to an autonomous guided vehicle (AGV). The notification includes one or more of the sub-picklists, a location at which one of the items in the sub-picklists is stored and a location of an AGV dock of a conveyor system at which the item is to be deposited by the AGV. The AGV receives the notification and navigates to the location of the one or more items in the sub-picklists. The AGV obtains the one or more items, and then navigates to the location of the AGV dock of the conveyor system. The AGV deposits the one or more items at an inlet of the conveyor system. The conveyor system receives the items, and passes each of the items through a scan tube to be scanned. The conveyor system determines a destination isolation wing for the item based on scanning of the item via the scan tube. To transport the items to the destination isolation wing, the conveyor system actuates a subset of computer controlled rollers and a subset of actuated platforms.

FIG.1is a block diagram illustrating a system100for automated fulfillment of orders in a facility according to an exemplary embodiment. The system100can utilize a sorting control device102, communicatively coupled with a conveyor system104and with one or more AGVs108A-C (collectively AGVs108) for the automated fulfillment of orders.

The sorting control device102can receive one or more orders. Orders can be received from an e-commerce system (formed by one or more servers) communicatively coupled to the databases112A,112B. The e-commerce system can update the databases112A,112B with order information. The sorting control device102can aggregate items in the received orders into a master picklist. The master picklist can include all items from the received one or more orders. In exemplary embodiments, the master picklist can be continuously and dynamically updated when order are received. The sorting control device102can identify a location of each of the aggregated items within a facility. As the master picklist contains one or more orders, more than one of the same item across multiple orders can exist in the picklist. The sorting control device102can identify duplicate items in the master picklist as well as the locations of the duplicate items and can consolidate the entry of that item within the master picklist. Each of the items in the master picklist can be referenced back to the original order from which the item originated. The referencing to the original order from which an item originated can include maintaining a list of database identifiers corresponding to the original order including the item and the insertion of the identifier into a database table corresponding to the master picklist.

The sorting control device102can disassemble the master picklist into location-based sub-picklist. For example, the sub-picklists can correspond to various items located in a common or nearby location within the facility (e.g., within a specified distance of each other). By organizing the master picklist into location-based sub-picklists, items in similar areas of a facility can be grouped together. The items in the master picklist can be grouped into sub-picklists independently of the orders from which the items originated, and times at which the orders including the items are received. The number of sub-picklists can be determined by the availability of AGVs as well as the capacity of the one or more AGVs108, both volumetric and load (weight bearing). The sub-picklists can limit the size of one picklist to items within a small geographic footprint of the facility. Alternatively, sub-picklists can have broader geographic scope to maximize the use of an AGV's capacity. For example, in one embodiment, the items in a sub-picklist can include items that are nearby to each other and are on an optimized path to an input of the conveyor system (e.g., items in the same aisle). The sorting control device102can interface with the databases112A,112B to retrieve additional information about the volumetric size and weight of the items in the sub-picklists. Additionally, specifications relating to the capacity of the one or more AGVs108from a pool of available AGVs can be retrieved from the databases112A,112B for comparison to the measure of the sub-picklist items.

A conveyor system104can be provided a platform for receiving and sorting of the sub-picklist items into their respective orders. The conveyor system104can receive items from the one or more AGVs108, singulate each of the items for processing, scan each of the items, and then transfer the item to a specific receiving area based on the order to which the item belongs. The conveyor system104can include computer control for controlling rollers and actuated platforms. Additional, the computer control can include network interfaces devices for interfacing with the network110.

The one or more AGVs108can be autonomous robotic vehicles. The one or more AGVs108can include ground vehicles or unmanned aerial vehicles (UAVs). The one or more AGVs108can include processing systems configured to receiving navigational instructions, as well as circuitry to implement and execute the navigational instructions. The processing systems can also include obstacle detection and avoidance systems to allow the one or more AGVs108to execute the navigational instructions and dynamically adapt the navigation based on obstacles that can occur during navigation. The one or more AGVs108can include one or more motors for propulsion. In one embodiment, the motor can power a drive train that can be controlled by the processing systems to effectuate the navigation of the one or more AGVs108. In another embodiment, one or more motors can power rotors in a UAV embodiment. The one or more AGVs108can interface with the inlet of the conveyor system104.

As one example, the AGV108A can transport order items106A,106B,106C,106D. The order items106A,106B,106C,106D correspond to those items from the master picklist that are currently picked in a sub-picklist assigned to the AGV108A. The order items106A,106B,106C,106D can be multiples of the same item corresponding to one or more orders. Alternatively the order items106A,106B,106C,106D can be different items corresponding to one or more orders that are located within a specified distance from each other within the facility. Additionally, additional sub-picklists can be assigned to the AGV108B specifying a different set of order items. The different set of order items can be different items from order items106A,106B,106C,106D. The different set of order items can be located in a different location of the facility from order items106A,106B,106C,106D. Alternatively, order items106A,106B,106C,106D and The different set of order items can be in the same location, however AGV108A can be running at load capacity and AGV108B can have additional capacity for more items from that area of the facility.

A network110communicatively couples the one or more AGVs108, the sorting control device102and the conveyor system104. The network110can be a wide area network (WAN) or the Internet. The network110can be operable to transport data packets compatible with sorting control device102, the conveyor system104, and the one or more AGVs108. In one embodiment, compatible data packets can include data packets with transmission control protocol (TCP) or user datagram protocol (UDP) routing information, as well as an accessible application layer. The network110can interface with other networks or servers. The network110can be a combination of wired and wireless connection inclusively.

Databases112A,112B store relevant information about orders. The order information can include information identifying the contents of the order, the method of payment, the purchaser, as well as time and date of the order. The databases112A,112B store relevant information about the items in the facility such as unique identifiers, package sizes including weight and dimensions, packaging images, and locations of the item within the facility. Additionally the databases112A,112B can be updated with information collected from the conveyor system104including substation items to orders, as well as scanned or direct imaging of the items from a scan tube.

FIG.2is a diagram illustrating a conveyor system104for automated fulfillment of orders in a facility according to an exemplary embodiment. The conveyor system104can include an inlet202, a scan tube204, computer controlled rollers206, one or more isolation wings208and one or more actuated platforms210. While an illustrative quantity of isolation wings208are depicted inFIG.2, the conveyor system104can include more or fewer isolation wings in other embodiments. The inlet202is the entry point for items into the conveyor system104. The one or more AGVs108can interface or dock with the inlet202to deposit one or more items into the conveyor system104. Computer controlled rollers206singulate and advance the items down the conveyor system104. The computer controlled rollers206are individually activated to singulate each item. Once singulation is completed, multiple adjacent computer controlled rollers206can be synchronously activated to provide consistent motion of each item along the conveyor system206.

Items can travel across the conveyor system104through a scan tube204. The scan tube204can be positioned over the computer controlled rollers206. The scan tube204can include one or more sensors to detect and identify items passing through the tube. The sensors can include a camera configured to capture and process universal product code (UPC) bar codes, quick response (QR) codes, and to capture a set of digital images of items. The sensors can also include a near field communication (NFC) tag reader.

Computer controlled rollers206advance an item out of the scan tube and to the actuated platforms210. The actuated platforms210facilitate the transfer of an item from the computer controlled rollers206to one or the isolation wings208. The actuated platforms210can be controlled by the conveyor system104. Upon the scanning of an item in the scan tube204, an order of the items on the conveyor system104can be determined based upon the time that the item was scanned on the conveyor system104and the delta between each item scan time. The conveyor system104can assign the item to one of the isolation wings208. The conveyor system104can determine a distance to the assigned one of the isolation wings208based on the spacing and the circumference of each computer controlled roller206. The conveyor system104can utilize the computer controlled rollers206to move the item to an actuated platform210associated with the assigned one of the isolation wings208. The actuated platform210can utilize linkage attached to a computer controlled motor to raise a side of the actuated platform210opposite the assigned one of the isolation wings208. The raising can utilize the force of gravity to laterally move the item off the computer controlled rollers206and into the assigned one of the isolation wings. In embodiments, the conveyor system104can include AC/DC power supply configured to receive 110-220 V alternating current power at 60 Hz and 30 A and to provide direct current power to the computer controlled rollers206, the scan tube204, and the actuated platforms210.

FIGS.3A and3Bdepict a computer controlled roller300according to an exemplary embodiment. The computer controlled roller300can be a 24-volt direct current (DC) driven O-ring roller. The roller300can include a body302, and an internal or external motor304. The motor304can be powered and/or controlled via cable306, which can be operably coupled to a control card310. The computer controlled roller300can be coupled to the control card310through the connector308. In embodiments, two or more rollers300can be operably coupled to a single control card310. In other embodiments, each roller300can be operably coupled to a distinct control card310. The computer controlled roller300can include other conveyance mechanisms known in the art, including belt-driven rollers, magnetic belts, flat belts, chains or the like, provided that computer controlled rollers300are capable of maintaining a conveyor speed of at least about 110 feet per minute.

FIG.3Cdepicts an actuated platform210according to an exemplary embodiment. The actuated platform210can include a computer controlled motor312and accompanying linkage314to facilitate the raising and lowering of the actuated platform210. The computer controlled motor312can be communicatively coupled to a controller computer. The controller computer can activate the motor312when it is determined that an order item106destined for the designated isolation wing208is determined to be located on the actuated platform210. The linkage314converts the motors rotational movement into a vertical movement to raise one side of the actuated platform210. The raising of one side of the actuated platform210can create a gravitational effect in the direction316toward the designated isolation wing208. The order item106can be captured by the gravitational effect and moves in the direction316into the designated isolation wing. Upon the traversal of the order item106from the actuated platform210to the designated isolation wing208, the computer controller can activate the motor in the opposite direction, thereby lowering the actuated platform210through the linkage314so that other order items can pass.

FIG.4is a block diagram illustrating processing of items on a conveyor system according to an exemplary embodiment.

An item106traverses the conveyor system by computer controlled rollers300in a direction406along a length of the conveyor system. Zones404A,404B,404C,404D correspond to actuated platforms associated with isolation wings208. When the item enters one of the designated zones404A,404B,404C,404D corresponding to the isolation wing208assigned to the order that includes the item, the actuated platform210raises a side opposite the isolation wing208resulting in a movement of the item towards the corresponding one of the designated zones408A,408B,408C,408D in a generally lateral or transverse direction as compared to the direction406.

FIG.5is a block diagram of an exemplary conveyor system according to an exemplary embodiment. The conveyor system104can include two or more computer controlled rollers300. In one embodiment, the number of computer controlled rollers300present in the conveyor system104can be a function of the length of the conveyor as well as the number of isolation wings the conveyor system services.

The conveyor system104can include a plurality of actuated platforms210. In an embodiment with more than one isolation wing the actuated platforms210can correspond in a one to one relationship with the isolation wings, where the actuated platform210redirects an item in one direction toward the correlated isolation wing. In another embodiment, the plurality of actuated platforms210may correspond in a one to two relationship where the actuated platform can direct an item in opposite directions where isolation wings are on opposite sides of the conveyor system104.

The conveyor system104can include a scan tube204. The scan tube204can be positioned inline to the computer controlled rollers300on the conveyor system104. During usage, items can traverse the conveyor system104, passing through the scan tube204prior to proceeding to the actuated platforms210. As described above, the scan tube204scans items passing through it via machine-readable tags or direct imaging.

The conveyor system104can include a computer controller502. The computer controller502can instruct individual computer controlled rollers300to rotate to advance or singulate items on the conveyor system104. The computer controller502additionally can instruct individual actuated platforms210to raise or lower thereby advancing an item to a designated isolation wing. The computer controller502can control the scan tube204including the scanning of items, and transmission of the scanned information or images to the sorting control device102. A bus504can connect the computer controlled rollers300, actuated platforms210and the scan tube204to the computer controller502. The bus504facilitates to the electrical and electromechanical control of the respective components by the computer controller502.

FIG.6is a block diagram illustrating an embodiment of an AGV108in a facility according to exemplary embodiments of the present disclosure. In exemplary embodiments, sets of items604-610can be disposed in a facility600on a shelving unit602, where each set of like items604-610can be grouped together on the shelving unit602. The physical objects in each of the items604-610can be associated with identifiers encoded in machine-readable element612-618, respectively, corresponding to the items604-610, where like items can be associated with identical identifiers and disparate physical objects can be associated with different identifiers. In some embodiments, the machine-readable elements612-618can be barcodes or QR codes.

The AGV108can be a driverless vehicle, an unmanned aerial craft, automated conveying belt or system of conveyor belts, and/or the like. Embodiments of the AGV108can include an image capturing device622, motive assemblies624, a picking unit626, a controller628, an optical scanner630, a drive motor632, a GPS receiver634, accelerometer636and a gyroscope638, and can be configured to roam autonomously through the facility600. The picking unit126can be an articulated arm. The AGV108can be an intelligent device capable of performing tasks without human control. The controller628can be programmed to control an operation of the image capturing device622, the optical scanner630, the drive motor632, the motive assemblies624(e.g., via the drive motor632), in response to various inputs including inputs from the image capturing device622, the optical scanner630, the GPS receiver634, the accelerometer636, and the gyroscope638. The drive motor632can control the operation of the motive assemblies624directly and/or through one or more drive trains (e.g., gear assemblies and/or belts). In this non-limiting example, the motive assemblies624are wheels affixed to the bottom end of the AGV108. The motive assemblies624can be but are not limited to wheels, tracks, rotors, rotors with blades, and propellers. The motive assemblies624can facilitate 360 degree movement for the AGV108. The image capturing device622can be a still image camera or a moving image camera.

The GPS receiver634can be an L-band radio processor capable of solving the navigation equations in order to determine a position of the AGV108, determine a velocity and precise time (PVT) by processing the signal broadcasted by GPS satellites. The accelerometer636and gyroscope638can determine the direction, orientation, position, acceleration, velocity, tilt, pitch, yaw, and roll of the AGV108. In exemplary embodiments, the controller can implement one or more algorithms, such as a Kalman filter, for determining a position of the autonomous robot device.

Sensors642can be disposed on the shelving unit602. The sensors642can include temperature sensors, pressure sensors, flow sensors, level sensors, proximity sensors, biosensors, image sensors, gas and chemical sensors, moisture sensors, humidity sensors, mass sensors, force sensors and velocity sensors. At least one of the sensors642can be made of piezoelectric material as described herein. The sensors642can be configured to detect a set of attributes associated with the physical objects in the sets of like items604-610disposed on the shelving unit102. The set of attributes can be one or more of: quantity, weight, temperature, size, shape, color, object type, and moisture attributes.

The AGV108can receive instructions to retrieve physical objects from the sets of like items604-610from the facility600. For example, the AGV108can receive instructions to retrieve a predetermined quantity of physical objects from the sets of like items604-610. The instructions can include identifiers associated with the sets of like items604-610. The AGV108can query a database to retrieve the designated location of the set of like items604-610. The AGV108can navigate through the facility100using the motive assemblies124to the set of like items604-610. The AGV108can be programmed with a map of the facility600and/or can generate a map of the first facility600using simultaneous localization and mapping (SLAM). The AGV108can navigate around the facility600based on inputs from the GPS receiver628, the accelerometer630, and/or the gyroscope632.

Subsequent to reaching the designated location(s) of the set of like items604-610, the AGV108can use the optical scanner630to scan the machine-readable elements612-618associated with the set of like items604-610respectively. In some embodiments, the AGV108can capture an image of the machine-readable elements612-618using the image capturing device622. The autonomous robot device can extract the machine-readable element from the captured image using video analytics and/or machine vision.

The AGV108can extract the identifier encoded in each machine-readable element612-618. The identifier encoded in the machine-readable element612can be associated with the set of like items604and the identifier encoded in the machine-readable element614can be associated with the set of like items604-610. The AGV108can compare and confirm the identifiers received in the instructions are the same as the identifiers decoded from the machine-readable elements612-618. The AGV108can capture images of the sets of like items604-610and can use machine vision and/or video analytics to confirm the set of like items604-610are present on the shelving unit602. The AGV108can also confirm the set of like items604-610include the items associated with the identifiers by comparing attributes extracted from the images of the set of like items604-610in the shelving unit and stored attributes associated with the items604-610.

The AGV108can pick up a specified quantity of physical objects from each of the sets of like items604-610from the shelving unit602using the picking unit626. The AGV108can carry the physical objects it has picked up to a different location in the facility600and/or can deposit the physical objects on an autonomous conveyor belt for transport to a different location in the store.

The sensors642can detect when a change in a set of attributes regarding the shelving unit602in response to the AGV108picking up the set of like items604-610. For example, the sensors can detect a change in quantity, weight, temperature, size, shape, color, object type, and moisture attributes. The sensors642can detect the change in the set of attributes in response to the change in the set of attributes being greater than a predetermined threshold. The sensors642can encode the change in the set of attributes into electrical signals. The sensors can transmit the electrical signals to a computing system.

FIG.7is a flow diagram illustrating a system for automated fulfillment of orders in a facility according to an exemplary embodiment.

At step702, the sorting control device aggregates items in a plurality of orders into a master picklist. As discussed above, the sorting control device can receive orders from an e-commerce system. The order items can be aggregated into a master picklist.

At step704, the sorting control device divides the master picklist into sub-picklists. The master picklist can be divided into sub-picklists based on the location of items within a facility. Items located within predetermined distances from one another can be included in the sub-picklist. Alternatively, sub-picklists can be determined based on availability of AGVs as well as the item capacity of an available AGV. Additionally, the number of orders aggregated into the master picklist at any instance in time can be limited by the number of isolation wings on the conveyor system.

At step706, the sorting control device transmits a sub-picklist, the locations of items in the sub-picklist, and a location of the AGV dock of the conveyor system to a selected one of the AGVs. The sorting control device packages and encodes the sub-picklist as well as relevant location information for the retrieval of the items in the sub-picklist, as well as the delivery point of the conveyor system.

At step708, the AGV receives the sub-picklist, the first location, and the location of the AGV dock. The AGV receives the encoded package, decodes the package and extracts the sub-picklist as well as relevant location information for the retrieval of the items in the sub-picklist, as well as the delivery point of the conveyor system

At step710, the AGV autonomously navigates to the locations of the one or more items, and obtains the one or more items from the locations. For example, the AGV travels to the first item location and retrieves the item. The retrieval, in one embodiment, can be user-assisted, where a user stationed at the location identifies the item and places the item in or on the AGV. Alternatively, AGV inclusive collection methods with cameras and sensors can be used to identify the product and robotic instruments can be utilized to retrieve the identified item. Upon retrieving the item, the AGV can query the sub-picklist for the next nearest item. Upon retrieving the next nearest item, the AGV can retrieve corresponding location information either from the sub-picklist, or through a separate query to the databases112A,112B. The AGV can navigate to the corresponding location and retrieve the item using methods described previously. The AGV iterates the sub-picklist until all items or substitute items have been retrieved.

At step712, the AGV navigates with the one or more items to the AGV dock. Upon obtaining the items in the sub-picklist, the AGV navigates to the conveyor system dock utilizing the location of the AGV dock previously received.

At step714, the AGV deposits one or more items at an inlet of the conveyor system. The conveyor system can actuate, responsive to receiving the plurality of items, a subset of the individually computer controlled rollers to singulate each of the plurality of items. The conveyor system can activate individual computer controlled rollers to move an item without disturbing another item on the conveyor system. The movement of individual items allows the conveyor system to obtain a uniform arrangement of the items, such that items have a similar amount of empty space around each item.

At step716, the conveyor system scans each of the one or more items as the one or more items pass through a scan tube on the conveyor system. The scan tube updates, responsive to the scanning, an order from the plurality of orders, with a set of images taken of the plurality of items. Additionally, the scan tube can update, responsive to the scanning, an order from the plurality of orders, indicating that an item from the order has been scanned at the scan tube.

At step718, the conveyor system determines, based on the scanning, a destination isolation wing. The conveyor system utilizes the scanning to identify the item. The item can be correlated to one of the orders received from the e-commerce system. Each order can be assigned an isolation wing to avoid the comingling of orders. The conveyor system activates respective computer controlled rollers to advance the items to their respective isolation wings.

At step720, the conveyor system actuates the computer controlled rollers and the actuated platforms to transport each of the one or more items to the destination isolation wing. As the items progress across the computer controlled rollers, the conveyor system calculates the distance the item has traveled based at least in part on the spacing of the computer controlled rollers, the circumference of the computer controlled rollers, as well as the sequence and speed at which the computer controlled rollers are operated. Additional sensors can be utilized to detect the position of the item on the conveyor system. Weight sensors, pressure sensors, as well as imaging sensors can be used to detect the items on the conveyor.

As the item approaches the designated isolation wing, the conveyor system activates the actuated platform. The side of the actuated platform can be raised through a motor and linkage so that the force of gravity forces the item into the isolation wing.

FIG.8is a block diagram of an example computing device for implementing exemplary embodiments of the present disclosure. Embodiments of the computing device800can implement embodiments of a system for the automated fulfillment of retail orders in a facility. For example, the computing device can be embodied as a portion of the sorting control device, the autonomous guided vehicle, and computer controller of the conveyor system. The computing device800includes one or more non-transitory computer-readable media for storing one or more computer-executable instructions or software for implementing exemplary embodiments. The non-transitory computer-readable media may include, but are not limited to, one or more types of hardware memory, non-transitory tangible media (for example, one or more magnetic storage disks, one or more optical disks, one or more flash drives, one or more solid state disks), and the like. For example, memory806included in the computing device800may store computer-readable and computer-executable instructions or software for implementing exemplary operations of the computing device800. The computing device800also includes configurable and/or programmable processor802and associated core(s)804, and optionally, one or more additional configurable and/or programmable processor(s)802′ and associated core(s)804′ (for example, in the case of computer systems having multiple processors/cores), for executing computer-readable and computer-executable instructions or software stored in the memory806and other programs for implementing exemplary embodiments of the present disclosure. Processor802and processor(s)802′ may each be a single core processor or multiple core (804and804′) processor. Either or both of processor802and processor(s)802′ may be configured to execute one or more of the instructions described in connection with computing device800.

Virtualization may be employed in the computing device800so that infrastructure and resources in the computing device800may be shared dynamically. A virtual machine812may be provided to handle a process running on multiple processors so that the process appears to be using only one computing resource rather than multiple computing resources. Multiple virtual machines may also be used with one processor.

Memory806may include a computer system memory or random access memory, such as DRAM, SRAM, EDO RAM, and the like. Memory806may include other types of memory as well, or combinations thereof. The computing device800can receive data from input/output devices. A user may interact with the computing device800through a visual display device814, such as a computer monitor, which may display one or more graphical user interfaces816, multi touch interface820and a pointing device818.

The computing device800may also include one or more storage devices826, such as a hard-drive, CD-ROM, or other computer-readable media, for storing data and computer-readable instructions and/or software that implement exemplary embodiments of the present disclosure. For example, exemplary storage device826can include one or more databases828for storing information relating to the orders, the master picklist, the sub-picklist and locations of items. The databases828may be updated manually or automatically at any suitable time to add, delete, and/or update one or more data items in the databases.

The computing device800can include a network interface808configured to interface via one or more network devices824with one or more networks, for example, Local Area Network (LAN), Wide Area Network (WAN) or the Internet through a variety of connections including, but not limited to, standard telephone lines, LAN or WAN links (for example, 802.11, T1, T3, 56 kb, X.25), broadband connections (for example, ISDN, Frame Relay, ATM), wireless connections, controller area network (CAN), or some combination of any or all of the above. In exemplary embodiments, the computing system can include one or more antennas822to facilitate wireless communication (e.g., via the network interface) between the computing device800and a network and/or between the computing device800and other computing devices. The network interface808may include a built-in network adapter, network interface card, PCMCIA network card, card bus network adapter, wireless network adapter, USB network adapter, modem or any other device suitable for interfacing the computing device800to any type of network capable of communication and performing the operations described herein.

The computing device800may run any operating system810, such as any of the versions of the Microsoft® Windows® operating systems, the different releases of the Unix and Linux operating systems, any version of the MacOS® for Macintosh computers, any embedded operating system, any real-time operating system, any open source operating system, any proprietary operating system, or any other operating system capable of running on the computing device800and performing the operations described herein. In exemplary embodiments, the operating system810may be run in native mode or emulated mode. In an exemplary embodiment, the operating system810may be run on one or more cloud machine instances.

Exemplary flowcharts are provided herein for illustrative purposes and are non-limiting examples of methods. One of ordinary skill in the art will recognize that exemplary methods can include more or fewer steps than those illustrated in the exemplary flowcharts and that the steps in the exemplary flowcharts can be performed in a different order than the order shown in the illustrative flowcharts.