System and method for filtering impossible locations

By analyzing data attributes such as RSSI values ​​and time differences using a positioning engine and comparing them with cost values, impossible locations are filtered out, thus solving the problem of insufficient accuracy in conventional positioning systems and achieving more accurate determination of tag and asset locations.

CN121925872APending Publication Date: 2026-04-24ZEBRA TECHNOLOGIES CORP
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
ZEBRA TECHNOLOGIES CORP
Filing Date
2024-09-02
Publication Date
2026-04-24

AI Technical Summary

Technical Problem

Conventional positioning systems suffer from insufficient positioning accuracy and effectiveness due to inadequate hardware deployment and lack of suppression of impossible locations, especially producing inaccurate results when the tag position changes within a short range.

Method used

The positioning engine analyzes the received data attributes, such as the Received Signal Strength Indicator (RSSI) value, combines the time difference and confidence value, compares it with the cost value, filters out impossible locations, and updates the tag's location.

Benefits of technology

This improved the accuracy and effectiveness of the positioning system, reduced erroneous positioning due to a lack of location suppression, and enabled more accurate determination of tag and asset locations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121925872A_ABST
    Figure CN121925872A_ABST
Patent Text Reader

Abstract

Systems and methods for filtering untrusted locations are disclosed herein. An example system includes a tag configured to transmit data when within one of a plurality of regions and a positioning engine. The positioning engine may be configured to receive data, analyze at least one attribute of the data to determine a current region of the plurality of regions containing the tag and an associated confidence value, and analyze prior data transmitted from the tag to determine whether the current region is different from a prior region determined from the prior data, the positioning engine may also compare (i) a time difference between receiving the previous data and receiving the data and (ii) an associated confidence value to a cost value corresponding to moving from the previous region to the current region, and update a location of the tag based on the comparison.
Need to check novelty before this filing date? Find Prior Art

Description

Background Technology

[0001] In industrial networks, digital technologies are used for location services. More specifically, location data insights are an integral part of an entity's efforts to track the location and status of its assets, improve entity productivity, and optimize workflows overall. Therefore, in the field of industrial networks, developing systems and devices that reliably provide cost-effective, proximity-based asset visibility solutions is a topic of great interest.

[0002] However, conventional positioning systems suffer from several drawbacks that hinder them from providing such reliable and effective positioning services. Specifically, many conventional positioning systems rely on hardware positioned in suboptimal locations, which can lead to inaccurate results, especially when combined with the inherent jitter of short-range positioning. For example, a conventional hospital positioning system might utilize a single stationary gateway in each room to track the location of one or more tags. These individual gateways may be insufficient to accurately distinguish when a tag moves from one room to an adjacent corridor or room, for instance, because the confidence / signal strength associated with the tag's location remains relatively high between consecutive tag reports. Therefore, conventional positioning systems suffer from numerous problems that minimize the accuracy and effectiveness of the system in locating individual tags and their corresponding assets.

[0003] Therefore, there is a need for systems and methods that allow for fast and accurate data transmission in positioning systems to filter improbable locations. Summary of the Invention

[0004] In an embodiment, the present invention is a system comprising: a tag configured to transmit data when within one of a plurality of areas; and a positioning engine configured to: receive the data; analyze at least one attribute of the data to determine a current area containing the tag and an associated confidence value among the plurality of areas; analyze prior data transmitted from the tag to determine whether the current area is different from a prior area determined from the prior data; compare (i) the time difference between receiving the prior data and receiving the data and (ii) the associated confidence value with a cost value corresponding to moving from the prior area to the current area; and update the position of the tag based on the comparison.

[0005] In a variation of this embodiment, the at least one attribute of the data includes a Received Signal Strength Indicator (RSSI) value, and the positioning engine is further configured to determine the associated confidence value based on the RSSI value. Further in this variation, the positioning engine is further configured to determine, for the tag, at least one of the following: (a) the number of reports from different areas, (b) the number of reports from consecutive areas of the current area, or (c) an adjustment of the confidence value of the current area based on the RSSI value; and to adjust the associated confidence value based on one or more of (a)-(c).

[0006] In another variation of this embodiment, each of the plurality of regions is defined by one or more polylines in a three-dimensional (3D) space, the position of the label is a set of 3D coordinates within the 3D space, and the positioning engine is further configured to: compare the set of 3D coordinates with the polylines of the current region; determine that the set of 3D coordinates is defined by the polylines of the current region; and determine that the label is located within the current region.

[0007] In yet another variation of this embodiment, the cost value is the average travel time from the prior region to the current region.

[0008] In another variation of this embodiment, the positioning engine is further configured to: reduce the cost value based on a corresponding confidence value associated with the tag being located in the prior area; and update the location of the tag based on the reduction of the cost value and the comparison.

[0009] In yet another variation of this embodiment, the positioning engine is further configured to: establish a group of checkpoints corresponding to the plurality of regions; compare (i) the time difference, (ii) the associated confidence value, and (iii) the group of checkpoints with the cost value; and update the position of the tag based on the comparison. Further in this variation, each checkpoint in the group of checkpoints represents an intermediate travel path transitioning between regions of the plurality of regions.

[0010] In another variation of this embodiment, the prior area has a free movement area along the periphery of the prior area, and the positioning engine is further configured to: determine that the tag moves between the prior area and the current area through the free movement area; eliminate the cost value; and update the position of the tag based on the associated confidence value.

[0011] In another embodiment, the present invention is a computer-implemented method comprising: receiving data from a tag configured to transmit data when within one of a plurality of regions; analyzing at least one attribute of the data to determine a current region containing the tag and an associated confidence value among the plurality of regions; analyzing prior data transmitted from the tag to determine whether the current region is different from a prior region determined from the prior data; comparing (i) the time difference between receiving the prior data and receiving the data and (ii) the associated confidence value with a cost value corresponding to moving from the prior region to the current region; and updating the position of the tag based on the comparison.

[0012] In a variant of this embodiment, the at least one attribute of the data includes a Received Signal Strength Indicator (RSSI) value, and the method further includes: determining the associated confidence value based on the RSSI value. Further in this variant, the computer-implemented method further includes: for the tag, determining at least one of the following: (a) the number of reports from different areas, (b) the number of reports from consecutive areas of the current area, or (c) adjusting the confidence value of the current area based on the RSSI value; and adjusting the associated confidence value based on one or more of (a)-(c).

[0013] In another variation of this embodiment, each of the plurality of regions is defined by one or more polylines in a three-dimensional (3D) space, the position of the label is a set of 3D coordinates within the 3D space, and the method further includes: comparing the set of 3D coordinates with the polylines of the current region; determining that the set of 3D coordinates is defined by the polylines of the current region; and determining that the label is located within the current region.

[0014] In yet another variation of this embodiment, the cost value is the average travel time from the prior region to the current region.

[0015] In another variation of this embodiment, the computer implementation method further includes: reducing the cost value based on a corresponding confidence value associated with the tag being located in the prior region; and updating the position of the tag based on the reduced cost value and the comparison.

[0016] In yet another variation of this embodiment, the computer implementation method further includes: establishing a checkpoint group corresponding to the plurality of regions; comparing (i) the time difference, (ii) the associated confidence value, and (iii) the checkpoint group with the cost value; and updating the position of the tag based on the comparison.

[0017] In another variation of this embodiment, the prior region has a free movement area along the periphery of the prior region, and the method further includes: determining that the tag moves between the prior region and the current region through the free movement area; eliminating the cost value; and updating the position of the tag based on the associated confidence value.

[0018] In yet another embodiment, the invention is a tangible machine-readable medium comprising instructions that, when executed, cause the machine to perform at least the following operations: receive data from a tag configured to transmit data when within one of a plurality of regions; analyze at least one attribute of the data to determine a current region containing the tag and an associated confidence value among the plurality of regions; analyze prior data transmitted from the tag to determine whether the current region is different from a prior region determined from the prior data; compare (i) the time difference between receiving the prior data and receiving the data and (ii) the associated confidence value with a cost value corresponding to moving from the prior region to the current region; and update the position of the tag based on the comparison.

[0019] In a variation of this embodiment, the at least one attribute of the data includes a Received Signal Strength Indicator (RSSI) value, and when executed, the instruction further causes the machine to perform at least the following operation: determine the associated confidence value based on the RSSI value.

[0020] In another variation of this embodiment, the cost value is the average travel time from the prior region to the current region, and when executed, the instruction further causes the machine to perform at least the following operations: reduce the cost value based on a corresponding confidence value associated with the tag being located in the prior region; and update the tag's position based on the reduction of the cost value and the comparison. Attached Figure Description

[0021] The accompanying drawings (in which the same reference numerals denote the same or functionally similar elements throughout the different views) together with the following detailed description are incorporated into and form part of the specification, and serve to further illustrate embodiments including the concepts of the claimed invention, and to explain the various principles and advantages of those embodiments.

[0022] Figure 1 An example environment is described, in which a system / device for filtering impossible locations can be implemented according to the embodiments described herein.

[0023] Figure 2AThe document describes a server sending a request to an anchor point and causing the anchor point to poll neighboring tags at multiple time instances so that the localization engine can track the location of the tags over time.

[0024] Figure 2B An impossible location filtering process for signals from asset tags, performed by a positioning engine according to embodiments described herein, is described.

[0025] Figure 3 This is a flowchart illustrating a method for filtering impossible locations according to embodiments described herein.

[0026] Figure 4 This is a block diagram of an example logic circuit used to implement the example methods and / or operations described herein.

[0027] Those skilled in the art will understand that the elements in the accompanying drawings are shown for simplicity and clarity and are not necessarily drawn to scale. For example, the dimensions of some elements in the drawings may be exaggerated relative to other elements to aid in understanding embodiments of the invention.

[0028] The apparatus and method configurations have been indicated in appropriate places in the accompanying drawings by conventional symbols, which show only those specific details relevant to understanding embodiments of the invention, so as not to obscure this disclosure with details that would be obvious to those skilled in the art who benefit from the description herein. Detailed Implementation

[0029] As mentioned earlier, conventional positioning systems often suffer from accuracy issues, stemming at least (among other things) from inadequate hardware placement / positioning and a corresponding lack of suppression of impossible locations. For example, many conventional positioning systems use Received Signal Strength Indicator (RSSI) to determine the likely location of reporting tags. However, these RSSI values, and the resulting confidence values, may not adequately account for real-world conditions when tracking movement.

[0030] To illustrate, a first conventional gateway might receive data packets from a tag indicating that the tag moved across a wall to its current location within a short timeframe (e.g., milliseconds) compared to its previous location. This scenario is unlikely and should be ignored and / or otherwise suppressed to support more probable scenarios where the tag's current location does not indicate such an unlikely sequence of events compared to its previous location. However, conventional positioning systems may provide erroneous reports of such tag locations when the RSSI values ​​(and corresponding confidence values) corresponding to unlikely / impossible event sequences are high / strong, regardless of such practical limitations. Therefore, in general, conventional positioning systems may struggle to perform accurate positioning.

[0031] Therefore, the objective of this disclosure is to eliminate these and other problems of conventional positioning systems via systems and methods that can filter out impossible locations by a positioning engine configured to consider / apply various cost values ​​when analyzing data received from tags. In particular, the systems and methods of this disclosure mitigate the problems present in conventional systems / devices by comparing the time difference and confidence value between data receptions from tags with such cost values. As a result, the systems and methods of this disclosure accurately determine the location of tags / assets at any given time with an accuracy previously unattainable using conventional techniques.

[0032] Therefore, based on the foregoing and the disclosure herein, this disclosure includes improvements to computer functionality or other technologies, at least because this disclosure describes how, for example, positioning systems and their various associated components can be improved or enhanced by the disclosed location suppression / filtering systems and methods, which provide more accurate location services for tags and corresponding assets. That is, this disclosure describes improvements to the functionality of the positioning system itself or "any other technology or technical field" (e.g., the field of distributed / industrial positioning systems), because the disclosed location suppression / filtering systems and methods improve and enhance the operation of positioning systems by introducing improved packet confidence analysis to eliminate / reduce erroneous location determinations and other inefficiencies that positioning systems typically experience over time due to the lack of such location suppression / filtering systems and methods. This improves upon the prior art, at least because these prior positioning systems were inaccurate due to the lack of the ability to analyze received packets in the manner described herein.

[0033] Furthermore, this disclosure includes the application of various features and functions as described herein using or through the use of specific machines (e.g., tags, anchors / gateways, servers, and / or other hardware components as described herein).

[0034] Furthermore, this disclosure includes specific features beyond those common, routine activities well known in the art, or adds unconventional steps that indicate a particular useful application in various embodiments, such as analyzing at least one attribute of data to determine a current region containing the tag and an associated confidence value among a plurality of regions; analyzing prior data transmitted from the tag to determine whether the current region is different from a prior region determined from the prior data; comparing (i) the time difference between receiving prior data and receiving data and (ii) the associated confidence value with a cost value corresponding to moving from a prior region to the current region; and / or updating the tag's position based on the comparison.

[0035] Refer to the attached diagram. Figure 1An example environment 100 is depicted, illustrating a system / device for filtering impossible locations according to embodiments described herein. Example environment 100 may include, contain, and / or be part of a network environment in which the systems / devices of this disclosure operate. Figure 1 In an example embodiment, example environment 100 includes an anchor 102 communicatively coupled to a first tag 106a of a first asset 106, a second tag 107a of a second asset 107, a third tag 108a of an Nth asset 108, and a server 110. Generally, anchor 102, first tag 106a, second tag 107a, third tag 108a, and / or server 110 are capable of executing instructions to, for example, implement the operation of the example methods described herein, as illustrated in the flowcharts accompanying the accompanying drawings. That is, anchor 102 may be connected across multiple communication channels to first tag 106a, second tag 107a, third tag 108a, and / or server 110, and is typically configured to receive and process information received from first tag 106a, second tag 107a, third tag 108a, and / or server 110.

[0036] Server 110 may store tag database 110b1 and positioning engine 110b2. Tag database 110b1 may be or include a list of tags (e.g., tags 106a, 107a, 108a) that are adjacent to or otherwise transmit data to one or more specific anchor points (e.g., anchor point 102). More specifically, the tag database 110b1 list may include identification information about each of tags 106a, 107a, 108a and / or assets 106, 107a, 108a associated with tags 106a, 107a, 108a, and location information (e.g., angle of arrival (AOA)) determined by anchor point 102. Tag database 110b1 may include any suitable information related to the tags and / or the assets associated with the tags.

[0037] To update the tag database 110b1, server 110 may periodically request and / or otherwise receive updates from various anchors (e.g., anchor 102) set around the environment (e.g., example environment 100), and server 110 may (via one or more processors 110a) determine one or more tags indicated in the data received from the various anchors. Server 110 then updates the tag list for each anchor by inputting each tag identified in the data received from the respective anchor into the corresponding tag list in tag database 110b1. For example, tag database 110b1 may indicate at a first time that anchor 102 has received data from first tag 106a and second tag 107a. At a second time, server 110 may transmit a request to anchor 102 and / or otherwise receive updates from anchor 102, thereby indicating that anchor 102 has received data from first tag 106a, second tag 107a, and third tag 108a at the second time. Therefore, the entries in the tag database 110b1 can instruct the Nth asset 108 to move to a receptive proximity of the anchor 102 at a point between the first and second times, so that the anchor 102 can receive data transmitted from the third tag 108a at the second time.

[0038] Server 110 may also include a positioning engine 110b2, which typically analyzes data received from tags 106a, 107a, and 108a to update the location of tags 106a, 107a, and 108a. More specifically, positioning engine 110b2 may analyze data packets and / or extract and / or otherwise derive information from the data packets to determine the current area where each tag 106a, 107a, and 108a is currently located. Such data packets may typically be or may include identification information corresponding to tags 106a, 107a, and 108a and / or associated assets 106, 107, and 108, remaining battery life information, asset-specific data payloads, and / or any other suitable data or combinations thereof. Tags 106a, 107a, and 108a may transmit such data packets at any suitable transmission rate, such as per millisecond, milliseconds, per second, per second, per minute, etc. In some embodiments, data packets transmitted by any particular tag 106a, 107a, 108a may be or may include Bluetooth Low Energy (BLE) data packets, such as continuous tone extension (CTE) data packets.

[0039] Furthermore, the term "zone" as used herein can generally correspond to any suitable range within any suitable area of ​​interest, and / or otherwise be defined by a specific location within any suitable area of ​​interest. For example, an area of ​​interest could be a hospital, and the area corresponding to the hospital could be the individual rooms within the hospital. As another example, an area of ​​interest could be a warehouse, and the areas within the warehouse could correspond to individual loading docks, storage areas, movement paths for equipment / machinery, etc. In some embodiments, each zone can be defined by one or more polylines in three-dimensional (3D) space, and the location of each tag can be a set of 3D coordinates within that 3D space. Furthermore, each of these zones can be pre-determined as part of instructions including the positioning engine 110b2, and / or can be determined by the positioning engine 110b2 during positioning system configuration based on signals received from tags 106a, 107a, 108a and(one or more) anchor points 102.

[0040] When the positioning engine 110b2 determines the current area of ​​a specific tag, it can also analyze prior data transmitted from that specific tag to determine whether the current area differs from a prior area determined from the prior data. For example, the positioning engine 110b2 may receive data from a first tag and determine that the first tag is estimated to be in a first area. The positioning engine 110b2 can then analyze the prior data corresponding to the first tag (e.g., as stored in the tag database 110b1) and determine that the last report from the first tag indicated that the first tag was located in a second (e.g., prior) area when the last report was transmitted from the first tag. Therefore, the positioning engine 110b2 can determine that the first tag has changed its location from the second area to the first area during the time interval between the last report from the first tag and the current report.

[0041] As another example, positioning engine 110b2 can receive data from the second tag and determine that the second tag is estimated to be in a third region. Positioning engine 110b2 can then analyze prior data corresponding to the second tag (e.g., as stored in tag database 110b1) and determine that the last report from the second tag indicated that the second tag was located in the third (e.g., prior) region when the last report was transmitted from the second tag. Therefore, positioning engine 110b2 can determine that the second tag remains in the third region during the time interval elapsed between the last report from the second tag and the current report.

[0042] The positioning engine 110b2 can also compare the time difference between report instances with confidence values ​​and cost values ​​of received data to determine whether such a change (or no change) is possible. The time difference can be milliseconds, seconds, and / or any other suitable length of time elapsed between corresponding packet transmissions (referred to herein as “reports” or “zone reports”) of the individual tags. Such corresponding packet transmissions can be continuous or discontinuous, for example, based on the cost value utilized by the positioning engine 110b2. The confidence value can represent the expected / estimated accuracy of the area where the tag is located based on the packets received from the tag and can be based on RSSI and / or any other suitable metric. Furthermore, the cost value can be or includes the average travel time from a prior area to the current area, and / or can be or includes any other suitable cost or value associated with travel between any corresponding pair or set of areas.

[0043] For example, a third tag may report to anchor 102 at a first time instance and at a second time instance five milliseconds later. Anchor 102 may transmit data packets and / or any other suitable information corresponding to the first and second time instance reports to server 110, where server 110 executes positioning engine 110b2 to analyze the data packets and / or any other suitable information. After the first time instance, positioning engine 110b2 may determine that the third tag was located in the first region at the first time instance and store this information in tag database 110b1. Positioning engine 110b2 may then analyze the information from the second time instance (referred to in this example as the "first data packet") and determine that the third tag is located in the second region. Therefore, positioning engine 110b2 can access tag database 110b1 to determine that the third tag has moved from the first region to the second region during the five-millisecond time difference between the first and second time instances.

[0044] Further in this example, the positioning engine 110b2 can also analyze the confidence values ​​of data packets received during the second time instance and / or the first time instance, and can apply a cost value to the confidence value to determine whether it is possible to move from the first area to the second area. The first area is eight meters away from the second area, such that the average travel time from the first area to the second area is approximately twelve seconds. Therefore, the cost value associated with moving from the first area to the second area can be approximately twelve seconds, allowing the positioning engine 110b2 to determine that the confidence value associated with the third tag currently being located in the second area should be significantly reduced. In other words, when the average travel time between areas is approximately twelve seconds, it is highly unlikely that the third tag will actually move from the first area to the second area in five milliseconds or less.

[0045] Continuing this example, the positioning engine 110b2 can simultaneously receive a second data packet corresponding to the third tag and / or other suitable information indicating that the third tag is currently located in the first area. This second data packet may initially have a lower confidence value than the first data packet indicating that the third tag is located in the second area, but the positioning engine 110b2 can apply the previously discussed cost values ​​to these confidence values ​​to determine the more likely location of the third tag. Since the second data packet indicates that the third tag remains in the first area during the time period between the first and second time instances, the positioning engine 110b2 may not apply any cost values ​​to the confidence value of the second data packet. Therefore, the positioning engine 110b2 can reduce the confidence value of the first data packet to below the confidence value of the second data packet, and the positioning engine 110b2 can ultimately determine that the third tag is located in the first area, as indicated by the second data packet received at the second time instance.

[0046] As part of communication between server 110 and the various tags 106a, 107a, 108a, anchor point 102 can receive data from server 110 and tags 106a, 107a, 108a, and can transmit communication to server 110 and / or tags 106a, 107a, 108a based on the received data. Generally, anchor point 102 can be configured to transmit and receive data to / from server 110 and nearby tags (e.g., first tag 106a, second tag 107a, third tag 108a). In some embodiments, anchor point 102 can be a hybrid Bluetooth® Low Energy (BLE) device that communicates with some / all of the devices in environment 100 via BLE. In some embodiments, anchor point 102 can be a device implementing and / or conforming to any suitable software operating system (e.g., Android, iOS), a custom Internet of Things (IoT) bridging device with a BLE radio, and / or any other suitable device or combination thereof.

[0047] In other words, anchor 102 can be configured to periodically listen for data packets from nearby tags (e.g., tags 106a, 107a, 108a), transmit data packets and / or data acquired therein to server 110, and / or broadcast requests received from server 110 to nearby tags. As an example, anchor 102 may receive requests from server 110 and may subsequently transmit requests to neighboring tags 106a, 107a, 108a based on those requests. Such requests from server 110 may be, or include, instructions that cause tags 106a, 107a, 108a to transmit identification data to anchor 102, and / or other suitable instructions or combinations thereof.

[0048] Anchor 102 can also transmit and receive data (e.g., data packets) to / from any tag 106a, tag 107a, tag 108, and calculate the AOA based on the data received from these tags 106a, 107a, 108a by executing the AOA instruction 102b1 stored in memory 102b. Anchor 102 can then transmit these AOAs, along with some / all of the data received from tags 106a, 107a, 108a, to server 110 for tracking and / or otherwise notifying users (e.g., location system administrators) of the location / position of assets 106, 107, 108 associated with tags 106a, 107a, 108a.

[0049] Generally, AOA instruction 102b1 may be or include instructions that enable the processor 102c of anchor 102 to determine the AOA of data packets received from any of the individual tags 106a, 107a, 108a. For example, AOA instruction 102b1 may enable anchor 102 to define a two-dimensional plane located within an area containing any particular tag 106a, 107a, 108a, calculate the AOA of the tag's data packets, determine the vector corresponding to the AOA, and calculate the position of the associated tag based on the intersection of the vector and the two-dimensional plane. It should be understood that AOA instruction 102b1 may be or include any suitable instructions that enable anchor 102 and / or any other suitable device(s) (e.g., server 110) to calculate the AOA or other positions of neighboring tags and their corresponding assets.

[0050] Anchor point 102 may also include a radio transceiver 102a configured to transmit / receive data streams to / from various devices in example environment 100, such as server 110 and tags 106a, 107a, 108a. Radio transceiver 102a may include an antenna with an associated gain distribution corresponding to the antenna of transceiver 102a converting input power into radio waves (e.g., transmission) and / or converting received radio waves into electrical power (e.g., reception).

[0051] Assets 106, 107, and 108 can generally be any equipment, component, or object that an entity wishes to track and / or otherwise locate. For example, assets 106, 107, and 108 can be large and calibrated tools used in oil and gas equipment / operations, packages transported by a shipping company, medical equipment that can be moved to different floors / rooms, wristbands attached to hospital patients, and / or any other suitable object or combination thereof. Although three assets 106, 107, and 108 are shown, it should be understood that anchor 102 can communicate simultaneously with any suitable number of assets 106, 107, and 108 via associated tags 106a, 107a, and 108a. Therefore, the Nth asset 108 can be the third, fifth, twentieth, hundredth, and / or any other integer-value asset.

[0052] Each asset 106, 107, 108 may also include corresponding tags 106a, 107a, 108a, which may be configured to transmit asset-related information to, for example, anchor 102 via network interfaces 106a1, 107a1, 108a1. Each asset tag 106a, 107a, 108a may also include one or more processors 106a2, 107a2, 108a2, which are configured to interpret and / or execute instructions contained in signals received from anchor 102, server 110, and / or other suitable devices. For example, processors 106a2, 107a2, 108a2 may be configured to interpret polling requests received from anchor 102 and thereby transmit data packets to anchor 102.

[0053] Furthermore, in some embodiments, a workstation (not shown) can communicatively connect to server 110, and a user / operator can access server 110 to retrieve the locations associated with assets 106, 107, and 108. The workstation can query server 110 using the corresponding identification tags for assets 106, 107, and 108, and server 110 can match the identification tags with location entries associated with the corresponding assets 106, 107, and 108 in tag database 110b1. Server 110 can then forward the location entries to the workstation for the user / operator to view.

[0054] More generally, one or more memories 102b, 110b may include one or more forms of volatile and / or non-volatile, fixed and / or removable memories, such as read-only memory (ROM), electronically programmable read-only memory (EPROM), random access memory (RAM), erasable electronically programmable read-only memory (EEPROM) and / or other hard disk drives, flash memory, micro SD cards, etc. Generally, computer programs or computer-based products, applications, or code (e.g., positioning engine 110b2, AOA instruction 102b1, and / or other computational instructions described herein) may be stored on a computer-usable storage medium or a tangible, non-transient computer-readable medium (e.g., standard random access memory (RAM), optical disc, universal serial bus (USB) drive, etc.) having such computer-readable program code or computer instructions embodied therein, wherein the computer-readable program code or computer instructions may be mounted on or otherwise adapted to be executed by one or more processors 102c, 110a (e.g., working with a corresponding operating system in one or more memories 102b, 110b) to facilitate, implement, or perform machine-readable instructions, methods, processes, elements, or limitations, as shown, depicted, or described with respect to the various flowcharts, illustrations, diagrams, figures, and / or other disclosures herein.

[0055] In this regard, the program code can be implemented in any desired programming language and can be implemented as machine code, assembly code, bytecode, interpreted source code, etc. (e.g., via Golang, Python, C, C++, C#, Objective-C, Java, Scala, ActionScript, JavaScript, HTML, CSS, XML, etc.). Furthermore, one or more memories 102b, 110b can also store machine-readable instructions, including any one of one or more applications, one or more software components, and / or one or more APIs, which can be implemented to facilitate or perform the features, functions, or other disclosures described herein, such as any methods, processes, elements, or limitations illustrated, depicted, or described in connection with the various flowcharts, diagrams, charts, figures, and / or other disclosures herein.

[0056] One or more processors 102c, 110a may be connected to one or more memories 102b, 110b via a computer bus (not shown), the computer bus being responsible for transmitting electronic data, data packets or otherwise transmitting electronic signals to and from one or more processors 102c, 110a and one or more memories 102b, 110b to implement or execute machine-readable instructions, methods, processes, elements or limitations as illustrated, depicted or described in connection with the various flowcharts, illustrations, diagrams, figures and / or other disclosures herein.

[0057] One or more processors 102c, 110a may interface with one or more memories 102b, 110b via a computer bus to execute any suitable application or executable instructions (e.g., positioning engine 110b2, AOA instruction 102b1) necessary for performing any of the actions associated with the methods of this disclosure. One or more processors 102c, 110a may also interface with one or more memories 102b, 110b via a computer bus to create, read, update, delete, or otherwise access or interact with data stored in one or more memories 102b, 110b and / or external databases (e.g., relational databases such as Oracle, DB2, MySQL, or NoSQL-based databases such as MongoDB). Data stored in one or more memories 102b, 110b and / or external databases may include all or part of any of the data or information described herein, including, for example, asset tag 106a data packets, asset tag 107a data packets, asset tag 108a data packets, asset location data, AOA data, and / or other suitable information or combinations thereof.

[0058] Radio transceiver 102a and network interfaces 106a1, 107a1, 108a1 may be configured to communicate (e.g., send and receive) data to one or more network or local terminals described herein via one or more external / network ports. In some aspects, radio transceiver 102a and / or network interfaces 106a1, 107a1, 108a1 may include client-server platform technologies such as ASP.NET, Java J2EE, Ruby on Rails, Node.js, web services, or online APIs that respond to receiving and responding to electronic requests. The radio transceiver 102a and network interfaces 106a1, 107a1, 108a1 can implement client-server platform technology, which can interact via a computer bus with one or more memories 102b, 110b (including one or more applications, one or more components, one or more APIs, data, etc. stored therein) to implement or execute machine-readable instructions, methods, processes, elements, or limitations, as illustrated, depicted, or described in the various flowcharts, diagrams, figures, and / or other disclosures herein.

[0059] According to some embodiments, radio transceiver 102a and network interfaces 106a1, 107a1, 108a1 may include, or interact with, one or more transceivers (e.g., WWAN, WLAN, and / or WPAN transceivers) operating according to IEEE standards, 3GPP standards, or other standards, and may be used to receive and transmit data via an external / network port connected to the network. In some embodiments, the network (not shown) may include a private network or a local area network (LAN). Additionally or alternatively, the network may include a public network, such as the Internet. In some embodiments, the network may include routers, wireless switches, or other such wireless connection points that communicate with anchor 102 (via radio transceiver 102a), first asset 106 (via network interface 106a1), second asset (via network interface 107a1), third asset (via network interface 108a1), and / or server 110 (via network interface 110c) via wireless communication based on any one or more of various wireless standards, including Bluetooth standards (e.g., BLE), non-limiting examples such as IEEE 802.11a / b / c / g (WIFI), etc.

[0060] To illustrate a scenario where a server, anchor point, and(one or more) asset tags can transmit and / or receive data packets and filter out impossible locations from these packets, Figure 2AThe document describes a server 110, according to an embodiment described herein, transmitting a request to anchor 102, causing anchor 102 to poll for tag 202a1 associated with asset 202a. Specifically, Figure 2A The example scenario 200 depicts server 110 transmitting a first request 203a to anchor 102 at a first time instance, and server 110 transmitting a second request 203b to anchor 102 at a second time instance. Anchor 102 can then transmit a polling signal 206a to tag 202a1 associated with asset 202a at the first time instance, tag 202a1 can transmit data packets 206b to anchor 102, and anchor 102 can transmit a first AOA signal 204a to server 110. Similarly, anchor 102 can also transmit a polling signal 207a to tag 202a1 associated with asset 202a at the second time instance, tag 202a1 can transmit data packets 207b to anchor 102, and anchor 102 can transmit a second AOA signal 204b to server 110. Then, the positioning engine 110b2 can compare data packets 206b, 207b and / or other information included as part of AOA signals 204a, 204b to determine the location of tag 202a1.

[0061] As described herein, asset 202a can be a “neighboring asset” because asset 202a is located within the transmission range 201 of anchor 102. Therefore, neighboring asset 202a (and the corresponding tag 202a1) can be physically close enough to anchor 102 to receive and / or transmit signals (e.g., polling signals, data packets) to anchor 102.

[0062] As an example, anchor point 102 may be located in a hospital corridor, and asset 202a may be a wristband of a patient currently located in a first hospital room (represented by first area 206). At a first-time instance, tag 202a1 of the first asset 202a may receive a polling signal 206a from anchor point 102, which requests the transmission of data packets from tag 202a1. Tag 202a1 may then transmit data packets 206b to anchor point 102, where anchor point 102 determines the AOA and / or other location of tag 202a1 within the transmission range 201 of anchor point 102. Anchor point 102 may transmit a first AOA signal 204a to server 110, where server 110 may verify the location of tag 202a1 and / or store the location of tag 202a1 in tag database 110b1.

[0063] At the second time instance, tag 202a1 of the first asset 202a can receive a polling signal 207a from anchor 102, which requests the transmission of data packets from tag 202a1. Tag 202a1 can then transmit data packets 207b to anchor 102, where anchor 102 determines the AOA and / or other location of tag 202a1 within its transmission range 201. Anchor 102 can then transmit a second AOA signal 204b to server 110, where server 110 can execute instructions including positioning engine 110b2 to verify the location of tag 202a1 indicated in the second AOA signal 204b.

[0064] More specifically, at the second time instance, the second AOA signal 204b may indicate that tag 202a1 has moved from the first area 206 to the second area 207. The second area 207 may represent, for example, a second hospital room across a corridor of the first hospital room represented by the first area 206. In any case, the positioning engine 110b2 may compare the time difference between the first and second time instances, as well as the confidence value associated with the second AOA signal 204b, with any cost value associated with moving from the first area 206 to the second area 207. The cost associated with moving from the first region 206 to the second region 207 can be six seconds, the time difference between the first time instance (e.g., associated with the first request 203a, polling signal 206a, data packet 206b, and first AOA signal 204a) and the second time instance (e.g., associated with the second request 203b, polling signal 207a, data packet 207b, and second AOA signal 204b) can be one second, the confidence value associated with the first AOA signal 204a can be relatively low, and the confidence value associated with the second AOA signal 204b can be relatively high.

[0065] Continuing the example, the positioning engine 110b2 can determine that the one-second time difference between the first and second time instances is less than the six-second cost value corresponding to movement between the first region 206 and the second region 207, such that the confidence value of the second AOA signal 204b should be adjusted (in this case, reduced) based on this cost value. However, the positioning engine 110b2 can also determine that the relatively low confidence value of the first AOA signal 204a is lower than the cost-adjusted confidence value for the second AOA signal 204b, and / or otherwise low enough for the positioning engine 110b2 to determine that tag 202a1 is likely located in the second region 207. In other words, since tag 202a1 is unlikely to be located in the first region 206 at the first time instance, the positioning engine 110b2 can reduce and / or otherwise mitigate the impact of the cost value applied to the confidence value of the second AOA signal 204b. As a result, the positioning engine 110b2 can update the position of tag 202a1 at the second time instance to the second region 207, and / or can correct the position of tag 202a1 at the first time instance based on any other AOA signal corresponding to tag 202a1 that can be received at the first time instance.

[0066] Furthermore, in some embodiments, the positioning engine 110b2 can assess the confidence value of the AOA signal of tag 202a1 based on any suitable number of area reports, consecutive area reports for a specific area, and / or RSSI values. For example, asset 202a can be a medical device, and the first area 206 can be a storage room. A second AOA signal 204b at a second time instance can indicate that the medical device is located in a second area 207 (e.g., a ward), and tag 202a1 can also have transmitted thousands of prior AOA signals (including the first AOA signal 204a) indicating that the medical device is located in the first area 206. In these embodiments, the positioning engine 110b2 can adjust the confidence value of the second AOA signal 204b indicating that tag 202a1 is currently located in the second area 207 to reflect that tag 202a1 is more likely still in the first area 206, because the medical device is unlikely to have been moved from the storage room and placed in the ward.

[0067] To better understand the various factors that the positioning engine 110b2 considers when performing positioning analysis Figure 2B The impossible location filtering process performed by the positioning engine for signals from asset tags, according to embodiments described herein, is described. Figure 2BAs shown, the impossible location filtering process can be depicted by a region map 260 comprising multiple regions 262a-f, 264a-f, 266a-f, and 268a-f. Asset tag 261 may initially be located in a first region 262a, and asset tag 261 may move from the first region 262a to another region among regions 262b-f, 264a-f, 266a-f, and 268a-f indicated by region map 260. More specifically, asset tag 261 may move from the first region 262a, and a server (not shown) may receive an AOA signal indicating that asset tag 261 may potentially be located in each of regions 264e, 266c, and 268f during subsequent region reporting for asset tag 261.

[0068] exist Figure 2B In the area map 260, each potential location may have a corresponding path 270a, 270b, 270c, and asset tag 261 may take (or necessarily has taken) these paths to reach the corresponding areas 264e, 266c, 268f. Specifically, the positioning engine 110b2 can determine that asset tag 261 following path 270a moves from the first area 262a to the second area 264e, asset tag 261 following path 270b moves from the first area 262a to the third area 266c, and asset tag 261 following path 270c moves from the first area 262a to the fourth area 268f.

[0069] exist Figure 2B In the example shown, the time difference between a region report corresponding to asset tag 261 being located in the first region 262a and a region report corresponding to asset tag 261 potentially being located in regions 264e, 266c, and 268f can be three seconds. The confidence values ​​of the AOA signals corresponding to each of the regions 264e, 266c, and 268f can be approximately equal. The cost of moving from the first region 262a to the second region 264e along the first path 270a can be five seconds, the cost of moving from the first region 262a to the third region 266c along the second path 270b can be three seconds, and the cost of moving from the first region 262a to the fourth region 268f along the third path 270c can be ten seconds. Therefore, the positioning engine 110b2 can apply these cost values ​​to the confidence values ​​of the corresponding AOA signals to determine that the fourth region 268f and the second region 264e are unlikely / impossible locations for asset tag 261. Based on this filtering of impossible locations (e.g., second region 264e, fourth region 268f), the positioning engine 110b2 can further determine that the third region 266c is the appropriate updated location of the asset tag 261.

[0070] In some instances, the location engine 110b2 may include additional / alternative factors when determining the impossible location of asset tag 261. For example, and as previously described, the location engine 110b2 may define and analyze each region 262a-f, 264a-f, 266a-f, 268a-f based on one or more polylines in 3D space. These polylines may be represented by the edges of the corresponding regions 262a-f, 264a-f, 266a-f, 268a-f shown in the region map 260. The location of asset tag 261 can then be a set of 3D coordinates in 3D space, and the location engine 110b2 can compare this set of 3D coordinates with the polylines of the current region. The location engine 110b2 may determine that the set of 3D coordinates is defined by the polylines of the current region (e.g., third region 266c), and the engine 110b2 may also determine that asset tag 261 is located within the current region.

[0071] For example, the third region 266c can be defined by at least four polylines that construct a rectangular shape in 3D space. The rectangular shape representing the third region 266c can have dimensions in a predefined coordinate plane (ordered X, Y, Z), which can include any object within the size range (-10 to -5, 12 to 21, 0 to 10). Asset tag 261 can have a 3D position of (-6.2, 14, 3.8) such that the positioning engine 110b2 can determine that asset tag 261 is located within the polylines of the third region 266c, and therefore within the third region 266c.

[0072] In some embodiments, the positioning engine 110b2 may also establish checkpoint groups corresponding to multiple regions 262a-f, 264a-f, 266a-f, and 268a-f, which can serve as intermediate travel paths for transitions between regions. The positioning engine 110b2 can then compare (i) the time difference, (ii) the associated confidence value, and (iii) the checkpoint group with the cost value; and update the tag's position based on the comparison.

[0073] For example, each of the first group of areas 262a-f and the second group of areas 264a-f, the third group of areas 266a-f, and the fourth group of areas 268a-f may be located on a separate floor. Therefore, to reach area 264a from area 262a, asset tag 261 must descend via a stairwell or elevator. Thus, stairwells and / or elevators (or other suitable mechanisms for transitions between floors) can be defined and / or otherwise act as checkpoints to verify movement of asset tag 261 between any area in the first group of areas 262a-f and any area in the second group of areas 264a-f. Similarly, reaching any area in the third group of areas 266a-f and / or the fourth group of areas 268a-f may require passing through two or three such checkpoints (stairwells, elevators, etc.) to indicate a possible / valid movement. If, for example, asset tag 261 appears to have moved from first area 262a to fourth area 268f without passing any checkpoints, the positioning engine 110b2 can suppress and / or otherwise filter out the movement, since it is highly unlikely that asset tag 261 could move from the first floor (e.g., corresponding to first area 262a) to the fourth floor (e.g., corresponding to fourth area 268f) without utilizing stairwells, elevators, etc.

[0074] In some instances, the positioning engine 110b2 can evaluate the AOA signal / confidence value based on free movement areas between certain areas. Such areas, connected and / or otherwise including free movement areas, may, for example, be located in a single room and / or otherwise be movable within a relatively small or negligible timeframe. For example, a first area 262a may have a free movement area 272 of an adjacent area 264a along its perimeter, such that movement between the first area 262a and area 264a does not generate and / or otherwise have associated cost values. By partially moving through free movement area 272, the positioning engine 110b2 can determine that asset tag 261 has moved along a second path 270b between the first area 262a and the third area 266c. The positioning engine 110b2 can then reduce, eliminate, and / or otherwise adjust the cost value associated with moving from the first area 262a to the third area 266c by taking into account the movement of asset tag 261 through free movement area 272.

[0075] Using these factors, etc. Figure 2B The untrusted location filtering process shown enables the underlying positioning system to determine the location of asset tag 261 with a significantly higher degree of accuracy and precision than previously achieved using conventional techniques.

[0076] Figure 3This is a flowchart illustrating a method 300 for filtering impossible locations according to embodiments described herein. Generally, as described herein, method 300 for filtering impossible locations enables server 110, anchor 102, and / or any tags (e.g., tags 106a1, 107a1, 108a1, 202a1, 202b1, 202c1) to determine the possible locations of tags by suppressing and / or otherwise filtering impossible locations. More specifically, method 300 enables server 110, anchor 102, and tags (e.g., tags 106a1, 107a1, 108a1, 202a1, 202b1, 202c1) to enhance / improve the accuracy of asset location / tracking, as described herein, by determining confidence values ​​for report packets and corresponding estimated tag locations and applying cost values ​​to these confidence values. It should be understood that any of the steps of method 300 may be performed by, for example, server 110, anchor 102, tags (e.g., tags 106a1, 107a1, 108a1, 202a1, 202b1, 202c1) and / or any other suitable component or combination thereof, as discussed herein.

[0077] At box 302, method 300 includes: receiving data from a tag, the tag being configured to transmit data when it is within one of a plurality of areas. At box 304, method 300 includes: analyzing at least one attribute of the data to determine a current area containing the tag among the plurality of areas and an associated confidence value. At box 306, method 300 includes: analyzing prior data transmitted from the tag to determine whether the current area is different from a prior area determined from the prior data. At box 308, method 300 includes: comparing (i) the time difference between receiving prior data and receiving the data and (ii) the associated confidence value with a cost value corresponding to moving from a prior area to the current area. At box 310, method 300 includes: updating the tag's position based on the comparison.

[0078] In some implementations, at least one attribute of the data includes a Received Signal Strength Indicator (RSSI) value, and method 300 further includes determining an associated confidence value based on the RSSI value. Further in these embodiments, method 300 may further include, for a tag, determining at least one of: (a) the number of reports from different areas, (b) the number of reports from consecutive areas in the current area, or (c) an adjustment of the confidence value for the current area based on the RSSI value; and adjusting the associated confidence value based on one or more of (a)-(c).

[0079] The number of reports from different regions can typically refer to the total number of different regions where the tag is located, serving as a basis for long-term probability comparisons. For example, tag 1 might be reported a million times in region 1, ten times in region 2, and once in region 3. Therefore, location engine 110b2 can determine that at any given time, tag 1 is more likely to be located in region 1 than in region 2 or region 3, because tag 1 is reported significantly more often in region 1 than in region 2 or region 3.

[0080] Furthermore, the number of consecutive area reports can provide the positioning engine 110b2 with information about which area the tag might be located in based on the tag's most recent(one or more) locations. For example, suppose tag 1 reported being located in area 1 in the previous 10,000 reports, while in its most recent report, tag 1 reported being located in the distant area 6. Also suppose that either the current report from area 6 or the previous report from area 1 is incorrect. In this example, the positioning engine 110b2 can determine that the report from area 6 is more likely to be incorrect / impossible than the report from area 1 because the tag has been consistently and recently located in area 1.

[0081] In some embodiments, each of the plurality of regions is defined by one or more polylines in a three-dimensional (3D) space, the position of the label is a set of 3D coordinates in the 3D space, and the method 300 may further include: comparing the set of 3D coordinates with the polylines of the current region; determining that the set of 3D coordinates is defined by the polylines of the current region; and determining that the label is located within the current region.

[0082] In one embodiment, the cost value is the average travel time from the prior region to the current region. However, it should be understood that the cost value can be any suitable value calculated according to any suitable paradigm (such as the median travel time, the shortest possible estimated travel time, and / or any other suitable technique or combination thereof).

[0083] In some embodiments, method 300 may further include: reducing the cost value based on a corresponding confidence value associated with the tag being located in a prior area; and updating the tag's position based on the reduced cost value and a comparison.

[0084] In some embodiments, method 300 may further include: establishing checkpoint groups corresponding to multiple regions; comparing (i) time differences, (ii) associated confidence values, and (iii) checkpoint groups with cost values; and updating the location of tags based on the comparison.

[0085] In some embodiments, the prior area has a free movement area along the periphery of the prior area, and method 300 may further include: determining that the tag moves between the prior area and the current area via the free movement area; eliminating the cost value; and updating the position of the tag based on the associated confidence value.

[0086] Of course, it should be understood that the actions of method 300 can be performed in any suitable order and any suitable number of times.

[0087] Figure 4 This is a block diagram representing an example logic circuit capable of implementing the example methods and / or operations described herein. For example, the example logic circuit is capable of implementing... Figure 1 One or more components of server 110. Of course, it should be understood that the example logic circuit may also include and / or otherwise access... Figure 1 Instructions and / or components of other parts indicated elsewhere herein, such as anchor 102, labels (e.g., labels 106a1, 107a1, 108a1, 202a1, 202b1, 202c1), etc.

[0088] Figure 4 The example logic circuit is processing platform 410, which is capable of executing instructions to implement, for example, the operations of the example methods described herein, as can be represented by the flowcharts accompanying the accompanying drawings. Other example logic circuits capable of implementing, for example, the operations of the example methods described herein include field-programmable gate arrays (FPGAs) and application-specific integrated circuits (ASICs).

[0089] Figure 4 The example processing platform 410 includes a processor 411, such as, for example, one or more microprocessors, controllers and / or any suitable type of processor. Figure 4 The example processing platform 410 includes a memory (e.g., volatile memory, non-volatile memory) 110 accessible by a processor 411 (e.g., via a memory controller). The example processor 411 interacts with the memory 110 to obtain, for example, machine-readable instructions stored in the memory 110 corresponding to operations, for example, those represented by flowcharts of this disclosure. The memory 110 also includes a tag database 110b1 and a positioning engine 110b2 accessible by the example processor 411.

[0090] The positioning engine 110b2 may include rule-based instructions configured, for example, to cause the example processor 411 to analyze data received from tags to update tag locations. More specifically, the positioning engine 110b2 may include rule-based instructions configured to cause the example processor 411 to analyze data packets and / or extract and / or otherwise derive information from the data packets to determine the current area where each tag is currently located. The positioning engine 110b2 may further include rule-based instructions configured, for example, to cause the example processor 411 to determine the current area by calculating / adjusting confidence values ​​based on time differences and cost values, as well as other values ​​or combinations thereof.

[0091] For illustration, when the example processor 411 receives an AOA signal from the anchor point, it can access memory 110 to execute, reference, and / or otherwise interpret the tag database 110b1 and / or the positioning engine 110b2. Additionally or alternatively, machine-readable instructions corresponding to the example operations described herein can be stored on one or more removable media (e.g., optical disc, digital universal disk, removable flash memory, etc.) that can be coupled to the processing platform 410 to provide access to the machine-readable instructions stored thereon.

[0092] Figure 4 The example processing platform 410 also includes a radio transceiver 413 capable of communicating with other machines via, for example, one or more networks. The example radio transceiver 413 includes any suitable type of communication interface (e.g., wired and / or wireless interface) configured to operate according to any suitable protocol (e.g., Ethernet for wired communication and / or BLE or IEEE 802.11 for wireless communication).

[0093] Figure 4 The example processing platform 410 also includes an input / output (I / O) interface 412 to enable communication between the user and the receiving and output of user input data. Such user input and communication may include, for example, any number of keyboards, mice, USB drives, optical drives, screens, touchscreens, etc.

[0094] Furthermore, the example processing platform 410 can be connected to a remote server 420. The remote server 420 may include one or more remote processors 422 and may be configured to execute instructions to, for example, implement the operation of the example methods described herein, as illustrated in the flowcharts accompanying the accompanying drawings.

[0095] Other precautions

[0096] The above description relates to the block diagrams in the accompanying drawings. Alternative implementations of the examples represented by the block diagrams include one or more additional or alternative elements, processes, and / or devices. Additionally or alternatively, one or more of the example blocks in the figures may be combined, divided, rearranged, or omitted. Components represented by the blocks in the figures are implemented by hardware, software, firmware, and / or any combination of hardware, software, and / or firmware. In some examples, at least one of the components represented by the blocks is implemented by logic circuitry. As used herein, the term "logic circuitry" is explicitly defined as a physical device comprising at least one hardware component configured (e.g., via operation based on a predetermined configuration and / or via execution of stored machine-readable instructions) to control one or more machines and / or perform operations on one or more machines. Examples of logic circuitry include one or more processors, one or more coprocessors, one or more microprocessors, one or more controllers, one or more digital signal processors (DSPs), one or more application-specific integrated circuits (ASICs), one or more field-programmable gate arrays (FPGAs), one or more microcontroller units (MCUs), one or more hardware accelerators, one or more application-specific computer chips, and one or more system-on-a-chip (SoC) devices. Some example logic circuits, such as ASICs or FPGAs, are specially configured hardware for performing operations (e.g., one or more operations described herein and represented by flowcharts of this disclosure, if present). Some example logic circuits are hardware that executes machine-readable instructions to perform operations (e.g., one or more operations described herein and represented by flowcharts of this disclosure, if present). Some example logic circuits include a combination of specially configured hardware and hardware that executes machine-readable instructions. The foregoing description relates to the various operations described herein and flowcharts that may be appended herein to illustrate those operations. Any such flowchart represents an example method disclosed herein. In some examples, the method represented by the flowchart implements the means represented by the block diagram. Alternative implementations of the example methods disclosed herein may include additional or alternative operations. Furthermore, operations of alternative implementations of the methods disclosed herein may be combined, partitioned, rearranged, or omitted. In some examples, the operations described herein are implemented by machine-readable instructions (e.g., software and / or firmware) stored on a medium (e.g., a tangible machine-readable medium) for execution by one or more logic circuits (e.g., one or more processors). In some examples, the operations described herein are implemented by one or more configurations of one or more specially designed logic circuits (e.g., one or more ASICs). In some examples, the operations described herein are implemented by a combination of one or more specially designed logic circuits and machine-readable instructions stored on a medium (e.g., a tangible machine-readable medium) for execution by one or more logic circuits.

[0097] As used herein, each of the terms "tangible machine-readable medium," "non-transient machine-readable medium," and "machine-readable storage device" is explicitly defined as a storage medium (e.g., a disk of a hard disk drive, digital multifunction disk, optical disk, flash memory, read-only memory, random access memory, etc.) on which machine-readable instructions are stored (e.g., program code in the form of software and / or firmware) for any suitable duration (e.g., permanently, for extended periods of time (e.g., while a program associated with the machine-readable instructions is being executed), and / or for short periods of time (e.g., while the machine-readable instructions are cached and / or during buffering)). Furthermore, as used herein, each of the terms "tangible machine-readable medium," "non-transient machine-readable medium," and "machine-readable storage device" is explicitly defined to exclude propagation signals. That is, as used in any claim of this patent, none of the terms "tangible machine-readable medium," "non-transient machine-readable medium," and "machine-readable storage device" should be construed as being implemented by propagation signals.

[0098] Specific embodiments have been described in the foregoing specification. However, those skilled in the art will understand that various modifications and changes can be made without departing from the scope of the invention as set forth in the appended claims. Therefore, the specification and drawings are to be considered illustrative rather than restrictive, and all such modifications are intended to be included within the scope of this teaching. Additionally, the described embodiments / examples / implementations should not be construed as mutually exclusive, but rather as potentially composable if such combinations are permitted in any way. In other words, any feature disclosed in any of the foregoing embodiments / examples / implementations may be included in any of the other foregoing embodiments / examples / implementations.

[0099] These benefits, advantages, solutions to problems, and any elements(s) that make any benefit, advantage, or solution occur or become more prominent are not to be construed as key, essential, or necessary features or elements of any or all claims. The invention is defined solely by the appended claims, including any amendments made during the pending period of this application and all equivalents of these claims in the patent announcement.

[0100] Furthermore, in this document, relational terms such as first and second, top and bottom, etc., may be used individually to distinguish one entity or action from another, without necessarily requiring or implying any actual such relationship or order between these entities or actions. The terms “comprises,” “comprising,” “has,” “having,” “includes,” “including,” “contains,” “containing,” or any other variations thereof are intended to cover non-exclusive inclusion, such that a process, method, article, or apparatus that includes, has, includes, or contains a list of elements includes not only those elements but also other elements not expressly listed or inherent to such process, method, article, or apparatus. Elements beginning with “comprises,” “has,” “includes,” or “contains,” in the absence of further constraints, do not exclude the presence of additional identical elements in the process, method, article, or apparatus that includes, has, includes, or contains that element. The term "a / an" is defined as one or more unless expressly stated otherwise herein. The terms "substantially," "essentially," "approximately," "about," or any other version of these terms are defined as being as close as understood by one of ordinary skill in the art, and in one non-limiting embodiment, these terms are defined as within 10%, in another within 5%, in yet another within 1%, and in yet another within 0.5%. The term "coupled" as used herein is defined as connected, although not necessarily directly connected or mechanically connected. A device or structure "configured" in a certain way is configured at least in that manner, but may also be configured in ways not listed.

[0101] This abstract is provided to allow the reader to quickly determine the nature of the disclosure. This abstract is submitted with the understanding that it is not intended to interpret or limit the scope or meaning of the claims. Furthermore, in the above detailed description, it can be seen that various features are grouped together in various embodiments for the purpose of making the disclosure coherent. This method of disclosure should not be construed as reflecting an intention that the claimed embodiments require more features than expressly recited in the claims. Rather, as reflected in the appended claims, the inventive subject matter may lie in fewer than all the features of a single disclosed embodiment. Therefore, the appended claims are thus incorporated into the detailed description, wherein each claim represents itself as a separately claimed subject matter.

Claims

1. A system comprising: Tags, which are configured to transmit data when in one of a plurality of areas; as well as The positioning engine is configured as follows: Receive the data, Analyze at least one attribute of the data to determine the current region containing the label and the associated confidence value among the plurality of regions. Analyze prior data transmitted from the tag to determine whether the current region is different from a prior region determined from the prior data. The time difference between (i) receiving the prior data and receiving the data, and (ii) the associated confidence value, are compared with the cost value corresponding to moving from the prior region to the current region. The position of the label is updated based on the comparison.

2. The system of claim 1, wherein the at least one attribute of the data includes a Received Signal Strength Indicator (RSSI) value, and the positioning engine is further configured to: The associated confidence value is determined based on the RSSI value.

3. The system of claim 2, wherein the positioning engine is further configured to: For the label, determine at least one of the following: (a) the number of reports from different regions, (b) the number of consecutive regional reports from the current region, or (c) the confidence value adjustment for the current region based on the RSSI value; and The associated confidence value is adjusted based on one or more of (a)-(c).

4. The system of claim 1, wherein each of the plurality of regions is defined by one or more polylines in a three-dimensional (3D) space, the position of the label is a set of 3D coordinates within the 3D space, and the positioning engine is further configured to: Compare the 3D coordinate set with the polyline of the current region; The 3D coordinate set is determined to be defined by the polyline of the current region; and The label is determined to be located within the current area.

5. The system of claim 1, wherein the cost value is the average travel time from the prior region to the current region.

6. The system of claim 1, wherein the positioning engine is further configured to: The cost value is reduced based on a corresponding confidence value associated with the tag being located within the prior region; and The position of the label is updated based on reducing the cost value and the comparison.

7. The system of claim 1, wherein the positioning engine is further configured to: Establish checkpoint groups corresponding to the multiple regions; Compare (i) the time difference, (ii) the associated confidence value, and (iii) the checkpoint group with the cost value; and The position of the label is updated based on the comparison.

8. The system of claim 7, wherein each checkpoint in the checkpoint group represents an intermediate travel path for transitioning between regions of the plurality of regions.

9. The system of claim 1, wherein the prior region has a free-moving region along the periphery of the prior region, and the positioning engine is further configured to: It is determined that the label moves between the prior area and the current area through the free movement area; Eliminate the aforementioned cost value; as well as The position of the tag is updated based on the associated confidence value.

10. A computer-implemented method, comprising: Data is received from a tag configured to transmit data when in one of a plurality of areas; Analyze at least one attribute of the data to determine the current region containing the label and the associated confidence value among the plurality of regions; Analyze prior data transmitted from the tag to determine whether the current region is different from a prior region determined from the prior data; The time difference between (i) receiving the prior data and receiving the data, and (ii) the associated confidence value, are compared with the cost value corresponding to moving from the prior region to the current region; and The position of the label is updated based on the comparison.

11. The computer-implemented method of claim 10, wherein the at least one attribute of the data includes a Received Signal Strength Indicator (RSSI) value, and the method further comprises: The associated confidence value is determined based on the RSSI value.

12. The computer-implemented method of claim 11, further comprising: For the label, determine at least one of the following: (a) the number of reports from different regions, (b) the number of consecutive regional reports from the current region, or (c) the confidence value adjustment for the current region based on the RSSI value; and The associated confidence value is adjusted based on one or more of (a)-(c).

13. The computer implementation method of claim 10, wherein each of the plurality of regions is defined by one or more polylines in a three-dimensional (3D) space, the position of the label is a set of 3D coordinates within the 3D space, and the method further comprises: Compare the 3D coordinate set with the polyline of the current region; The 3D coordinate set is defined by the polyline of the current region; as well as The label is determined to be located within the current area.

14. The computer implementation method of claim 10, wherein the cost value is the average travel time from the prior region to the current region.

15. The computer-implemented method of claim 10, further comprising: The cost value is reduced based on the corresponding confidence value associated with the tag being located in the prior region; as well as The position of the label is updated based on reducing the cost value and the comparison.

16. The computer-implemented method of claim 10, further comprising: Establish checkpoint groups corresponding to the multiple regions; Compare (i) the time difference, (ii) the associated confidence value, and (iii) the checkpoint group with the cost value; and The position of the label is updated based on the comparison.

17. The computer-implemented method of claim 10, wherein the prior region has a free-moving region along the periphery of the prior region, and the method further comprises: It is determined that the label moves between the prior area and the current area through the free movement area; Eliminate the aforementioned cost value; as well as The position of the tag is updated based on the associated confidence value.

18. A tangible machine-readable medium comprising instructions that, when executed, cause a machine to perform at least the following operations: Data is received from a tag configured to transmit data when in one of a plurality of areas; Analyze at least one attribute of the data to determine the current region containing the label and the associated confidence value among the plurality of regions; Analyze prior data transmitted from the tag to determine whether the current region is different from a prior region determined from the prior data; The time difference between (i) receiving the prior data and receiving the data, and (ii) the associated confidence value, are compared with the cost value corresponding to moving from the prior region to the current region; and The position of the label is updated based on the comparison.

19. The system of claim 1, wherein the at least one attribute of the data includes a Received Signal Strength Indicator (RSSI) value, and when executed, the instructions further cause the machine to perform at least the following operations: The associated confidence value is determined based on the RSSI value.

20. The system of claim 1, wherein the cost value is the average travel time from the prior region to the current region, and when executed, the instructions further cause the machine to perform at least the following operations: The cost value is reduced based on a corresponding confidence value associated with the tag being located within the prior region; and The position of the label is updated based on reducing the cost value and the comparison.