Application control over ranging
The operating system API in electronic devices allows applications to control ranging by specifying operational characteristics, ensuring consistent performance by selecting appropriate mechanisms, addressing inconsistencies in existing ranging technologies.
Patent Information
- Application Number
- JP2025529287
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2022-11-21
- Publication Date
- 2026-02-04
AI Technical Summary
Existing ranging technologies in electronic devices lack the ability for applications to control the selection of ranging mechanisms, leading to inconsistent performance based on varying operational characteristics such as power budget, security, accuracy, and latency.
An operating system API allows applications to specify operational characteristics for ranging, enabling the system to select an appropriate ranging mechanism based on these requirements, facilitating consistent performance.
Enables applications to achieve desired ranging results by selecting mechanisms that meet specified power, security, accuracy, and latency needs, enhancing device functionality and efficiency.
Smart Images

Figure 2026504247000001_ABST
Abstract
Description
[Background technology]
[0001] Electronic devices may be equipped with ranging technology that enables the device to determine how far away it is from other devices, and possibly where the other devices are located (e.g., the direction in which they are located). This ranging technology can help facilitate a variety of useful features.
[0002] For example, ranging can be useful in facilitating encounters between people, such as by helping to direct users toward one another. More specifically, a first user's device may apply ranging to determine how far away a second user's device is located and the angle at which the second user's device is located relative to the orientation of the first user's device. Based on the results of that ranging, the first user's device may then present on its display a graphical representation of the distance and direction to the second user's device for viewing by the first user, who may then conveniently use the graphical representation as a reference for approaching the second user.
[0003] As another example, ranging can help facilitate unlocking of a secure system. For example, a user's device may include a digital key configured to enable unlocking of a secure system, such as a car or home, and to unlock the secure system only when the secure system is sufficiently close to the user's device, such as when the secure system is located within a predetermined threshold short distance from the user's device. In that case, the user's device may apply ranging to determine how close the secure system is to the user's device, and in response to determining from the ranging that the secure system is sufficiently close to the user's device, may then enable use of the digital key to unlock the secure system.
[0004] Other examples may be possible as well. Summary of the Invention
[0005] A typical device may include multiple ranging mechanisms that the device could use to perform ranging between the device and a given other device. For example, the device may include multiple radios, circuits, and / or other modules, each configured to operate according to a respective air interface protocol that other devices may also use. Additionally, the device may include one or more antennas that the device can use as a reference for performing ranging using a given such protocol.
[0006] Such a device may include an operating system (e.g., Android, ChromeOS, Windows, or Linux, among other possibilities) and may execute one or more applications configured to interact with the operating system to trigger ranging. For example, the operating system may expose an application programming interface (API) that defines ranging requests that can be used to trigger ranging associated with identifiers associated with other devices. Thus, an application on the device may issue a ranging request API call to the operating system, and the operating system may respond to the API call by performing the requested ranging. In response to the application's ranging request, for example, the operating system may first establish a data connection with the other device, exchange ranging capabilities and / or other parameters with the other device over the data connection, and then select and invoke a supported ranging mechanism to determine the distance and / or relative angle between the device and the other device.
[0007] This process may prevent the application from knowing the underlying ranging mechanism that the operating system will invoke to perform the requested ranging. For example, the API call may not specify which ranging mechanism the operating system should invoke, the operating system may not inform the application which ranging mechanism the operating system will invoke, and the application may not know which ranging mechanism the operating system will invoke.
[0008] However, the API call may allow an application to exercise some control over the selection of a ranging mechanism by specifying one or more operational characteristics that the application requires the ranging to have. For example, the API call may allow an application to specify as arguments not only the identity associated with the other device but also one or more operational characteristics that the application requires the ranging to have. Examples of these operational characteristics may include, but are not limited to, (i) a ranging power budget, (ii) ranging security, (iii) ranging accuracy, and (iv) ranging latency. Given an application's specification of one or more such operational characteristics that the application requires the ranging to have, the operating system may then select a ranging mechanism based at least on a determination that the selected ranging mechanism will have one or more operational characteristics. For example, the operating system may select a ranging mechanism based on a determination that the selected ranging mechanism will meet or exceed the specified operational characteristics.
[0009] Allowing an application to exercise this type of control over the operating system's selection of ranging mechanisms may beneficially enable the selection and use of a ranging system that takes into account one or more needs, desires, or contexts of the application.
[0010] Thus, in one respect, a method for application control over ranging is disclosed. The method includes receiving a ranging request from an application on a device into an operating system of the device, the ranging request requesting ranging between the device and another device, the ranging request specifying one or more operational characteristics that the application requires the ranging to have. The method further includes the operating system selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operational characteristics requested by the application. The method further includes the operating system, based at least on the selecting, causing the device to implement the selected ranging mechanism in response to the ranging request.
[0011] In another aspect, a device is disclosed. The device includes a processor, non-transitory data storage, and an operating system stored in the non-transitory data storage and executable by the processor, the operating system defining program instructions executable by the processor to perform operations. The operations include receiving a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, the ranging request specifying one or more operational characteristics that the application requires the ranging to have. Further, the operations include selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operational characteristics required by the application. Further, the operations include causing the device to implement the selected ranging mechanism in response to the ranging request based at least on the selecting.
[0012] In yet another aspect, a non-transitory computer-readable medium is disclosed having stored thereon an operating system that defines instructions executable by a processor of a device to cause the device to perform the operations described above.
[0013] In yet another aspect, a system is disclosed that includes various means for performing each of the operations described herein.
[0014] These and other aspects, advantages, and alternatives will become apparent to those skilled in the art upon reading the following detailed description, with reference to the accompanying drawings as appropriate.Furthermore, it should be understood that this summary of the invention and the description provided below illustrate the invention by way of example only and are not intended to be limiting. [Brief explanation of the drawings]
[0015] [Figure 1] FIG. 1 is a diagram of exemplary distance and angle measurements between two exemplary devices. [Figure 2] FIG. 1 is a simplified block diagram of an exemplary device. [Figure 3] 1 is an exemplary diagram of mapping data for correlating operational characteristics required by one or more applications with ranging mechanisms invoked in response to a ranging request. [Figure 4] 1 is a flowchart illustrating an exemplary method. DETAILED DESCRIPTION OF THE INVENTION
[0016] Exemplary methods, devices, and systems are described herein. However, it should be understood that any disclosed embodiment should not necessarily be construed as preferred or advantageous over other embodiments unless so described. Moreover, it should be understood that variations are possible from the specific configurations and processes disclosed. For example, various disclosed entities, components, connections, operations, and other elements may be added, omitted, distributed, duplicated, rearranged, permuted, combined, or otherwise modified. Furthermore, it should be understood that various disclosed technical operations could be performed, at least in part, by a processing unit programmed to perform the operations or to cause one or more other entities to perform the operations.
[0017] Example ranging between devices As discussed above, ranging between devices may involve determining the distance between the devices and / or determining the angular orientation of one of the devices relative to the other. For example, given two devices D1 and D2, ranging could involve determining the distance between the physical locations of D1 and D2 and / or determining the angular orientation of one device in a defined Cartesian or polar coordinate system relative to the physical location and orientation of the other device. Figure 1 generally illustrates an example of the distance and angular orientation between devices D1 and D2.
[0018] This disclosure assumes that a given device D1 performs ranging between itself and another device D2. In this configuration, at least one of these two devices may be moving, and the other device may be moving or stationary. For example, D1 may be moving and D2 may be stationary, resulting in D1 moving relative to D2. Alternatively, D1 may be stationary and D2 may be moving, resulting in D2 moving relative to D1. In either case, D1 may perform ranging to determine the distance between D1 and D2 and / or the angular orientation of D2 relative to D1.
[0019] Devices D1 and D2 could take any of a variety of forms, examples including, but not limited to, mobile phones, tablet computers, laptop computers, gaming devices, wearable devices, package tracking devices, livestock tracking devices, home appliances, wireless key fobs, and Internet of Things (IoT) or other machine-to-machine (M2M) devices.
[0020] Device D1 may have a user interface, such as a display screen or other interface, and device D1 may be configured to present its ranging results through the user interface. For example, D1 may be configured to present on the display screen a numerical or other indication of its determined distance from D2. Alternatively or additionally, D1 may be configured to present on the display screen an arrow that has been determined to point toward D2, thereby enabling a user of D1 to approach the location of D2, if applicable. Alternatively, the ranging results could be provided to another entity for presentation and / or processing.
[0021] Furthermore, device D1 may perform repeated ranging. For example, D1 may periodically determine its distance from D2 and / or the angle of orientation of D2 relative to D1 and present the results of this ranging. Furthermore, D1 may vary the periodicity and type of this ranging by measuring more frequently or with greater granularity as the distance between D1 and D2 decreases (i.e., as D1 gets closer to D2 and / or as D2 gets closer to D1).
[0022] Example of a distance measurement mechanism As noted above, various ranging mechanisms may be possible. These ranging mechanisms may utilize wireless signaling communication between D1 and D2 and / or may involve communication with one or more centralized positioning systems, among other possibilities. Furthermore, each ranging mechanism may have different operating characteristics, such as different power budgets, different security, different accuracy, different latency, and different capabilities with respect to establishing distance and / or establishing angular direction, among other possibilities.
[0023] For some ranging mechanisms, D1 and D2 may first enter into a data communication session with each other (e.g., via peer-to-peer wireless communication and / or via WiFi, cellular, or other network communication). Through this data communication session, D1 and D2 may then exchange data to facilitate calculation of distance and / or angular direction. For example, D1 and D2 may exchange data about the ranging mechanisms they use and may reach an agreement on the wireless channel over which they may conduct ranging signaling with each other. Additionally, D1 and D2 may exchange information about wireless signaling between each other.
[0024] The ranging mechanism that determines the distance between D1 and D2 based on wireless signal transmission between D1 and D2 can take various forms, utilizing signal strength and / or signal propagation time between D1 and D2, and / or utilizing the respective positions of D1 and D2, among other possibilities.
[0025] With respect to distance determination based on signal strength, for example, if D2 broadcasts a signal that is identifiable by D1, then D1 may receive that signal, measure the received strength of the signal as a received signal strength indicator (RSSI) value, and convert that RSSI value to a distance between the devices. D1 may use information about the power level of D2's broadcast and / or knowledge of the relative distances corresponding to various levels of RSSI as a basis for converting RSSI to a distance. For example, if an RSSI value of -50 decibel milliwatts (dBm) represents a distance of one meter (1 m) between devices, and each -6 dBm decrease in RSSI represents twice the distance between devices, then D1 may consider an RSSI value of -56 dBm to represent a distance of two meters between devices, D1 may consider an RSSI of -72 dBm to represent a distance of four meters between devices, etc. Alternatively, if D1 broadcasts a signal identifiable by D2, D2 may measure the RSSI of that signal and report the measured RSSI to D1, which may then convert the measured RSSI to a distance between the devices, or D2 may convert the RSSI to a distance value and report the distance value to D1.
[0026] This ranging mechanism, or others based on signal strength, may be relatively simple and fast, and have a relatively low power budget. However, these ranging mechanisms may suffer from errors and inaccuracies due to signal reflections and interference from obstacles, among other issues. Furthermore, this type of ranging may not, by itself, allow for the determination of angular direction between devices.
[0027] On the other hand, determining distance based on signal propagation time may involve wirelessly transmitting one or more pulses (e.g., frames) between D1 and D2, measuring the time of flight of each such transmission, and using the speed of light as a basis for converting the measured time of flight to a measurement of distance between the devices. For example, ranging could involve calculating the time of flight of each of multiple such pulses transmitted in rapid succession from D1 to D2, calculating an average of those times of flight, and converting the calculated average time of flight to a determined distance between the devices. Alternatively, ranging could involve calculating the time of flight of each such pulse, converting the calculated time of flight to a distance value, and calculating the average of the calculated distance values as the determined distance between the devices.
[0028] As an example, D1 could transmit one or more time-stamped pulses to D2, and for each pulse, D2 could record its receipt time, calculate the time of flight as the difference between the time of transmission and the time of reception, and report it back to D1. Taking into account the speed of light, D1 could then convert D2's calculated time of flight to a distance between D1 and D2, possibly accounting for any processing, encoding, and / or other non-range delays. Alternatively, for each pulse, D2 could record its receipt time, calculate the time of flight, convert the calculated time of flight to a distance between D1 and D2, and report the calculated distance to D1. Furthermore, such calculations could be averaged over a set of such pulses.
[0029] Alternatively, in a single-sided, two-way ranging process, D1 would transmit one or more time-stamped polling pulses to D2, and for each polling pulse, D2 would transmit a corresponding reply pulse to D1, and D1 would be able to calculate the round-trip time (RTT) (e.g., round-trip delay (RTD)) as the total time from D1's transmission of the polling pulse to D1's receipt of the reply pulse (possibly accounting for any processing, encoding, and / or other non-range delays). D1 would then treat half that RTT as a measure of the time-of-flight between D1 and D2 and convert that time-of-flight to the distance between D1 and D2.
[0030] Further alternatively, in a two-sided two-way ranging process, D1 and D2 could perform a combination of two single-sided two-way ranging processes. For example, D1 could transmit one or more time-stamped polling pulses to D2, and for each polling pulse, D2 could transmit both a corresponding reply pulse and its own time-stamped polling pulse to D1, to which D1 could respond with its own corresponding reply pulse. For each such exchange, D1 could then calculate the RTT for its poll to D2 and its corresponding reply to D1, and D2 could calculate and report the RTT for its poll to D1 and its corresponding reply to D2. D1 could then use those two RTT calculations in combination as a basis for calculating the time-of-flight between D1 and D2 (again, accounting for any processing, encoding, and / or other non-range delays) and convert that time-of-flight to the distance between D1 and D2.
[0031] These ranging mechanisms, or others based on signal propagation time, may be more accurate than ranging based on signal strength, but may require tightly synchronized clocks, which may or may not be possible in some situations. Furthermore, these ranging mechanisms may have an increased power budget due to the need for additional wireless communication and its additional processing. Furthermore, these types of ranging may not, by themselves, allow for the determination of angular direction between devices.
[0032] On the other hand, distance determination based on the respective positions D1 and D2 may involve determining the respective positions of D1 and D2 in a common coordinate system and calculating the difference between those determined positions as the determined distance between the devices.
[0033] Determining the location of each of devices D1 and D2 in a common coordinate system could itself take a variety of forms. For example, either or each device may utilize a global navigation satellite system (GNSS), such as the Global Positioning System (GPS), using a GNSS receiver to receive time-stamped signals from each of multiple GNSS satellites at known orbital locations and triangulate or trilaterate based on those signals to determine its geographic location. As another example, either or each device may utilize cellular, WiFi, or other such broadcast signals, using a receiver to receive signals from multiple base stations or access nodes at known geographic locations and triangulate or trilaterate based on those signals to determine its geographic location.
[0034] If each device determines its respective location, then one device could report its determined location to the other device, which could compare that location with its own determined location to calculate the distance between the devices. For example, D2 could report its determined location to D1, which could then calculate the difference between D1 and D2 as the difference between D1's determined location and D2's determined location. This type of ranging could also facilitate determining D1's angular orientation relative to D1.
[0035] This ranging mechanism and others that involve determining and comparing the respective positions of D1 and D2 may be more accurate than some other ranging mechanisms, but may have increased power budgets and latency due to the use of positioning mechanisms such as GNSS or cellular wireless communications, etc. On the other hand, these types of ranging may support not only distance determination but also angular direction determination.
[0036] Other ranging mechanisms for determining the angular orientation of D2 relative to D1 may also take a variety of forms and utilize triangulation, trilateration, and / or other techniques. For example, the angular orientation of D2 relative to D1 could be determined using a phase difference of arrival technique.
[0037] The angle at which D2 is positioned relative to D1 could be measured with respect to the plane defined by D1. One way to measure this angle is to use a multi-antenna array (e.g., a linear antenna array) with D1, using antennas arranged in a plane (e.g., spaced apart from each other by at least one-half the carrier wavelength), and the question is the phase difference of a given signal received at various antennas in the plane. That is, when D1 receives a pulse signal from D2, D1 could determine the phase of the signal as received at each antenna and, based on a comparison of those phases, determine the direction of arrival of the signal relative to the antenna array plane (e.g., 0 to 180 degrees). If D1 determines that the phase of the signal is the same at each antenna, then D1 could conclude that D2 is oriented 90 degrees from the plane. On the other hand, if D1 determines that there is a difference between the phases at the various antennas, then D1 could use that phase difference as a basis for calculating the angle of arrival of the signal from D2, and therefore the orientation of D2 relative to the plane. Given this determination of the orientation of D2, and given the determination of the distance between D1 and D2, D1 could then further determine the position of D2 in a Cartesian or polar coordinate system defined relative to D1.
[0038] This ranging mechanism, or other such ranging mechanisms that determine the angle of orientation of D2 relative to D1, may be relatively fast and have a relatively low power budget. Furthermore, the level of accuracy of this type of ranging may depend on factors such as, for example, the carrier frequency used for signal transmission and / or the design of the antenna array. Furthermore, this type of ranging mechanism may not itself determine distance, but it could be combined with one or more other ranging mechanisms to facilitate determining both distance and angular orientation. For example, distance could be calculated based on signal strength and / or signal delay, while measuring angle based on phase difference.
[0039] As described above, ranging to determine the distance between D1 and D2 and / or the angular orientation of D2 relative to D1 may also or alternatively involve communication with a centralized positioning system. By way of example, D1 may be in network communication with a system configured to calculate or otherwise determine the respective positions of D1 and D2 in a common coordinate system and report associated ranging information to D1. For example, D1 may transmit a request for ranging between D1 and D2 via WiFi, cellular, or other connection to the system. Upon authenticating D1, the system may then interact with both D1 and D2 to determine their respective positions, possibly using GNSS or other technology. The system then reports these determined positions in response to D1, and D1 may compare the positions to determine the distance and / or angular orientation, or the system may determine the distance and / or angular orientation and report them to D1.
[0040] This type of ranging can be very accurate, especially when it involves the use of GNSS, etc. However, this type of ranging may also have a relatively high latency and power budget due to its added communication with a centralized system and possibly the use of GNSS and / or one or more other such technologies.
[0041] Among other examples, the exemplary ranging mechanisms described above may have their operating characteristics varied based on their particular implementation.
[0042] For example, the operating characteristics of a ranging mechanism may differ based on the air interface protocol or wireless communication technology used for ranging. By way of example, ranging performed with some forms of WiFi or BLUETOOTH® signaling may have relatively low accuracy, while ranging performed with ultra-wideband (UWB) signaling, which uses very narrow pulses and operates at very high frequencies and over a wide range of spectrum, may have much higher accuracy. Furthermore, ranging performed with some forms of BLUETOOTH (e.g., BLUETOOTH Low Energy (BLE) using RSSI measurements) may be less accurate than ranging performed with other forms of BLUETOOTH (e.g., BLUETOOTH High Accuracy Distance Measurement (HADM)). Furthermore, ranging performed through interaction with a centralized positioning system may be very accurate.
[0043] Furthermore, these or other ranging mechanisms may have different levels of security, such as their ability to help prevent relay or man-in-the-middle attacks (e.g., spoofing). For example, some forms of UWB-based ranging may provide a very high level of security compared to WiFi or BLUETOOTH-based ranging. Furthermore, ranging performed through interaction with a secure centralized positioning system, such as a mobile carrier's mobile location system, may also be very secure.
[0044] Additionally, some ranging mechanisms may have different power budgets based on levels of security, accuracy, and / or other operating characteristics. For example, a type of ranging with varying levels of security may use more energy when operating at a higher level of security than when operating at a lower level of security. Similarly, a type of ranging with varying levels of accuracy may use more energy when operating at a higher level of accuracy than when operating at a lower level of accuracy.
[0045] Exemplary Application-Based Control over Ranging As described above, the device's operating system could be configured to allow applications some control over the ranging process by allowing applications to request one or more operational characteristics that they want ranging to have. For example, the operating system could expose an API that would allow any given application on the device to request ranging and specify one or more requested operational characteristics of the ranging. Upon receiving such an API call from an application, the operating system could then select a ranging mechanism from multiple ranging mechanisms, the selection being based at least on the one or more operational characteristics requested by the application. In this manner, as the one or more requested operational characteristics vary from ranging request to ranging request (e.g., from application to application and / or situation to situation), the operating system could responsively select and invoke a different ranging mechanism to help achieve different application goals.
[0046] 2 is a block diagram of an example device 200 illustrating some of the components that may be present within the device to facilitate performing the operations described herein. FIG. 2 may represent an example arrangement of device D1 and / or an example arrangement of device D2.
[0047] As shown in FIG. 2 , the exemplary device 200 includes a wireless communication module 202, a user interface 204, a processor 206, and non-transitory data storage 208, all of which may be integrated and / or communicatively linked to one another in various ways, such as via a system bus, network, or other connection mechanism 210.
[0048] The wireless communication module 202 may include various components to facilitate wireless communication between the device 200 and other entities, such as between the device 200 and other devices that may be the subject of ranging and / or between the device 200 and a local or wide area network (e.g., a WiFi network and / or a cellular network), among other possibilities. Each wireless communication module may be configured to support communication according to a respective air interface protocol that differs from each of the other wireless communication modules and / or communication according to air interface protocol versions or communication mechanisms that differ from each other, among other possibilities. For example, the wireless communication module 202 may include WiFi, BLUETOOTH, UWB, and cellular (e.g., 4G, 5G, 6G, etc.) modules. Each of these modules may be individually addressable and controllable. However, one or more such modules may be located on a common chipset or other unit, and some of the modules may share the use of one or more components.
[0049] As shown, the exemplary wireless communications module 202 may include one or more radios 212, one or more amplifiers 214, and one or more antennas 216. The one or more radios may include one or more radio transmitters configured to modulate baseband signals onto radio frequency (RF) carriers and one or more radio receivers configured to demodulate the baseband signals from the one or more RF carriers. The one or more amplifiers may be configured to amplify oscillating signals for transmission and / or received signals for processing. And, the one or more antennas may be configured to transmit and / or receive RF signals. The wireless communications module 102 may further include various circuits and / or logic to facilitate operation in accordance with an exemplary air interface protocol, such as to facilitate one or more exemplary ranging mechanisms.
[0050] User interface 204 may include one or more components, if applicable, to facilitate interaction with a user of device 200. For example, user interface 204 may include various output components, such as a display screen, an audio speaker, indicator lights, and a haptic feedback interface, as well as associated circuitry and / or other logic to facilitate the operation of those output components. Additionally, user interface 204 may include various input components, such as a touchscreen interface integrated with a display screen, a microphone, and a keypad, as well as associated circuitry and / or other logic to facilitate the operation of those input components.
[0051] Processor 206 may include one or more general-purpose processors (e.g., one or more microprocessors, etc.) and / or one or more special-purpose processors (e.g., application-specific integrated circuits, etc.). Additionally, non-transitory data storage 208 may include one or more volatile and / or non-volatile storage components (e.g., read-only memory, random access memory, flash storage, cache memory, etc.), possibly integrated in whole or in part with processor 206.
[0052] As shown, data storage 208 may store program instructions 218 that may be executable by processor 206 to perform various operations described herein. Specifically, as shown, program instructions 218 may represent a device operating system 220 and one or more applications 222 installed on the device.
[0053] In accordance with these program instructions 218, operating system 220 may control various services and features of device 200, manage applications 222, and provide APIs usable by the applications to utilize the services and features. For example, the APIs may enable applications to submit ranging requests and specify desired operational characteristics of the requested ranging to facilitate selection and invocation of an appropriate ranging mechanism. To facilitate this, operating system 220 may be configured to interact with one or more wireless communication modules to trigger and / or coordinate ranging according to a ranging mechanism, such as one or more of the ranging mechanisms described above, among other possibilities.
[0054] Applications 222, in turn, may include one or more native applications and / or one or more third-party applications. Each such application may be installed on the operating system 220 and thus on the device, and may be executed by causing the processor 206 to execute the application's instructions.
[0055] A given application may be considered to be running on device 200 when the device is performing, or is configured to perform, one or more operations in response to the application's program instructions. Furthermore, applications may sometimes be running in a foreground or background state. An application may be in the foreground state when it has focus and / or has user-perceivable activity, regardless of whether it is started or paused. Conversely, an application may be in the background state when it is not in the foreground state. For example, given multiple windows each representing an application running on a device, if a given window has focus, the application may be considered to be in the foreground state, but if a given window does not have focus, the application may be considered to be running in the background state.
[0056] As further shown in FIG. 2, the data storage 208 may also store reference data 224 that the processor 206 may access in accordance with the program instructions 218 to facilitate performing various device operations.
[0057] In accordance with the above description, reference data 224 may include mapping data 226 (e.g., a mapping table and / or other logical data structure) that correlates different sets of operating characteristics with different ranging mechanisms. A device may be pre-provisioned with this mapping data and / or may build the data over time through machine learning or other techniques. By referencing such mapping data 226, processor 206 may select a ranging mechanism taking into account one or more operating characteristics that an application requires ranging to have, such that processor 206 can then invoke the selected ranging mechanism in response to an application request.
[0058] In exemplary implementations involving machine learning, the processor may evaluate ranging performance data over time to programmatically establish or update correlations between particular operating characteristics and particular ranging mechanisms. For example, a device may be pre-provisioned with an initial set of mapping data correlating particular operating characteristics with particular ranging mechanisms, such as data indicating that a particular ranging mechanism is likely to have a particular operating characteristic or a particular combination of operating characteristics. The processor may apply that mapping data over time to select a ranging mechanism that the mapping data indicates will likely have the particular operating characteristics. The processor may then evaluate the actual resulting operating characteristics of the selected ranging mechanism to determine whether and / or to what extent the ranging mechanism has the operating characteristics indicated by the mapping data (effectively as a machine learning loss function), and the device may modify the mapping data based on that evaluation.
[0059] For example, if the mapping data indicates that a given ranging mechanism is likely to have a low level of latency, but the device determines that in fact that ranging mechanism typically has a medium or high level of latency, the device may respond to that determination by modifying the mapping data to instead indicate that the given ranging mechanism is likely to have a medium or high level of latency. Thereafter, when the device applies the mapping data to determine which ranging mechanism to select based on one or more specified operating characteristics, the device will use the updated mapping data, and the correlation between the operating characteristics and the mapping data will be improved.
[0060] FIG. 3 shows an example of such mapping data 226 as a representative table in which each row specifies (i) in the first column a respective set S of ranging operational characteristics, and (ii) in the second column a ranging mechanism M that is considered to correspond to the set S in the first column.
[0061] As shown in FIG. 3 , the exemplary table may define each set of operational characteristics S as a bit string in which bits at predefined positions have values representing the respective operational characteristics of ranging. For example, the bit string may include 8 bits, in which each 2 bits represent a low value (e.g., 01), a medium value (e.g., 10), or a high value (e.g., 11) of the respective operational characteristic, or null (e.g., 00) if the operational characteristic is not specified. By way of example, the first 2 bits may represent a power budget, the second 2 bits may represent an accuracy level, the third 2 bits may represent a security level, and the fourth 2 bits may represent a latency. Additionally, although not shown, the exemplary table may define each ranging mechanism M as a respective binary code interpretable by the processor 206 to represent a specific air interface for ranging and / or a specific ranging mechanism, such as one or more specific mechanisms such as those described above.
[0062] In an exemplary implementation, when application 222 wants the device to perform a ranging measurement, the application may issue a ranging request API call to operating system 220. Additionally, the application may include various arguments in this API call that may enable operating system 220 to process the ranging request, and the API call may carry various arguments that may enable operating system 220 to process the ranging request.
[0063] For example, the application may include in the API call an identifier associated with the other device that is the target of ranging, such as the identifier associated with D2 in the description above. This could be an identifier that enables device 200 to initiate a communication session with the other device and / or otherwise facilitate ranging, such as between device 200 and the other device. For example, this could be an account identifier of the other device or of a user of the other device.
[0064] Additionally, the application 222 may include in its API calls a specification of one or more operational characteristics that the application requires the ranging to have. This specification may take the form of a bit string, such as the bit string described above, or other forms that other operating systems may interpret to represent the one or more operational characteristics requested by the application. By way of example, the specification may specify a power budget that the application requires the ranging to have, a security level that the application requires the ranging to have, a level of accuracy that the application requires the ranging to have, and / or a latency level that the application requires the ranging to have. The application may not know which of one or more ranging mechanisms the operating system could potentially use to satisfy such a request, but the request may enable the operating system to make an appropriate choice (or attempt to make an appropriate choice).
[0065] As a specific example, if device 200 is battery-powered and an application has reason to conserve the device's battery power (e.g., to avoid having operating system 220 stop the application if the application uses too much battery energy), and if low-security ranging uses less battery energy, then the application may choose to request a low- or medium-security ranging rather than a high-security ranging. As another example, if the application has reason to obtain a very high-accuracy ranging, such as if the application uses ranging as criteria for triggering the unlocking of a secure system (such as a car or house), then the application may choose to request a high-accuracy ranging rather than a low- or medium-accuracy ranging.
[0066] Upon receiving this API call from application 222, operating system 220 may retrieve the identifier of the other device from the API call, and operating system 220 may use that identifier as processing basis for establishing an initial data communication session between device 200 and the other device, for example, using one of multiple wireless communication modules 202. Through this data communication session, the operating system may exchange information with the other device about the ranging capabilities of device 200 and the ranging capabilities of the other device in an attempt to establish a set of ranging mechanisms supported by both device 200 and the other device.
[0067] Additionally, operating system 220 may read from the API call a specification of one or more operational characteristics that application 222 requires ranging to have, and operating system 220 may use the specified one or more operational characteristics as criteria for selecting a ranging mechanism from a set of available ranging mechanisms (e.g., from a set of ranging mechanisms supported by both device 200 and other devices). For example, operating system 220 may reference mapping data, such as the mapping data described above, to determine the ranging mechanism corresponding to the operational characteristics required by one or more applications.
[0068] Operating system 220 may then invoke the selected ranging mechanism, i.e., cause device 200 to implement the selected ranging mechanism. For example, operating system 220 may send a signal to, and possibly adjust the operation of, a particular wireless communication module 202 to perform the selected ranging mechanism. Thus, through this ranging process, operating system 220 may determine the distance between device 200 and the other device and / or the angular orientation of the other device relative to the location and orientation of device 200. This distance may or may not be perfect. The distance and / or angular orientation may not be strictly accurate, but instead may be a best-effort estimate given the selected ranging mechanism and circumstances.
[0069] As described above, the result of this ranging may be data indicative of the angular orientation of device 200 and the other device, and / or the other device relative to the location and orientation of device 200. Operating system 220 may return this data to the application in response to the application's API call. The application may then utilize this data. For example, the application may present a representation of the determined distance and / or angular orientation on its user interface 204.
[0070] In other implementations, operating system 220 may use operational characteristics requested by one or more applications as criteria for selecting multiple ranging mechanisms to invoke in response to the application's request. For example, operating system 220 may determine, based on one or more operational characteristics, to invoke a first ranging mechanism (e.g., a BLE-based ranging mechanism) and then to invoke a second ranging mechanism (e.g., a UWB-based ranging mechanism) and use the threshold proximity detected through that mechanism as a trigger or gate for possibly generating refined ranging results or for one or more other purposes.
[0071] Furthermore, in addition to considering the operational characteristics required by one or more applications, operating system 220 may take into account one or more other factors as additional criteria for selecting a ranging mechanism to invoke in response to an application request.
[0072] One example of an additional factor is the foreground or background state of an application. For example, operating system 220 may have data indicating the current foreground / background state of an application, and upon receiving a ranging request for the application, may refer to that data and use the data as additional criteria for selecting a ranging mechanism. As an example, depending on whether the application is in the foreground state or rather in the background state, operating system 220 may filter the set of available ranging mechanisms, and operating system 220 may then select from the set of available ranging mechanisms based on one or more operating characteristics required by the application.
[0073] As a specific example, if operating system 220 thereby determines that the requesting application is in a foreground state rather than a background state, then operating system 220 may, based at least on that determination, weigh its ranging mechanism selection in favor of a metric that may use more energy. On the other hand, if operating system 220 thereby determines that the requesting application is in a background state rather than a foreground state, then operating system 220 may, based at least on that determination, weigh its ranging mechanism selection in favor of a metric that may use less energy.
[0074] FIG. 4 is a flowchart illustrating an example method that may be implemented in accordance with the present disclosure to facilitate application control over ranging.
[0075] 4 at block 400, the method includes an operating system of a device receiving a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, the ranging request specifying one or more operational characteristics that the application requires the ranging to have. Further, at block 402, the method includes the operating system selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operational characteristics required by the application. Further, at block 404, the method includes the operating system causing the device to implement the selected ranging mechanism in response to the ranging request, based at least on the selecting.
[0076] In accordance with the above description, ranging could involve determining the distance between the device and another device and / or determining the angular orientation of the other device relative to the device.
[0077] Further, as described above, the operating system may have access to mapping data correlating ranging mechanisms with ranging operational characteristics, in which case the action of selecting a ranging mechanism based on at least one or more operational characteristics required by the application may involve (i) determining, by referencing the mapping data, a given ranging mechanism that the mapping data correlates with the one or more operational characteristics, and (ii) selecting the given ranging mechanism as the ranging mechanism based on at least the determining.
[0078] Further, as mentioned above, examples of one or more operational characteristics that may be required by an application could include ranging power budget and / or ranging security. Additionally or alternatively, examples of one or more operational characteristics that may be required by an application could include ranging accuracy and / or ranging latency.
[0079] Additionally, as mentioned above, the action of selecting a ranging mechanism could be further based on a determination of whether the application is currently operating in a foreground state, or rather in a background state.
[0080] Additionally, as discussed above, the ranging request may further specify an identity associated with the other device, thereby facilitating the requested ranging.
[0081] Further as noted above, the present disclosure also contemplates a device having a processor, non-transitory data storage, and an operating system stored on the non-transitory data storage and executable by the processor, the operating system defining program instructions executable by the processor to perform operations such as those described above. Additionally, the present disclosure contemplates a non-transitory computer-readable medium having stored thereon an operating system defining instructions executable by the processor of the device to cause the device to perform such operations.
[0082] In some implementations, the operating system may respond to an application's ranging request by selecting a ranging mechanism based on a determination that the selected ranging mechanism will meet or exceed the application's specified operating characteristics, based on the operating system's evaluation of past ranging requests from the application, based on resources available to the operating system, and / or based on one or more other considerations. For example, if an application requests accurate and safe ranging every 10 minutes and requests lower-quality ranging every minute, and the circumstances are such that the device is free to provide accurate and safe ranging more frequently than every 10 minutes, then the operating system may select and invoke accurate and safe ranging for the application even though the application requests lower-quality ranging.
[0083] Although exemplary embodiments have been described above, those skilled in the art will recognize that changes and modifications may be made to these embodiments without departing from the true scope and spirit of the invention.
Claims
1. 1. A method of application control for ranging, comprising: receiving, by an operating system of a device, a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, the ranging request specifying one or more operational characteristics that the application requires the ranging to have; selecting, by the operating system, a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operational characteristics required by the application; causing, by the operating system, the device to implement the selected ranging mechanism in response to the ranging request based at least on the selecting; A method comprising:
2. The method of claim 1 , wherein the ranging includes determining a distance between the device and the other device.
3. The method of claim 2 , wherein the ranging includes determining the angular orientation of the other device relative to the device.
4. the operating system having access to mapping data correlating ranging mechanisms with ranging operational characteristics, and selecting the ranging mechanism based on at least the one or more operational characteristics required by the application; determining, by referencing the mapping data, a given ranging mechanism that the mapping data correlates with the one or more operating characteristics; selecting the given ranging mechanism as the ranging mechanism based at least on the determining; The method of claim 1 , comprising:
5. 2. The method of claim 1, wherein the one or more operational characteristics required by the application include at least one operational characteristic selected from the group consisting of: (i) a power budget for the ranging; and (ii) security for the ranging.
6. 2. The method of claim 1, wherein the one or more operational characteristics required by the application comprises at least one operational characteristic selected from the group consisting of: (i) accuracy of the ranging, and (ii) latency of the ranging.
7. The method of claim 1 , wherein the selecting the ranging mechanism is further based on a determination of whether the application is currently operating in a foreground state or, rather, in a background state.
8. The method of claim 1 , wherein the ranging request specifies an identity associated with the other device, the identity facilitating the requested ranging.
9. A device, a processor; Non-transitory data storage; an operating system stored on the non-transitory data storage and executable by the processor, the operating system defining program instructions executable by the processor to perform operations, the operations comprising: receiving a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, the ranging request specifying one or more operational characteristics that the application requires the ranging to have, the operation further comprising: selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operational characteristics required by the application; causing the device to perform the selected ranging mechanism in response to the ranging request based at least on the selecting; Including, the device.
10. The device of claim 9 , wherein the ranging comprises determining a distance between the device and the other device.
11. The device of claim 10 , wherein the ranging includes determining the angular orientation of the other device relative to the device.
12. the operating system having access to mapping data correlating ranging mechanisms with ranging operational characteristics, and selecting the ranging mechanism based on at least the one or more operational characteristics required by the application; determining, by referencing the mapping data, a given ranging mechanism that the mapping data correlates with the one or more operating characteristics; selecting the given ranging mechanism as the ranging mechanism based at least on the determining; The device of claim 9 , comprising:
13. 10. The device of claim 9, wherein the one or more operational characteristics required by the application include at least one operational characteristic selected from the group consisting of: (i) a power budget for the ranging; and (ii) security for the ranging.
14. 10. The device of claim 9, wherein the one or more operational characteristics requested by the application include at least one operational characteristic selected from the group consisting of: (i) accuracy of the ranging, and (ii) latency of the ranging.
15. The device of claim 9 , wherein the selecting the ranging mechanism is further based on a determination of whether the application is currently operating in a foreground state or, rather, in a background state.
16. The device of claim 9 , wherein the ranging request specifies an identity associated with the other device, the identity facilitating the requested ranging.
17. A non-transitory computer-readable medium having stored thereon an operating system defining instructions executable by a processor of a device to cause the device to perform operations, the operations comprising: receiving a ranging request from an application on the device, the ranging request requesting ranging between the device and another device, the ranging request specifying one or more operational characteristics that the application requires the ranging to have, the operation further comprising: selecting a ranging mechanism from among a plurality of available ranging mechanisms based at least on the one or more operational characteristics required by the application; causing the device to perform the selected ranging mechanism in response to the ranging request based at least on the selecting; 1. A non-transitory computer-readable medium comprising:
18. 20. The non-transitory computer-readable medium of claim 17, wherein the ranging includes determining at least one of a distance between the device and the other device and an angular orientation of the other device relative to the device.
19. the operating system having access to mapping data correlating ranging mechanisms with ranging operational characteristics, and selecting the ranging mechanism based on at least the one or more operational characteristics required by the application; determining, by referencing the mapping data, a given ranging mechanism that the mapping data correlates with the one or more operating characteristics; selecting the given ranging mechanism as the ranging mechanism based at least on the determining; 20. The non-transitory computer-readable medium of claim 17, comprising:
20. 20. The non-transitory computer-readable medium of claim 17, wherein the one or more operational characteristics required by the application include at least one operational characteristic selected from the group consisting of: (i) a power budget for the ranging, (ii) security for the ranging, (iii) accuracy for the ranging, and (iv) latency for the ranging.
Citation Information
Patent Citations
Wireless Discovery Location and Ranging
JP2017506006A
Communication device and communication method
JP2021081200A
Location-specific lighting control system
JP2022028741A
Bidirectional tracking system and bidirectional tracking method
US10930133B1