Patent Description:
<CIT> discloses A technique for locating a target tag using a short range radio based positioning system comprising a plurality of localization components, wherein the target tag and the plurality of localization components are configured to perform ranging measurements among each other using short range radio technology. A method implementation of the technique is performed by an orchestration component of the positioning system and comprises sending, using long range radio technology, a ranging plan to the target tag and one or more of the plurality of localization components, the ranging plan instructing the target tag and the one or more of the plurality of localization components to perform, using the short range radio technology, ranging measurements among each other enabling to locate the target tag.

<CIT> discloses systems and methods for tracking a tagged object through a scene. Techniques are described to calculate a position of the tag using wireless communication with multiple anchor devices. In some examples, the anchor devices may be self-localizing, e.g., they may dynamically determine their position and relationship to one another. In some examples, position of a tag may be calculated by calculating multiple candidate positions using different localization techniques-such as geometric localization techniques and/or optimization-based techniques. An error may also be identified associated with each candidate position. A final position may be determined for the tag based on the errors associated with the candidate positions (e.g., the candidate position with the smallest error may be utilized as the position, e.g., the determined position, of the tag).

In general, techniques of this disclosure are directed to using wireless components of a computing device (e.g., smartphone) to broadcast encrypted data frames over a wireless signal (e.g., Ultra-Wideband® (UWB)) to locate a target tag using responses from neighboring intermediate tags over one or combination of direct and indirect paths to determine the target tag distance and direction. The combined total range information from each indirect path and their respective intermediate tag responses provides for an improved range and localization result to the target tag over using just a single direct path to the target tag, or in some cases when the target tag is not reachable by the computing device. If the target tag is reachable (i.e., direct path), the computing device may use a target tag response along with the one or more indirect path responses to determine a potentially more accurate target tag distance and direction. A weight may be applied to one or more paths in a loss-function algorithm to further refine the results. The loss-function algorithm may be based on any one or combination of path parameters, such as the number intermediate tags, the number of hops to the target tag, number of indirect paths, or relative position of the intermediate tags to one or both of the target tag and the computing device.

The computing device may determine the initial target tag distance, if reachable, and each first-hop distance, corresponding to the distance from the computing device to at least some of the intermediate tags, based on a round-trip-time algorithm that determines round-trip-times (RTT) of the wireless signal associated with the broadcast data frame to and from the computing device to the target tag and each reachable intermediate tag.

As such, the techniques of this disclosure may take advantage of the concept of wisdom-of-crowds, in this case of neighboring intermediate tags. Each path from the computing device to each intermediate tag or target, and from each intermediate tag to the target, whether, direct or indirect, has a different noise and multipath profile, and thus when combining them as discussed herein, has the effect of mitigating noise and providing a more accurate estimate of target tag distance and direction from the computing device.

In one example, this disclosure describes a method according to claim <NUM>.

In another example, a computing device according to claim <NUM>.

In an additional example, a computer-readable storage medium according to claim <NUM>.

Throughout the disclosure, examples are described where a computing device and/or a computing system analyzes information (e.g., wireless ID tags and respective information, locations, context, motion, etc.) associated with a computing device and a user of the computing device, only if the computing device receives permission from the user of the computing device to analyze the information. For example, in situations discussed below, before a computing device or computing system can collect or may make use of information associated with a user, the user may be provided with an opportunity to provide input to control whether programs or features of the computing device and/or computing system can collect and make use of user information (e.g., information about a user's or user device's current location, such as by GPS or wireless ID tag, etc.), or to dictate whether and/or how to the device and/or system may receive content that may be relevant to the user. In addition, certain data may be treated in one or more ways before it is stored or used by the computing device and/or computing system, so that personally identifiable information is removed. For example, a user's identity and image may be treated so that no personally identifiable information can be determined about the user, or a user's geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined. Thus, the user may have control over how information is collected about the user and used by the computing device and computing system.

<FIG> is a conceptual diagram illustrating an example of a computing device that is configured to locate a target tag by communicating with neighboring intermediate tags proximate to the target tag. In the example of <FIG>, computing device <NUM> may include, but is not limited to, portable or mobile devices such as mobile phones (including smart phones), laptop computers, tablet computers, wearable computing devices such as smart watches or computerized eyewear, etc..

As shown in <FIG>, computing device <NUM> includes a display <NUM>, wireless transceiver <NUM> and a locator application <NUM>. The wireless transceiver <NUM> is configured to communicate with wireless identification tags, such as intermediate tags <NUM>-<NUM> and target tag <NUM>. The intermediate tags <NUM>-<NUM> and the target tag <NUM> may be configured to communicate with each other using a common wireless communication protocol, such as ultra-wide band or other wireless communication protocol configurable to determine at least a distance between the interrogating node (e.g., a computing device or a tag) and a tag. For example, the distance between may be determined by a RTT algorithm, signal strength, etc. In examples, the interrogator (e.g., computing device <NUM> and some or all the intermediate tags) may include multiple antennas (not shown) that may determine the angle of arrival (AoA) of a response from an interrogated tag, and thus the direction of the response relative to the interrogator. Depending on the configuration of the tags and the application, the intermediate tags may be one or a combination of active, semi-active or passive tags.

Computing device <NUM> may execute locator application <NUM> with one or more processors (e.g., processors <NUM> of <FIG>) and may access and utilize various components of computing device <NUM>, such as display <NUM>, wireless transceiver <NUM>, and other components not shown in <FIG> and discussed in detail with respect to <FIG>. In one example, locator application <NUM> may be configured to locate the position of target tag <NUM> associated with an object (e.g., a vehicle, backpack, another computing device, etc.) by communicating with one or more intermediate tags in a surrounding area. Using intermediate tags (e.g., intermediate tags <NUM>-<NUM>) to establish a path to the target tag (e.g., target tag <NUM>) in the various techniques and examples discussed herein reduces issues with respect to obtaining increased range fidelity for long range sensing when the target tag gets further away from the computing device attempting to track the target tag. As the ranging and localization error grows and the estimates can be unreliable. These issues increase the difficulty in implementing far-field applications such as accurately locating, controlling or initiating an action from an object, such as locating a vehicle in a parking area, parking area management, car self-driving to a user, pre-unlock, etc..

As shown in the example of <FIG>, intermediate tag <NUM> and target tag <NUM> may be too far from computing device <NUM> to communicate with wireless transceiver <NUM>. Examples may include a multitude of paths through various intermediate tags to the target tag (e.g., target tag <NUM>) to increase the range fidelity for long range sensing. Each path may include a multitude of hops. For simplicity, the largest number of hops in one indirect path illustrated herein is three, including a target hop, however, the number of paths and corresponding hops to the target are not limited to such. In the example for <FIG>, computing device <NUM> uses two intermediate tag paths of two hops and three hops, respectively, to the target to determine an improved estimate for the direction and distance from computing device <NUM> to target tag <NUM>.

For example, wireless transceiver <NUM> may broadcast message <NUM> that includes data frame <NUM> and target identifier <NUM> over a wireless communication channel (e.g., UWB) to intermediate tags <NUM> and <NUM> to locate target tag <NUM> relative to computing device <NUM>. Data frame <NUM>, including target identifier <NUM>, may be encrypted such that only target tag <NUM>, based on the target identifier, may decode and respond to message <NUM>.

In a first intermediate tag path, intermediate tag <NUM> receives message <NUM> in a first-hop, and, because computing device <NUM> cannot reach target tag <NUM>, computing device <NUM> communicates at least a portion of message <NUM>, including target identifier <NUM>, to another intermediate tag <NUM> in a second-hop. Intermediate tag <NUM> reaches target tag <NUM> in a target-hop based on its communication of at least a portion of message <NUM>, that includes target identifier <NUM>, to target tag <NUM>. Target identifier <NUM> signals target tag <NUM> that target tag <NUM> is the intended recipient of message <NUM>. Intermediate tag <NUM> receives target response <NUM>, including range data, for at least determining the target-hop distance between intermediate tag <NUM> and target tag <NUM>. Intermediate tag <NUM> sends intermediate response <NUM> that includes range data associated with the target-hop distance and direction data associated with the second-hop distance. Intermediate tag <NUM> communicates intermediate response <NUM> to locator application <NUM> through the wireless transceiver <NUM>. Intermediate response <NUM> may include the range data associated with the target-hop distance, the second-hop distance and direction data associated with the first-hop distance from computing device <NUM> to intermediate tag <NUM>. In another example, intermediate response <NUM> including the range data of the first-hop distance is communicated to computing device <NUM> prior to the transmission to the intermediate tag <NUM>, meaning another intermediate response <NUM> may be communicated to computing device <NUM> after receiving intermediate response <NUM> and target response <NUM> that include the range data associated with the target-hop distance and the second-hop distance, respectively.

The example of <FIG> includes a second intermediate tag path through intermediate tag <NUM> to target tag <NUM>. Intermediate tag <NUM> is a first hop node and receives message <NUM> from computing device <NUM>. Intermediate tag <NUM> reaches target tag <NUM> in a target-hop based on its communication of at least a portion of message <NUM>, including target identifier <NUM>, to target tag <NUM>. Intermediate tag <NUM> receives target response <NUM>, including range data, for determining at least the target-hop distance between the intermediate tag <NUM> and the target tag <NUM>. Intermediate tag <NUM> communicates intermediate response <NUM>, including the range data associated with the target-hop distance and the first-hop distance, to computing device <NUM>, which uses locator application <NUM> to process the data to figure out the direction and distance to the target tag <NUM>.

Locator application <NUM> may determine each first-hop response direction between computing device <NUM> and intermediate tags <NUM> and <NUM> based on intermediate responses <NUM> and <NUM>, respectively. In one example, computing device <NUM> includes multiple antennas (not shown) that may determine the angle of arrival (AoA) of the wireless signals associated with intermediate response <NUM> and intermediate response <NUM>. Based on each the angle of arrival, location application <NUM> may determine the direction of each response relative to computing device <NUM>. In other examples, some or all the intermediate tags may include multiple antennas and based on the AoA provide direction data of the source of each intermediate response relative to other intermediate tags and/or the target tag. The direction data, among other data (e.g., range data from other intermediate tags or the target tag), may be used by the location application <NUM> to determine the direction and distance to the target tag <NUM>. Returning to computing device <NUM>, in one example, based on intermediate responses <NUM> and <NUM>, locator application <NUM> may determine the distance and direction of target tag <NUM> relative to computing device <NUM>. In one example, the target tag distance and the target tag direction are based on each intermediate path's data that includes each intermediate tag's <NUM> and <NUM> first-hop direction (i.e., direction from the computing device <NUM>) and their respective intermediate responses <NUM> and <NUM>. The intermediate responses <NUM> and <NUM> may further include the second hop distance from intermediate tag <NUM> to <NUM>, the target-hop distance from intermediate tag <NUM> to target tag <NUM>, and the target-hop from intermediate tag <NUM> and to target tag <NUM>, respectively. In one example, the target tag distance and each hop distance are determined based on a round-trip-time (RTT) algorithm associated with each wireless signal. For example, a RTT between computing device <NUM> to target tag <NUM> (if in range), and a RTT for each second-hop and target-hop, such as between intermediate tag <NUM> and intermediate tag <NUM>, and between intermediate tag <NUM> and target tag <NUM>. In some examples, the intermediate responses from each intermediate tag may include additional timing data for the RTT algorithm, such as a turnaround time reflecting the intermediate tag processing delay, to increase the accuracy of the RTT determination.

To further refine the results, locator application <NUM> may use an algorithm, such as a loss-function algorithm, to apply a separate weight to each of the two intermediate paths. In one example, the weight is a scalar multiplied to each term of the loss-function algorithm, where each term mathematically represents the path to the target tag. Each term of the loss-function algorithm may be comprised positional values, such as cartesian coordinates based on distance measurements (i.e., second hop and target hop distances) and cartesian-polar mapping (i.e., first hop distance and AoA data). In some examples, a higher weight may be given to the most accurate path and a lesser weight to other paths. In the example of <FIG>, there is not a direct path to target tag <NUM> from computing device <NUM> and thus, the weight given to the term representing the direct path may be "<NUM>" and the weight given to the indirect path "<NUM>". In other examples, different weights may be distributed among a multitude of paths depending on their path parameters, as discussed below.

In one example, the weights for each path term may be based on any one or combination of a number of path parameters, such as the number and type (e.g., direct and indirect) of available paths to the target tag, first hop direction, the number intermediate tags to the target in path (i.e., the number of hops), the distance to the target tag on a direct hop, or relative position of the intermediate tags to one or both target tag and the computing device. In one example, the weights for a variety of path combinations and path parameters may be determined based on experimental results or simulations and stored either locally on computing device <NUM> or remotely (i.e., in the cloud - not shown) and, in one example, used by locator application <NUM> to determine the target tag distance and direction as discussed herein.

In one example, locator application <NUM> may output results to display <NUM>. For example, locator application <NUM> may include a mapping or plotting function to provide a user of computing device <NUM> navigation data, such as a map, grid, or coordinates to an object (e.g., a vehicle, a backpack, or another computing device) based on the determined target distance and target direction, as set forth in the techniques and examples discussed herein.

<FIG> is a conceptual diagram illustrating another example of a computing device that is configured to locate a target tag by communicating with neighboring intermediate tags proximate to the target tag and the target tag. In the example of <FIG>, like <FIG>, computing device <NUM> may include display <NUM>, wireless transceiver <NUM> and locator application <NUM>. The components and techniques discussed herein with respect to <FIG>, such as the hardware, software, protocols (e.g., UWB) wireless data communicated by computing device <NUM>, and techniques (e.g., use of RTT, etc.) is similar or the same as that discussed in <FIG> and will not be repeated here for brevity. The example of <FIG>, unlike the example of <FIG>, does not include a second-hop from one intermediate tag to another intermediate tag (e.g., see the second hop of <FIG>) and further includes a first-hop directly to target tag <NUM>. Although a direct connection is made to target tag <NUM> from computing device <NUM>, the connection may have accuracy issues with respect to range fidelity due to noise, etc., especially over long ranges, or if actively moving the computing device (e.g., walking with a mobile device) as the target tag (e.g., target tag <NUM>) gets further away from the device as it attempts to track the target tag. Thus, using intermediate tags in the various techniques and examples discussed herein reduces issues with respect to obtaining increased range fidelity for medium to long range sensing while tracking the target tag.

Examples may include a path to the target tag and a multitude of paths through various intermediate tags to the target tag (e.g., target tag <NUM>) that may be used to increase the range fidelity for long range sensing. In the example for <FIG>, computing device <NUM> uses one direct path to target tag <NUM> and two intermediate tag paths to target tag <NUM> to determine an improved estimate for the direction and distance from computing device <NUM> to target tag <NUM>.

For example, the wireless transceiver <NUM> may broadcast a data frame <NUM>, including target identifier <NUM>, in message <NUM> over a wireless communication channel (e.g., UWB) to intermediate tags <NUM> and <NUM>, and target tag <NUM> to locate target tag <NUM> relative to computing device <NUM>. The data frame <NUM>, including the target identifier <NUM>, may be encrypted such that only target tag <NUM>, based on the target identifier, may decode and respond to the message <NUM>. In other words, the target tag identifier <NUM> is configured to signal the target tag <NUM> that it is the intended recipient of the message <NUM>.

In one example, target tag <NUM> receives, in a first-hop, message <NUM>. In response, target tag <NUM> communicates target response <NUM> to locator application <NUM> through the wireless transceiver <NUM>. Target response <NUM> may include range data associated with a direct target-hop distance from computing device <NUM> to target tag <NUM>. Because the direct target-hop is a first hop directly from computing device <NUM>, the target tag direction may also be derived based on target response <NUM>, as described above with respect to <FIG> (e.g., using RTT algorithm).

In a first intermediate tag path, the intermediate tag <NUM> receives message <NUM> in a first-hop and communicates at least a portion of message <NUM>, including target identifier <NUM>, to target tag <NUM> in a target-hop. The intermediate tag <NUM> receives target response <NUM>, including range data for at least determining the target-hop distance between the intermediate tag <NUM> and target tag <NUM>. The intermediate tag <NUM> communicates an intermediate response <NUM> to locator application <NUM> through the wireless transceiver <NUM>. The intermediate response <NUM> may include the range data associated with the target-hop distance and the first-hop distance from computing device <NUM> to intermediate tag <NUM>. In another example, intermediate response <NUM>, including the range data of the first-hop distance, is communicated to computing device <NUM> prior to the transmission of the target-hop, meaning another intermediate response <NUM> may be communicated to computing device <NUM> after the acquisition of target response <NUM> that includes the range data associated with the target-hop distance.

The second intermediate tag path in the example of <FIG> is through intermediate tag <NUM> to target tag <NUM>. Intermediate tag <NUM> receives message <NUM> in a first-hop. Intermediate tag <NUM> reaches target tag <NUM> in a target-hop based on its communication of at least a portion of message <NUM>, including target identifier <NUM>, to target tag <NUM>. The intermediate tag <NUM> receives a target response <NUM> including range data for determining at least the target-hop distance between the intermediate tag <NUM> and target tag <NUM>. The intermediate tag <NUM> communicates intermediate response <NUM>, including the range data associated with the target-hop distance and the first-hop distance, to locator application <NUM> through wireless transceiver <NUM>.

Locator application <NUM> may determine each first-hop response direction between the computing device <NUM> and intermediate tag <NUM>, intermediate tag <NUM> and target tag <NUM> based on intermediate response <NUM>, intermediate response <NUM>, and target response <NUM> direct from target tag <NUM>. As discussed above with respect to <FIG>, computing device <NUM>, and in some examples one or more of the intermediate tags, may determine the direction (e.g., via AoA) of each first-hop response and the direct target-hop response relative to computing device <NUM>.

Locator application <NUM> of computing device <NUM> may determine a revised target tag distance and target tag direction from computing device <NUM> to target tag <NUM> based on the received intermediate responses, target response <NUM>, the determined first-hop response directions and the direct target-hop direction. Further, as discussed above with respect to <FIG>, determining the target tag distance and target tag direction may include locator application <NUM> applying a loss-function algorithm that applies weights to each path term to improve accuracy.

In one example, locator application <NUM> may output results to display <NUM>. For example, locator application <NUM> may include a mapping or plotting function to provide a user of computing device <NUM> navigation data, such as a map, grid, or coordinates to an object (e.g., a vehicle, a backpack, or another computing device) using the determined target distance and target direction based on target tag <NUM> and intermediate tags <NUM> and <NUM>, as set forth in the techniques and examples discussed herein.

<FIG> is a block diagram illustrating an example computing device, in accordance with one or more aspects of the present disclosure. <FIG> illustrates only one example of computing device <NUM>, as illustrated in <FIG> and <FIG>. Many other examples of computing device <NUM> may be used in other instances and may include a subset of the components included in example computing device <NUM> or may include additional components not shown in <FIG>.

As shown in the example of <FIG>, computing device <NUM> includes one or more processors <NUM>, one or more input/output components, such as user interface components (UIC) <NUM>, one or more communication units <NUM>, and one or more storage devices <NUM>. Storage devices <NUM> of computing device <NUM> may include locator application <NUM> application and operating system <NUM>. UIC <NUM> may include display <NUM> and I/O (input/output) devices <NUM>, and the communication unit(s) <NUM> may include wireless transceiver <NUM>. The one or more communication units <NUM> of computing device <NUM>, for example, may communicate with external devices by transmitting and/or receiving data at computing device <NUM>, such as to and from locator application <NUM>, and intermediate tags and target tags (e.g., intermediate tag <NUM> and target tag <NUM>). computing device <NUM> may use communication units <NUM> to transmit and/or receive radio signals including data on a radio network such as a cellular network or transmit and receive wireless signals including data frames and packets. Example communication units <NUM> include a network interface card (e.g., such as an Ethernet card), an optical transceiver, a radio frequency transceiver, a GPS receiver, or any other type of device that can send and/or receive information. Other examples of communication units <NUM> may devices configured to transmit and receive Ultrawideband®, Bluetooth®, GPS, <NUM>, <NUM>, and Wi-Fi®, etc. that may be found in computing devices, such as mobile devices and the like.

As shown in the example of <FIG>, communication channels <NUM> may interconnect each of the components as shown for inter-component communications (physically, communicatively, and/or operatively). In some examples, communication channels <NUM> may include a system bus, a network connection (e.g., to a wireless connection as described above), one or more inter-process communication data structures, or any other components for communicating data between hardware and/or software locally or remotely.

One or more storage devices <NUM> within computing device <NUM> may store information, such as data associated with intermediate responses and target responses as discussed herein, for processing during operation of computing device <NUM>. In some examples, one or more storage devices of storage devices <NUM> may be a volatile or temporary memory. Examples of volatile memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories known in the art. Storage devices <NUM>, in some examples, may also include one or more computer-readable storage media. Storage devices <NUM> may be configured to store larger amounts of information for longer terms in non-volatile memory than volatile memory. Examples of non-volatile memories include magnetic hard discs, optical discs, floppy discs, flash memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories. Storage devices <NUM> may store program instructions and/or data associated with the operating system <NUM> and the locator application <NUM>.

One or more I/O devices <NUM> and display <NUM> of UIC <NUM> of computing device <NUM> may receive inputs and generate outputs. Examples of inputs are tactile, audio, kinetic, and optical input, to name a few examples. Input devices of I/O devices <NUM>, in one example, may include a touchscreen, a touch pad, a mouse, a keyboard, a voice responsive system, a video camera, buttons, a control pad, a microphone or any other type of device for detecting input from a human or machine. Output devices of I/O devices <NUM>, in addition to display <NUM>, may include, a sound card, a video graphics adapter card, a speaker, or any other type of device for generating output to a human or machine.

Locator application <NUM> may perform operations described herein using software, hardware, firmware, or a mixture of both hardware, software, and firmware residing in and executing on computing device <NUM> or at one or more other remote computing devices (e.g., cloud-based application - not shown). Computing device <NUM> may execute locator application <NUM> with one or more processors <NUM> or may execute any or part of locator application <NUM> as or within a virtual machine executing on underlying hardware. Locator application <NUM> may be implemented in various ways, for example, locator application <NUM> may be implemented as a downloadable or pre-installed application or "app. " In another example, locator application <NUM> may be implemented as part of operating system <NUM> of computing device <NUM>. Other examples of computing device <NUM> that implement techniques of this disclosure may include additional components not shown in <FIG> and <FIG>.

One or more processors <NUM> may implement functionality and/or execute instructions within computing device <NUM>. For example, one or more processors <NUM> may receive and execute instructions that provide the functionality locator application <NUM> to perform one or more operations and various functions described herein to broadcast encrypted messages over a wireless signal (e.g., UWB) to locate a target tag using responses from neighboring intermediate tags over indirect paths to determine a target tag distance and range.

In the example of <FIG>, one or more processors <NUM> may implement functionality and/or execute instructions within computing device <NUM>. For example, one or more processors <NUM> may receive and execute instructions that provide the functionality of UIC <NUM>, communication units <NUM>, and one or more storage devices <NUM> that include locator application <NUM> and operating system <NUM> to perform one or more operations as described herein. The one or more processors <NUM> include central processing unit (CPU) <NUM> and graphics processing unit (GPU) <NUM>. GPU <NUM> may be a processing unit configured to configured to perform graphics related functions, such as to generate and output graphics data for presentation on a display, as well as to perform non-graphics related functions that exploit the massive processing parallelism provided by GPU <NUM>. Examples of CPU <NUM> and GPU <NUM> include, but are not limited to, a digital signal processor (DSP), a general-purpose microprocessor, a tensor processing unit (TPU); a neural processing unit (NPU); a neural processing engine; a core of a CPU, VPU, GPU, TPU, NPU or other processing device, an application specific integrated circuit (ASIC), a field programmable logic array (FPGA), or other equivalent integrated or discrete logic circuitry, or other equivalent integrated or discrete logic circuitry.

UIC <NUM> of computing device <NUM> may function as an input device for computing device <NUM> and as an output device to, for example, receive input and displaying output associated with the execution of locator application <NUM>. For instance, display <NUM> of UIC <NUM> may function as an input device using a resistive touchscreen, a surface acoustic wave touchscreen, a capacitive touchscreen, a projective capacitance touchscreen, a pressure sensitive screen, an acoustic pulse recognition touchscreen, or another presence-sensitive screen technology. Further, display <NUM> of UIC <NUM> may function as an output device using any one or more of a liquid crystal display (LCD), dot matrix display, light emitting diode (LED) display, microLED, organic light-emitting diode (OLED) display, e-ink, or similar monochrome or color display capable of outputting visible information to the user of computing device <NUM>.

In some examples, display <NUM> may be a presence-sensitive screen that may receive tactile user input from a user of computing device <NUM>. UIC <NUM> may receive the tactile user input by detecting one or more taps and/or gestures from a user of computing device <NUM> (e.g., the user touching or pointing to one or more locations of UIC <NUM> with a finger or a stylus pen). The presence-sensitive screen of UIC <NUM> may present output to a user. UIC <NUM> may present the output as a user interface, which may be related to functionality provided by computing device <NUM>. For example, UIC <NUM> may present various functions and applications executing on computing device <NUM> such as an electronic message application, a messaging application, a map application, etc..

In one example, locator application <NUM> may interpret input data detected at display <NUM> of UIC <NUM> (e.g., as a user provides one or more gestures at a location on display <NUM>) as a request to locator application <NUM> to locate a target tag associated with an object. In response, for example, wireless transceiver <NUM> may broadcast a message that includes a data frame and a target identifier over a wireless communication channel (e.g., UWB) to intermediate tags and potentially the target tag. Locator application <NUM> may then receive over wireless transceiver <NUM> intermediate tag and/or target tag data in the form of intermediate responses and a target response (if in range), as detailed above with respect to <FIG> and <FIG>.

Locator application <NUM> may determine each first-hop response direction between the computing device and each intermediate tag and the target tag, if in range, based on the received intermediate responses and the target response. As discussed above with respect to <FIG> and <FIG>, computing device <NUM>, and in some examples one or more of the intermediate tags, may determine the direction (e.g., via AoA) of each first-hop response and the direct target-hop response relative to computing device <NUM>.

Locator application <NUM> of computing device <NUM> may determine a target tag distance and target tag direction from computing device <NUM> to the target tag based on the received intermediate responses, the target response, the determined first-hop response directions and the direct target-hop direction (if the target tag is in range of the wireless transceiver <NUM>).

In one example, locator application <NUM> may output results to display <NUM>. For example, locator application <NUM> may include a mapping or plotting function to provide a user of computing device <NUM> navigation data, such as a map, grid, or coordinates to an object (e.g., a vehicle, a backpack, or another computing device) using the determined target distance and target direction based on the target tag and intermediate tags, as set forth in the techniques and examples discussed herein.

In situations in which the systems discussed herein may collect personal information (i.e., data) about the user to the extent it includes and may make use of the user's personal information, such as the use and location data of intermediate tags, the user may be provided with an opportunity to control whether, and to what extent, programs or features collect the user's information (e.g., information about the user's current location). In addition, certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, the user's identity may be treated so that no personally identifiable information can be determined for the user, or the user's geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of the user cannot be determined. Thus, the user may have control over how information is collected about the user and used by the computing device <NUM> as described here.

<FIG> is a diagram illustrating a parking area that includes computing device <NUM> in the form of a handheld device, and a plurality of intermediate wireless tags and a wireless target tag, in accordance with one or more aspects of the present disclosure. Computing device <NUM>, in this example, includes all the components of computing device <NUM> and <NUM> as described with respect to <FIG>, and <FIG> above, including display <NUM>.

As shown in the example of <FIG>, the diagram includes user car <NUM> including target tag <NUM>, car <NUM> including intermediate tag <NUM>, car <NUM> including intermediate tag <NUM>, car <NUM> including intermediate tag <NUM>, and car <NUM> including intermediate tag <NUM>. In one example, computing device <NUM> may receive input, as described above, that begins execution of a locator application (e.g., locator application <NUM>) to locate target tag <NUM> associated with user car <NUM>. In one example, device <NUM> performs the operations and functions to locate target tag <NUM> by broadcasting a message that includes a data frame and a target identifier over a wireless communication channel (e.g., UWB) to the intermediate tags and potentially the target tag, if in range. Locator application <NUM> (not shown) may then receive over wireless transceiver <NUM> intermediate tag and/or target tag data in the form of intermediate responses and a target response (if in range), as detailed above with respect to <FIG> and <FIG>, and shown here as first-hops, a second-hop, target hops, and a direct target-hop (if in range).

As discussed above, locator application <NUM> of computing device <NUM>, may determine each first-hop response direction between computing device <NUM> and each intermediate tag <NUM>-<NUM> and target tag <NUM>, if in range. Each first hop direction is based on the received intermediate responses from intermediate tags <NUM>-<NUM> and the target response from target tag <NUM>, respectively.

Computing device <NUM> may determine intermediate tag <NUM> will not be used in determining the location of target tag <NUM> based at least on one of the direction or distance of intermediate tag <NUM>. In the example as illustrated in <FIG>, computing device <NUM> determines intermediate tag <NUM> is in the opposite direction with respect to target tag <NUM> and thus excludes intermediate tag <NUM> in determining the distance and direction to the target tag <NUM>. In another example, computing device <NUM> may determine the distance from of an intermediate tag (e.g., intermediate tag <NUM>) to at least one of the target tag <NUM> or the computing device <NUM> exceeds a threshold distance. In response, computing device <NUM> may exclude the intermediate tag in the determination of the distance and direction to the target tag <NUM>.

Computing device <NUM> may determine a target tag distance and target tag direction from computing device <NUM> to target tag <NUM> based on the received intermediate responses from intermediate tags <NUM> and <NUM> (via first hops), intermediate tag <NUM> (via second hop through intermediate tag <NUM>), the target response from target tag <NUM> (if in range), the determined first-hop response directions and the direct target-hop direction (if in range). As discussed above with respect to <FIG>, computing device <NUM> may apply a loss-function algorithm that applies weights to each path term to improve accuracy as part of determining the target tag distance and target tag direction.

In one example, a locator application executing at computing device <NUM> may cause a display of computing device <NUM> to display the results of the locating process. For example, the computing device <NUM> may display a graphical user interface on display <NUM> that includes a mapping or plotting function to provide a user of computing device <NUM> navigation data, such as a map, grid, or coordinates to user car <NUM>.

<FIG> is a flowchart illustrating an example mode of operation for a computing device to locate a target tag by communicating with neighboring intermediate tags proximate to the target tag. <FIG> is described below in the context of computing device <NUM> of <FIG> and <FIG>, <FIG> and computing device <NUM> of <FIG>. As shown in <FIG>, computing device <NUM> may broadcast a message (e.g., message <NUM>) over a wireless signal to locate a target tag (e.g., target tag <NUM>) (<NUM>). Computing device <NUM> may receive, in response to the broadcast message, a plurality of intermediate responses (e.g., intermediate responses <NUM> and <NUM>) from one or more intermediate tags (<NUM>). The computing device may determine a first-hop direction and a first-hop distance to at least one first-hop intermediate tag (e.g., intermediate tag <NUM> and <NUM>) of the one or more intermediate tags based on the plurality of intermediate responses (<NUM>). The computing device may determine a target tag distance and a target tag direction from the computing device to the target tag based on each first-hop direction and the plurality of intermediate responses from each of the one or more intermediate tags, wherein at least one of the plurality of intermediate responses from the one or more intermediate tags includes range data associated with a target-hop distance from the intermediate tag to the target tag (<NUM>).

By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other storage medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. It should be understood, however, that computer-readable storage mediums and media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to nontransient, tangible storage media. Combinations of the above should also be included within the scope of computer-readable medium.

The techniques described in this disclosure may be implemented, at least in part, in hardware, software, firmware, or any combination thereof. A control unit including hardware may also perform one or more of the techniques of this disclosure.

Such hardware, software, and firmware may be implemented within the same device or within separate devices to support the various techniques described in this disclosure. Depiction of different features as modules or units is intended to highlight different functional aspects and does not necessarily imply that such modules or units must be realized by separate hardware, firmware, or software components. Rather, functionality associated with one or more modules or units may be performed by separate hardware, firmware, or software components, or integrated within common or separate hardware, firmware, or software components.

Claim 1:
A method comprising:
broadcasting (<NUM>), by a computing device (<NUM>), a message (<NUM>) over a wireless signal to locate a target tag (<NUM>);
receiving (<NUM>), in response to the broadcast message, a plurality of intermediate responses (<NUM>, <NUM>, <NUM>) from one or more intermediate tags (<NUM>, <NUM>, <NUM>), the one or more intermediate tags comprising tags in one or more transmission paths between the computing device and the target tag;
determining (<NUM>), by the computing device, a first-hop direction and a first-hop distance from the computing device to at least one first-hop intermediate tag of the one or more intermediate tags based on the plurality of intermediate responses, each first hop intermediate tag comprising a first tag in a respective transmission path between the computing device and the target tag; and
determining (<NUM>), by the computing device, a target tag distance and a target tag direction from the computing device to the target tag based on each first-hop direction and first hop distance and the plurality of intermediate responses from each of the one or more intermediate tags, wherein at least one of the plurality of intermediate responses from the one or more intermediate tags includes range data associated with a target-hop distance from the intermediate tag to the target tag and direction data associated with a target-hop direction from the intermediate tag to the target tag.