A computer-implemented method includes receiving data comprising an rfid value transmitted by an rfid tag during a scanning task and an identifier for the scanning task. The rfid value and the identifier for the scanning task are combined to form a key and the key is applied to a hashing function to generate a memory index. The received data is stored at a memory location indicated by the memory index.
|
1. A computer-implemented method comprising:
receiving data comprising an rfid value transmitted by an rfid tag during a scanning task and an identifier for the scanning task;
combining the rfid value and the identifier for the scanning task to form a key;
applying the key to a hashing function to generate a memory index; and
storing the received data at a memory location indicated by the memory index.
16. A method comprising:
providing a plurality of rfid values during a plurality of scanning tasks; and
receiving an rfid value from the plurality of rfid values and an identifier for a scanning task that produced the rfid value, combining the rfid value and the identifier for the scanning task to form a key, hashing the key to form a memory index for a common memory used for all scanning tasks, and storing the rfid value in the common memory at a location indicated by the memory index.
8. A system comprising:
a plurality of scanning devices providing a plurality of rfid values during a plurality of scanning tasks; and
a plurality of compute services implemented on a plurality of servers, each compute service receiving an rfid value from the plurality of rfid values and an identifier for a scanning task that produced the rfid value, combining the rfid value and the identifier for the scanning task to form a key, hashing the key to form a memory index for a common memory used for all scanning tasks, and storing the rfid value in the common memory at a location indicated by the memory index.
2. The computer-implemented method of
3. The computer-implemented method of
receiving second data comprising the rfid value transmitted by the rfid tag during the scanning task and the identifier for the scanning task;
combining the rfid value and the identifier for the scanning task to form the key;
applying the key to a hashing function to generate the memory index;
determining that the received data is already stored at the memory location indicated by the memory index; and
in response to the determination that the received data is already stored, discarding the second data.
4. The computer-implemented method of
receiving third data comprising the rfid value transmitted by the rfid tag during a second scanning task and an identifier for the second scanning task;
combining the rfid value and the identifier for the second scanning task to form a second key;
applying the second key to a hashing function to generate a second memory index; and
storing the received data at a memory location indicated by the second memory index.
5. The computer-implemented method of
6. The computer-implemented method of
7. The computer-implemented method of
receiving second data comprising the rfid value transmitted by the rfid tag during a second scanning task and an identifier for the second scanning task;
combining the rfid value and the identifier for the second scanning task to form a second key;
applying the second key to the hashing function to generate a second memory index; and
storing the received data at a memory location indicated by the second memory index.
9. The system of
count services that access locations of the common memory that contain rfid values to generate count values for product parameters represented by the rfid values.
10. The system of
11. The system of
12. The system of
13. The system of
14. The system of
a first scanning device provides a first rfid value and a first identifier for a first scanning task;
a second scanning device provides the first rfid value and the first identifier for the first scanning task;
a first compute service:
receives the first rfid value and the first identifier for the first scanning task provided by the first scanning device;
combines the rfid value and the identifier for the scanning task to form a key;
hashes the key to form a memory index for the common memory; and
stores the rfid value in the common memory at a location indicated by the memory index; and
a second compute service:
receives the first rfid value and the first identifier for the first scanning task provided by the second scanning device;
combines the rfid value and the identifier for the scanning task to form the key;
hashes the key to form the memory index for the common memory;
determines that the rfid value has been stored at the location indicated by the memory index; and
in response to the determination, abstains from writing to the location indicated by the memory index.
15. The system of
17. The method of
accessing locations of the common memory that contain rfid values to generate count values for product parameters represented by the rfid values.
18. The method of
19. The method of
20. The method of
|
Store inventory management involves tracking the number of items located in various areas of a store. In large retail enterprises, inventory tracking must be performed across multiple stores and within various distribution centers. In general, inventory management involves periodic inventory counts during which actual numbers of product units are determined followed by periods of estimated counts where the number of units is estimated based on the initial values from an inventory count, the number of items sold, and the number of items shipped to or from a store or distribution center.
Performing inventory counts is a labor intensive endeavor that is prone to human error. In recent years, RFID technology has been used to reduce the amount of labor required for inventory counting. In RFID-based systems, individual product units are provided with RFID tags that generate a radio signal, which provides a unique RFID value associated with the tag. During an inventory count, an RFID scanner, either a fixed scanner or a mobile scanner, is used to collect RFID values of product units in areas of a store. The received RFID values are then converted into product descriptors, such as a product ID, product name, or product class. The RFID values that have a same product descriptor are then counted to arrive at the number of units of the product that are in the store.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all disadvantages noted in the background.
A computer-implemented method includes receiving data comprising an RFID value transmitted by an RFID tag during a scanning task and an identifier for the scanning task. The RFID value and the identifier for the scanning task are combined to form a key and the key is applied to a hashing function to generate a memory index. The received data is stored at a memory location indicated by the memory index.
In accordance with a further embodiment, a system includes a plurality of scanning devices providing a plurality of RFID values during a plurality of scanning tasks. Each of a plurality of compute services implemented on a plurality of servers receive an RFID value from the plurality of RFID values and an identifier for a scanning task that produced the RFID value, combine the RFID value and the identifier for the scanning task to form a key, hash the key to form a memory index for a common memory used for all scanning tasks, and store the RFID value in the common memory at a location indicated by the memory index.
In accordance with a still further embodiment, a method includes accessing a memory location indexed by a hashed combination of an RFID value and a task identifier for a scanning task that provided the RFID value and using information stored in the accessed memory location to set a count of a number of units of a product scanned during the scanning task.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Computing systems have not been able to efficiently implement RFID-based inventory scanning. In particular, the computing systems have not provided for multiple scanning devices to be used at the same time to complete a scanning task without incurring inefficient database transactions. When using multiple scanning devices to perform a same scanning task, a same RFID tag may be read by two different devices. However, when this occurs for a single scanning task, the RFID value should not be counted twice. On the other hand, it is also possible for a product to be moved within a store between scanning tasks and to therefore by captured during two different scanning tasks. For instance, a product can be in a clothing department during a first scanning task and then be moved by a customer to a fitting room where it is captured in a second scanning task. Under those circumstances, it is desirable to track the movement of the product and therefore store the RFID value twice, once for each scan.
In the past, identifying when a scan is a duplicate scan of the same product unit in the same place versus when a scan is of the same product unit but in a different location in the store involves searching a database of scans for the RFID value, reading values from the database entry to determine information about the scan, and comparing that information to the current scan information to determine if the scan is a duplicate scan or a scan of the same product unit in a different area. In large scale retail systems containing millions of products, such database interactions result in a slow computing device.
Embodiments described below improve such computing devices by making it possible to quickly determine whether a scan of an RFID tag is a duplicate scan for a single scanning task or if the scan of the RFID tag is a first scan of the RFID tag for a particular scanning task. In accordance with one embodiment, this is achieved by combining the RFID value with a task identifier that represents the scanning task being performed. The scanning task identifier is associated with a scanning task for a particular area of a particular building with a start date and time when scanning begins. The combined RFID value and task identifier is used as a key to a hashing function to generate an index into a memory location. The RFID value and the task identifier are then stored at the memory location represented by that memory index. Since duplicate scans will have the same task ID, the same index will be hashed from the combination of the RFID tag value and the task identifier for any scanning device that scans the RFID tag while performing the same scanning task. However, when a scanning device is performing a different scanning task, a different task ID will be combined with the RFID tag value resulting in a different key and therefore a different memory index. As a result, when a product is moved to a different location in a store and is captured during a different scanning task, it will appear in a different memory location.
Using this system, the values in memory do not need to be read from memory and compared to a current scanning task in order to determine whether a scan is a duplicate or whether it is a separate scan of a product in a different area of a building or in a different building. This represents a marked improvement in computing devices.
In
Employees within the buildings carry devices 210, such as mobile device 102 of
In accordance with one embodiment, multiple devices in thousands of stores may be scanning at any one time. To avoid overloading a single instance of the message service 218, multiple instances of the message service 218 are run on multiple different servers and a message broker 220 distributes the scanning messages from device 210 among the different message services 218 to provide for efficient use of the various servers and to avoid message services that have failed and are no longer responding. In accordance with one embodiment, message services 218 receive data from separate scanning tasks in an interleaved manner over a period of time such that message service 218 will receive one or more messages for one scanning task in between receiving messages form another scanning task.
Message services 218 transfer the messages to a message broker 221, which stores the messages until the messages are requested by compute services 222. In accordance with one embodiment, message broker 221 and compute services 222 are implemented as distributed services across multiple servers.
At step 410, a distribution unit 504 directs the RFID scan information including the RFID value, the task ID, the scan time and date, and the employee identifier, for example, to one of a plurality of computing clusters, such as computing clusters 506, 508 and 510 based on the identified index. In accordance with one embodiment, each computing cluster is responsible for a different hash table segment 514 of a common memory so that memory operations can be distributed across several servers. The division of the common memory across the different clusters is such that a single memory index can only be found in one of the hash table segments 514. In directing the RFID scan information to a cluster, distribution units 504 select the cluster that has responsibility for the identified index.
As a result of using this memory structure, all of the scans performed across multiple buildings of an enterprise, which in some embodiments can be thousands of buildings, are all stored in the same common memory. By storing all the scans in the same common memory, the process of performing inventory management counts is made more efficient since multiple different memories do not have to be maintained and accessed. In particular, a separate table or memory structure does not have to be generated for each scan or for each building/area. This reduces the amount of computational overhead required to access and process the RFID values received from the thousands of scanning tasks performed across the various buildings of the retail enterprise.
At step 414, a storage controller 512 in the assigned cluster determines if any values have been stored at the memory index determined from the combined RFID and task ID key. To do this, storage controller 512 examines the memory location in hash table segment 514 indicated by the memory index. The first time the RFID value is scanned, the memory location represented by the index will not contain a value and the RFID value, the scan time and date, the employee identifier and the task ID will be stored at the memory location at step 416. In accordance with one embodiment, when the RFID value, the scan time and date, the employee identifier and the task ID are stored, a timer is set for the memory location that will cause the values at the memory location to be deleted at a certain time and date in the future. In accordance with one embodiment, once a scan starts, the scanning task must be completed within a set and configurable period of time, such as 8 hours. In such embodiments, every memory location associated with a scanning task will expire and be deleted 8 hours after the scanning task has begun. Although 8 hours is mentioned above, the period for completing a scan can be set to any desired value.
If at step 414, a value is stored at the memory location, the current RFID value is considered to be the result of a duplicate scan at step 416. In this context, a duplicate scan is a scan of a same RFID value at different times during a same scanning task as represented by a particular scanning task ID. The RFID value can be scanned multiple times by the same device or by different devices that are all performing the same scanning task. Because the hash key is formed by the combination of the RFID value and the task ID, any scanning device that receives the same RFID value while performing the same scanning task will generate the same hash key at step 404 and therefore the same memory index at step 408.
In accordance with one embodiment, when a scan is considered a duplicate scan at step 416, the current values at the memory location are left unchanged and the storage controller 512 abstains from storing the scanning information associated with the latest scan of the RFID value, thereby discarding the scanning information associated with the latest scan. As a result, the scanning information for the first scan is maintained in the memory.
In other embodiments, instead of checking to see if an index contains values, the information for the current scan of the RFID value during a particular scanning task is simply written over the existing entry at the memory index. As a result, the memory still contains only a single entry for each combination of RFID value and scanning task identifier but each memory location contains the latest scanning information for the RFID value as part of the scanning task associated with the scanning task identifier.
After determining if the scan is a duplicate scan at step 418 or after storing the RFID value, the scan time and date, and the task ID at the memory index at step 416, storage controller 512 determines if there are more RFIDs in the current message. If there are more RFID values, the next RFID value is selected by returning to step 403 and steps 404-420 are repeated. Note that when repeating step 404, the same task identifier is used as was used for the previous RFID. When all of the RFID values in the current message have been processed at step 420, storage controller 512 determines if there are more scan messages in the batch at step 422. If there are more scan messages in the batch, the next scan message is selected by returning to step 402 and steps 402-422 are repeated. When there are no more scan messages in the batch at step 422, a new batch of scan messages is requested at step 424.
Note that because the RFID value is combined with the tag value to form the hash key at step 404, if the same RFID value is scanned during different scanning tasks due to movement of the product between store areas or stores in between when the two scanning tasks are performed, the same RFID value will receive separate memory index values for each scanning task. As a result, a separate entry is provided in memory for each scanning task that scans the same RFID tag. This allows the movement of products between scans to be tracked while preventing duplicate scans formed during the same scanning task from receiving their own entries in memory.
At step 600, counter 516 selects an index of the hash table segment 514 assigned to the respective cluster. At step 602, counter 516 determines if there is an entry at the index. If there is no entry at the index, counter 516 selects another index by returning to step 600. When there is an entry of the index, counter 516 invokes a resolver 520, which reads and parses the RFID value at step 606 and uses the parsed RFID to retrieve product parameters from data store 206 at step 608. In particular, data store 206 includes a separate entry for each RFID value and that entry includes product parameters, such as the name of the product, various levels of product classes that the product fits within, the quantity of subunits within the unit of the product, the size of the product unit, and other descriptors of the product. Such parameters can be organized from generic to specific, such as for example, grocery department→paper products→paper towels→Brand A paper towels→two pack→extra strength. Such parameters allow each product to be classified into various size groups to allow counting based on different parameters. For example, if a count is desired of all paper products, the paper products parameter can be used whereas if a count is desired for a particular brand of paper towels, the Brand A paper towel parameter can be used. In other embodiments, the only product parameter that is retrieved is a product identifier that can be used to access the other product parameters from data store 206.
After step 608, counter 516 determines if the product is in a count list 530 maintained by counter 516. Each product may be entered into count list 530 multiple time using different levels of product parameters. For example, a paper towel unit may appear in the count list as a paper product and separately as a Brand A paper towel. The particular level(s) of product parameters for which counts are being collected can be set by counter controller 518. For each parameter level designated by counter controller 518, counter 516 examines count list 530 to determine if the product parameter from the memory location is already in count list 530 at step 614. If the product parameter is already in count list 530, the count for that parameter is increased by one at step 616. If the parameter is not in count list 530 at step 614, a new entry for the parameter is added to count list 530 at step 618 with a count value of 1. After the count list has be updated, counter 516 determines if there are more indices in the hash table segment 514 to process at step 620. If there are more indices, the process returns to step 600 to select a new index and step 602 through 620 are repeated. When all the indices in the hash table segment 514 have been processed at step 620, item counts 532 in data store 206 are updated for each product parameter in count list 530 by adding the count for that product parameter to an existing count in item counts 532 for that product parameter. In accordance with one embodiment, a separate item count is maintained for each product parameter designated by counter controller 518 for each scanning task and each count time. Thus, for a single scanning task, there may be several counting events each having their own counting time stored in item count 532.
By storing different counts for different count times of the same scanning task, it is possible to track the progress of the scanning task. In particular, devices 210 can provide a status graphical user interface 132 of
In addition, item counts 532 may be accessed through inventory integration services 270 to provide an on-hand count 272. In particular, inventory integration services 270 are able to combine item counts from different scans to obtain total item counts in a building such as a store as well as total item counts across an entire retail enterprise. In addition, inventory integration services 270 can provide a time series of item counts showing changes in the number of units of various products and product classes over time.
In
At step 710, product unit A is moved to a different area within the building or to a different building. At step 712, scan task 2 in area 2 is performed at time 2 resulting in the reception of the RFID of product unit A. Area 2 can be a different area within a building or a different building relative to area 1. At step 714, the task ID of task 2 is appended to the RFID of product unit A to form a key. This key is different from the key formed in step 704 because the task ID of scan task 2 is different from the task ID of scan task 1. At step 716, the new key is hashed to identify index 2 where index 2 is a different memory index from index 1 of step 706. At step 718, the RFID for product unit A, the scan time/date and the task ID for scan task 2 are stored at index 2 using step 416 of
Embodiments of the present invention can be applied in the context of computer systems other than computing device 10. Other appropriate computer systems include handheld devices, multi-processor systems, various consumer electronic devices, mainframe computers, and the like. Those skilled in the art will also appreciate that embodiments can also be applied within computer systems wherein tasks are performed by remote processing devices that are linked through a communications network (e.g., communication utilizing Internet or web-based software systems). For example, program modules may be located in either local or remote memory storage devices or simultaneously in both local and remote memory storage devices. Similarly, any storage of data associated with embodiments of the present invention may be accomplished utilizing either local or remote storage devices, or simultaneously utilizing both local and remote storage devices.
Computing device 10 further includes an optional hard disc drive 24, an optional external memory device 28, and an optional optical disc drive 30. External memory device 28 can include an external disc drive or solid state memory that may be attached to computing device 10 through an interface such as Universal Serial Bus interface 34, which is connected to system bus 16. Optical disc drive 30 can illustratively be utilized for reading data from (or writing data to) optical media, such as a CD-ROM disc 32. Hard disc drive 24 and optical disc drive 30 are connected to the system bus 16 by a hard disc drive interface 32 and an optical disc drive interface 36, respectively. The drives and external memory devices and their associated computer-readable media provide nonvolatile storage media for the computing device 10 on which computer-executable instructions and computer-readable data structures may be stored. Other types of media that are readable by a computer may also be used in the exemplary operation environment.
A number of program modules may be stored in the drives and RAM 20, including an operating system 38, one or more application programs 40, other program modules 42 and program data 44. In particular, application programs 40 can include programs for implementing any one of the services or modules discussed above. Program data 44 may include data stored in hash table segments 514 and data store 206, for example.
Processing unit 12, also referred to as a processor, executes programs in system memory 14 and solid state memory 25 to perform the methods described above.
Input devices including a keyboard 63 and a mouse 65 are optionally connected to system bus 16 through an Input/Output interface 46 that is coupled to system bus 16. Monitor or display 48 is connected to the system bus 16 through a video adapter 50 and provides graphical images to users. Other peripheral output devices (e.g., speakers or printers) could also be included but have not been illustrated. In accordance with some embodiments, monitor 48 comprises a touch screen that both displays input and provides locations on the screen where the user is contacting the screen.
The computing device 10 may operate in a network environment utilizing connections to one or more remote computers, such as a remote computer 52. The remote computer 52 may be a server, a router, a peer device, or other common network node. Remote computer 52 may include many or all of the features and elements described in relation to computing device 10, although only a memory storage device 54 has been illustrated in
The computing device 10 is connected to the LAN 56 through a network interface 60. The computing device 10 is also connected to WAN 58 and includes a modem 62 for establishing communications over the WAN 58. The modem 62, which may be internal or external, is connected to the system bus 16 via the I/O interface 46.
In a networked environment, program modules depicted relative to the computing device 10, or portions thereof, may be stored in the remote memory storage device 54. For example, application programs may be stored utilizing memory storage device 54. In addition, data associated with an application program may illustratively be stored within memory storage device 54. It will be appreciated that the network connections shown in
Although elements have been shown or described as separate embodiments above, portions of each embodiment may be combined with all or part of other embodiments described above.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms for implementing the claims.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
6144848, | Jun 07 1995 | MOCE SOLUTIONS LIMITED LIABILITY COMPANY | Handheld remote computer control and methods for secured interactive real-time telecommunications |
7568629, | Apr 07 2003 | Silverbrook Research Pty LTD | Shopping system comprising reading device |
7800499, | Jun 05 2007 | Oracle International Corporation | RFID and sensor signing algorithm |
8717165, | Mar 22 2011 | Apparatus and method for locating, tracking, controlling and recognizing tagged objects using RFID technology | |
8781927, | Dec 07 2009 | AT&T Intellectual Property I, L.P. | Passive RFID postage stamps and method of using the same |
9780435, | Dec 05 2011 | ADASA Inc. | Aerial inventory antenna |
20120075072, | |||
20120330769, | |||
20140229387, | |||
20150254677, | |||
20150332570, | |||
20150379860, | |||
KR20060053178, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 21 2018 | HEGDE, PRASHANTH GANAPATHI | TARGET BRANDS, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 045345 | /0662 | |
Mar 22 2018 | Target Brands, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Mar 22 2018 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Apr 12 2023 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 22 2022 | 4 years fee payment window open |
Apr 22 2023 | 6 months grace period start (w surcharge) |
Oct 22 2023 | patent expiry (for year 4) |
Oct 22 2025 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 22 2026 | 8 years fee payment window open |
Apr 22 2027 | 6 months grace period start (w surcharge) |
Oct 22 2027 | patent expiry (for year 8) |
Oct 22 2029 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 22 2030 | 12 years fee payment window open |
Apr 22 2031 | 6 months grace period start (w surcharge) |
Oct 22 2031 | patent expiry (for year 12) |
Oct 22 2033 | 2 years to revive unintentionally abandoned end. (for year 12) |