Automated retail system control and method
By designing a system and method for controllers to coordinate multiple automated retail systems, the functional limitations of existing systems in information access and error handling are solved, the convenience of user interaction and efficient coordination capabilities of the system are achieved, and the user experience and order completion efficiency are improved.
Patent Information
- Application Number
- JP2024558238
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-04-01
- Filing Date
- 2023-03-31
- Publication Date
- 2025-05-13
AI Technical Summary
The existing automated retail systems have limited functions in information access and error handling, limited user interaction, and it is difficult for the system to effectively coordinate the operations of multiple automated retail systems.
A system and method are designed to coordinate multiple automated retail systems through the controller to realize functions such as user request reception, real-time status information processing, product list determination, order sending and distribution. The system is able to dynamically update product lists based on user location and preferences, and automatically redirect and process errors when they occur.
It improves the convenience of user interaction and the richness of information access, enhances the system's error handling capabilities and multi-system coordination capabilities, and ensures efficient order completion and improved user experience.
Smart Images

Figure 2025514916000001_ABST
Abstract
Description
[Technical field]
[0001] TECHNICAL FIELD This application relates to a system and method for operating multiple automated retail systems. [Background technology]
[0002] Automated retail systems are widespread in many locations and can be found in shopping centers, travel hubs such as train stations and airports, service stations, office complexes, etc. Automated retail systems typically have a user interface installed on the machine body through which a user can place an order by inputting selections and payment. Recently, more and more users interact with the automated system through electronic user devices that may be personal to the user, rather than directly interacting with the user interface attached to the machine. The user typically interacts with the automated retail system from the user device to place an order and to receive notifications such as when payment has been completed and when the order is ready for collection. Such interactions are performed through a suitable connection such as Wi-fi, Bluetooth, NFC (Near Field Communication), etc. Previous systems were limited in the information that users could access and also limited in the functionality provided in case of errors in the automated retail system. Summary of the Invention
[0003] A system for controlling a plurality of automated retail systems is provided, comprising a controller in communication with the plurality of automated retail systems, the controller configured to perform the steps of receiving a user request to use the system, receiving real-time status information from the plurality of automated retail systems indicating resource availability, determining an available product list based on the received status information, the available product list including a list of products available at the plurality of automated retail systems, sending the available product list to a user, receiving an order message from the user including an order selected from the available product list, selecting an automated retail system to fulfill the order, and sending the order to the selected automated retail system.
[0004] Optionally, the user request further includes one or more of user location information, a user selected location, and user preference information, and the product list is determined based on received status information of the automated retail system associated with the location corresponding to the user request.
[0005] Optionally, before determining the available product list, the controller is configured to query a work-in-progress data store of the automated retail system associated with the user location information.
[0006] Optionally, the user request is received from a remote user device via an Internet connection.
[0007] Optionally, the status information includes order status information relating to orders being fulfilled by the automated retail system.
[0008] Optionally, the product list sent to the user includes estimated wait time information for each product based at least in part on the queue information.
[0009] Optionally, to transmit the order to the selected automated retail system, the controller is configured to queue the received order for fulfillment by the selected automated retail system.
[0010] Optionally, the order message includes a user timing request to pre-schedule the order or delay an existing order, and the controller is arranged to place the order in a queue of orders based on the user timing request.
[0011] Optionally, the product list is dynamically updated and transmitted to the user based on changes in real-time status information, and the available product list is determined based on the status information and one or both of the user's location information and the user-selected location.
[0012] Optionally, a first portion of the available products are available at a first automated retail system and a second portion of the available products are available at a second automated retail system.
[0013] Optionally, the automated retail system is an automated retail kiosk, and optionally, the automated retail kiosk is an automated beverage maker.
[0014] Optionally, the processor is configured to select a first automated retail system to complete a first portion of the order and to select a second automated retail system to complete a second portion of the order.
[0015] Optionally, the selection of an automated retail system to fulfill an order is based on user requests and status information to minimize the time it takes to complete an order.
[0016] A method is provided that is executed in a controller of the system of automated retail systems, the method including the steps of receiving a user request to use the system, receiving real-time status information indicating product availability from a plurality of automated retail systems in communication with the controller, determining an available product list based on the received status information, the available product list including a list of products available at the plurality of automated retail systems, sending the available product list to a user, receiving an order message from the user including an order selected from the available product list, selecting an automated retail system to fulfill the order, and sending the order to the selected automated retail system.
[0017] A computer readable medium comprising instructions which, when processed by a processor, cause the processor to perform the steps of the method of claim 14.
[0018] Specific embodiments of the present disclosure are described, by way of example only, in the following detailed description and with reference to the accompanying drawings. [Brief description of the drawings]
[0019] [Figure 1] 1 illustrates an exemplary system 100 according to the present disclosure. [Diagram 2] 1 shows a data flow diagram according to the present disclosure. [Diagram 3] 1 shows a data flow diagram according to the present disclosure. [Figure 4] 1 shows a data flow diagram according to the present disclosure. [Diagram 5] 1 shows a data flow diagram according to the present disclosure. [Figure 6] 1 shows a data flow diagram according to the present disclosure. [Figure 7] 1 shows a data flow diagram according to the present disclosure. [Figure 8] 1 shows a flowchart of a process for fulfilling a user request according to a system of the present disclosure. [Figure 9]11 illustrates a block diagram of one implementation of a computing device 1100 upon which a set of instructions may be executed to cause the computing device to perform any one or more of the methodologies discussed herein.
[0020] Throughout the drawings, like reference numbers are used for like elements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0021] The detailed description set forth below is intended to illustrate various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology may be practiced. The accompanying drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details for the purpose of providing a more thorough understanding of the subject technology. However, it will be apparent that the subject technology is not limited to the particular details set forth herein and may be practiced without these details. In some instances, structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject technology.
[0022] In overview, but not by way of limitation, this application discloses a system for controlling the operation of multiple autonomous retail systems, and methods of operation thereof. The system comprises a controller configured to coordinate customer interfaces, order processing, routing, and queuing of the multiple autonomous retail systems connected via an Internet connection. The controller of the system receives control and feedback data from both user devices and other external systems, including content management systems and the like. From a user's perspective, the user device may be used to access a software application to display a schedule of items available from the multiple autonomous retail systems, which is updated in real time by the controller.
[0023] The autonomous retail systems may collect and transmit real-time status data to the controller via a data connection, e.g., an Internet connection, so that the controller can receive information regarding the performance of functions in the autonomous retail systems, including, e.g., operational status of subcomponents and fresh resource levels. The received status data enables the controller to provide and update a schedule of items to provide a user with a single interface to access multiple autonomous retail systems. For example, a user may view a range of products available at multiple autonomous retail systems, where some products presented in the schedule may only be available at a first autonomous retail system and not at others, while some products may be available at various autonomous retail systems. Product availability may depend on the system status of the autonomous retail systems, which is communicated to the controller.
[0024] When a user places an order from the schedule, the controller selects one or more autonomous retail systems to fulfill the order and transmits the order or relevant portions of the order to the selected one or more autonomous retail systems. That is, individual portions of the order may be completed by different systems. The controller may communicate directly with manufacturing entities within the autonomous retail system, described below as workcells. Thus, the controller may select a specific first workcell of the autonomous retail system to complete the order, or may select a specific first workcell of the autonomous retail system to complete the first portion of the order and a second specific workcell, which may or may not be within the same autonomous retail system, to complete the second portion of the order. The selection of the workcell, described below as routing, may be performed as further described below.
[0025] The autonomous retail systems may be grouped by location within a larger retail environment, for example, a shopping mall, an office building, an airport, etc. The provision of a controller, and the control and feedback that the autonomous retail systems provide to the controller, allows for the federation of multiple systems that may have different fulfillment capabilities.
[0026] 1 illustrates an example system 100 according to the present disclosure. The system 100 includes a controller 110 in communication with a plurality of autonomous retail systems 200a...200n. Each of the plurality of autonomous retail systems 200a...200n may include a plurality of fulfillment workcells 210a...210n and components 212a...212n and resources 214a...214n associated with the respective fulfillment workcells 210a...210n. The autonomous retail systems 200a...200n may include systems of various types and capabilities, for example, the system 100 may include automated beverage makers 200a, 200b, 200c, standard vending machines 200d, 200e, etc.
[0027] The controller 110 may communicate with multiple autonomous retail systems 200a...200n via wired or wireless connections. The controller 110 may be a cloud controller.
[0028] If the autonomous retail system 200 includes multiple fulfillment workcells 210a...210n, the autonomous retail system 200 may send control signals to each fulfillment workcell 210a...210n independently, i.e., the fulfillment workcells of the autonomous retail system 200 may operate independently of one another.
[0029] Here, "components" 212 may refer to consumables used to fulfill an order in fulfillment workcell 210. In the case of an automated beverage production system, components 212 may include, for example, coffee beans, water, refrigerated or non-refrigerated additives that are combined in producing a beverage, such as a coffee drink, cups, lids, etc. Here, "resources" 214 may refer to functional portions of fulfillment workcell 210. Again, in the case of the example automated beverage production system, resources 214 may include, for example, a coffee engine / coffee maker, an ice dispenser, a cup denester, a cup lidder mechanism, a carousel, valves, pumps, sensors, and one or more robotic arms.
[0030] Fulfillment workcell 210 may provide control signals to resources 214 and may receive feedback signals from components 212 and resources 214, as further described below.
[0031] The controller 110 communicates with one or more user interfaces 120. The user interfaces 120 are shown in FIG. 1 to communicate with the controller via an Internet connection. The user interfaces may communicate with the autonomous retail system 200 via an Internet connection. The one or more user interfaces 120 may be associated with a particular autonomous retail system 200 or each may be associated with multiple autonomous retail systems 200. The user interfaces 120 may include one or more of a touch screen, a payment terminal, an RFID reader, a camera, a microphone, a speaker, a soft(er) keyboard, a barcode reader, a GPS unit, and allow a user to interact with the system. The user interfaces may be provided as software applications accessed via a user device such as a mobile phone. A user may interact with the software application, view data about the system, and enter order information through the user interface on the mobile device that is transmitted to the controller via an Internet connection.
[0032] The controller may communicate with various other external systems, including but not limited to content management systems, via an Internet connection. · The content management system provides content assets such as images, videos, menu configuration data (e.g., product metadata for nutritional labels), etc. The user interface queries the content management system to request assets to present to the user, retrieves the assets from the content management system, and presents them. · Content assets may represent default assets for a given market and language, or promotional assets related to seasonal or special promotional campaigns.
[0033] The controller 110 may communicate with a data store (not shown) to access data regarding the system. The data stores may include at least a location data store 402, a product data store 502, and an order data store 802. Such data may include, but is not limited to, the following: Data describing the details of a particular user order, the products that make up the order, and any modifications and customizations. These details include all data that is sent to the workcell 210 in order for the workcell to complete the order. Data representing products, product recipes, product variations, and product change rules. Data describing the geographic location of the storefront, one or more associated kiosks, and the state of the kiosk (e.g., open, closed, public, private, or in a restricted access location).
[0034] In the following, the autonomous retail system 200 may be referred to as a kiosk. The kiosk 200 may comprise multiple work cells 210a...210n, which are arranged to fulfill orders received from the controller 110 based on user input to the user interface 105. The kiosk 200 receives instructions from the controller 110 and passes the instructions to the work cells 210 assigned by the controller 110. The work cells 210 combine components 212 using the necessary resources 214 to produce products that are part of the order. The kiosk 200 may be considered as a stateful machine, the kiosk 200 comprising a processor, memory, and operating circuitry. The kiosk 200 does not store order history in memory, but the memory may include current machine state information, including order in progress status (including the production and delivery status of individual beverages, as well as the availability of consumables and resources). The order in progress status may include the status of one or more orders that have been ordered but not yet completed. Kiosk state and messaging flow between kiosks 200a...200n are described further below. The manufacturing workcells 210a...210n present in kiosk 200 may include proprietary and shared resources, i.e., some resources 214a...214n and some components 212a...212n of kiosk 200 may be accessible from multiple workcells, while some are usable only by a particular workcell 210.
[0035] 2-8 are data flow diagrams according to the present disclosure. The data flows are schematic overviews of the controller functions within the system. An administrator 400 may perform provisioning 401 of the kiosk 200 of the system 100. The administrator 400 may access the system and the controller 110 from or through the user interface 120. The administrator 400 may cause a provisioning request to be sent from the controller to the kiosk 200. The provisioning request may include various setup information for configuring the kiosk 200, including, for example, but not limited to, the kiosk name, date, group data, location name data, and association with additional kiosks. Additionally, the provisioning request may include any instructions for performing software and firmware upgrades that may be required. In response to receiving the provisioning request, the kiosk 200 may perform any configuration steps and update any local memory as necessarily required by instructions included in the provisioning message. Once the kiosks 200 have performed the configuration steps, they may respond to the controller 110 with a provisioning result message, which may include a status message of "setup complete," "ready to use," or "more information needed." The administrator 400 may then be provided with the results of the provision request so that he knows the system configuration is as intended. The controller may instruct that system details, including the provisioned kiosks 200a...200n and their characteristics, are stored in the location data store 402.
[0036] The administrator 400 may perform product enablement 501 of the system. The individual kiosks 200a...200n and their associated work cells may in principle be arranged to manufacture any combination of available components 212a...212n. The administrator 400 provides information related to the list of products that may be manufactured by the kiosks 200a...200n at the individual kiosk and / or kiosk group level. For example, a product may be manufactured by a kiosk at a first location and not at a second location due to regional variations in the desirability of a particular product over other products. Similarly, physical conditions at some kiosks and / or locations may mean that manufacturing of a particular product is not possible at that kiosk and / or location due to constraints of individual kiosk resources 214a...214n. The administrator 400 creates, enables, and stores a set of instructions that may be associated with one or more kiosks and used to instruct the kiosks 200 to manufacture a given product. The instructions may include a list of ingredients (components 212a...212n) and target values (e.g., water temperature, additive temperature, additive amount and / or strength) for controlling the workcell resources 214a...214n used to manufacture the product. The enabled product list and instructions are stored in a product data store 502 for use, as described below.
[0037] The kiosks 200a...200n monitor the consumable levels they are equipped with. In the case of an automated beverage production kiosk, for example, the levels of beverage ingredients such as milk, coffee beans, sugar, syrup, and the levels of cups and lids may be monitored. The levels may be monitored in a number of ways. The weight or volume of individual consumables may be monitored through the use of known control and feedback units, for example load cells to measure liquid or granular ingredients, photocells to detect the presence of an article such as a cup or lid, and the like. The feedback units may provide availability status messaging to the controller 110 derived from resource error conditions, which may be provided by flow meters provided on or in communication with the pipes or nozzles, or temperature sensors to measure ingredient temperatures. Similarly, the kiosks 200 may be provided with new consumable information such that when resources are replenished, data regarding the amount of any resource supplied to the machine is entered into the user interface 120. This may be entered directly or the machine operator may provide a scan of a bar code or QR code that is read by the user interface 120, providing component quantity data to the controller and stored in the product data store. The consumable status data may include expiry date data for consumable ingredients, or "remove-by" data indicating the date when the consumable will no longer be provided to the user and must be replaced. Each time an order is fulfilled at the kiosk 200, the kiosk 200 may decrement the stored status values associated with each of the consumables or components used to fulfill the order and send updated kiosk status data to the controller 110. The kiosk consumable status data is sent to the controller 110 in real time, and the information is stored in the product data store 502. The kiosk status is communicated to the controller and stored in the product data store 502 so that an up-to-date store of available and valid products is maintained.
[0038] In essence, replenishment and consumable status data 601 from the kiosks 200a...200n flows "upstream" to the controller and, as events occur, such as an order being made, cleaned, or a machine being primed, is reported in real time to the controller 110 via an Internet connection and updated in the product data store 502.
[0039] A user 700 wishing to use the system can request a view of available resources through an application running on a computing device such as a mobile device. The application may be provided on the user equipment device (such as a mobile phone, tablet computer, laptop, or other Internet-enabled device) or through a user interface 120 provided at the kiosk 200 or other location. The user request may include geolocation data or a location selection. The geolocation data may be provided, for example, based on GPS data obtained from the user equipment. Alternatively, the user 700 may select from a list of location options that may be presented through the user interface of his or her device. A menu generation function 701 is executed based on receiving the user request. The geolocation or location selection is matched to available kiosks, which data is persisted in the location data store 402. Available and valid product information is retrieved from the product data store 502 and a menu of available products is generated. The menu provided to the user 700 may include products from kiosks 200a...200n having different types and capabilities. The product information stored in the product data store 502 may, for example, relate to a first kiosk 200a having a first set of available products and a second kiosk 200b having a second list of available products, which may overlap but not be identical to the first list. The available product list information may be changed in real time according to feedback and control data provided by the kiosks 200a...200n or administrator actions to generate the available product data provided to the user 700. The product list may be updated by the controller 110 itself. For example, products may be made available on a scheduled basis, at specific times or days of the week, or for a one-off period, as needed.
[0040] The generated menu data is then transmitted or presented to the user 700. In this manner, the user 700 has up-to-date information regarding systems and products available at or near the provided location information. Advantageously, the menu presented to the user 700 is an up-to-date representation of the products available and active at the kiosk 200 or kiosks 200a...200n at that location, and thus the user 700 is not presented with a menu of choices that include products that may not be available because the kiosk or workcell is inactive, busy, or out of ingredients for a particular product. The generated menu data provided to the user 700 may include portions of the machine status information, such as the estimated queue length at a given kiosk 200a, or the estimated delivery time of an order. The estimated queue length and estimated delivery time of products from an order may be based on order queue information accessed by the controller. The menu may be viewed via a graphical user interface (GUI) of an application on the user device or on a display of the kiosk where the user is located.
[0041] The user 700 can select one or more products from the provided menu and create an order based on the selection. The user may be presented with a set of options to modify the products provided in the menu. The list of products provided to the user can be considered as "base" products that include attributes that the user can modify. The attributes of the products are provided to the user and the values of the presented attributes can be changed in steps or continuously between predefined upper and lower limits. For example, in the case of a beverage production system, the user can specify the temperature of the beverage, add a shot of coffee, add syrup, etc. for the base product, where the base product is the product with default values of the ingredients. An example of user-defined attributes is a base cappuccino with a standard coffee setting modified to be "extra hot", i.e., heating the milk to a higher temperature than the base beverage, and adding hazelnut syrup. The user selects the products, defines or specifies the desired attributes, and transmits the selected products as an order to the controller. The order including the user selection information is transmitted to the controller 110. The order may further include user information, payment information, etc., as well as the selected products that constitute the user order.
[0042] The controller 110 may then validate the order. The validation of the order is based on real-time information received from the kiosk 200 and relayed to the controller through the updated product and location data store. For example, a menu of available products may be presented to the user 700, but between presenting the menu and receiving the user selection, one or more products may become unavailable because the kiosk 200 experiences an error condition or completes an order in progress and updates consumable status information sent to the product data store 502. In this case, if one or more products selected by the user in the order become unavailable in the time between the menu generation 701, order creation and validation 801 functions, the order may not be validated and the user 700 may be re-presented with an updated menu of products available at the kiosk present at the user's location. The order may be re-validated when routing and queuing the order and when sending order production information to a particular workcell, as described further below.
[0043] The user's order is first verified when the user's selection is matched with available and valid product data and location data provided to the controller 110. The verified order details are then routed to a particular kiosk workcell. The order routing 803 performed by the controller may include selecting a particular manufacturing workcell of the kiosk 200 based on a number of different criteria. For example, the order routing 803 may be based on the work in progress (WIP) queue of the manufacturing workcells 210a...210n of the kiosks 200a...200n. The order routing 803 of an order made via a user device may be routed taking into account the use of the user interface of the kiosk 200 at the moment the order is routed. The use of the user interface 120a located at the kiosk 200a to create an order indicates that the same kiosk 200a is preferred for the manufacture of the order, and the use of the user interface 120a may be transmitted to the controller, so that another concurrent order received remotely from the user device may be routed to the second kiosk 200b. In effect, a user 700 already at user interface 120a may be given priority in routing an order to kiosk 200a over a second user using a remote user device. Thus, creating an order at the user interface of kiosk 200a may be a synchronous process, and such an order is given priority over an order received remotely from a user device. Thus, orders received through an application executing on a user device are asynchronous and subject to order queue 804.
[0044] Order routing 803 may perform load balancing of orders. Here, if the workcell 210a of the kiosk 200a has an associated WIP queue length that exceeds a predefined threshold, the controller may be configured not to route the order to the kiosk 200a. The controller 110 may decide to select the manufacturing workcell 210 with the shortest WIP queue and route the order accordingly. The controller may route the order based on the known replenishment and consumable status 601 of the kiosks 200a...200n. The order may be routed to a particular kiosk where one or more components are known to be reaching their expiration or removal date in order to minimize waste using materials. Additionally, the order may be routed based on over- or under-utilization of machine parts of the workcell 210a...210n within the kiosk 200a...200n, thereby maximizing the functional life of the workcell 210a...210n and the kiosk 200a...200n. In another example, the order, or a portion thereof, may be further routed based on directing consumer traffic to a preselected subset of kiosks 200a...200n, thereby increasing consumer traffic at the location for the benefit of third parties with which it has a commercial relationship, such as adjacent food outlets, entertainment venues, consumer goods stores, etc. Real-time kiosk and workcell resource and component information received by controller 110 enables the routing of the order to a particular workcell 210a that is known to be capable of producing the order.
[0045] Order information and status information is maintained in order data store 802. Once an order is created, it is placed in an order queue for completion in the workcell 210 of the kiosk 200. The controller 110 can place the order in a WIP queue maintained at the controller. The workcell WIP queue contains order information, including status information regarding the order.
[0046] An order present in a WIP queue assigned to a particular workcell may be rerouted if the workcell 210a of the kiosk 200a is unable to produce the order and sends an error message to the controller 110. Rerouting of an order may occur if an asynchronous order in a WIP queue remains in the WIP queue of a particular workcell 210a for longer than a predetermined period of time. This may occur if one or more synchronous orders are placed while the asynchronous order remains in the WIP queue. If an item in the WIP queue of a manufacturing workcell 210a exceeds a threshold period of time, the controller 110 may reroute the order to another manufacturing workcell 210b or provide information related to rerouting the order to the user 700. Alternatively, or in addition, the user 700 may be requested to provide input verifying the rerouting of the order. Upon receiving the user's verification, the controller 110 may reroute the order to another workcell 210b or place the order in a WIP queue, if one exists, for the selected workcell 210b.
[0047] An order or a portion thereof is queued for production at a particular one of the workcells 210a, and when the order reaches the "front" of the queue, order production information and commands are sent by the controller to the workcell 210a of the kiosk 200a. The order production information includes only the instructions necessary to produce a product from the order routed to the workcell 210a according to the user selected attribute specifications verified by the controller. The workcell may not require knowledge of the "base product" specifications as outlined in connection with the menu items above, in which case the workcell only requires instructions for the production of the product. The order production information may specify that the order production is to be completed by multiple workcells 210a...200n of one or more kiosks 200, and the order may include multiple products produced in parallel at the kiosk 200a. During the production of the order, the workcell sends production status information (of the order items) to the controller 110, which allows the controller 110 to manage the production of the order in case of errors in the production of the order product at the production workcell 210. In this manner, system 100 provides a fail-over capability in the event of an error. Controller 110 may recreate, retry, or simply reroute all or part of a failed order based on an error message received from a workcell or the failure of a workcell to provide an order production result notification to the controller within a predetermined period of time. Rerouted orders may be treated as new synchronous orders and provided to a workcell for immediate production.
[0048] Once a product from an order or portion of an order specified in the order production information is completed by the manufacturing workcell 210a, the order production results are sent to the controller 110, which updates the order and status information maintained in the order data store 802. If the order is not ready for delivery, the controller may instruct the workcell 210a to store one or more products from the order in a staging area of the kiosk 200a to await delivery to the user 700.
[0049] The controller may send an order delivery message to the workcell 210a, which may then deliver the order to the user 700. The workcell 210a sends the order delivery result to the controller 110, which updates the order information and status in the order data store 802. The workcell 210a that delivers the order may or may not be the manufacturing workcell that manufactured the order. The staging area of the kiosk 200a may be accessible by multiple manufacturing workcells 210a...210n, such that an order manufactured by a first manufacturing workcell 210a and stored in the staging area may be delivered to the user 700 by a second manufacturing workcell 210b.
[0050] FIG. 8 shows a flow chart of a process for fulfilling a user request according to a system according to the present disclosure. At 300, a user request is initiated and sent to a controller of an autonomous retail system similar to the system described above. The user request may be received from a user device, such as a mobile device (see above), or at a user interface of an automated kiosk 200 of the autonomous retail system. The user request includes location information (301). If the user request is from a remote user device, the location information may include a location selection or may include location information determined based on the location of the device. This may be provided by GPS data of a GPS-enabled user device, or by other means, for example, location data associated with the user's connection to the Internet, such as IP or other network information data. Alternatively, if the user request is received from a user interface installed on the automated kiosk 200, the location data of the kiosk 200 is provided with the user request. At 302, the controller of the autonomous retail system queries a database for a menu configuration at a location corresponding to the location data provided with the user request, where "location" may include one or more kiosks. The menu configuration stored in the database includes information about the autonomous retail kiosks 200a...200n that are enabled in the system, and the products that are enabled in one or more manufacturing workcells associated with each kiosk 200. The menu configuration information can be thought of as a "base menu" for a given location, i.e., a list of products that are enabled across all workcells and kiosks that correspond to a given or determined location of the user.
[0051] At 303, the controller queries a database for this real-time workcell component and resource availability. Real-time component and resource availability may include information related to the amount of consumables available in the workcell of kiosk 200, performance information regarding the operable portions of the workcell, and information related to, for example, whether a machine is fully operational or if a portion of the machine has failed, as described above. The controller may poll an order data store for available kiosk WIP information and provide estimated wait time information to the user along with a menu, allowing the user to select a product based on wait time.
[0052] At 304, the controller determines whether all components and resources of the workcell and kiosk at the user's location are available based on matching the availability of components and resources at the user's location with the menu configuration at the user's location. If not all components and resources of the workcell are available, a location menu is generated (305) with a tailored product list. Only products that are valid and available at the location at the time of the user initiated request form part of the tailored product list. Valid products that cannot be manufactured due to local consumable shortages or workcell resource errors are disabled in the menu configuration information. Disabled items may be visible to the user in the menu but may not be selectable by the user. The tailored product list menu is displayed to the user 700. After the order is placed, additional messages may be displayed if the items on the order cannot be verified.
[0053] Alternatively, if it is determined that all components and resources are available at the workcell (and kiosk) at the user's location, then at 306 an unspoiled menu of available and valid products is presented to the user 700 .
[0054] At 307, the system waits for an order by the user 700. If no order is placed within a predetermined time, the process may terminate or a notification prompt may be sent to the user device.
[0055] At 308, an order is placed by a user 700 and the order information is sent to a controller, which at 309 performs routing and queuing of the order to one or more automated retail systems. The order information may include a request to schedule production of the product immediately or at a specified future time, or may include a request to delay the order for a predetermined period of time. The controller may route and queue the entire order to a particular workcell of the automated retail system, or may split the order among multiple workcells. The routing and queuing of the order may be done in response to status information received from the workcells of the kiosks 200a...200n at the user location, and the routing decision may be based on the WIP queues of each workcell. The controller may perform load balancing of the system, such that each workcell maintains a similar length of WIP queue. Load balancing may be done based on historical data received from the kiosks and the usage patterns of the workcells within each kiosk 200. For example, if a particular work cell is determined to receive more synchronous orders than another work cell that is part of kiosk 200, a default condition may be implemented to route asynchronous orders to the work cell that receives fewer synchronous orders in order to maximize the time between required service and repairs of the work cell or kiosk. Order queuing may be done based on other information received with the user order, such as estimated travel time or arrival time if user 700 is not at the kiosk location. Order queuing may be done to minimize the time from order generation to presentation of the order to the user.
[0056] If the order is at the "front" of the WIP queue and ready for production, the controller determines at 309 whether the order can be fulfilled. The controller may verify that the workcell state information has not changed during the time the order is in the WIP queue. If the workcell state information indicates that the workcell is in an error state, processing proceeds to 310 where it is determined whether to retry the order. The order may be retried and the method may return to 308 for routing and queuing. Alternatively, if it is determined that the order may not be fulfilled, the order is canceled at 311 and a notification is provided to the user 700 at 312. If the order is canceled, any payments already made for the order may be refunded, either within the application or by a third party payment system.
[0057] If the controller determines from the machine status information at 309 that the order can be fulfilled, the controller sends order fulfillment instructions to the selected workcell or workcells to fulfill the order (313). The order includes order production information related to each item in the order, which is sent to the associated workcell. The order items may be sent to different workcells 210 for production and completion. Each order item is associated with a fulfillment instruction. The fulfillment instructions for an order item include all the information the workcell needs to complete the order item, including product type, product attribute variations, product modifications, quantities, and values (e.g., temperature). The distinction between an order and an order item is important. An order may consist of multiple order items, and the kiosk 200 of the present system is order or customer agnostic, only aware of the order items specified by the order item production information.
[0058] At 314, a notification is provided to the user 700 instructing the user to collect the order. The notification may include location information associated with one or more workcells that produced the order. The location information may include time information instructing the user 700 that the order is available for collection until a particular future time.
[0059] At 315, user request processing is completed.
[0060] The above-described system and method relate to a federated collection of automated kiosks. The kiosks themselves are arranged to send status information "upstream" to a controller, which may be located in the cloud. The controller maintains and has access to a location data store 402, which contains information linking the kiosks to specific location information, as described above. The controller also maintains and has access to a product data store 502, which contains information related to products that are enabled in the system and information linking the products to specific automated kiosks in the system that may create the products using the kiosk's resources and components, or work cells in the kiosk. The controller can receive and send messages to user devices, data stores, and automated kiosks and work cells individually through a network connection via a network interface device. The controller may communicate with any of the above-described entities through a wired or wireless local, area, or Internet connection.
[0061] The approaches and methods described herein may be embodied on a computer-readable medium, which may be a non-transitory computer-readable medium, carrying computer-readable instructions arranged for execution on a processor to cause the processor to perform any or all of the methods described herein.
[0062] The term "computer-readable medium" as used herein refers to any medium that stores data and / or instructions to cause a processor to operate in a specific manner. Such storage media may include non-volatile media and / or volatile media. Non-volatile media may include, for example, optical or magnetic disks. Volatile media may include dynamic memory. Examples of forms of storage media include floppy disks, flexible disks, hard disks, solid state drives, magnetic tapes or other magnetic data storage media, CD-ROMs, other optical data storage media, physical media with one or more patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, NVRAM, and other memory chips or cartridges.
[0063] FIG. 9 illustrates a block diagram of one implementation of a computing device 1100 upon which a set of instructions may be executed to cause the computing device to perform any one or more of the methodologies discussed herein. In an alternative implementation, the computing device may be connected (e.g., networked) to other machines in a local area network (LAN), an intranet, an extranet, or the Internet. The computing device may operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The computing device may be a personal computer (PC), a tablet computer, a set-top box (STB), a personal digital assistant (PDA), a mobile phone, a web appliance, a server, a network router, a switch, a bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be performed by the machine. Additionally, although only a single computing device is illustrated, the term "computing device" shall be deemed to include any collection of machines (e.g., computers) that individually or jointly execute a set (or sets) of instructions to perform any one or more of the methodologies discussed herein.
[0064] The exemplary computing device 1100 includes a processing device 1102, a main memory 1104 (e.g., read only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM (RDRAM)), a static memory 1106 (e.g., flash memory, static random access memory (SRAM), etc.), and a secondary memory (e.g., a data storage device 1118), which communicate with each other via a bus 1130.
[0065] The processing device 1102 represents one or more general-purpose processors, such as a microprocessor, a central processing unit, etc. More specifically, the processing device 1102 may be a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing other instruction sets, or a processor implementing a combination of instruction sets. The processing device 1102 may also be one or more special purpose processing devices, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, etc. The processing device 1102 is configured to execute processing logic (instructions 1122) for performing the operations, methods, and steps discussed herein.
[0066] The computing device 1100 may further include a network interface device 1108 for accessing a network connection. The computing device 1100 may also include a video display unit 1110 (e.g., a liquid crystal display (LCD) or a light emitting diode (LED) display), an alphanumeric input device 1112 (e.g., a keyboard or touch screen), and a cursor control device 1114 (e.g., a mouse or touch screen). The alphanumeric input device 1112 and the cursor control device 1114 may be considered together as a single input mechanism.
[0067] The data storage device 1118 may include one or more machine-readable storage media (more specifically, one or more non-transitory computer-readable storage media) 1128 on which are stored one or more sets of instructions 1122 embodying any one or more of the methodologies or functions described herein. The instructions 1122 may also reside, completely or at least partially, within the main memory 1104 and / or within the processing device 1102 during its execution by the computer system 1100, with the main memory 1104 and the processing device 1102 also constituting computer-readable storage media.
[0068] The various methods described above may be implemented by a computer program. The computer program may include computer code arranged to instruct a computer to perform one or more functions of the various methods described above. The computer program and / or code for performing such methods may be provided to an apparatus such as a computer on one or more computer readable media, or more generally on a computer program product. The computer readable media may be transitory or non-transitory. The computer readable media or media may be, for example, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, or a propagation medium for data transmission, for example, for downloading code via the Internet. Alternatively, the computer readable media or media may take the form of one or more physical computer readable media, such as semiconductor or solid state memory, magnetic tape, removable computer diskette, random access memory (RAM), read only memory (ROM), rigid magnetic disk, optical disk such as CD-ROM, CD-R / W, DVD, etc.
[0069] In implementation, the modules, components, and other functions described herein may be implemented as discrete components or may be integrated into the functions of hardware components such as ASICS, FPGAs, DSPs, or similar devices.
[0070] A "hardware component" is a tangible (e.g., non-transient) physical entity (e.g., a set of one or more processors) that can perform specific operations and can be configured or arranged in a specific physical manner. A hardware component may include dedicated circuitry or logic that is permanently configured to perform specific operations. A hardware component may be or include a dedicated processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware component also includes programmable logic or circuitry that is temporarily configured by software to perform specific operations.
[0071] Thus, the phrase "hardware component" should be understood to encompass a tangible entity that is physically configured, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a particular manner or perform particular operations as described herein.
[0072] Additionally, the modules and components may be implemented as firmware or functional circuitry within a hardware device. Additionally, the modules and components may be implemented in any combination of hardware devices and software components, or may be implemented solely in software (e.g., code stored or otherwise embodied in a machine-readable or transmission medium).
[0073] Machine learning techniques may be employed to optimize any of the parameters of the present disclosure (such as any of the thresholds), for example, through training of a computational neural network on exemplary training data. In this manner, a database of past operations may be provided in a local or remote content management system. Once the parameters have been trained by machine learning techniques for a given type or genre of audio tracks, no further active machine learning needs to be applied.
[0074] Unless otherwise indicated, and as will be apparent from the discussion that follows, discussions throughout this specification using terms such as "receive," "determine," "compare," "validate," "maintain," "identify," and the like will be understood to refer to operations and processing of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities in the registers and memory of the computer system into other data that are similarly represented as physical quantities in the memory or registers of the computer system, or other such information storage, transmission, or display device.
[0075] Certain terms have been used in the foregoing description for convenience, but it will be understood that this is not limiting. The terms "a," "an," and "the" should be read as meaning "at least one," unless otherwise specified. The term "comprising" is understood to mean "including but not limited to," such that a system or method including a particular feature or step is not limited to only the recited features or steps, but may also include features or steps that are not recited. Similarly, terms such as "upper," "lower," "front," "rear," "right," "left," "up," "down," "left and right," "clockwise," "counterclockwise," and the like, are used for convenience in interpreting the drawings, and are not to be construed as limiting. Furthermore, method steps depicted in the figures as being performed sequentially without causality may alternatively be performed serially in any order. Furthermore, method steps depicted as dashed or dotted flow chart boxes should be understood to be optional.
[0076] The above description is intended to be illustrative, not restrictive. Many other embodiments will be apparent to those skilled in the art upon reading and understanding the above description. Although the present disclosure has been described with reference to certain exemplary embodiments, it will be recognized that the disclosure is not limited to the described embodiments, but can be practiced with modification and alteration within the spirit and scope of the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative, and not restrictive, sense.
[0077] [Clause 1] 1. A system for controlling a plurality of automated retail systems, comprising: a controller in communication with the plurality of automated retail systems, the controller comprising: receiving a user request to use the system; receiving real-time status information from the plurality of automated retail systems indicative of resource availability; determining an available product list based on the received status information, the available product list including a list of products available at the plurality of automated retail systems; sending the available product list to a user; receiving an order message from the user including an order selected from the available product list; selecting an automated retail system to fulfill the order; and transmitting the order to the selected automated retail system.
[0078] [Clause 2] The system described in clause 1, wherein the user request further includes one or more of user location information, a user selected location, and user preference information, and the product list is determined based on received status information of an automated retail system associated with the location corresponding to the user request.
[0079] [Clause 3] 3. The system of claim 2, wherein prior to determining the available product list, the controller is configured to query a work-in-progress data store of an automated retail system associated with the user location information.
[0080] [Article 4] 3. The system of claim 1 or 2, wherein the user request is received from a remote user device via an Internet connection.
[0081] [Article 5] 5. The system of any of clauses 1-4, wherein the status information includes order status information related to orders being fulfilled by the automated retail system.
[0082] [Article 6] 6. The system of any of clauses 1-5, wherein the product list sent to the user includes estimated wait time information for each product based at least in part on queue information.
[0083] [Article 7] The system of any of clauses 1-6, wherein prior to transmitting the order to the selected automated retail system, the controller is configured to queue the received order for fulfillment by the selected automated retail system.
[0084] [Article 8] The system of claim 7, wherein the order message includes a user timing request to pre-schedule an order or delay an existing order, and the controller is configured to queue the order based on the user timing request.
[0085] [Article 9] The system described in any of clauses 1 to 8, wherein the product list is dynamically updated based on changes in the real-time status information and transmitted to the user, and optionally, the available product list is determined based on the status information and one or both of the user location information and the user selected location.
[0086] [Article 10] The system described in any of clauses 1-9, wherein a first portion of the available products is available at a first automated retail system and a second portion of the available products is available at a second automated retail system.
[0087] [Article 11] A system according to any of clauses 1 to 10, wherein the automated retail system is an automated retail kiosk, and optionally, the automated retail kiosk is an automated beverage maker.
[0088] [Article 12] The system described in any of clauses 1-11, wherein the processor is configured to select a first automated retail system to fulfill a first portion of the order and to select a second automated retail system to fulfill a second portion of the order.
[0089] [Article 13] The system of any of clauses 1-12, wherein the selection of an automated retail system to fulfill the order is based on the user request and the status information to minimize the time it takes to complete the order.
[0090] [Article 14] 1. A method implemented in a system controller of an automated retail system, comprising: receiving a user request to use the system; receiving real-time status information indicative of product availability from a plurality of automated retail systems in communication with said controller; determining an available product list based on the received status information, the available product list including a list of products available at a plurality of automated retail systems; sending the available product list to a user; receiving an order message from the user including an order selected from the available product list; selecting an automated retail system to fulfill the order; transmitting the order to the selected automated retail system.
[0091] [Article 15] A non-transitory computer readable medium comprising instructions which, when processed by a processor, cause said processor to perform each of the steps of the method of clause 14.
Claims
1. 1. A system for controlling a plurality of automated retail systems, comprising: a controller in communication with the plurality of automated retail systems, the controller comprising: receiving a user request to use the system; receiving real-time status information from the plurality of automated retail systems indicative of resource availability; determining an available product list based on the received status information, the available product list including a list of products available at the plurality of automated retail systems; sending the available product list to a user; receiving an order message from the user including an order selected from the available product list; selecting an automated retail system to fulfill the order; and transmitting the order to the selected automated retail system.
2. 2. The system of claim 1, wherein the user request further includes one or more of user location information, a user selected location, and user preference information, and the product list is determined based on received status information of an automated retail system associated with a location corresponding to the user request.
3. The system of claim 2 , wherein prior to determining the available product list, the controller is configured to query a work-in-progress data store of an automated retail system associated with the user location information.
4. The system of claim 1 , wherein the user request is received from a remote user device via an Internet connection.
5. The system of claim 1 , wherein the status information includes order status information associated with orders being fulfilled by the automated retail system.
6. The system of claim 1 , wherein the product list transmitted to the user includes estimated wait time information for each product based at least in part on queue information.
7. 2. The system of claim 1, wherein prior to transmitting the order to the selected automated retail system, the controller is configured to queue the received order for fulfillment by the selected automated retail system.
8. 8. The system of claim 7, wherein the order message includes a user timing request to pre-schedule an order or delay an existing order, and the controller is configured to place the order in the order queue based on the user timing request.
9. 3. The system of claim 2, wherein the product list is dynamically updated and transmitted to the user based on changes in the real-time status information, and optionally the available product list is determined based on the status information and one or both of the user location information and the user selected location.
10. 10. The system of claim 1, wherein a first portion of the available products is available at a first automated retail system and a second portion of the available products is available at a second automated retail system.
11. The system of claim 1 , wherein the automated retail system is an automated retail kiosk, and optionally, the automated retail kiosk is an automated beverage maker.
12. 2. The system of claim 1, wherein the processor is configured to select a first automated retail system to fulfill a first portion of the order and to select a second automated retail system to fulfill a second portion of the order.
13. The system of claim 1 , wherein the selection of an automated retail system to fulfill the order is based on the user request and the status information to minimize the time it takes to complete the order.
14. 1. A method implemented in a system controller of an automated retail system, comprising: receiving a user request to use the system; receiving real-time status information indicative of product availability from a plurality of automated retail systems in communication with said controller; determining an available product list based on the received status information, the available product list including a list of products available at a plurality of automated retail systems; sending the available product list to a user; receiving an order message from the user including an order selected from the available product list; selecting an automated retail system to fulfill the order; transmitting the order to the selected automated retail system.
15. A non-transitory computer readable medium comprising instructions that, when processed by a processor, cause the processor to perform each of the steps of the method of claim 14.