Systems and methods for indoor positioning

By arranging fixed node constellations in an indoor environment, using direct sequence spread spectrum and asynchronous arrival time difference technology, the problem that Bluetooth beacons cannot provide accurate three-dimensional position is solved, and a high-accuracy, low-power indoor positioning system is realized, suitable for robot and drone navigation.

CN114402535BActive Publication Date: 2025-07-29LONPROX CORP
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202080064796.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-07-29
Filing Date
2020-07-27
Publication Date
2025-07-29
Estimated Expiration
2040-07-27

AI Technical Summary

Technical Problem

Existing indoor positioning technologies based on Bluetooth beacons cannot provide accurate three-dimensional position information, and the accuracy and battery life of beacons are affected by environmental changes and power settings, which cannot meet the navigation needs of robots or drones in buildings.

Method used

Multiple fixed nodes are used to form constellations, and signal offset is calculated by transmitting and receiving ranging signals, and offset information is included in the ranging signal. The indoor positioning is performed using direct sequence spread spectrum technology and asynchronous arrival time difference method. There is no need for synchronization and coordination between nodes.

Benefits of technology

It realizes independent calculation of three-dimensional positions in indoor environments, improves positioning accuracy, simplifies the installation process, supports an unlimited number of users, reduces power consumption and reduces sensitivity to environmental changes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114402535B_ABST
    Figure CN114402535B_ABST
Patent Text Reader

Abstract

Systems and methods for determining location within an indoor environment are provided. In an embodiment, a plurality of fixed nodes are arranged as a constellation within the indoor environment. Each of the plurality of fixed nodes may be configured to: transmit a ranging signal, receive a ranging signal transmitted by one or more neighboring fixed nodes of the plurality of fixed nodes, calculate an offset between the ranging signal transmitted by the fixed node and the ranging signal received from the one or more neighboring fixed nodes, and include the offset in the ranging signal transmitted by the fixed node.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - reference to related applications

[0002] This application claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 879,884, filed Jul. 29, 2019, which is hereby incorporated by reference herein in its entirety as if fully set forth. Background of the Invention Field of the Invention

[0004] This disclosure relates to systems and methods for providing indoor positioning services. More particularly, this disclosure relates to a system having a constellation of non - synchronous wireless positioning nodes in an indoor environment that allows a roaming node to independently compute its position within the indoor environment.

[0005] Introduction

[0006] In today's mobile wireless environment, indoor location positioning is becoming increasingly important. Applications of indoor positioning can include retail, advertising, commercial, and residential environments. Currently, among many available possible indoor location solutions, solutions based on low - power beacons that employ the Bluetooth TM standard have become a popular solution for providing indoor proximity estimates to mobile devices. A mobile device that detects the transmission of a particular beacon can determine that it is near the location of the beacon by relying on an estimate of the transmitted and received signal strengths. However, such beacon technology only provides proximity information and cannot determine the three - dimensional (e.g., x, y, z) position within an indoor space.

[0007] Some beacon - based (e.g., Bluetooth) solutions may rely on an estimate of the received signal strength indication (RSSI) to estimate the distance between a mobile device and a beacon. The signal transmitted by the beacon has a known power, and the received signal strength at the mobile receiver is measured. Using a path - loss model, the system attempts to estimate the distance between the mobile device and the beacon. However, the RSSI of an RF signal can vary significantly with changes in environmental conditions, especially as the distance between the mobile device and the beacon increases. Improving accuracy may require numerous low - power beacons, which complicates installation within a given room or other space. On the other hand, the output power of the beacon can be increased to extend its range, but this results in lower accuracy and shorter battery life for the beacon. Additionally, the increased power level may cause room or floor ambiguity (e.g., by enabling the signal to travel through walls and / or floors), which adversely affects the utility of the installed beacons. Moreover, even if the distance is accurately determined, a single beacon does not provide direction information for detecting the mobile device and thus does not provide a physical location.

[0008] For some applications, it is crucial to know the exact location rather than just the proximity. For example, there are applications where robots or drones roam inside a building. Advantageously, if beacons according to the present disclosure are placed in an indoor space and each robot or drone includes circuitry according to the present disclosure for determining its exact location, navigation within the indoor space can be improved. Summary of the Invention

[0009] Accordingly, systems and methods for achieving location determination within an indoor environment are disclosed.

[0010] In an embodiment, a system includes: a plurality of fixed nodes arranged as a constellation within the indoor environment, wherein each of the plurality of fixed nodes is configured to: transmit a ranging signal, receive ranging signals transmitted by one or more neighboring fixed nodes of the plurality of fixed nodes, calculate an offset between the ranging signal transmitted by the fixed node and the ranging signals received from the one or more neighboring fixed nodes, and include the offset in the ranging signal transmitted by the fixed node.

[0011] In an embodiment, a method includes the following operations performed by a plurality of fixed nodes arranged as a constellation within an indoor environment: transmitting a ranging signal; receiving ranging signals transmitted by one or more neighboring fixed nodes of the plurality of fixed nodes; calculating an offset between the ranging signal transmitted by the fixed node and the ranging signals received from the one or more neighboring fixed nodes; and including the offset in the ranging signal transmitted by the fixed node.

[0012] In an embodiment, a system includes: a measurement node arranged within a constellation of a plurality of fixed nodes in an indoor environment, wherein the measurement node is configured to: receive ranging signals transmitted by the plurality of fixed nodes, calculate a time offset between the received ranging signals of all the plurality of fixed nodes, and broadcast the time offset within the indoor environment; and the plurality of fixed nodes, wherein each of the plurality of fixed nodes is configured to receive the time offset broadcast by the measurement node and transmit a ranging signal including the received time offset.

[0013] In an embodiment, a method includes: a measurement node within a constellation of a plurality of fixed nodes disposed in an indoor environment performing: receiving ranging signals transmitted by the plurality of fixed nodes, calculating time offsets between the received ranging signals of all the plurality of fixed nodes, and broadcasting the time offsets within the indoor environment; and each of the plurality of fixed nodes performing: receiving the time offsets broadcast by the measurement node, and transmitting a ranging signal including the received time offset.

[0014] Any one of the embodiments may include one or more of the following features: none of the plurality of fixed nodes are synchronized with each other; none of the plurality of fixed nodes communicate with any central server or other master node; and / or each of the plurality of fixed nodes uses direct sequence spread spectrum (DSSS) to transmit the ranging signal. The DSSS may use maximum code decimation. The ranging signal transmitted by each of the plurality of fixed nodes may be spread over one gigahertz wide.

[0015] In any one of the embodiments, all the ranging signals may be transmitted by the plurality of fixed nodes using the same linear feedback shift register (LFSR) polynomial code, wherein each of the plurality of fixed nodes uses a different pseudo-random number (PN) offset from all other fixed nodes among the plurality of fixed nodes, such that the ranging signal transmitted by each of the plurality of fixed nodes can be distinguished from the ranging signals transmitted by all other fixed nodes among the plurality of fixed nodes based on the corresponding PN offset. Each of the plurality of fixed nodes may be configured to: monitor the PN offsets of the other fixed nodes among the plurality of fixed nodes; and when the PN offset of the fixed node is within a threshold distance from the monitored PN offset, determine whether the fixed node should perform a PN jump based on at least one predefined criterion, and when it is determined that the fixed node should perform the PN jump, randomly select a new PN offset that does not conflict with any of the monitored PN offsets.

[0016] Any one of the embodiments may include one or more of the following features: the ranging signal transmitted by at least one of the plurality of fixed nodes uses a different polynomial code from the ranging signal transmitted by one or more other fixed nodes among the plurality of fixed nodes; and / or the offset is included in the ranging signal as one or more coefficients of a predictive modeling equation.

[0017] Any one of the embodiments may include a roaming node, where the roaming node includes at least one processor configured to: receive the ranging signals transmitted by at least three of the plurality of fixed nodes; and calculate a three-dimensional position of the roaming node within the indoor environment based on the asynchronous time difference of arrival of the ranging signals and an offset included in each of the received ranging signals. The roaming node may include one or more inertial measurement units, where the output of the one or more inertial measurement units is used during the calculation of the three-dimensional position of the roaming node. In an implementation, the roaming node never uses a reverse link from the roaming node to any one of the plurality of fixed nodes to receive the ranging signals and calculate the three-dimensional position of the roaming node. The at least one processor of the roaming node may also be configured to transmit the three-dimensional position to a remote server via at least one network. The remote server may be configured to: receive, via the at least one network, the three-dimensional position calculated by each of the plurality of roaming nodes; and provide at least one software-based service based on the received three-dimensional position of one or more of the plurality of roaming nodes.

[0018] In any one of the embodiments, each of the plurality of fixed nodes may be configured to operate in both a first mode and a second mode. In the first mode, only the forward link from the fixed node to each of one or more roaming nodes is used. In the second mode, the forward link is used and a reverse link from each of the one or more roaming nodes to the fixed node is used. Each of the plurality of fixed nodes may be configured to: monitor signals on the reverse link with a pseudo-random number (PN) offset within a threshold distance from the PN offset used by the fixed node; and when the signal is detected on the reverse link, broadcast the time and carrier offset between the detected signal and the pilot signal of the fixed node.

[0019] Any one of the embodiments may include one or more of the following features: the transmit power of each ranging signal is set such that the ranging signal is below the thermal background noise at a distance of one meter from the fixed node transmitting the ranging signal at room temperature; a calibration node including at least one processor configured to, after the plurality of fixed nodes have been arranged in the constellation and when the calibration node moves in a pattern having a known relationship with the reference of the indoor environment, calculate the positioning of each of the plurality of fixed nodes relative to the reference.

[0020] In any of the embodiments, the ranging signal may include a pilot channel, a binary offset carrier (BOC) channel, a data channel, and an acquisition channel. The data channel may use block interleaving and forward error correction (FEC) codes. The pilot channel, the BOC channel, and the data channel may use long codes, and the acquisition channel may use a short code shorter than the long code. The roaming node may include at least one processor configured to, for at least one of the plurality of fixed nodes, acquire the ranging signal transmitted by the at least one fixed node by: acquiring the acquisition channel in the ranging signal by searching for the short code of the fixed node, using the acquired acquisition channel to acquire the timing of the pilot channel in the ranging signal, and using the timing of the pilot channel to acquire the timing of the BOC channel and the data channel in the ranging signal; and after having acquired the ranging signal from three or more fixed nodes including the at least one fixed node, calculate the three-dimensional position of the roaming node within the indoor environment based on the asynchronous time difference of arrival of the acquired ranging signals and the offsets included in the acquired ranging signals. The data channel in the ranging signal transmitted by the at least one fixed node may include auxiliary information including one or more parameters of a set of neighboring ones of the plurality of fixed nodes that are neighbors of the at least one fixed node, wherein the at least one processor of the roaming node is further configured to use the auxiliary information to acquire the ranging signals of the set of neighboring fixed nodes, and wherein the three or more fixed nodes include the set of neighboring fixed nodes. The roaming node may include at least one processor configured to, for at least one of the plurality of fixed nodes, acquire the acquisition channel in the ranging signal transmitted by the at least one fixed node by searching for the short code of the fixed node; use the acquired acquisition channel to retrieve auxiliary information from a remote server through at least one network, wherein the auxiliary information includes one or more parameters of the at least one fixed node and a set of neighboring ones of the plurality of fixed nodes that are neighbors of the at least one fixed node; use the auxiliary information to acquire the ranging signals of the at least one fixed node and the set of neighboring fixed nodes; and after having acquired the ranging signals of the at least one fixed node and the set of neighboring fixed nodes, calculate the three-dimensional position of the roaming node within the indoor environment based on the asynchronous time difference of arrival of the acquired ranging signals and the offsets included in the acquired ranging signals.

[0021] In any of the embodiments, at least one of the plurality of fixed nodes is configured to transmit a packet, the packet including one or more parameters of the at least one fixed node and a set of neighboring ones of the plurality of fixed nodes that are neighbors of the at least one fixed node, wherein the packet is a Bluetooth TM packet or a Wi-Fi TM packet, wherein the system further includes a roaming node, and wherein the roaming node includes at least one processor configured to: detect the packet transmitted by the at least one fixed node; use the one or more parameters in the packet to obtain the ranging signals of the at least one fixed node and the set of neighboring fixed nodes; and after obtaining the ranging signals of the at least one fixed node and the set of neighboring fixed nodes, calculate a three-dimensional position of the roaming node within the indoor environment based on an asynchronous time difference of arrival of the obtained ranging signals and the offset included in the obtained ranging signals.

[0022] In any of the embodiments, at least one of the plurality of fixed nodes is configured to transmit a packet, the packet including an identifier of the fixed node, wherein the packet is a Bluetooth TM packet or a Wi-Fi TM packet, wherein the system further includes a roaming node, and wherein the roaming node includes at least one processor configured to: detect the packet transmitted by the at least one fixed node; use the identifier in the packet to retrieve auxiliary information from a remote server via at least one network, wherein the auxiliary information includes one or more parameters of the at least one fixed node and a set of neighboring ones of the plurality of fixed nodes that are neighbors of the at least one fixed node; use the auxiliary information to obtain the ranging signals of the at least one fixed node and the set of neighboring fixed nodes; and after obtaining the ranging signals of the at least one fixed node and the set of neighboring fixed nodes, calculate a three-dimensional position of the roaming node within the indoor environment based on an asynchronous time difference of arrival of the obtained ranging signals and the offset included in the obtained ranging signals.

[0023] In any of the embodiments, each ranging signal may include a packet, the packet including the offset, wherein each packet is a Bluetooth TM packet or a Wi-Fi TMa packet, and each of the plurality of fixed nodes is configured to transmit the packet at least ten times per second. Each of the plurality of fixed nodes may be configured for each of a plurality of time periods: generate a random number; broadcast the random number; receive the random number broadcast by other nodes among the plurality of fixed nodes; and transmit the packet according to the order of the generated random number within the received random numbers. The roaming node may include at least one processor configured to: receive the packets transmitted by at least five fixed nodes among the plurality of fixed nodes; and calculate a three-dimensional position of the roaming node within the indoor environment based on the asynchronous time difference of arrival of the packets and an offset included in each of the received packets.

[0024] In any of the embodiments, each of the plurality of nodes may also be configured to transmit both a primary ranging signal and a secondary ranging signal, and wherein the secondary ranging signal has a center carrier frequency different from that of the primary ranging signal.

[0025] In any of the embodiments, the server may be configured to: receive, from each of one or more roaming nodes in the indoor environment, an indication of the power level of one or more ranging signals as received by the roaming node, the one or more ranging signals being transmitted by a subset of the plurality of fixed nodes; apply an optimization algorithm to the received power level indication to determine one or more adjustments to the transmission power of the ranging signals transmitted by one or more of the plurality of fixed nodes; and send control instructions to the one or more fixed nodes to adjust the transmission power of the one or more fixed nodes according to the determined one or more adjustments.

[0026] Any of the embodiments may include one or more of the following features: each of the plurality of fixed nodes is configured to cycle the transmission of the ranging signal between on and off; the offset includes a time offset and a frequency offset; and / or each of one or more of the plurality of fixed nodes is housed in an enclosure providing a function other than the location determination. BRIEF DESCRIPTION OF THE DRAWINGS

[0027] Details regarding both the structure and operation of the present invention may be gathered in part by studying the drawings, in which like reference numerals refer to like parts, and in which:

[0028] Figure 1 An exemplary system for performing location determination according to an embodiment is shown;

[0029] Figures 2 to 4B An exemplary process that may be performed by various nodes in the system according to an embodiment is shown; and

[0030] Figure 5 An exemplary processing system that can execute one or more of the processes described herein according to an embodiment is shown. Detailed Description

[0031] System Architecture

[0032] The detailed description set forth below in connection with the appended drawings is intended as a disclosure of various embodiments and is not intended to represent the only embodiments in which the present disclosure may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the embodiments. However, it will be apparent to those skilled in the art that the present disclosure may be practiced without these specific details. In some instances, well-known structures and components are shown in simplified form for the sake of brevity of description. Some of the structures and components disclosed in U.S. Patent No. 10,015,769, entitled SYSTEMS AND METHODS FOR INDOOR POSITIONING USING WIRELESS POSITIONING NODES, issued on July 3, 2018, may be used in the embodiments described herein. U.S. Patent No. 10,015,769 is hereby incorporated by reference herein as if fully set forth.

[0033] Figure 1A graphical depiction of an implementation of an indoor positioning system for a mobile device. The indoor positioning system (the System) 100 may have a roaming node (RN) 102. The RN 102 may be a smart phone or other mobile electronic device including software and / or hardware as disclosed herein. The RN 102 may be communicatively coupled to a server 120 via a wide area network (WAN) or network 104. The network 104 may include, for example, the Internet and / or other suitable wireless networks. The System 100 may be associated with an indoor environment 106. The System 100 may have one or more fixed nodes (SNs) 110 located within the indoor environment 106 having the RN 102. The SN 110 may also be referred to herein simply as a beacon or a node. The SNs 110 are labeled SN 110a, SN110b, SN 110c, and SN 110d, but may be collectively referred to as SN 110. The grouping of SNs 110a, 110b, 110c, 110d may be referred to as the constellation of SN 110. Each SN 110 may emit one or more signals 112 (shown as signals 112a, signal 112b, signal 112c, signal 112D), which the RN 102 may use to determine its three-dimensional position within the indoor environment 106. The signals 112 are emitted continuously or periodically as needed. For ease of description, the SN 110 are depicted as each emitting a single signal 112. However, as described herein, each of the SN 110 may have one or more antennas, and each antenna may emit a corresponding version of the signal 112. Thus, according to the following implementations, each SN 110 may actually emit one or more signals 112 as needed.

[0034] When the RN 102 moves indoors, it may not have enough signals to provide precise positioning via, for example, Global Positioning System (GPS) signals. The RN 102 may initially determine an approximate or general physical location of the indoor environment 106 based on a rough positioning via the last known outdoor positioning (e.g., via the GPS positioning of the RN102). In some other examples, the RN 102 may determine a rough positioning based on Wi-Fi signals from one or more networks in the local area or even within the indoor environment 106. Additionally, while Wi-Fi signals may provide a general positioning (e.g., somewhere within a given building), such positioning information is still "rough" in terms of the indoor positioning system disclosed herein. In some implementations, the signals 112 emitted by the SN 110 may also include an indication of the approximate location of the indoor environment 106. In some implementations, the rough location may be the size of a local vicinity spanning one or more rooms within the identified building and is used by the server 120 to provide appropriate auxiliary information.

[0035] The SN 110 can continuously or periodically transmit and receive multi-layer ranging signals. The RN 102 can receive various signals from the SN 110 within the indoor environment 106 to determine its three-dimensional position within the indoor environment, as described herein. Optionally, the RN 102 can then report the calculated position back to the server 120. In a ranging system that requires high accuracy, complex circuits with higher power consumption can be used for higher positioning resolution. Conversely, for applications that do not require high accuracy, less complex circuits with lower power consumption can be used for lower positioning resolution.

[0036] In some embodiments, the SN 110 can be a single, independently located device with one or more antennas (e.g., four or more antennas). Alternatively, the SN 110 can be co-located with or located within various smart devices, Internet of Things (IoT) devices, and other common household appliances or systems. For example, the SN 110 can be housed within a smoke detector, alarm module, light bulb, ballast, and other IoT or smart appliances or fixtures. Such devices that house the SN 110 but provide additional functionality may be referred to herein as containment devices (CDs). In other words, a CD is generally any device that can house the SN 110. A CD such as a smoke detector or light bulb may have limited or restricted space constraints. Thus, the SN 110 in such a device may only house a single or limited number of antennas. It should be understood that the system 100 can include only CDs, standalone SNs, or a combination of CDs and standalone SNs.

[0037] The advantage of co-locating the SN 110 within a CD is the existing presence of the CD in most indoor locations. Thus, such co-location allows for a one-for-one replacement between the CD and the existing device. Additionally, these existing devices may already have a constant, continuous power supply that can be used by the CD (including the SN 110 that replaces them therein). The SN 110 co-located within the CD can utilize the pre-existing wiring and / or other electrical / electronic backbone within the indoor environment 106. In addition to a time or frequency reference, the pre-existing backbone can also provide a constant, continuous power supply. A common time or frequency reference may be important for synchronizing the timing and frequency of nearby SN 110s, as described in more detail elsewhere herein.

[0038] The CD may already perform various electronic operations independent of the SN 110. Thus, the additional silicon area required to add the positioning beacon / SN capabilities may not significantly increase the manufacturing cost. Additionally, the SN 110 can utilize the circuitry of many common circuits that already exist within the CD.

[0039] In an embodiment where the SN 110 is a stand-alone device, the SN 110 can be hardwired to a continuous power source within the indoor environment 106 or can have an independent power source such as a battery. As described elsewhere herein, some embodiments of the SN 110 can have four or more antennas. A single SN 110 having four or more antennas can independently provide a three-dimensional position to the RN 102.

[0040] In some embodiments, the system 100 can allow an unlimited number of simultaneous users. That is, any number of RN 102 can be present within the indoor environment 106 and use the SN 110 to determine a three-dimensional position within the indoor environment 106.

[0041] The system 100 can be an indoor micro-positioning system that provides high accuracy and high availability and supports an unlimited number of simultaneous users (e.g., multiple RN 102), has high immunity to multipath indoor environments, and is easy to install by untrained personnel. The system 100 can include a stationary node (SN), a roaming node (RN), and a calibration node (CN). The system 100 can also include a central management and application server 110.

[0042] The SN 110 can use direct sequence spread spectrum (DSSS) to transmit specially designed ranging signals. The RN 102 entering and / or roaming within the indoor environment 106 receives these ranging signals from the fixed SNs and calculates its own three-dimensional position relative to the system reference. The system 100 can also have one or more calibration nodes (CN) 114. The CN 114 can be similar to the RN 102 but have additional capabilities. They are used to calibrate the system during installation. The indoor positioning system 100 uses the unsynchronized time difference of arrival (UTDOA) at the receiver within the RN 102 to determine the position of the roaming node (RN). The RN 102 within the area covered by the constellation of SN 110 measures the timing of all ranging signals from all detected SN 110. With knowledge of the physical location of the SN 110, the RN 102 can then calculate its own position relative to the system reference.

[0043] Unsynchronized time difference of arrival (UTDOA)

[0044] Compared with the UTDOA of system 100, the Time of Arrival (TOA) system assumes that the SNs are all synchronized both in time and frequency. Additionally, in TOA, it is often also assumed that the RN is synchronized with the SN in time and frequency. This is generally inefficient. If all the clocks are synchronized, each SN marks the time of transmission of its ranging signal on the transmitted signal. When received by the RN, the RN timestamps it with the reception time. Since all the clocks are synchronized, the time difference between the marked transmission time and the marked reception time is the free-space propagation time. Using the speed of light, the distance from the SN to the RN can be calculated. Knowing the distances to three physically non-intersecting and non-linear SNs, the RN can calculate its position. In addition to timing the arrival of the signal, the RN also needs to know the positioning of the SN relative to the system reference. Therefore, there must be a way to convey to the RN the positioning of the SN from which it receives the ranging signal.

[0045] In practice, it is not efficient for the RN's clock to be synchronized with the SNs. Therefore, the RN can only measure the differences in the times of arrival of signals from the SNs, but due to the clock offset between the RN's clock and the synchronized clocks of the SNs, the absolute time of free-space propagation cannot be determined. Traditional Time Difference of Arrival (TDOA) solves this problem by requiring the RN to capture the ranging signals from four SNs (i.e., instead of three SNs as used for TOA). Therefore, for the additional unknown clock biases, an additional equation must be solved.

[0046] In system 100, the SNs 110 do not have to be synchronized. Instead, the clock and frequency offsets between the SNs 110 may be slightly random with respect to each other. However, each SN 110 continuously measures and broadcasts these time differences and frequency offsets, enabling the RN 102 to calculate its position when it receives the ranging signals and the broadcast corrections from the four SNs 110. Thus, in one embodiment, the SNs 110 are not synchronized.

[0047] Advantages of UTDOA

[0048] The UTDOA of system 100 offers several important advantages. UTDOA makes it possible to deploy system 100 in isolated coverage islands known as constellations of SNs 110 without the need for a management server or a master SN. This facilitates easy installation, which can simply involve placing multiple SNs 110 within the indoor environment 106.

[0049] UTDOA also handles the situation where neighboring constellations can still serve an RN 102 within the coverage of both of them without reliable RF visibility between each other and without requiring the two neighboring constellations themselves to be synchronized to a common reference.

[0050] Installation without a master node server

[0051] Advantageously, UTDOA enables the random deployment of SNs 110 without unified coordination. In the early stages of deployment, system 100 can resemble multiple disjoint islands (e.g., adjacent SNs 110 or adjacent constellations). Each of these islands can have its own sense of time and frequency. As these islands get closer to each other, they start to detect each other. If, as in GPS, all SNs 110 had to be synchronized to a common clock, a common clock would have to be selected. Additionally, even if two constellations agreed on which time reference to follow and aligned themselves to one reference, they would start to drift apart as SNs 110 failed along the boundary to effectively disconnect the islands. The RN 102 that detects signals from both constellations would stop working.

[0052] Solving the Adjacent Constellation Problem

[0053] Another problem is that constellation synchronization within disjoint islands takes time. In systems that require global synchronization before becoming available, operations are delayed while all SNs 110 synchronize with each other. If SNs 110 are embedded in CDs (e.g., light bulbs) that turn on the moment a user enters a room, waiting for all SNs 110 within the constellation to fully synchronize would limit the utility of system 100. However, for UTDOA, the SNs become immediately available to the RN 102 upon power-up because synchronization is not required.

[0054] In UTDOA, each SN 110 models the clocks of other SNs 110 based on its own repeated measurements. Each SN 110 is able to project these measurements over the time between these measurements. Therefore, less frequent broadcast updates of continuously drifting offsets are required.

[0055] Apparent Time Difference of Arrival

[0056] The measured pseudo-random number (PN) offsets are the apparent time differences of arrival. However, they include the free-space propagation time between two SNs 110 as well as the time difference between the internal clocks of the two SNs 110. The free-space propagation delay will be added to the measurement seen by either SN 110, while the internal clock time difference will be added to the measurement seen from one side and subtracted from the measurement seen from the other side. The RN 102 that sees the ranging signal and reads the data channels of the two SNs 110 can subtract these reported time measurements to cancel out the free-space propagation time, so as to obtain an amount equal to twice the clock difference. The RN 102 can then use this clock difference to adjust the arrival time of the ranging signal, all according to a time reference.

[0057] Insensitive to Clock Reference Errors

[0058] Since there is no need to lock frequencies between SN 110s, the time difference between the clocks of SN 110s can drift in time. A one part per million (1 ppm) error between local reference oscillators will result in 250 chip drifts in one second. Given that data frames containing information about these clock differences between SN 110s occur once per second, the information contained may have drifted slightly by the time it is used. For this reason, in an embodiment, SN 110s model clock drift based on repeated code and carrier offset measurements and broadcast model parameters to allow for projected mutual time difference drift correction between detected SN 110s.

[0059] Advantages of Best Effort Frequency Alignment

[0060] Although no longer required to lock to a frequency, it is recommended that SN 110s within a constellation do their best to get as close as possible to a common frequency. Thus, an SN 110 can drive its local reference oscillator to a value that is the median of the reference frequencies of all detected SN 110s. Over time, the SN 110s in the constellation will lock or nearly lock to the frequency. This can be used to reduce the acquisition time for an RN 102 to enter the constellation from a cold start. It also minimizes the time drift between the clocks of SN 110s, thereby improving the accuracy of reported time differences and improving the modeling of such time drift. Additionally, if SN 110s are close in frequency, their sense of time relative to each other drifts rather slowly, which reduces the likelihood of PN offset conflicts and the need to schedule PN jumps to avoid possible PN offset conflicts between SN 110s.

[0061] Forward Link Only Normal Operation

[0062] The RF links from one SN 110 to other SN 110s, RN 102s, and CN 114s are referred to as forward links. The RF links from an RN102 or CN 114 back to an SN 110 are referred to as reverse links. In system 100, the primary operating mode is to use the forward link only for position determination. Forward link only operation allows for an unlimited number of simultaneous users (e.g., RN 102s) in, for example, a stadium or other crowded venue. It also allows each RN 102 to continuously measure and track ranging signals to achieve very fine position determination averaging and improvement. For each ranging measurement, other systems that rely on round-trip delay for positioning need to establish a dedicated two-way link between the RN and the SN. This limits the number of users and the available accuracy because individual users are not allowed to stay on each link to improve accuracy in these two-way links.

[0063] An SN 110 may also optionally transmit Bluetooth TM or Wi-Fi TMPacket.

[0064] In a typical TDOA system (such as the well-known GPS), the SNs must be synchronized in time and frequency. In system 100, the SNs 110 are not synchronized in time or frequency. Instead, each SN 110 listens to all other nearby SNs 110 and continuously measures the time difference and frequency offset between itself and all other SNs 110 it sees. This SN 110 can then continuously broadcast this information in one or more signals 116. The RN 102 can use these broadcast measurements to correct the time and frequency measurements between the SNs 110, and then can perform the mathematics as if the SNs 110 were synchronized in time and frequency. In other words, in system 100, the RN 102 can assume the SNs 110 are not synchronized and use the reported mutual SN 110 offset measurements (e.g., in signal 116) in order to successfully calculate the position based on TDOA trilateration. This is referred to herein as unsynchronized time difference of arrival (UTDOA). Figure 1 The arrows representing the signals 116 in the figure show that each SN 110 can transmit information to and receive information from all other SNs 110 within range. System 100 can use UTDOA to facilitate the random deployment of an adjacent constellation of SNs 110 without the need for a master coordinator or master planner because there is no concept of absolute time. In other words, another SN 110 can always be added, and no SN 110 has a higher rank than any other SN 110, and each additional SN 110 does not need to know what the correct absolute time is that the other SNs 110 are using. This greatly simplifies the deployment and installation for the user.

[0065] In an indoor environment 106, the main limitation on accuracy is expected to be multipath. This multipath can be mitigated by using a wide signal bandwidth. For example, the ranging signal transmitted by the SN 110 can be spread using a spreading rate of 250 megachips per second (MCPS). System 100 can implement direct sequence spread spectrum (DSSS) technology to perform this spreading using a PN code. The spread signal is not filtered before transmission. The main sin(x) / x-shaped spectral lobe spans a bandwidth of 500 MHz. Including two more lobes (one on each side of the signal) results in a 1 GHz wide bandwidth. In an embodiment, the signal is centered at 4.0 GHz. In order not to interfere with the primary users of the spectrum around 4.0 GHz, the ranging signal can be transmitted at below -50 decibel-milliwatts (dBm). This ensures that for any receiver more than 1 meter away from the SN 110, the signal will be below the thermal background noise at room temperature. Given the wideband spread of the signal, it will also appear as noise to the receiver.

[0066] The installation may include placing a plurality of SNs 110 in the vicinity of an indoor environment 106, for example. The locations of these SNs 110 should be selected to optimize coverage. After installation and power-up of the SN constellation, the installer may use the CN 114 to calibrate the system 100. Calibration of the system 100 involves finding the positions at which the SNs 110 have been placed. This may be done by moving the CN 114 in a pattern that has a known relationship to a reference in the coverage area of the SN constellation. The pattern may be derived from previous installations of different systems 100. The CN 114 acts as an RN 102 and measures the timing of the ranging from each SN 110 at a plurality of known positions relative to the system reference. This generates sufficient information to calculate the three-dimensional position of each SN 110. This information is uploaded to each SN 110 such that each SN 110 can broadcast it to RNs 102 entering the indoor environment 106.

[0067] In some embodiments, the SN 110 may transmit one or more signals. In some implementations, the SN 110 may transmit at least four channels. These four channels may include a pilot channel, a binary offset carrier (BOC) ranging channel, an acquisition channel, and a data channel.

[0068] Pilot ranging channel (pilot) . In an embodiment, the pilot is spread at a rate of 250 MCPS. It uses a PN code obtained from a 32nd order maximum polynomial generated by a 32-bit linear feedback shift register (LFSR). It is transmitted on the in-phase part of the carrier (i.e., on the I baseband channel). The 32-bit PN code has an untruncated LFSR period of 2^32 - 1 chips.

[0069] BOC ranging channel (BOC)。The BOC channel uses Binary Offset Carrier modulation and thus gets its name. Compared with the pilot spreading rate, the BOC channel uses BOC(0.5,1). In other words, this BOC uses a PN code generated by an LFSR with a spreading rate of 125 MCPS, which is then multiplied by a 250 MHz square wave. BOC uses a 32-stage spreading polynomial. This means that BOC has a period of 2^32 - 1 BOC chips or 2×(2^32 - 1) = 2^33 - 2 pilot chips. The system design uses pilots to assist in the decoding of the BOC channel. This is important because detecting the arrival peak of a BOC signal can lead to ambiguity due to multiple correlation peaks of the BOC signal. Therefore, once the pilot timing is acquired, the system can fully determine the timing of the BOC signal that has not been acquired. Therefore, the timings of BOC and the pilot should be fully synchronized. Since the LFSR of BOC runs at half the pilot spreading rate and since both use 32-bit LFSRs, every time the BOC code rolls over, the pilot code rolls over twice. This means that once the pilot timing is acquired, the timing of BOC can be one of two possibilities. These two possibilities are exactly half of the BOC PN roll separation. The BOC energy can be searched for among these two possibilities to resolve this ambiguity. It should be noted that the inherent ambiguity in BOC(0.5,1) having multiple peaks around the main peak is orthogonal to the two-position ambiguity between the pilot and BOC which is exactly half of the BOC PN roll separation. Therefore, once the BOC energy is found in one of the two possibilities, the pilot timing exactly shows where the center peak of BOC is. Therefore, the system 100 is robust to the BOC multipath search ambiguity.

[0070] The above method of looking for BOC energy in one of two places once the pilot is acquired assumes that the data channel has not been acquired. If the data channel has been acquired, then the BOC timing is known without any ambiguity, as will be demonstrated from the structure of the data channel later.

[0071] The BOC channel has rich higher frequency components and places more power in the regions of the spectrum sparsely populated by the pilot, the acquisition channel (AC), and the data channel (DC). The higher frequency components allow for a better estimation of the ranging time. BOC is intended to be used when both the available signal-to-noise ratio (SNR) and the required accuracy are high. Similar to the pilot, BOC is transmitted on the in-phase part (I) of the carrier. An additional advantage of BOC is that in the spectrum, it mainly resides where the pilot does not provide and thus BOC provides higher performance when in use, where the SNR penalty for the pilot is small under normal operation. BOC is transmitted at a lower power level relative to the pilot channel.

[0072] Acquisition channel (AC).The acquisition channel is designed to assist in the acquisition of the pilot. The acquisition channel is spread at the same rate as the pilot (at a rate of 250 MCPS). However, the acquisition channel uses a shorter polynomial with a shorter period. The acquisition channel uses a 16th order polynomial that governs a 16-bit LFSR PN generator, which is spread at a rate of 250 MCPS. Therefore, the period of the AC code is 2^16 - 1 = 65535 chips. This period divides the period of the pilot long code, and thus, the two always remain consistent.

[0073] The acquisition channel is transmitted at a lower power level relative to the pilot. The acquisition channel is transmitted at this lower power because it is primarily used by RN 102 to acquire the first SN 110 in the constellation from a cold start. Therefore, the first SN 110 that the RN 102 expects to see and the only acquisition channel it needs to see will be a nearby SN 110 with a high SNR. The acquisition channel is transmitted on the quadrature phase of the carrier (i.e., the Q channel).

[0074] Data channel (DC) This channel transmits the information required for the receiver to perform position determination. It also transmits auxiliary data to help the receiver more efficiently acquire the ranging signals of other neighboring SNs 110. DC is spread using a 32nd order polynomial different from the polynomial used by the pilot, and is spread at a rate of 250 MCPS using a 32-bit LFSR. This channel carries data bits containing the information required for the RN 102 to perform successful RN position determination. The period of each data bit must have a known relationship with the pilot long code so that the pilot serves as the primary timing reference. The RN 102 can first acquire the AC channel to narrow the search for the pilot. After acquiring the pilot, the RN 102 uses the timing of the pilot to infer the timing of the data channel. As will be demonstrated later, based on the processing gain requirements and the required data rate, each bit in the data channel spans 131070 chips. Dividing the long code period by 131070 gives 32768.5. This means that there are 32768.5 bits in each pilot PN roll. The bit boundaries are aligned with every even pilot PN roll. Therefore, after acquiring the pilot, the timing of the data channel is known with one of two options of ambiguity.

[0075] Examples of some of the data that can be transmitted on this data channel are the physical location of the SN 110 and the timing offset measured by the SN 110 between itself and its neighboring SNs 110. The data channel can also provide auxiliary information to help the receiving RN 102 acquire the ranging signals of other neighboring SNs 110. The data channel is transmitted in the quadrature phase of the carrier (i.e., on the Q channel). The power level of the data channel is equal to the power level of the pilot.

[0076] Forward and reverse link operations

[0077] In an embodiment, system 100 is flexibly designed to allow ranging operations to be performed using the reverse link. For example, RN 102 may transmit a ranging signal for use by SN 110 and other nearby RNs 102. This may be advantageous in some cases.

[0078] This can occur in two modes:

[0079] - Sporadic Reverse Link Mode (SRM): RN 102 does not frequently transmit on the reverse link.

[0080] - Continuous Reverse Link Mode (CRM): RN 102 continuously transmits on the reverse link.

[0081] In SRM, RN 102 sporadically and for a relatively short time transmits on the reverse link when needed. This can be used for RN 102 to immediately synchronize to the absolute carrier phase of the SN when entering the indoor environment 106. This mode can be supported even in a crowded deployment because the reverse link is only briefly used by RN 102 to synchronize to the absolute phase. RN 102 then relies on phase tracking to maintain synchronization with the absolute carrier phase. Additionally, CDMA allows multiple RNs 102 to use the reverse link simultaneously.

[0082] SRM is a very powerful operating mode of system 100. The RN 102 transmitting on the reverse link can use it to measure the reciprocal long code PN offset from the SN 110 it intends to communicate with in the reverse direction. This makes acquisition at the receiving SN 110 trivial. The reverse link signal also has a known phase relationship with the carrier phase of the SN 110 as detected by this RN 102.

[0083] The main reason for SRM is to provide absolute carrier phase information to RN 120. RN 102 only needs to do this with one SN 110 in the constellation because the carrier phase difference between SN 110s within the constellation is being continuously measured and broadcast. RN 102 can select the SN 110 with the highest SNR and transmit a reverse link with a PN offset very close to the selected SN 110. The SN 110 expecting SRM reverse link operation continuously searches for reverse link traffic with a PN offset very close to its own. When the reverse link signal is acquired, this SN 110 starts broadcasting on its own data channel (DC) the time and carrier offset measurements of the reverse link compared to its own pilot. This data provides enough information to the RN 102 transmitting the reverse link to determine the absolute time and frequency offset between itself and this SN 110. It also allows this RN 102 to immediately know the absolute difference in both time and frequency between itself and all other visible SN 110s within the constellation. Once this is determined, RN 102 can stop transmitting on the reverse link and maintain carrier and code phase lock by tracking. The transmitting RN102 uses power control based on the strength of the received signal from the SN 110 to which it transmits reverse link traffic, in order to reduce interference with other devices and increase multi-user operation.

[0084] In CRM, the role of RN 102 is similar to that of SN 110. Due to the multi-user support of code division multiple access (CDMA) modulation used in the system, multiple RN 102s can transmit on the reverse link simultaneously. This can double the number of measurements, and in the case where RN 102 can use the ranging signals from other RN 102s, it can improve coverage.

[0085] In CRM, the role of RN 102 is similar to that of SN 110. The only difference is that the RN 102 performing CRM needs to update its position frequently and continuously broadcast this update to other SN 110s or RN 102s. This is because, unlike SN 110, it is assumed that RN 102 is mobile. All other aspects of operation are the same as those of SN 110 on the forward link, except for using differential spreading polynomials on the reverse link. This mode can be used in sparsely covered areas with a small number of users, such as for residential areas. It is also very useful in indoor automation environments, where some robots (such as RN 102) can provide ranging signals to other robots that may be partially blocked by the SN constellation, thus improving availability.

[0086] In any mode, the RN 102 operating according to the primary mode of the system 100 that uses only the forward link is completely unaffected. In other words, the system 100 can support the reverse link mode for some RN 102s while still supporting an unlimited number of forward link-only RN 102s. These reverse link transmissions can also include data channels with content similar to the forward link.

[0087] In CRM, the Acquisition Channel (AC) is transmitted. However, in SRM, the acquisition channel is not necessary and may not be transmitted.

[0088] In an embodiment, there is a field in the data channel of the SN 110 to indicate to the listening RN 102 whether reverse link transmissions are allowed in the vicinity. For example, in a large venue (such as a stadium) with good coverage of the SN 110 and potentially a large number of simultaneous users, the system 100 can be configured not to allow reverse link transmissions or to allow only limited use of the reverse link. Conversely, in an environment with a small number of simultaneous users, the system 100 can allow reverse link transmissions to improve coverage and accuracy.

[0089] In an embodiment of the system 100 that includes the server 120, the server 120 can manage the permissions for the RN 102 to use the reverse link. In the absence of the server 120, each SN 110 can locally decide whether to support reverse link operation.

[0090] BTLE advertisement packet

[0091] Optionally, the SN 110 can additionally transmit Bluetooth TM Low Energy (BTLE) advertisement packets, referred to herein as Bluetooth TM LE packets (BTLE packets). As specified in the BTLE standard, these BTLE packets do not need to coordinate with other BTLE activities and can therefore be transmitted as long as the channel is clear and can contain the data payload that needs to be transmitted. These packets are transmitted several times per second at +10 dBm in the 2.4 GHz ISM band, up to 10 times per second. These BTLE packets have at least two uses, including:

[0092] - Assisting the RN 102 in acquiring the ranging signal of the SN 110.

[0093] - Allowing a simple RN 102 with only a Bluetooth TM receiver to use the system 100 for position location.

[0094] Using BTLE packets to assist in acquisition

[0095] The first use of these BTLE packets is to reduce the system acquisition time for RN 102's first entry into the SN constellation. These BTLE packets advertise the presence of SN 110 and auxiliary information to assist RN 102 in acquiring the primary SN ranging signal, as in SN 110, the transmission time of these BTLE packets is very precisely aligned with the timing of the broadband ranging signal.

[0096] The BTLE packet can include in its payload information on the exact PN offset state of the originating SN 110 at the time of transmission of the BTLE packet. Even in the case of commercially available BTLE receivers without additional strict timing, the arrival time of the BTLE packet can be estimated to be better than 1 microsecond. Combined with the payload data that notifies RN 102 of the exact time of transmission of the BTLE packet, this narrows the pilot search window where RN 102 is located to less than 250 chips. This helps RN 102 to instantaneously acquire the pilot channel of SN 110 from which the BTLE packet is transmitted.

[0097] In addition to the above, if the carrier phase progression of these BTLE packets is measured on a packet-by-packet basis, RN 102 is able to estimate the frequency offset of SN 110 relative to RN 102 and reduce or eliminate the need for frequency offset search.

[0098] Position determination using BTLE packets

[0099] In an embodiment, the payload of the BTLE packet contains sufficient information for RN 4102 to calculate its location without demodulating the data channel. In fact, if the transmission timing of the BTLE packet is precisely coordinated with the PN code in SN 110, and if the arrival time is also precisely timed with the local PN timing of the RN, and given the accuracy of the reported PN frequency offset within the payload packet, the BTLE packet can be used to determine a relatively accurate location even without demodulating the high-bandwidth ranging signal. This is because similar to the relative timing between PN codes in SN 110 within the constellation, the relative transmission timing of these BTLE packets from SN 110 within the constellation is precisely timed. Additionally, the relative time and frequency differences between neighbors can also be broadcast in their BTLE packets. This means that a Bluetooth TM receiver with precise firmware timing should be able to produce a very accurate location. This may not produce the same accuracy or robustness to multipath as the broadband ranging signal, but it should produce a more accurate location than what is currently achievable by Bluetooth TM LE using RSSI. By only requiring a Bluetooth TM receiver, this mode allows for faster penetration into the smartphone market as the implementation of the above is expected to be a firmware change in the current Bluetooth TM modem chip within the smartphone rather than a hardware change.

[0100] This should facilitate early adoption in the smart phone market of applications that do not require the robustness and multipath resistance of broadband ranging signals. The tight synchronization of these BTLE packets will result in better location determination compared to any other currently existing system that uses BTLE packets. Given that the timing of these BTLE packets is applied to ranging and not just for aiding acquisition, the BTLE receiver's estimate of their time of arrival should be much more stringent than currently specified in the general BTLE standard. This is further detailed elsewhere in this document.

[0101] Problems with BTLE Packets for Ranging

[0102] As previously mentioned, BTLE packets can be used as ranging signals. This is because the transmissions of these packets can be timed very precisely relative to each other. This can be done because the SN 110s within the constellation use broadband ranging signals to continuously measure and report their relative code, carrier, and frequency offsets from each other. By reporting the moment when a BTLE packet is transmitted, the precise timing of this event is known relative to the internal PN offset of the originating SN 110 and to all SN 110s within the constellation. When using BTLE packets to aid in acquiring ranging signals, only one of them needs to be seen approximately once per second. For this reason, it is sufficient for each SN 110 to transmit a BTLE packet once per second. Additionally, there is no need to bundle these BTLE packets together. The BTLE packet transmissions from the individual SN 110s can arrive on average half a second apart. For ranging purposes, system 100 may still only require each SN 110 to transmit a BTLE packet once per second, but with the additional requirement that these BTLE packets be transmitted as close to each other in time as possible. This requirement is important for minimizing positioning error. In an implementation, up to 10 BTLE packets are transmitted per second from each SN 110 for acquisition aiding and ranging.

[0103] Using synchronized BTLE packets to determine location is the same as using broadband ranging signals in that RN 102 needs to receive signals from at least four SN 110s to arrive at a solution. RN 102 using broadband ranging signals compares the time differences of arrival between the ranging signals seen at the same moment. Assume that the signals from all visible SN 110s are measured at the exact same moment. This assumption can be made because the ranging signals are transmitted continuously and thus RN 102 can always detect them simultaneously and distinguish them due to their CDMA structure. However, this is not the case inside a Bluetooth TM receiver because Bluetooth TMThe receiver can only receive one BTLE packet at a time. Therefore, pseudorange measurements are performed at different times. Since each BTLE packet knows when it was transmitted and conveys that time to RN 102, and since all time offsets between SN 110 are measured and reported, RN 102 can adjust for different pseudorange measurement times, except for errors associated with the reference oscillator offset between the constellation and RN 102.

[0104] An example will be described. Assume that SN 110 transmits a BTLE packet at time t0 according to the clock of the transmitting SN 110, and a second BTLE packet from the same SN 110 at time t1 according to the clock of that SN. Further assume that RN 102 receives the first BTLE packet at time t2 according to the clock of the receiving RN 102, and receives the second BTLE packet at time t3 according to the clock of that RN. The flight time of the first BTLE packet is (t2 - t0 - t d ), and the flight time of the second BTLE packet is (t3 - t1 - t d ), where t d is the time error between the clock of the RN and the clock of the SN. However, if there is a frequency offset between RN 102 and SN 110 in their reference oscillators, then t d varies with time. A 1 ppm error adds up to a 1 microsecond error in one second. If it is assumed that BTLE packets are statistically on average 0.05 seconds apart, then there will be a 0.12 microsecond difference in t d between the receptions of one BTLE packet and the next. An uncompensated timing error of 0.12 microseconds is equal to a 36-meter error in pseudorange measurement.

[0105] In the above example, the two BTLE packets are from the same SN 110. In practice, the BTLE packets will be from two SN 110s that have a time offset between them. However, broadcast offset measurement allows this two-SN scenario to be made equivalent to the case of BTLE packets from one SN 110. The errors caused by disjoint measurement times can be resolved by using one or any combination of the following techniques:

[0106] - Reduce the time between the transmissions of the BTLE packets used for one positioning measurement.

[0107] - Have RN 102 estimate the frequency offset between itself and each SN 110 that transmits a BTLE packet.

[0108] - Use the signals from at least five BTLE packets instead of four.

[0109] Reduce the time elapsed between BTLE packets

[0110] In an embodiment, the time between transmissions of BTLE packets for one location measurement is reduced. In other words, system 100 attempts to make the transmission times of different BTLE packets as close to each other as possible. A BTLE packet time interval of 0.05 seconds can result in a measurement error of up to 36 meters. If the interval between transmissions of BTLE packets from different SN 110s is instead 1 millisecond apart, a 1 ppm clock error results in a 1 ns time error, which is equal to a measurement error of 1 foot. There is another reason for reducing the time between transmissions of BTLE packets for the same location calculation. This is because the RN 102 carried by the user can move. For example, in 0.1 seconds, a person walking at an average speed moves 0.14 meters. A running person can move 0.6 meters in 0.1 seconds. BTLE packets that participate in the same location determination calculation and arrive within 1 millisecond of each other will reduce the error due to the user having run 6 cm.

[0111] Grouping the BTLE packet transmission times

[0112] When using only the BTLE mode, it is necessary to group the transmission times of BTLE packets so that they occur close to each other for useful location calculations. This is because BTLE packets from a given SN 110 do not often transmit at approximately 10 times per second. A person can walk at an average speed of 1.4 meters per second. If the BTLE packets from each SN 110 have a random relationship with each other, the expected value of the separation between the mutual BTLE packets is 0.05 seconds. In 0.05 seconds, a person may have moved 7 cm. This may be acceptable for most applications, but the accuracy will be improved if the transmissions within the constellation are grouped more closely, especially for a fast-moving RN 102. The trick is to try to group the transmissions without a master scheduler for transmission. So far, it has been assumed that all SN 110s run the same software and have the same role as each other SN 110. In other words, within the constellation, all SN 110s are the same and equally dispensable. In an embodiment, this is always the case in system 100.

[0113] In an embodiment, every 2 seconds, each SN 110 generates a random number from 0 to 255 and places it in two subsequent data frames. These random numbers are seen by all SN 110s. The SN 110 with the smallest number picks a random interval between 0.15 seconds and 0.05 seconds. All other SN 110s wait for this SN 110 to transmit a BTLE packet. When this SN 110 transmits a BTLE packet, the other SN 110s detect the BTLE packet, and then all the other SN 110s transmit their own BTLE packets in the order indicated by the ascending order of their random numbers. If two SN 110s generate the same random number, the one with the lowest value MAC address goes first. This order lasts for 2 seconds. Then, another random batch is executed and the loop is repeated. This mechanism groups the transmissions of BTLE packets from each SN 110 to follow each other. At the same time, its distributed nature makes it robust to single point failures. It is expected that these BTLE packet transmissions will be within 3 milliseconds of each other, and thus greatly improve the location determination accuracy.

[0114] Estimate RN to SN frequency offset during BLTE mode only

[0115] In an embodiment, RN 102 estimates the frequency offset between itself and the constellation of SN 110s transmitting BTLE packets. In the 2.4 GHz ISM band, a 1 ppm reference oscillator error results in a 2400 Hz carrier offset. Since the BTLE packets are transmitted synchronously from each SN 110, it can be assumed that if the RN's reference oscillator has no error relative to the SN, the phase at the beginning of each packet is predictable. A few seconds after receiving a BTLE packet from SN 110, RN 102 can estimate the frequency offset with SN 110 as it examines the evolution of the phase at the same position within the BTLE packet relative to other BTLE packets. If the uncertainty of this frequency estimate reaches 100 Hz, the time error will drop from 0.5 microseconds within a second to 20 nanoseconds or 20 feet within a second. If the time between BTLE packet transmissions is within 10 milliseconds, the distance error will be 0.2 feet or 2.4 inches. Thus, by reducing the time between BTLE packet transmissions from each SN 110 and by better estimating the frequency offset, the error caused by not receiving BTLE packets simultaneously at RN 102 can be reduced.

[0116] Use ranging signals from five SNs

[0117] Signals from at least five BTLE packets (e.g., instead of four) can be used. Frequency offset can be reduced by estimating the frequency offset or by using BTLE packets that are close to each other in time to minimize the impact of frequency offset on accuracy. Another way is to solve the frequency offset. The wideband ranging signal requires at least four SN 110s because X, Y, Z, and t need to be solved to calculate the location of RN 102. d For BTLE packets, system 100 must also solve for r, which is the rate of change between the clock of RN and the clock of SN. d Over time according to t d = t d0 + rt evolves, where r is in seconds of cumulative error per second, and t d0 is the current offset between the RN and SN clocks. For each measurement, t d can be replaced in the trilateration equation with t d = t d0 + rt. It should be noted that t is the time when the BTLE packet measurement is made and is the difference for each BTLE packet measurement. However, the message in the BTLE packet has enough information to know t precisely. Therefore, although the t for each BTLE packet measurement is different, there are only five unknowns. These five unknowns are X, Y, Z, t d and r. By using five SN 110s, system 100 can solve this set of equations to calculate the X, Y, and Z of RN 102.

[0118] BTLE ranging does not require perfect absolute frequency knowledge

[0119] As previously mentioned, it is not necessary to know the frequency error of the reference oscillator of SN 110. In an embodiment, it is only necessary to know the frequency offset between SN 110s within the constellation relative to each other and broadcast this information. This also applies to using BTLE to determine location. As explained above, the estimation or calculation of r is crucial for obtaining a meaningful position determination. It turns out that the impact of frequency error is minimal compared to perfect frequency. If SN 110 has a large frequency offset compared to the perfect frequency reference, the error will be minimal. For example, assume there is a very large 100 ppm error between SN 110 and the perfect frequency reference. If the relative frequency offset between SN 110 and RN 102 is measured and corrected, this 100 ppm error will only add a 100 PPM error to the measured distance due to the error in calculating the travel distance using the speed of light and time travel. In summary, it is important to know the frequency offset between SN 110 and RN 102, but it is not important to know the error between the same set and the absolute perfect reference.

[0120] Using Wi-Fi TM for ranging

[0121] The description of ranging using BTLE packets is equally applicable to ranging using Wi-Fi TM packets. These Wi-Fi TM packet transmissions may be timed very closely to the internal PN code of the SN in the same manner as described above for BTLE packets. Additionally, the same issues that occur when using BTLE packets will occur when using Wi-Fi TM packets, and can be resolved in the same manner as discussed above regarding BTLE packets. The advantage of Wi-Fi TM over BTLE is that Bluetooth TM transmits at 1MHz bandwidth. This limits the accuracy of system 100 that relies solely on BTLE packets. In contrast, Wi-Fi TM standards allow operation at 20MHz bandwidth in the basic mode, 40MHz in the enhanced mode, and for the latest version of the standard, up to 160MHz bandwidth in the 5GHz band. At 160MHz, well-timed Wi-Fi TM packets have the potential for good accuracy. It should be noted that for both BTLE and Wi-Fi TM modes, the SN 110 still measures the timing difference between themselves and reports this timing difference in the BTLE and Wi-Fi TM data packets respectively. These measurements between SN 110 can be done using the broadband ranging signal (RS) of the SN 110. In other words, even though the RN 102 does not need to demodulate the ranging signal to determine its location, the SN 110 uses each other's ranging signals to measure the time and frequency offsets between each other.

[0122] Location server

[0123] The above system 100 includes all necessary components to produce a working solution. The system is designed with the goal of allowing any consumer to easily deploy system 100 in a residential environment. Therefore, a great deal of effort has been made to try to make the deployment as simple as possible, for example, no server or Wi-Fi TM or Bluetooth TM pairing process is required. The fact that system 100 does not require a server in a residential deployment also guarantees the privacy of users in their own homes. In an implementation, this is because the location determination is calculated in the RN 102 and only uses the forward link operation. The SN110 does not know what RN 102 is within its coverage area.

[0124] However, there are advantages to having a server for commercial deployments. Thus, while a preferred implementation of system 100 may omit server 120, alternative implementations of system 100 may include server 120. Server 120 may be one central server owned and operated at a central location and serving multiple deployments, or it may be a server owned and deployed by a customer and running authorized software with administrative-level access in case maintenance is required.

[0125] Server-assisted system acquisition and location determination

[0126] In an embodiment of the system 100 including the server 120, the SN 110 may use the nearest Wi-Fi TM Routers to relay Wi-Fi communications TM The transceiver communicates with the server 120. The RN 102 operating in the indoor environment 106 managed by the server 120 “sniffs” the BTLE pilot or Wi-Fi signal from the SN 110. TM When RN 102 detects a packet that it identifies as coming from SN 110, it may contact server 102 and use the Bluetooth of the detected SN 110 to TM or Wi-Fi TM The server 120 can then provide assistance information to the RN 102 to help acquire the constellation of the SN 110. This assistance information may include all SNs 110 in the vicinity of the RN, as well as their timing and frequency offsets relative to each other. This speeds up system acquisition and position determination because the RN 102 does not need to wait for all necessary data from the SN's data channel. Instead, the RN 102 can obtain all such necessary data from the server 120. In addition, the Wi-Fi TM The link has a much higher data rate than the data channel of the SN 110 and, therefore, all necessary performance can be obtained in a very short time and possibly more (e.g., for a large group of neighbors) compared to the data channel of the ranging signal of the SN 110.

[0127] Server higher-level applications

[0128] Once the RN 102 is able to determine its position, it may optionally transmit the data and results to the server 102. This positioning information may be used by the server 102 for higher-level applications running on the business server 102 to provide services based on the calculated position of the RN 102. In an embodiment, these higher-level applications may provide one or more services based on the calculated positions received from multiple such RNs 102.

[0129] System Calibration Assistance and Continuous Improvement

[0130] The location information fed back by RN 102 to server 120 can also be used to continuously tune system 100 towards higher accuracy and increased acquisition speed. Server 120 can also provide post-installation continuous calibration refinement by leveraging all reported measurements from all participating SN 110, RN 102, and CN114. Server 120 can also accelerate the initial calibration. When using server 120, new installations can be calibrated relative to a reference in the building. For example, this reference may be at the entrance of the building. CN 114 can be used to perform this initial calibration. Thereafter, the calculated location of RN 102 roaming within the building can be used to automatically extend the calibration deeper into the building. This is because when this RN 102 enters the building, it receives a ranging signal from SN 110 calibrated by CN114 near the entrance. As this RN 102 moves into the building, it uses its currently known location to calibrate SN 110 deeper within the building that has not yet been calibrated. The more RN traffic occurs within the building, the deeper the calibration map of system 100 extends into the building. It should be noted that this method will accumulate errors proportionally to the distance from the initially calibrated SN 110. At this time, CN 114 can be used to perform another calibration at another internal reference in the building, and this internal reference has a known relationship with the original reference at the entrance of the building. This accurately anchors the adjacent SN110, and the accuracy of the calibration map can be restored inward from this point.

[0131] In summary, server 120 allows the entire building to be calibrated by calibrating several points and leaving normal RN traffic to fill the calibration holes and continuously improve the calibration map during normal operation. In a residential setting without server 120, RN 102 (e.g., a smart phone) can include an application extension that tracks SN calibration and continues to improve SN calibration during normal use. Using the above mechanisms, the installation and calibration of system 100 are automatic and self-annealing.

[0132] Ranging Signal Details

[0133] In an embodiment, each SN 110 continuously transmits a proprietary ranging signal (RS). The ranging signal can include four channels. The first channel is the pilot channel (PC), the second channel is the BOC channel (BC), the third channel is the acquisition channel (AC), and the fourth channel is the data channel (DC). The pilot and BOC channels can be modulated on the I baseband channel, and the acquisition and data channels can be modulated on the Q baseband channel.

[0134] Ranging Signal PN Offset

[0135] In an embodiment, all PN spreading codes in system 100 are generated from a maximal polynomial where the LFSR runs through its entire period before rolling over. For an LFSR, the period will be 2^n - 1, where n is the order of the polynomial and also the length of the LFSR (in bits). As previously described, the pilot channel may use a 32-bit LFSR clocked at 250 MCPS, the BOC channel may use a 32-bit LFSR clocked at 125 MCPS internally in its BOC generator before applying a 250 MHz square wave, the acquisition channel (AC) may use a 16-bit LFSR clocked at 250 MCPS, and the data channel (DC) may use a 32-bit LFSR clocked at 250 MCPS. None of the LFSR code generators are reset or extended prematurely (i.e., by inserting zeros or ones). All generators complete their natural 2^n - 1 period before rolling over. All codes start simultaneously. The BOC period is doubled in time relative to the pilot period. Thus, once started, the BOC period and the pilot period will maintain a fixed relationship, except for trivially resolvable odd / even ambiguities. Additionally, the period of the AC divided by the period of the pilot because (2^32 - 1) / (2^16 - 1) = 2^16 + 1. Thus, once started, the AC and the pilot also maintain a fixed relationship.

[0136] As described above, it is demonstrated that system 100 can implement code division multiple access (CDMA) technology in the structure of its signals. In CDMA, multiple users using the same channel can be distinguished from each other by using different spreading polynomials (i.e., different codes) or by using the same code but having different PN offsets between users. In system 100, the receiver needs to distinguish ranging signals from multiple SNs 110. Additionally, in a single ranging signal from a particular node, the receiver needs to separate the pilot, BOC, AC, and data channels to examine them separately. In an embodiment of system 100, the pilot, BOC, AC, and data channels are distinguished from each other by using different spreading polynomials. The same four polynomials are used for all forward link channels of the entire system 100, while a different set of four polynomials is used for all reverse link channels of the entire system 100. System 100 relies on different PN offsets to distinguish the same channel from different SNs 110 or other nodes.

[0137] Random PN offsets for ranging signal channels

[0138] Ranging signals can rely on different PN offsets to distinguish signals from different nodes. Instead of assigning a specific PN offset to each node, system 100 can allow each node to randomly pick its PN offset when powered on. Thus, there is no central control, and no node has a higher rank than any other node. Therefore, system 100 does not require an entity to assign PN offsets to powered-on nodes and manage this resource. System 100 should allow nodes that unpredictably join and leave the constellation to exist. Given that PN offsets are randomly picked, two SN 110s will likely select PN offsets that look the same to the receiver, and thus it is impossible to distinguish these two SN 110s. However, at least for pilot, BOC, and data channels, the probability of conflict is quite low. If it is assumed that system 100 includes about twenty or so visible and equally strong SN 110s, a minimum separation of 83.4 chips due to a maximum 100-meter separation between the nearest and farthest nodes, and a 250 MCPS spreading rate, then the probability of a PN offset conflict between two nodes is (20×83.4) / (2^32 - 1) or one in 2.6 million.

[0139] However, the probability of a PN offset conflict on the acquisition channel is much higher, and conflicts do occur frequently because nodes do not lock to the frequency and the AC PN code period is much shorter (the period is 2^16 - 1). However, conflicts on the acquisition channel are benign. The short PN period of the acquisition channel is designed to assist system acquisition. After the acquisition channel has been acquired, the search for the pilot channel is significantly narrowed. In an implementation, the acquisition algorithm first attempts to acquire the acquisition channel. After detecting energy in a search slot, the acquisition algorithm resolves the timing of the pilot with the help of the detected short code timing of the acquired acquisition channel. Whether the successful search slot has signals from one SN 110 or multiple SN 110s, the next steps are the same. Specifically, in the next step, the acquisition algorithm will immediately know whether the slot contains energy from more than one SN 110 because although AC PN offsets can conflict frequently, the PN offsets of the pilots are less likely to conflict, as shown above. However, a method for resolving PN offset conflicts between pilot channels from multiple SN 110s is detailed below.

[0140] PN Offset Conflict Resolution

[0141] In an embodiment, when SN 110 is powered on, the SN loads its LFSR with a random initial state and starts the PN generator, but has not yet turned on its transmitter. SN 110 then listens for other SN 110s that are already operating nearby. In the case where the PN roll of the powered-on SN is within 128 chips of the PN roll of another SN 110, the powered-on SN 110 performs a random jump of the LFSR. It should be noted that since the SN 110s do not lock to a frequency, their relative PN offsets will change over time, and given the 1 PPM relative frequency offset between their reference oscillators, they change by up to 250 chips per second.

[0142] Thus, during normal operation and after power-on, each SN 110 can continuously detect its PN offset position relative to all other SN 110s it sees. If any SN 110 enters within a 128-chip PN offset relative to a neighboring SN 110, the SN 110 with the lower-value MAC address can perform a conflict avoidance PN code jump. While the example of the lower-value MAC address is used, one or more other predefined criteria can be used to select the SN 110 to perform the PN code jump. In any case, it is a random PN jump, where a random PN that does not conflict with other visible SN 110s is selected for the new PN offset. The jump is done in a synchronized manner to ensure that the new state is consistent with the newly broadcast offset measurement.

[0143] There is no limit to the frequency at which this can be done, as long as the reported measurements are always consistent with the new state of the LFSR. The selected offset and the future time at which it is applied can be communicated in advance in one of the data fields in the data channel to notify all receivers in advance. It should be noted that during this PN jump, the PN generators of the pilot, BOC, AC, and data channels can all jump the same amount simultaneously to maintain their relationship with each other. The planned PN jumps occur only at data frame boundaries. Thus, these planned PN jumps have the opportunity to occur approximately once per second.

[0144] Maximum code decimation

[0145] In an embodiment, the PN generators of all channels operate on a full maximum period of 2^n - 1 chips before repeating again. Different from GPS, the long code does not reset at any point in the sequence. Different from terrestrial CDMA cell services, zeros or ones are not inserted as padding at the end of the code roll. Thus, all the characteristics of the maximum LFSR code are maintained.

[0146] A key retained feature is the decimation ability. If instead of sampling each chip at the receiver, the sampling is decimated by an integer multiple (e.g., sampling every 5 chips), the result is a PN sequence that is a copy of the original PN sequence but time-shifted. This can be useful for using less expensive analog-to-digital converters (ADCs) and simpler devices with less processing power than would be required to process a full-bandwidth 250 MCPS signal.

[0147] Position calculation update rate and processing gain

[0148] In an embodiment, system 100 supports relatively slow-moving RNs 102 as well as fast-moving RNs 102 (e.g., building automation, robots, drones, etc.). A rule of thumb for drones is that a navigation sensor update rate of about 100 times per second is sufficient for most applications. For the pilot channel, at 250 MCPS, the relevant quantity will be about 2,500,000 chips long or less to support this update rate. Per 2,500,000 chips of the relevant quantity, the pilot channel achieves a processing gain of about 64 dB. In the case of a higher available SNR, this correlation length can be reduced at the receiver. Additionally, for slow-moving RNs 102, the default pilot channel receiver correlation length can be increased to obtain a higher processing gain under low SNR conditions. Both can be done because the pilot channel is not modulated by any data bits.

[0149] When within a variable time correlation of less than one second, the pilot channel PN code can be selected to appear as if its length is infinite. As previously mentioned, depending on the required SNR, the relevant quantity can be shorter or longer since the pilot channel does not carry any data modulation. For SN 110, the phase relationship between the PN code and the carrier must be fixed for the pilot and BOC channels to facilitate carrier phase ranging techniques. Therefore, the center carrier frequency of SN 110 must be an integer multiple of the PN spreading rate. In an embodiment, the center carrier frequency is 4 GHz, which is sixteen times the pilot spreading rate of 250 MCPS.

[0150] Pilot channel (PC)

[0151] In an embodiment, the pilot ranging channel is designed for ranging purposes only. It can be Binary Phase Shift Keying (BPSK) modulated on the I baseband channel. The pilot channel can be spread using a pseudo-random number sequence (PN) generated by a maximum length polynomial using a Linear Feedback Shift Register (LFSR). The spreading can employ Direct Sequence Spread Spectrum (DSSS) technology. The polynomial can be a 32nd degree polynomial, and thus the shift register is a 32-bit long LFSR. For a maximum length polynomial, this results in a code period of 2^32 - 1. In other words, the PN bit pattern repeats every 2^32 - 1 chips. The spreading rate is 250 mega chips per second (MCPS), resulting in a code rollover period of ((2^32 - 1) chips) / 250 MCPS = 17.17986918 seconds. Whether on the forward link or the reverse link, the pilot channel shares the same structure, but different spreading polynomials are selected.

[0152] BOC channel (BOC)

[0153] In an embodiment, the BOC ranging channel is designed for maximum accuracy for ranging purposes only. The advantage of the BOC code is that it has more energy at higher frequencies than the energy around the data channel. This results in a sharper edge transition and thus a more accurate timing solution, leading to a more accurate distance measurement. One disadvantage of BOC is that the correlation result has more than one peak, resulting in ambiguity in the detection of the central peak. Fortunately, in system 100, the pilot, data, acquisition, and BOC PN are aligned, and system 100 uses information from the timing of the pilot and data channels to resolve the correlation peak ambiguity of the BOC channel. As previously mentioned, the BOC channel can use BOC(0.5,1) relative to the pilot spreading rate with four correlation peaks.

[0154] It should be noted that the BOC PN code rolls once for every two rolls of the pilot PN code. Therefore, the pilot PN code rolls every 17.17986918 seconds, while the BOC code rolls every 34.35973836 seconds. Therefore, after acquiring the pilot channel, there is ambiguity as to whether the BOC code is in the first half or the second half of the code. This can be resolved in one of two ways.

[0155] The first is to search for the correlation energy at one of two possible positions. The double ambiguity is exactly 1 / 2 BOC PN roll apart and is thus orthogonal to the inherent ambiguity of the BOC channel with multiple adjacent peaks. Therefore, once energy is found at one of the two positions, the pilot timing allows the receiver to detect the BOC timing without any ambiguity.

[0156] The second way to solve this double ambiguity is to first demodulate the data channel. The data channel bit and frame boundary period are equal to the period of the BOC code. Thus, once the DC is demodulated, the BOC timing will be known without any ambiguity.

[0157] In an embodiment, the BOC transmit power level is lower compared to the pilot channel. This is because the pilot channel is the main ranging resource, while the BOC channel is expected to be used only for demanding applications with a relatively high available SNR. The BOC channel can be BPSK modulated on the I baseband channel. The forward link BOC channels from all nodes can use the same polynomial for the forward link BOC channels and different polynomials for all reverse link BOC channels. The BOC transmission on the reverse link is optional.

[0158] The binary signals from each of the pilot and BOC channels can be individually scaled according to the desired power level and then added together. The result can be used to modulate the I baseband channel in the ranging signal transmitter's I-Q modulator.

[0159] Acquisition Channel (AC)

[0160] In an embodiment, the acquisition channel uses a short 16-bit code that is designed to facilitate the rapid acquisition of the system. When RN 102 comes into the vicinity and assuming there is no auxiliary information available from the server 120 or via Bluetooth TM or Wi-Fi TM RN 102 attempts to acquire any acquisition channels that may be available. An exhaustive search of the 16-bit code using fast Fourier transform (FFT) techniques is also within the capabilities of modern electronics. Once the acquisition channel is acquired, RN 102 uses the recovered timing of the acquisition channel to narrow the search window for finding the associated pilot channel.

[0161] During operation, the acquisition channel is only required when RN 102 acquires the first SN 110 from a newly accessed constellation without external assistance or prior knowledge. Once an acquisition channel is detected and subsequently the associated pilot channel and data channel are detected, the acquired SN 110 provides auxiliary information to accelerate the RN's acquisition of neighboring SN 110s. This neighbor information is sufficient to narrow the pilot search window for neighbors to a much smaller window than what the acquisition channel can provide. Thus, once one SN 110 is acquired from the constellation, the role of the acquisition channel is diminished. Therefore, the first and possibly only necessary acquisition channel comes from the nearest SN 110 and will thus arrive with a robust SNR. For this reason, the transmit power of the acquisition channel can be lower than that of the data and pilot channels. The acquisition channel can be transmitted on the Q baseband channel together with the data channel.

[0162] The acquisition channel is not used in the sporadic reverse link mode (SRM) because the RN 102 that wants to use the reverse link in SRM has already acquired the constellation and already has a good understanding of the timing of all SNs 110 in the constellation. However, in CRM, the reverse link does implement an acquisition channel.

[0163] AC-assisted acquisition

[0164] In an embodiment, to acquire a ranging signal from a cold start, the RN 102 uses an FFT technique to lock onto the first acquisition channel it can obtain. This FFT technique can search in both the code space and the Doppler space. Once the acquisition channel is detected, the search window for the long code of the pilot channel is reduced from 2^32 - 1 to 2^16 + 1. Assuming there is sufficient SNR for correlation over 65,535 chips (since the acquisition channel can be detected in this way), and assuming that only the code space needs to be searched after AC acquisition (since the Doppler shift has now been resolved), the first pilot acquisition can be obtained in less than one second, followed by the neighbor list and constellation acquisition in a similar amount of time. This is very acceptable for system acquisition from a cold start.

[0165] In an embodiment, once the acquisition channel is acquired, the searcher must search for a pilot peak among one of 65,537 hypotheses. Each PN offset hypothesis differs from the others by exactly 65,535 pilot PN chips. For this reason, the searcher for locating the pilot timing must search the remaining 65,537 hypotheses, where each hypothesis is exactly 65,535 PN chips apart. This is different from a typical searcher where the search hypotheses are consecutive. Advantageously, in this embodiment of the system 100, the searcher hardware is capable of supporting two operating modes.

[0166] Data channel (DC)

[0167] In an embodiment, the data channel uses a 32-bit LFSR to generate the codes it uses. It can be spread at a primary spreading rate of 250 MCPS. Each data bit spans (2 × 65535) = 131070 chips. This gives a processing gain of 51.2 dB. It should be noted that even though each bit is 131,070 chips long, the spreading code is still 2^32 - 1 long. Therefore, the probability of a data channel collision between SNs 110 is quite low. The data channel shares the same structure on both the forward link and the reverse link, but different spreading polynomials are selected.

[0168] Data channel structure

[0169] In an embodiment, the data bit frame is aligned with the PN roll of BOC. Since the PN roll of BOC contains two PN rolls of the pilot PN roll, the data channel frame is aligned with each even pilot PN roll. In one code roll of the long BOC code, there are exactly (2×(2^32 - 1)) / 131070 = 65537 data bits. The last bit is always set to "0", leaving 65,536 bits for the payload. These 65,536 bits are divided into 32 data frames. These data frames are labeled as frames 0 to 31. The fields within each frame vary according to the frame number. Each frame contains 2,048 bits. The period of the data frame is 1.07374182375 seconds or almost one per second. To improve data reception and protect data integrity, the frame bits are covered by a 3 / 4 forward error correction (FEC) code, which uses a soft decision Viterbi decoder at the receiver. After FEC, ((2048×3) / 4) = 1536 bits are left to carry the data in the frame.

[0170] In an embodiment, block interleaving is used on the data channel to increase robustness against burst errors. This is important in embodiments where ranging signals are transmitted at very low power, as they share the spectrum with users transmitting at much higher power levels. When one of these other spectrum users is transmitting, the ranging signal has the potential to be completely blocked. Due to the use of spread spectrum modulation with high processing gain, the ranging signal already has some robustness against these interferences. This is especially true for pilots, BOC, and acquisition channels, as they do not have any data modulation on themselves. To improve data integrity in the face of burst errors that may be caused by interference, the data channel can use block coding to spread the effect of burst errors across the entire data frame, so that they can be better handled by FEC.

[0171] A 16-bit CRC code can be calculated on the first 1,520 bits of the frame and appended to the end of the frame. Thus, at the transmitter, each frame has a data payload of 1,520 bits. Once the desired information is filled, the transmitter calculates the 16-bit CRC code for these 1,520 payload bits and appends the 16-bit CRC to the end of the frame. The transmitter then block interleaves these 1,536 bits. Finally, the transmitter covers these 1,536 bits with a 3 / 4 FEC code, resulting in 2,048 bits that make up the transmitted frame.

[0172] In an embodiment, the progress of decoding the data channel is to first acquire the pilot channel. Once the pilot timing is acquired, the timing alignment of the data channel can be one of two possibilities. The receiver then attempts to decode these two possibilities. It should be noted that the wrong possibility has wrong bit boundaries and wrong field boundaries and will not pass the CRC check. Therefore, after decoding the data bits, it is easy to determine the correct option based on the successful CRC calculation on a given frame. Once the correct timing of the frame is determined, this also resolves the timing ambiguity between the BOC and the pilot channel. The receiver can now decode the BOC channel with full knowledge of the BOC timing without any ambiguity.

[0173] Fast-changing and slow-changing fields

[0174] In an embodiment, it is necessary to encode on the data channel so that RN 102 can determine its exact location without the need for information from server 120 or BTLE or Wi-Fi for UTDOA TM The minimum information of any additional information of the packet includes:

[0175] - A 6-byte MAC address that uniquely identifies each transmitting SN 110.

[0176] - The physical location of each transmitting SN 110 relative to an agreed-upon reference. Each of X, Y, and Z can use four bytes, totaling up to 12 bytes for each SN 110.

[0177] - The time offset between each transmitting SN 110 and its multiple neighboring SN 110s. This is the PN offset, but the time resolution is equal to the accuracy of the system.

[0178] - The parameters of the frequency drift model of the frequency drift of each transmitting SN 110 relative to its neighboring SN 110s.

[0179] The above list contains items that need to be updated very frequently, as well as items whose values are rather fixed. For example, it is not expected that the physical location of each SN 110 changes every second. The MAC address of each SN 110 is expected not to change. Therefore, these information words do not need to exist in each data frame. Instead, since the nodes are not frequency-locked during normal operation, the time offset between them may change continuously and rapidly. Each SN 110 models this information and only transmits the parameters of the frequency drift model rather than the actual time or frequency offset. This enables the receiver to make a forward prediction of the required state without explicitly receiving the state estimate in each frame, thereby reducing the required data bandwidth.

[0180] Data channel processing gain

[0181] In an embodiment, the transmit power of the data channel is equal to the transmit power of the pilot channel. For the data channel, the correlation period exceeds 131,070 chips. Thus, correlation over one bit period yields an almost +53 dB processing gain, including 1 dB from FEC coding. A lower processing gain can be tolerated in the data channel because, after acquiring the pilot channel, the data channel is synchronously decoded in a tracking mode.

[0182] Extended Polynomial Selection

[0183] In an embodiment, four polynomials are used in the forward link and four other polynomials are used in the reverse link. Six of the eight polynomials are 32-bit polynomials while the other two polynomials are 16-bit polynomials. At 16 bits and more so at 32 bits, there are a large number of different maximum length LFSR polynomials available for selection. Maximum length polynomials have the best autocorrelation properties. However, random LFSR polynomials may have undesirable cross-correlation properties. To minimize this effect, the eight polynomials can be selected to have the lowest (i.e., best) possible cross-correlation properties.

[0184] Acquisition Versus Tracking SNR

[0185] In a normal receiver, the SNR required for tracking is lower than the SNR required for acquiring the signal. In system 100, since an SN 110 provides assistance for listening to RN 102, acquiring the ranging signal from an SN 110 greatly reduces the search window for both PN offset and frequency offset. Thus, after acquiring an SN 110, acquiring a neighboring SN 110 requires a lower SNR and can be accomplished by directly acquiring the pilot channel without acquiring the acquisition channel. This is a significant advantage because the acquisition channel has lower power and shorter codes, where the processing gain and resulting SNR may be lower. Given any expected deployment, RN 102 is always expected to be close to at least one SN 110. In other words, it is expected that RN 102 will see at least an SN 110 where there is a robust SNR on the acquisition channel of that SN. This RN 102 can then use the data from this SN 110 to detect other SN 110s by directly acquiring the pilot and data channels, even though the SNR of their data channels may be low. As shown, system 100 takes full advantage of the fact that tracking requires a lower SNR than searching.

[0186] Multi-Frequency Auxiliary Ranging Signal

[0187] In an embodiment, each SN 110 may optionally transmit an additional ranging signal that is similar to the primary ranging signal (PRS) but at a different center carrier frequency. This additional ranging signal is referred to as the secondary ranging signal (SRS). The SRS may use a different polynomial to generate its PN sequence or may use the same polynomial as the PRS since they are separated by different center carriers. As mentioned elsewhere in this document, in an implementation, the center carrier frequency of the PRS is 4.0 GHz. The SRS may be transmitted using a carrier center frequency different from that of the PRS, but within 200 to 300 MHz of the PRS. For example, the center carrier of the SRS may be 3.750 GHz or 4.250 GHz.

[0188] In future implementations, higher carrier frequencies may be used. At that time, when performing very high-precision carrier-phase-based positioning determinations, multi-frequency operation becomes more useful in solving the integer carrier cycle ambiguity.

[0189] Limit the combined ranging signal power level to below the background thermal noise

[0190] In an embodiment, one difference of system 100 is that it limits the transmit power to below the thermal noise. This allows system 100 to use a very wide bandwidth across the frequency bands occupied and used by authorized carriers. System 100 can also cover its ranging signals with high spreading factor direct sequence spread spectrum. This ensures that the ranging signals received by any nearby receiver are structurally noise-like and far lower in power than the natural thermal background noise. Thus, system 100 can operate at any frequency and with little bandwidth limitation without interfering with other users. All SN ranging signal transmissions should remain below -70 dBm / MHz to comply with the regulations of the most stringent global regulatory authorities, thus prohibiting interference with the authorized use of the occupied spectrum. Given a spreading rate of 250 MCPS, in the case of single-frequency operation, the combined transmit power of all pilot, BOC, acquisition, and data channels from one SN 110 should remain below -50 dBm. In the case of multi-frequency operation, if the carrier frequencies of the PRS and SRS are close enough for the main spreading lobes to closely overlap, further reduction of the rating may be required. Receivers (e.g., RN 102, CN 114, other SN 110) can utilize the spread spectrum processing gain to receive the ranging signals transmitted at the set transmit power.

[0191] In alternative or additional embodiments, when SN 110 operates in a protected dedicated frequency band, the transmit power of the ranging signal can be set to be higher than the background thermal noise. In this case, a receiver (e.g., RN 102, CN 114, other SN 110) can utilize the spread spectrum processing gain to improve the SNR. In some implementations, each SN 110 can be configured to adjust the transmit power of its ranging signal based on the frequency band in which it is operating.

[0192] Ranging Signal Power Control

[0193] In an embodiment including the management server 120, RN 102 can report to the server 120 the power levels of each SN 110 that it has acquired. In a case where a SN 110 is continuously reported by all RN 102 as being louder than all other SN 110, the server 120 can instruct the loud SN 110 to reduce the transmit power of the ranging signal it emits. The server 120 can use an optimization algorithm that attempts to make all ranging signals from SN 110 reach RN 102 at as close to the same power level as possible. It should be noted that it is not possible to ensure that all RN 102 receive the same power because their distances from SN 110 may be different. However, the power control of the server 120 is aimed at reducing outliers.

[0194] Link Budget

[0195] In an embodiment, some assumptions are made to calculate the gain queue. For example, assume a line-of-sight attenuation model because any signal other than the line-of-sight signal is an undesired signal for ranging purposes. Also assume a 4 GHz center carrier, where there is an omnidirectional antenna on one side of the link and a 3 dB gain reflector antenna on the other side of the link. Additionally, assume that the transmitter and receiver can be separated by 1 meter to up to 100 meters. At 4 GHz, the free space path loss for 1 meter is -41.5 dB. For 100 meters, the path loss is approximately -81.5 dB. If the transmit is at -47 dBm, the receiver will receive the signal between -88.5 dBm and -128.5 dBm. The thermal noise at room temperature is estimated to be approximately -174 dBm / Hz. Only for the main lobe of a 500 MHz bandwidth, this is equivalent to -84 dBm. If the receiver can receive a wider bandwidth to include more side lobes, the SNR will be worse. Therefore, for any receiver more than 1 meter away from SN 110, the SN ranging signal is below the thermal noise at the input of such a receiver and should not interfere with the operation of such a receiver. System 100 may rely heavily on the processing gain to get the signal out of the background noise.

[0196] For indoor automation, an update rate of 100 times per second is assumed to be sufficient for most applications. At a chip rate of 250 MCPS and an update rate of 10 ms, there is sufficient time per update to correlate 2.5 million chips. This gives a processing gain of +64 dB, which is sufficient to robustly detect a -128.5 dBm signal. Under favorable conditions, the typical signal path loss is approximately -60 dB. In this typical scenario, the received signal from SN 110 within RN 102 will be at –110 dBm. In this case, a processing gain of +64 dB may not be required. The correlation length can then be reduced, resulting in an increased update rate. This can be important during the initial acquisition of the SN signal during a cold start of RN.

[0197] Ranging signal on / off cycle

[0198] In an embodiment of system 100, the ranging signal transmitted from SN 110 cyclically turns on and off periodically. This may be done for two reasons:

[0199] - To allow each SN 110 to receive the ranging signal from neighboring SN 110s.

[0200] - To mitigate the near / far problem.

[0201] It should be noted that all PN generators for the modulation pilot, BOC, acquisition, and data channels do not pause during a transmit off period. In other words, regardless of the output state of the transmitter, the PN generators continue to run at their normal speed.

[0202] Receiving ranging signals from neighboring SNs

[0203] In an implementation of system 100, each SN 110 must detect ranging signals from all neighboring SN 110s in order to measure time and frequency offsets and broadcast them to listening RN 102. However, given that all SN 110s transmit on the same frequency and given that the transmitted signal from one SN 110 is strong enough to block signals from all other SN 110s, the receiver of the SN may be blocked by the power of the ranging signal transmitted by the SN itself. Although CDMA allows the use of PN offsets to separate signals of the same frequency, the power difference between the transmitted and received signals at the antenna of SN 110 may be higher than the achievable processing gain. A solution to this problem is to turn the transmitter on and off in a cycle. For the pilot channel, a long code period long enough to appear truly random can be selected. In this case, even if the transmission is blocked 50% of the time, the effect will only have a -3dB impact on the SNR at the receiver. When the transmitter of SN 110 is off, the receiver of this SN 110 can now listen to all neighboring SN 110s without having to waste most of the processing power or ADC dynamic range to combat its own transmitted signal.

[0204] Since in the implementation, system 100 does not have the concept of any master scheduler, each SN 110 can randomly select a time to turn the transmitter on or off in a cycle, as long as the average duty cycle is 50%. This can be done by fixing the on-time t 开 as a part of the period of the shortest possible integration period and then randomly selecting the off-time from 0 to 2t 开 This can be done on a per-cycle time basis. The trade-off in controlling the on-time is to make it long enough so that the protection time switching overhead becomes negligible compared to the on-time, but also short enough to occur at least 10 times within the shortest correlation period at the receiver. Additionally, the random nature of the timing ensures that there is no relationship between the on-off timings of SN 110s.

[0205] This cycling of the transmitter of each SN 110 has different effects on different channels within the ranging signal. The acquisition channel specifies the minimum length of the off-period because the acquisition channel has the shortest PN code period. Within the data channel, each bit spans 131,070 chips, which is longer than the AC code period of 65,535. The code periods of the pilot and BOC channels are much longer. If the minimum requirements of the acquisition channel are met, then all requirements from other channels will also be met. Therefore, if the longest on-off cycle period allows for at least 10 cycles within the AC PN code roll period, then the rest are okay. The shortest cycle period is limited by the overhead of switching the radio frequency (RF) transmit (TX) chain. This ensures that the impact on the data channel is only 3dB, thus ignoring the impact of the negligible switching time overhead without dropping the acquisition channel or dropping data bits.

[0206] It should be noted that this Tx on-off cycle results in an average -6dB SNR loss for SN 110. However, RN 102 and CN 114 that do not use the reverse link only suffer an average -3dB SNR loss.

[0207] Benign interference of the Tx cycle

[0208] In the GSM cellular system era, this on-off hard cycle of the transmitter was picked up by nearby radios and TV receivers. More importantly, they were picked up by hearing aids and presented an unwanted tone to the users of such devices. In an embodiment, since the power transmitted by SN 110 is very low, system 100 does not produce such a problem. For example, the ratio of the GSM maximum output power to the output power of SN 110 of system 100 is more than 80dB less in power, distributed over a wider bandwidth, and hidden under thermal noise.

[0209] Mitigating the near / far problem

[0210] In an embodiment, it is expected that RN 102 may be closer to a SN 110 than other SN 110s. Assuming a SN range of 100 meters, the signal from a nearby SN 110 may be almost 60dB stronger than the signal from a more distant SN 110. The stronger SN signal will effectively block the signals of other SN 110s at RN 102. However, during the time when this nearby SN 110 turns off its transmitter, the signals from more distant SN 110s are no longer blocked. This is another advantage of cycling the ranging signal transmitter of each SN 110 periodically.

[0211] SN relative frequency offset measurement and tracking

[0212] As described above, it is preferred but not required to frequency-lock all SN 110s in the constellation. While locking the frequency is a best-effort requirement, measuring the mutual frequency offset between SN 110s is a minimum requirement.

[0213] Broadcast local frequency reference operation offset

[0214] Each SN 110 may have its reference oscillator for generating a ranging signal upon power-up. Each SN 110 may also include in its data channel any correction to the frequency of the reference oscillator that has been applied to the reference oscillator before it is used in system 100. For example, compared to the reference oscillator, SN 110 may wish to increase the operating frequency by 0.1 PPM. This means that compared to running directly from the reference oscillator, the carrier frequency, sampling clock, PN generator, and all other clocks in SN 110 run 0.1 PPM faster. SN 110 indicates that it applies this offset to its local reference oscillator when generating its operating frequency. Another SN 110 that listens to the carrier frequency of the transmitting SN 110 and reads the applied local offset broadcast on the data channel of the transmitting SN can calculate the frequency offset between its own reference oscillator and the reference oscillator of the transmitting SN 110. The listening SN then slowly applies the offset to its own reference oscillator signal so that its operating frequency reaches the median of the reference oscillators of all SN 110s within its constellation.

[0215] It should be noted that SN 110 adjusts its operating frequency to be equal to the median frequency of the reference oscillators in each SN 110, rather than the median of the operating frequencies of the SN 110s it sees. This is important because it is desired that SN 110s converge on an operating frequency that is the median of the frequencies of all their reference oscillators. This means that the constellation drives itself to the median of all the crystal oscillators in the constellation, which is a relatively constant physical quantity. In contrast, if SN 110 attempts to lock to the median of the operating frequencies of the SN 110s, system 100 will be unstable. In summary, SN 110 drifts its operating frequency slowly towards the median of the frequencies of its crystal oscillators rather than the median of its operating frequencies. This is why each SN 110 broadcasts the difference between its reference oscillator and its apparent operating frequency.

[0216] It should be understood that all references to crystal oscillators above refer to the static crystal oscillator that serves as the local reference oscillator in SN 110. This is different from the voltage-controlled crystal oscillator (VXCO) used to change the operation of system 100.

[0217] Finding the median

[0218] As an example, assume two SN 110s named SN1 and SN2. SN1 acquires the signal of SN2 and estimates the frequency offset of SN2 in the process. SN1 also receives the reported frequency offset between the RF signal of SN2 and the local reference oscillator of SN2. SN1 uses this information to calculate the frequency offset between its own reference oscillator and the reference oscillator of SN2. At the same time, SN2 does the same. SN1 then slowly converts its operating frequency to the median of all reference oscillator offsets from all other SN 110s it sees. Importantly, this conversion is very slow (e.g., about dozens of seconds) so as not to interfere with the RN frequency offset model of SN mutual time drift. It should be noted that the conversion takes about dozens of seconds because this is the time required to stabilize to less than a fraction of PPM. Assume that a 25 MHz reference oscillator and a 100 MHz VCXO trying to lock to measure an offset better than 10 parts per billion (PPB) will have a maximum update rate of once per second.

[0219] It should be noted that the frequency comparison counter within the field programmable gate array (FPGA) needs to run continuously rather than be reset at the end of each measurement. This ensures that frequency offsets less than one clock cycle will eventually accumulate to one cycle and can be measured.

[0220] Utilization of SN Frequency Tracking

[0221] Although the SN 110s within a constellation do not have to lock all reference oscillators to the same reference, making the SN 110s within the same constellation as close to each other as possible in terms of their reference frequencies leads to two optimizations:

[0222] - Accelerate the RN's acquisition of SN 110s within the constellation.

[0223] - Reduce the probability that one SN 110 needs to jump its PN generator.

[0224] Accelerated Acquisition

[0225] If all SN 110s within a constellation are close relative to their reference frequencies, all SN 110s will be acquired with the same frequency search slot at the receiver. This accelerates the acquisition and / or reduces the hardware required at the receiver.

[0226] Reduction of Necessary PN Code Jumps

[0227] Since the SN 110s in the constellation have varying reference frequencies and it cannot be assumed that their frequencies are locked, the PN code offset relationship between them relative to each other is not static. In the case of a 1 ppm difference between two SN 110s, given the spreading rate of 250 MCPS, the PN relative position can drift by up to 250 chips in one second. It should be noted that signals from various SN 110s can be distinguished from each other by their different PN offsets. This is because all SN 110s use the same spreading polynomial. This design was chosen because it simplifies installation for laypersons. With the same polynomial, system 100 should ensure that at any receiver, signals from different SN 110s arrive with different apparent PN offsets. Since all SN PN codes drift relative to each other without frequency locking, the possibility of collisions occurring on the acquisition channel cannot be ignored. However, while collisions on the acquisition channel cannot be ignored, they are benign. Fortunately, PN collisions on the pilot, BOC, and data channels, while possible, do not necessarily occur.

[0228] Consider two SN 110s. One SN 110 is closer to RN 102, while the other is farther from that RN 102. The closer SN110 is about 1 meter from RN 102, while the farther SN is up to 100 meters from RN 102. This gives a worst-case of 99 meters between the closer SN 110 and the farther SN110. At 250 MCPS, given the speed of light in free air, each chip is 4 ns or about 1.2 meters long. The closer SN 110 is a fraction of a chip away, while the farther SN is just over 83.4 chips away, resulting in a difference of 83 chips. Thus, as long as the PN offset is greater than this minimum, RN 102 should be able to distinguish SN 110s that are 100 meters apart. System 100 can be designed to ensure that SN 110s maintain an apparent PN offset separation of at least 128 chips from each other. Powered-on SN 110s randomly select starting PN offsets. Recall that the long code is 4,294,967,295 chips long. If all SN 110s within the constellation randomly pick their PN offsets, and if there are twenty SN110s with relatively equal received power in the visible constellation, the probability of a collision occurring on the ranging channel is a negligible one in 2.5 million, as shown previously. However, the short code used for the acquisition channel is only 65,535 chips long. The probability of a collision is about one in 50. Additionally, given that SN 110s slide relative to each other by up to 250 chips per second due to operating frequency offsets, collisions between the acquisition channels of SN 110s are inevitable and likely to occur. However, they are benign. However, system 100 can be designed to detect and prevent collisions on the long code as much as possible.

[0229] SN 110 continuously monitors the PN offsets of other SN 110s it sees in the constellation. By examining the PN offsets and chip drift rates relative to other SN 110s, SN 110 can estimate a future time when the two PN offsets will be within 128 chips of each other. Prior to this, the SN performs a code jump. This is a 128-chip code jump in the direction opposite to the drift direction. SN110 can broadcast the time and direction of the jump it intends to perform on the data channel and also on the BTLE pilot channel or Wi-Fi TM packets (if available). Listening SN 110s and RN 102s are aware of this upcoming event, and they jump the codes they use in the tracker of the jumping SN 110 by the reported 128-chip jump. They do this at the exact chip boundary specified by the jumping SN 110, which should be aligned with the data channel data frame boundary. Since this calibration is done synchronously in all receivers, it does not affect correlation, and the jump is transparent to the tracking receivers. When SN 110 jumps, it also adjusts the relative PN offset measurements of other SN 110s it broadcasts on its data channel.

[0230] In an embodiment, the code jump is performed simultaneously on all pilot, BOC, AC, and data channels. Since the 128-chip jump is much smaller than the period of one bit in the data channel, the impact on the encoded data channel is negligible. The code jump occurs simultaneously with the start of the data frame, and thus there is an opportunity for a PN jump once per second.

[0231] Whenever SN 110 implements a code jump, it can elude RN 102s that are searching for it. However, since SN 110 can jump at most once per second and since the searcher correlation time is within a single short code period, the effect of the jump is to disrupt 1 out of 500 search results. This is negligible. Additionally, searchers that did not find that particular SN 110 in a given search will find all other nearby SN 110s and will start tracking their data channels. Based on the information provided on the data channels of the SN 110s it sees, the searcher will be in a position to acquire the SN110 that was missed in that 1 out of 500 searches.

[0232] Different PN codes between SNs

[0233] In a commercial installation, different polynomials can be used to optimize the deployment of the constellation of SN 110s.

[0234] SN clock offset measurement

[0235] In an embodiment, each SN 110 uses the code phase to measure the PN offset between itself and a signal received from another SN 110. There are two components to this measurement. The first component is the actual PN offset in the case where the two SN 110s coincide (i.e., are in the exact same physical location). The second component is the free-air delay from one SN 110 to the other due to the fact that they are physically separated. The free-air delay appears as a positive delay at both ends. The PN offset perceived by the first SN 110 (“SN1”) relative to the second SN 110 (“SN2”) has a different sign when that offset is perceived by SN2 relative to SN1. SN1 and SN2 broadcast these measurements on their data channels (e.g., in a BTLE packet), and in embodiments that include the server 120, report them to the server 120. Subtracting these symmetric expected measurements cancels out the free-air delay, resulting in a measurement of the true PN offset as if the two nodes were physically coincident. Given the simultaneity of the measurements, it is assumed that the RF channel between SN1 and SN2 is symmetric. In an embodiment, the SN 110s only report the apparent time difference they measure on their data channels, but do not attempt to correct it or synchronize with each other. The subtraction is actually done within the RN 102 via UTDOA.

[0236] In addition to the PN offset and the free-air delay between the two nodes, the above measurements may also include RF Tx and Rx hardware delays. This is because when the Tx section is transmitting, the Rx section in any SN 110 is always listening for its own transmitted ranging signal from its Tx section. Thus, these delays are measured in a continuous loopback, and compensation is performed on the measured delays.

[0237] SN Carrier Phase Synchronization

[0238] In an embodiment, during manufacturing, the carrier phase of each SN 110 is calibrated so that the zero crossing of the carrier coincides with the code transition time. This is possible because the carrier frequency of the ranging signal is always an integer multiple of the PN code hopping rate. At the transmitter of SN 110, the ranging signal is transmitted using only the I component of the quadrature upconverter. At the receiver of another SN 110, the detected carrier phase is a function of the free space delay due to physical separation and due to the phase offset between the local oscillators of the two SN 110s. Similar to the case of code phase time difference measurement, each SN 110 reports on its data channel the measured carrier phase of the other SN 110s it sees. The phase offset due to free space propagation has the same sign on both sides, while the carrier phase offset due to local oscillator (LO) offset has the opposite sign. By subtracting the two measurements, the carrier phase offset between all LOs of all SN 110s in the constellation can be determined. Compensation for these LO phase offsets is performed at RN102.

[0239] Similar to the discussion in the previous section, the loopback carrier phase offset from the Tx part to the Rx part is performed continuously and compensation is performed in the positioning and timing equations as needed.

[0240] Solving the carrier cycle ambiguity within the RN

[0241] RN 102 can use the received phase of the 4 GHz carrier of the ranging signal to calculate a more accurate position than when relying only on the code phase. Unlike the code, the carrier is periodic. The RN receiver has a good estimate of the carrier phase it detects from each SN 110, but in order to generate a pseudorange, in addition to the residual phase it is measuring, RN 102 also needs to solve for an integer number of carrier cycles. In GPS, this can be done with external assistance or by staying at the same location for dozens of minutes while the satellite geometry evolves enough to solve the cycle ambiguity. In system 100, the 250 MCPS chip rate is only sixteen times smaller than the 4 GHz carrier frequency. At good SNR, interpolation by a factor of one hundred within the code is feasible. This immediately solves the carrier cycle ambiguity, enabling instant carrier phase measurement and achieving carrier phase millimeter accuracy. The chip rate employed in system 100 allows for the direct solution of the integer carrier cycle ambiguity up to carrier frequencies in the 25 GHz range.

[0242] System acquisition

[0243] In an embodiment, there are multiple modes for the RN 102 to perform system acquisition of the SN 110 constellation for position determination. The following modes can be used individually or in combination with other modes:

[0244] - Use the acquisition channel short code.

[0245] - Use the acquisition channel short code in conjunction with server 120.

[0246] - Use BTLE packets.

[0247] - Use the BTLE packets in conjunction with server 120.

[0248] Use the acquisition channel short code for acquisition without using a server

[0249] This is the main operating mode of the system. It requires RN 102 to acquire the ranging signal and demodulate the data channel. In this mode, RN 102 continuously searches for the SN short code used in the acquisition channel. It continuously tests all possible frequencies and code offsets. This is feasible given that the period of the data channel code is relatively short compared to the ranging channel long code. The code offset search space is 2^16 - 1 code periods, and the frequency slots are twenty 600 Hz slots in the range of + / - 6 KHz. The FFT technique is used to complete the exhaustive code search. The input data is transformed using the FFT. Then the FFTs of the twenty rotated code cycles are multiplied point-by-point with the input FFT result. Then the inverse FFT of these twenty vectors is calculated, and the peak is found. Calculations show that this can be done in an FPGA or using one of two Advanced RISC Machine (ARM) processor cores within the FPGA. The advantage of this method is that once the complete calculation is performed, all visible SN 110 are detected immediately.

[0250] Once the acquisition channel has been acquired, RN 102 then searches for the timing of the pilot channel. After the acquisition channel has been acquired, the pilot timing can be one of 2^16 - 1 = 65535 possibilities. These remaining PN offset possibilities are separated from each other by 2^16 - 1 chips. It takes approximately 262 microseconds to perform at an integration time of 250 MCPS over 2^16 - 1 chips. A parallel searcher that can search 32 PN chip position possibilities in parallel will be able to acquire the pilot timing in a little over 0.53 seconds.

[0251] Once the pilot channel timing has been determined, the timing of the data and BOC channels can be one of only two possibilities. For these two possibilities, RN 102 can decode the data channel and recover the data frame. The correct possibility will result in a correct cyclic redundancy check (CRC), and this will indicate the correct timing for both the BOC channel and the data channel. If there is sufficient available SNR and when a higher BOC accuracy is desired, then the BOC channel can optionally be acquired.

[0252] At this time, some optimizations can be carried out. Instead of waiting to obtain all acquisition channels from all SN 110s, there is enough information in the data channel of one SN 110 to help obtain the long codes of neighboring SN 110s. The RN 102 can immediately use this information when it becomes available, rather than waiting for all acquisition channels of other SN 110s to be modulated. This is a key advantage because the acquisition channel has much lower processing gain and signal power than the pilot and data channels. Increasing the system availability by enabling one acquired SN 110 to provide sufficient data and timing to acquire all neighboring SN 110s without using their acquisition channels.

[0253] Using the acquisition channel short code and performing acquisition with server assistance

[0254] This mode is the same as the above, but with the addition of an auxiliary server 120. Once the RN 102 acquires the acquisition channel of one SN110 within the constellation, the server 120 can provide auxiliary information to the RN 102, which helps to capture the long codes of all SN 110s within the constellation more quickly without having to decode the data channels of the SN 110s to obtain the required information. Basically, the RN 102 only uses the server-assisted information to acquire the pilot channels of each SN 110 and does not need to decode the data channels of the SN 110s because the server 120 provides the required information (e.g., using Wi-Fi TM ).

[0255] In this mode, the SN 110s use, for example, the available Wi-Fi TM network or other wireless networks to continuously update the server 120 with their timing and frequency measurements. The Wi-Fi TM network has a much higher data rate and higher SNR than the data channels of the SN 110s and allows for faster updates and information delivery from the SN 110s to the server 120 and from the server 120 to the RN102.

[0256] In this mode, demodulating the data channels of the acquired SN 110s is optional. However, if the RN 102 needs to utilize the BOC channel, this may be necessary, depending on the requirements of the application.

[0257] Bluetooth TM Initiated server-assisted acquisition

[0258] In this mode, RN 102 looks for BTLE packets. If it detects a BTLE packet, RN 102 knows the timing (down to a few chips) of the broadband pilot channel of the SN 110 from which the BTLE packet arrived and can quickly acquire the pilot channel in a single search. RN 102 conveys the MAC address of the detected BTLE packet to the server 120. The server 120 responds with a neighbor list of SN 110s that includes their relative PN offsets and their frequency offsets relative to other SN 110s. RN 102 uses this data to lock onto the pilot channels of all other SN 110s. The server 120 can also convey the frequency offset of this SN 110 relative to a GPS frequency reference (when available). Providing the SN status relative to GPS is useful for RN 102s that already have a good understanding of GPS timing. Using the assistance information, these RN 102s can acquire SN 110s more quickly since these RNs are familiar with GPS time and use the offset from GPS time provided by SN 110.

[0259] RN 102 uses this server information to acquire the long codes of the pilot channels of all SN 110s on the neighbor list. The neighbor list contains all SN 110s that the server 120 knows to be in the vicinity of the SN 110 with the reported MAC address from RN 102. After acquiring the long code pilot channels, RN 102 optionally begins demodulating the accompanying data channels from each SN 110. At this point, RN 102 begins tracking the pilot channels of each SN 110. Once RN 102 is tracking four SN 110s, RN 102 can calculate and continuously update its location (e.g., to the server 120).

[0260] In a server-managed system, the SN 110s can use the local Wi-Fi TM network to continuously update the server 120 with their information. The most frequent updates involve reporting the measured time and frequency offsets between a given SN 110 and its neighboring SN 110s. This is a trivial traffic burden for modern Wi-Fi TM networks.

[0261] In this mode, it is optional for RN 102 to demodulate the data channels of the acquired SN 110s. However, if RN 102 needs to utilize BOC channels, this may be necessary, depending on the requirements of the application.

[0262] Bluetooth-assisted acquisition without server assistance

[0263] In this mode, RN 102 looks for BTLE packets. When it detects a BTLE packet, RN 102 uses the timing and information of the BTLE packet to obtain the ranging signal of the SN 110 and the reported neighboring SN 110. RN 102 then begins to demodulate the data channels of each SN 110. At this time, RN 102 can track and calculate its position based on the timing of the pilot channel and the information contained in the data channels.

[0264] Ranging using only BTLE operation

[0265] In this mode, RN 102 has no ability or need to obtain the wideband ranging channel or the data channel of the SN 110. Here, RN 102 only has a Bluetooth modem with strict timing. TM In this mode, RN 102 listens to the BTLE pilot. If it can see BTLE packets from five separate SN 110s, it can calculate a robust position. RN 102 continues to listen to the SN 110s and continuously improves its estimate of the frequency offset between itself and the constellation of SN 110s that send BTLE packets.

[0266] RN 102 may at some point obtain a good enough estimate of the frequency offset to compensate for it. This will allow RN 102 to determine its location using only BTLE packets from four SN 110s, because RN 102 now knows the fifth variable of the time drift rate between BTLE packet measurements with the desired accuracy.

[0267] Ranging using only Wi-Fi TM operation

[0268] This mode is very similar to the above case of using only BTLE advertisement packets, except that it uses packets compliant with 802.11 Wi-Fi instead of BTLE packets. In both cases, the form of these packets is strictly controlled with respect to the timing of the wideband pilot channel when transmitted from the SN 110 and is carried in the payload of these packets or delivered from the server to RN 110. TM Including an IMU in the roaming node

[0269]

[0270] ​A roaming node (RN) 102 that only performs forward link ranging operations does not transmit ranging signals and thus does not require a broadband transmission chain. RN 102 has more stringent broadband requirements for the receiving chain to combat multipath signals. In other respects, RN 102 shares the same hardware requirements as SN 110. In an embodiment, RN 102 uses an inertial measurement unit (IMU) to improve positioning accuracy through Kalman filtering. Thus, a sparse Gaussian process (SGP) can use a three-axis accelerometer, a three-axis gyroscope, and / or a three-axis magnetic sensor. The use of IMU by RN 102 and CN 114 improves the system accuracy.

[0271] System calibration using calibration nodes

[0272] After placing the SN 110s, their positions should be calibrated. A calibration node (CN) 114 can be used to perform this function. Position calibration involves determining the physical location of the installed SN 110s. This location is determined relative to a selected reference. For simplicity here, it is assumed that when looking at the door from inside the room, the reference in the room is the upper left corner of the entrance door frame. However, other references can be selected. CN 114 is a composite node composed of four or more nodes located in a plane, non-collinear, and spatially separated from each other in a mechanically rigid manner. Their physical relationships with each other are fixed and known. For example, four nodes can be attached to a rigid sheet of non-conductive material, where their relative positions are determined during manufacturing. The sheet is hung on the entrance door. When hung, it is easy to establish a known physical relationship between the nodes and the upper left corner of the door. This establishes the relationship between the room reference (e.g., the upper left corner of the door) and each node. Each node then acquires the pilot and BOC channels of each SN 110 in the room. Since there are four nodes in CN 114, the positioning of each SN 110 is uniquely identified by the measurements of the ranging signals from that SN 110 when received by the four nodes in CN 114. Since the nodes are planar, there is a two-option ambiguity for the position of each SN 110. This is immediately resolved when the door swings.

[0273] Therefore, the general calibration procedure is to correctly place the composite CN 114 relative to the selected reference and then move the CN 114 a little bit. This immediately determines the positioning of all visible SN 110s in the room. Once the positions of multiple SN 110s are accurately determined, RN 102 can simply move through the venue. As RN 102 roams through the building, this will automatically calibrate more and more installed SN 110s. After that, as more RN 102s roam through the building under normal use, the system 100 can continuously improve the calibration of SN 110s.

[0274] Absolute time (LPXT)

[0275] Using UTDOA, system 100 does not need to know absolute time or a time standard to provide accurate position location. However, as an additional feature, system 100 can implement an absolute time, herein referred to as LPX time or LPXT. Under certain conditions, knowing LPXT can accelerate the acquisition of the system by RN 102.

[0276] The time reference of system 100 can be defined as starting from the first clock second of an arbitrary reference date (e.g., April 7, 2019) defined from GPS time. Using military time notation, LPXT will start at 00:00:00 for the hour, minute, and second of the reference date. At that instant, the long PN of the ranging signal will roll from the all-ones state to the next state. LPXT is maintained by counting the PN roll of the long PN code since the start time of the reference date. It should be noted that GPS time differs from Coordinated Universal Time (UTC) in that UTC occasionally slows down to correct for the deceleration of the Earth's rotation by seconds. GPS does not apply these corrections, and in the implementation, LPXT also does not apply. For example, in 2019, GPS time differed from UTC time by 18 seconds, and so did LPXT. SN110 can broadcast this difference when available.

[0277] In the implementation, April 7, 2019 is selected as the reference date. In GPS time, time is reported in terms of the number of seconds in a week and the number of weeks elapsed since the GPS start time on January 6, 1980. However, GPS only uses ten digits to report the week count. Therefore, the week count in GPS rolls over every 19.6 years. At midnight on Saturday, April 6, 2019, the GPS week count rolled over and a new count started at the first second of April 7, 2019. Starting LPXT at this rollover time requires no additional conversion steps while using contemporary dates.

[0278] Using LPXT for faster acquisition

[0279] In the implementation, as long as available, SN 110 will calculate the time difference between its internal clock and LPXT and will report this time difference in its data channel. This can help RN 102, which has a good understanding of GPS or LPXT, to perform system acquisition. However, providing this information is optional because not every SN 110 or even the constellation of SN 110s may have this information available to them.

[0280] In the case of a server 120 that knows the difference between the absolute time of the constellation and GPS time, an RN 102 that has a good understanding of GPS time and receives assistance information from the server 120 from outside the indoor environment 106 can directly lock onto the pilot channels of all nearby SNs 110 without using their acquisition or data channels. This is possible as long as at least one SN 110 within the constellation has a GPS receiver and can see the sky outside. Such an SN 110 can provide a measurement of the difference between the constellation time and GPS time to the server 120, facilitating faster acquisition by an RN 102 with a good understanding of GPS time by locking onto the timing of the cellular communication network either through having a GPS receiver or through the signal timing derived from the RF carrier and GPS.

[0281] Using LPXT to provide positioning correction absolute time

[0282] In addition to facilitating acquisition, using LPXT in the SN 110 also allows the receivers to set their clocks in a location-independent manner because the LPXT time reported by the SN 110 has been corrected for the propagation time of the signals from the GPS-locked reference within the constellation.

[0283] Exemplary process

[0284] Figure 2 An exemplary process that can be performed by each SN 110 according to an embodiment is shown. In step 210, the SN110 transmits a ranging signal. In step 220, the SN 110 receives ranging signals from each of one or more neighboring SNs. In step 230, the SN 110 calculates the offset (e.g., time offset and frequency offset) between its ranging signal and the received ranging signals from the neighboring SNs. In step 240, the SN 110 incorporates the calculated offset into its ranging signal.

[0285] Figure 3 An exemplary process that can be performed by each RN 102 according to an embodiment is shown. In step 310, the RN102 receives ranging signals from multiple SNs 110. In step 320, the RN 102 calculates its location (e.g., three-dimensional position) within the indoor environment 106 based on the UTDOA of the received ranging signals.

[0286] Using measurement nodes to report offsets

[0287] As described above, system 100 may include SNs 110 that are not synchronized with other nearby SNs 110 in time or frequency to implement UTDOA. Each SN 110 continuously listens for ranging signals from nearby SNs 110 and uses this information to measure the time and frequency errors between itself and each detected SN 110. The SN 110 then broadcasts these offset estimates to any nearby RN 102, for example, in the form of coefficients of a forward prediction modeling equation.

[0288] In an alternative embodiment, system 100 may include measurement nodes (MNs) 118. For example, each constellation of SNs 110 may include a single MN 118. The MN 118 may be placed in the middle or near the indoor environment 106 such that the MN 118 can detect signals from all SNs 110 in the indoor environment 106. For example, a convenient location would be in a smoke detector or lighting fixture within the indoor environment 106. The MN 118 knows its location relative to the SNs 110 and, similar to or the same as the SNs 110 in the previously described embodiments, is capable of estimating the frequency and timing offsets of all SNs 110 it sees. The MN 118 then broadcasts these offsets (e.g., as parameters of a forward prediction modeling equation) to the RNs 102 and SNs 110 within the indoor environment 106. Using this information, listening RNs 102 can calculate their locations using the UTDOA method described previously. Additionally, the broadcast data from the MN 118 is received by the SNs 110 and broadcast on the ranging signals of those SNs.

[0289] Using the MN 118, the SNs 110 no longer need to measure the offsets of their neighboring SNs 110 themselves. The SNs 110 can simply use BTLE packets or Wi-Fi TM packets to relay this information to the RN 102, as described elsewhere in this document. Thus, the SNs 110 can consist of a ranging signal receiver and transmitter and a BTLE or Wi-Fi TM module. This not only reduces the cost of the SNs 110 (e.g., because the SNs 110 do not need to have processing resources to measure offsets), but also reduces the power consumption of the SNs 110, making battery operation feasible for months or years, thus simplifying installation (e.g., because battery operation eliminates the need for a power main).

[0290] Figure 4AIllustrates an exemplary process executable by the MN 118 according to an embodiment. In step 410, the MN 118 receives ranging signals from all the SNs 110 in the constellation. In step 420, the MN 118 calculates the offsets (e.g., time offset and frequency offset) between the received ranging signals for all the SNs 110 in the constellation. In step 430, the MN 118 broadcasts the calculated offsets within the indoor environment 106.

[0291] Figure 4B Illustrates an exemplary process executable by each SN 110 in the constellation having the MN 118 according to an embodiment. In step 450, the SN 110 receives the offsets broadcast by the MN 118. In step 460, the SN 110 transmits a ranging signal including the received offsets.

[0292] Exemplary processing device

[0293] Figure 5 is a functional block diagram of a device for performing a method associated with Figure 1 system 100. For example, the system 550 can be used as or in combination with one or more of the RN 102, SN 110, and server 120, other user devices, computers, or equivalent platforms, devices, or processes for the above methods and various communications. The system 550 can be a server (e.g., server 120), a mobile device (e.g., RN 102 or CN 114), a transmitter or transceiver device (e.g., SN 110), any conventional personal computer, or any other processor-enabled device capable of wired or wireless data communication. As will be apparent to those skilled in the art, other computer systems and / or architectures can also be used.

[0294] The system 550 preferably includes one or more processors, such as the processor 560. Additional processors can be provided, such as an auxiliary processor for managing input / output, an auxiliary processor for performing floating-point mathematical operations, a dedicated microprocessor having an architecture suitable for rapidly executing signal processing algorithms (e.g., a digital signal processor), a slave processor subordinate to the main processing system (e.g., a back-end processor), an additional microprocessor or controller for a dual or multi-processor system, or a coprocessor. Such auxiliary processors can be discrete processors or can be integrated with the processor 560.

[0295] The processor 560 is preferably connected to a communication bus 555. The communication bus 555 may include data channels for facilitating the transfer of information between the storage device and other peripheral components of the system 550. In addition, the communication bus 555 may provide a set of signals for communicating with the processor 560, and the communication bus includes a data bus, an address bus, and a control bus (not shown). The communication bus 555 may include any standard or non-standard bus architecture, such as, for example, a bus architecture compliant with the standards promulgated by the Industry Standard Architecture (ISA), Extended Industry Standard Architecture (EISA), Micro Channel Architecture (MCA), Peripheral Component Interconnect (PCI) local bus, or the Institute of Electrical and Electronics Engineers (IEEE), including the IEEE 488 General Purpose Interface Bus (GPIB), IEEE 696 / S-100, etc.

[0296] The system 550 preferably includes a main memory 565 and may also include an auxiliary memory 570. The main memory 565 provides storage for instructions and data for programs executed on the processor 560, such as one or more of the functions and / or modules discussed above. It should be understood that programs stored in the memory and executed by the processor 560 can be written and / or compiled in any suitable language, including but not limited to C / C++, Java, JavaScript, Perl, Visual Basic,.NET, etc. The main memory 565 is typically a semiconductor-based memory, such as dynamic random access memory (DRAM) and / or static random access memory (SRAM). Other semiconductor-based memory types include, for example, synchronous dynamic random access memory (SDRAM), Rambus dynamic random access memory (RDRAM), ferroelectric random access memory (FRAM), etc., including read-only memory (ROM).

[0297] The auxiliary memory 570 may optionally include an internal memory 575 and / or a removable medium 580, such as a floppy disk drive, a tape drive, a compact disc (CD) drive, a digital versatile disc (DVD) drive, other optical drives, a flash memory drive, etc. The removable medium 580 is read and / or written in a well-known manner. The removable storage medium 580 may be, for example, a floppy disk, a tape, a CD, a DVD, an SD card, etc.

[0298] The removable storage medium 580 is a non-transitory computer-readable medium on which computer-executable code (i.e., software) and / or data are stored. The computer software or data stored on the removable storage medium 580 is read into the system 550 for execution by the processor 560.

[0299] In an alternative embodiment, the secondary memory 570 may include other similar devices for allowing a computer program or other data or instructions to be loaded into the system 550. Such devices may include, for example, an external storage medium 595 and an interface 590. Examples of the external storage medium 595 may include an external hard disk drive or an external optical drive, or an external magneto-optical drive.

[0300] Other examples of the secondary memory 570 may include semiconductor-based memories such as programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), or flash memory (a block-oriented memory similar to EEPROM). Also included are any other removable storage media 580 and a communication interface 590 that allow software and data to be transferred from the external medium 595 to the system 550.

[0301] The system 550 may include a communication interface 590. The communication interface 590 allows software and data to be transferred between the system 550 and an external device (e.g., a printer), a network, or other information sources. For example, computer software or executable code may be transferred from a network server to the system 550 via the communication interface 590. Examples of the communication interface 590 include a built-in network adapter, a network interface card (NIC), a Personal Computer Memory Card International Association (PCMCIA) network card, a CardBus network adapter, a wireless network adapter, a Universal Serial Bus (USB) network adapter, a modem, a network interface card (NIC), a wireless data card, a communication port, an infrared interface, an IEEE 1394 FireWire, or any other device capable of interfacing the system 550 with a network or another computing device.

[0302] The communication interface 590 preferably implements industry promulgated protocol standards such as the Ethernet IEEE 802 standards, Fibre Channel, Digital Subscriber Line (DSL), Asymmetric Digital Subscriber Line (ADSL), Frame Relay, Asynchronous Transfer Mode (ATM), Integrated Digital Services Network (ISDN), Personal Communication Service (PCS), Transmission Control Protocol / Internet Protocol (TCP / IP), Serial Line Internet Protocol / Point-to-Point Protocol (SLIP / PPP), etc., but may also implement custom or non-standard interface protocols.

[0303] Software and data transmitted via the communication interface 590 typically take the form of electrical communication signals 605. These signals 605 are preferably provided to the communication interface 590 via a communication channel 600. In one embodiment, the communication channel 600 can be a wired or wireless network, or any other kind of communication link. The communication channel 600 carries the signals 605 and can be implemented using a variety of wired or wireless communication means, including electrical wires or cables, optical fibers, conventional telephone lines, cellular telephone links, wireless data communication links, radio frequency (“RF”) links, or infrared links, to name just a few.

[0304] Computer-executable code (i.e., a computer program or software) is stored in the main memory 565 and / or the secondary memory 570. The computer program can also be received via the communication interface 590 and stored in the main memory 565 and / or the secondary memory 570. When such a computer program is executed, it causes the system 550 to perform the various functions of the present invention as previously described.

[0305] In this specification, the term “computer-readable medium” is used to refer to any non-transitory computer-readable storage medium for providing computer-executable code (e.g., software and computer programs) to the system 550. Examples of such media include the main memory 565, the secondary memory 570 (including the internal memory 575, the removable media 580, and the external storage media 595), and any peripheral device communicatively coupled to the communication interface 590 (including a network information server or other network device). These non-transitory computer-readable media are means for providing executable code, programming instructions, and software to the system 550.

[0306] In an embodiment implemented using software, the software can be stored on a computer-readable medium and loaded into the system 550 via the removable media 580, the I / O interface 585, or the communication interface 590. In such an embodiment, the software is loaded into the system 550 in the form of electrical communication signals 605. When executed by the processor 560, the software preferably causes the processor 560 to perform the inventive features and functions previously described herein.

[0307] In an embodiment, the I / O interface 585 provides an interface between one or more components of the system 550 and one or more input and / or output devices. Exemplary input devices include, but are not limited to, a keyboard, a touch screen or other touch-sensitive device, a biosensing device, a computer mouse, a trackball, a pen-based pointing device, etc. Examples of output devices include, but are not limited to, a cathode ray tube (CRT), a plasma display, a light-emitting diode (LED) display, a liquid crystal display (LCD), a printer, a vacuum fluorescent display (VFD), a surface conduction electron emission display (SED), a field emission display (FED), etc.

[0308] System 550 may also include optional wireless communication components that facilitate wireless communication over voice and over a data network. The wireless communication components include an antenna system 610, a radio system 615, and a baseband system 620. In system 550, under the management of the radio system 615, radio frequency (RF) signals are transmitted and received over the air via the antenna system 610.

[0309] In one embodiment, the antenna system 610 may include one or more antennas and one or more multiplexers (not shown) that perform a switching function to provide transmit and receive signal paths to the antenna system 610. In the receive path, the received RF signal may be coupled from the multiplexer to a low noise amplifier (not shown) that amplifies the received RF signal and sends the amplified signal to the radio system 615.

[0310] In an alternative embodiment, the radio system 615 may include one or more radios configured to communicate over various frequencies. In one embodiment, the radio system 615 may combine a demodulator (not shown) and a modulator (not shown) in one integrated circuit (IC). The demodulator and the modulator may also be separate components. In the incoming path, the demodulator strips the RF carrier signal leaving a baseband received audio signal that is sent from the radio system 615 to the baseband system 620.

[0311] If the received signal contains audio information, the baseband system 620 decodes the signal and converts it to an analog signal. The signal is then amplified and sent to a speaker. The baseband system 620 also receives analog audio signals from a microphone. These analog audio signals are converted to digital signals and encoded by the baseband system 620. The baseband system 620 also encodes the digital signals for transmission and generates a baseband transmitted audio signal that is routed to the modulator section of the radio system 615. The modulator mixes the baseband transmitted audio signal with the RF carrier signal to generate an RF transmitted signal that is routed to the antenna system and may be amplified by a power amplifier (not shown). The power amplifier amplifies the RF transmitted signal and routes it to the antenna system 610 where the signal is switched to an antenna port for transmission.

[0312] The baseband system 620 is also communicatively coupled to the processor 560. The central processing unit 560 has access to data storage areas 565 and 570. The central processing unit 560 is preferably configured to execute instructions (i.e., computer programs or software) that may be stored in the memory 565 or the secondary memory 570. The computer programs may also be received from the baseband processor 610 and stored in the data storage area 565 or the secondary memory 570, or executed upon receipt. Such computer programs, when executed, enable the system 550 to perform the various functions of the present invention as previously described. For example, the data storage area 565 may include various software modules (not shown).

[0313] Other aspects

[0314] References throughout this specification to "one embodiment", "an embodiment", "some embodiments", etc., mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of these phrases in this specification are not necessarily all referring to the same embodiment. Furthermore, in one or more embodiments, the particular features, structures, materials, or characteristics may be combined in any suitable manner.

[0315] The foregoing method descriptions and process flow diagrams are provided only as illustrative examples and are not intended to require or imply that the operations of the various embodiments must be performed in the order presented. As will be understood by those skilled in the art, the order of operations in the foregoing embodiments may be performed in any order. Words such as "afterward", "then", "next", etc. are not intended to limit the order of operations. On the contrary, these words are merely used to guide the reader through the description of the method. Additionally, any reference to a claim element in the singular (e.g., using the articles "a", "an", or "the") should not be construed as limiting the element to the singular.

[0316] The hardware for implementing the various methods, systems, blocks, and modules described in connection with the various embodiments disclosed herein may be implemented or performed using a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. The general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. The processor may also be implemented as a combination of receiver devices, e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some operations or methods may be performed by circuitry specific to a given function.

[0317] In one or more exemplary embodiments, the described functionality may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functionality may be stored as one or more instructions or code on a non-transitory computer-readable medium or a non-transitory processor-readable storage medium. Operations of a method or algorithm disclosed herein may be embodied in processor-executable instructions that may reside on a non-transitory computer-readable or processor-readable storage medium. A non-transitory computer-readable or processor-readable storage medium may be any storage medium that can be accessed by a computer or a processor. By way of example and not limitation, such non-transitory computer-readable or processor-readable storage medium may include random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. As used herein, disk and optical disks include compact disk (CD), laser disk, optical disk, digital versatile disk (DVD), floppy disk, and Blu-ray disk, where disks usually reproduce data magnetically, while optical disks reproduce data optically with lasers. Combinations of the above are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, operations of a method or algorithm may reside as one or any combination or set of codes and / or instructions on a non-transitory processor-readable storage medium and / or a computer-readable storage medium, which may be incorporated into a computer program product.

[0318] It should be understood that the specific order or hierarchy of blocks in the disclosed process / flowchart is an illustration of an exemplary method. Based on design preferences, it should be understood that the specific order or hierarchy of blocks in the process / flowchart may be rearranged. Additionally, some blocks may be combined or omitted. The appended method claims present the elements of the various blocks in a sample order and are not intended to be limited to the specific order or hierarchy presented.

[0319] The foregoing description is provided to enable any person skilled in the art to practice the various aspects described herein. Those skilled in the art will readily recognize various modifications to these aspects, and the general principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language of the claims, where the reference to a singular element is not intended to mean “one and only one” unless specifically so stated, but rather “one or more”.

[0320] The word “exemplary” is used herein to mean “serving as an example, instance, or illustration”. Any aspect described herein as “exemplary” is not necessarily to be construed as preferred or superior to other aspects. Unless otherwise expressly stated, the term “some” means one or more.

[0321] All structural and functional equivalents of the elements across the aspects described in this disclosure that are known or will be known to those of ordinary skill in the art are hereby expressly incorporated by reference and intended to be covered by the claims. Additionally, nothing disclosed herein is intended to be dedicated to the public, whether or not such disclosure is explicitly recited in the claims. The words “module,” “mechanism,” “element,” “device,” etc. shall not be used in place of the word “means.” Accordingly, no element of a claim should be construed as a means-plus-function element unless the element is expressly recited using the phrase “means for...”

[0322] Although this disclosure provides certain exemplary embodiments and applications, other embodiments that are obvious to those of ordinary skill in the art are also within the scope of this disclosure, including embodiments that do not provide all of the features and advantages set forth herein. Accordingly, the scope of this disclosure is defined solely by reference to the appended claims.

Claims

1. A system for determining location within an indoor environment without clock synchronization, the system comprising: A plurality of fixed nodes, the plurality of fixed nodes being arranged as a constellation within the indoor environment, wherein each of the plurality of fixed nodes is configured to: Transmit ranging signals, Receive ranging signals transmitted by one or more neighboring fixed nodes among the plurality of fixed nodes, Calculate a time offset between the ranging signal transmitted by the fixed node and the ranging signals received from each of the one or more neighboring fixed nodes, and Include the calculated time offset in the ranging signal transmitted by the fixed node, Wherein none of the plurality of fixed nodes are synchronized with each other, and wherein at least one of the plurality of fixed nodes is configured to transmit a packet, Wherein the system further includes a roaming node, the roaming node including at least one processor, the at least one processor being configured to: Detect the packet transmitted by at least one fixed node; Use one or more parameters in the packet to obtain the ranging signals of the at least one fixed node and a group of the neighboring fixed nodes; And After obtaining the ranging signals of the at least one fixed node and a group of the neighboring fixed nodes, calculate the three-dimensional position of the roaming node within the indoor environment based on the asynchronous time difference of arrival of the obtained ranging signals and the time offset included in the obtained ranging signals.

2. The system according to claim 1, wherein none of the plurality of fixed nodes communicate with any central server or other master node.

3. The system according to claim 1, wherein each of the plurality of fixed nodes uses direct sequence spread spectrum (DSSS) to transmit the ranging signals.

4. The system according to claim 3, wherein the DSSS uses maximum code decimation.

5. The system according to claim 3, wherein the ranging signals transmitted by each of the plurality of fixed nodes are spread over a bandwidth of one gigahertz.

6. The system according to claim 1, wherein all of the ranging signals transmitted by the plurality of fixed nodes use the same linear feedback shift register (LFSR) polynomial code, and wherein each of the plurality of fixed nodes uses a different pseudo-random number (PN) offset from all other fixed nodes among the plurality of fixed nodes, such that the ranging signals transmitted by each of the plurality of fixed nodes can be distinguished from the ranging signals transmitted by all other fixed nodes among the plurality of fixed nodes based on the corresponding PN offset.

7. The system according to claim 6, wherein each of the plurality of fixed nodes is configured to: Monitor the PN offsets of the other fixed nodes among the plurality of fixed nodes; and When the PN offset of the fixed node is within a threshold distance from the monitored PN offset, Determine whether the fixed node should perform a PN jump based on at least one predefined criterion, and When it is determined that the fixed node should perform the PN jump, randomly select a new PN offset that does not conflict with any of the monitored PN offsets.

8. The system according to claim 1, wherein the ranging signal transmitted by at least one of the plurality of fixed nodes uses a polynomial code different from the ranging signals transmitted by one or more other fixed nodes of the plurality of fixed nodes.

9. The system according to claim 1, wherein the time offset is included in the ranging signal as one or more coefficients of a predictive modeling equation.

10. The system according to claim 1, the system further comprising a roaming node, wherein the roaming node includes at least one processor configured to: receive the ranging signals transmitted by at least three fixed nodes of the plurality of fixed nodes; and calculate a three-dimensional position of the roaming node within the indoor environment based on the asynchronous time difference of arrival of the ranging signals and the time offset included in each of the received ranging signals.

11. The system according to claim 10, wherein the roaming node includes one or more inertial measurement units, and wherein the output of the one or more inertial measurement units is used during the calculation of the three-dimensional position of the roaming node.

12. The system according to claim 10, wherein the roaming node never uses a reverse link from the roaming node to any one of the plurality of fixed nodes to receive the ranging signal and calculate the three-dimensional position of the roaming node.

13. The system according to claim 10, wherein the at least one processor of the roaming node is further configured to transmit the three-dimensional position to a remote server via at least one network.

14. The system according to claim 13, the system further comprising the remote server, wherein the remote server is configured to: receive, via the at least one network, the three-dimensional positions calculated by the roaming nodes from each of the plurality of roaming nodes; and provide at least one software-based service based on the received three-dimensional positions of one or more of the plurality of roaming nodes.

15. The system according to claim 1, wherein each of the plurality of fixed nodes is configured to operate in both a first mode and a second mode, in the first mode, only using a forward link from the fixed node to each of one or more roaming nodes, and in the second mode, using the forward link and using a reverse link from each of the one or more roaming nodes to the fixed node.

16. The system according to claim 15, wherein each of the plurality of fixed nodes is configured to: monitor signals on the reverse link having a PN offset within a threshold distance from the PN offset used by the fixed node; and when the signal is detected on the reverse link, broadcast the time and carrier offset between the detected signal and the pilot signal of the fixed node.

17. The system according to claim 1, wherein the transmission power of each ranging signal is set such that the ranging signal is below the thermal background noise at a distance of one meter from the fixed node transmitting the ranging signal at room temperature.

18. The system according to claim 1, wherein the system further comprises a calibration node, and wherein the calibration node comprises at least one processor configured to calculate the positioning of each of the plurality of fixed nodes relative to the reference after the plurality of fixed nodes have been arranged in the constellation and when the calibration node moves in a pattern having a known relationship with the reference of the indoor environment.

19. The system according to claim 1, wherein each ranging signal comprises a pilot channel, a binary offset carrier (BOC) channel, a data channel, and an acquisition channel.

20. The system according to claim 19, wherein the data channel uses block interleaving and forward error correction (FEC) codes.

21. The system according to claim 19, wherein the pilot channel, the BOC channel, and the data channel use long codes, and the acquisition channel uses a short code shorter than the long code.

22. The system according to claim 1, wherein each ranging signal comprises a packet, the packet comprising the time offset, wherein each packet is a Bluetooth™ packet or a Wi-Fi™ packet, and wherein each of the plurality of fixed nodes is configured to transmit the packet at least ten times per second.

23. The system according to claim 22, wherein each of the plurality of fixed nodes is configured for each of a plurality of time periods: generate a random number; broadcast the random number; receive the random number broadcast by other nodes among the plurality of fixed nodes; and transmit the packet according to the order of the generated random number within the received random number.

24. The system according to claim 22, wherein the system further comprises a roaming node, and wherein the roaming node comprises at least one processor configured to: receive the packets transmitted by at least five fixed nodes among the plurality of fixed nodes; and calculate a three-dimensional position of the roaming node within the indoor environment based on the asynchronous time difference of arrival of the packets and the time offset included in each of the received packets.

25. The system according to claim 1, wherein each of the plurality of nodes is further configured to transmit both a primary ranging signal and a secondary ranging signal, and wherein the secondary ranging signal has a center carrier frequency different from that of the primary ranging signal.

26. The system according to claim 1, wherein each of the plurality of fixed nodes is configured to cycle the transmission of the ranging signal between on and off.

27. The system according to claim 1, wherein the time offset comprises a time offset and a frequency offset.

28. The system according to claim 1, wherein each of one or more of the plurality of fixed nodes is housed in a housing device that provides a function other than the positioning determination.

29. A system for implementing positioning determination within an indoor environment, the system comprising: a plurality of fixed nodes arranged as a constellation within the indoor environment, wherein each of the plurality of fixed nodes is configured to: Transmit ranging signals, where each ranging signal includes a pilot channel, a Binary Offset Carrier (BOC) channel, a data channel, and an acquisition channel, where the pilot channel, the BOC channel, and the data channel use a long code, and the acquisition channel uses a short code shorter than the long code. Receive ranging signals transmitted by one or more neighboring fixed nodes among the multiple fixed nodes. Calculate the offset between the ranging signal transmitted by the fixed node and the ranging signals received from the one or more neighboring fixed nodes, and Include the offset in the ranging signal transmitted by the fixed node; and The system further includes a roaming node, where the roaming node includes at least one processor configured to, For at least one of the multiple fixed nodes, obtain the ranging signal transmitted by at least one fixed node by: Obtain the acquisition channel in the ranging signal by searching for the short code of the fixed node, Use the obtained acquisition channel to obtain the timing of the pilot channel in the ranging signal, and Use the timing of the pilot channel to obtain the timing of the BOC channel and the data channel in the ranging signal; And After obtaining the ranging signals from three or more fixed nodes including the at least one fixed node, calculate the three-dimensional position of the roaming node within the indoor environment based on the non-synchronous time difference of arrival of the obtained ranging signals and the offset included in the obtained ranging signals.

30. The system according to claim 29, where the data channel in the ranging signal transmitted by the at least one fixed node includes auxiliary information, the auxiliary information includes one or more parameters of a group of neighboring multiple fixed nodes that are neighbors of the at least one fixed node, where the at least one processor of the roaming node is further configured to use the auxiliary information to obtain the ranging signals of a group of neighboring fixed nodes, and where the three or more fixed nodes include the group of neighboring fixed nodes.

31. A system for implementing location determination within an indoor environment, the system comprising: Multiple fixed nodes arranged as a constellation within the indoor environment, where each of the multiple fixed nodes is configured to: Transmit ranging signals, where each ranging signal includes a pilot channel, a Binary Offset Carrier (BOC) channel, a data channel, and an acquisition channel, where the pilot channel, the BOC channel, and the data channel use a long code, and the acquisition channel uses a short code shorter than the long code. Receive ranging signals transmitted by one or more neighboring fixed nodes among the multiple fixed nodes. Calculate the offset between the ranging signal transmitted by the fixed node and the ranging signals received from the one or more neighboring fixed nodes, and Include the offset in the ranging signal transmitted by the fixed node; and The system further includes a roaming node, where the roaming node includes at least one processor configured to: For at least one of the plurality of fixed nodes, obtain the acquisition channel in the ranging signal transmitted by at least one fixed node by searching for the short code of the fixed node; Use the obtained acquisition channel to retrieve auxiliary information from a remote server through at least one network, where the auxiliary information includes one or more parameters of the at least one fixed node and a set of neighboring multiple fixed nodes that are neighbors of the at least one fixed node; Use the auxiliary information to obtain the ranging signals of the at least one fixed node and a set of neighboring fixed nodes; And After obtaining the ranging signals of the at least one fixed node and the set of neighboring fixed nodes, calculate the three-dimensional position of the roaming node in the indoor environment based on the asynchronous time difference of arrival of the obtained ranging signals and the offset included in the obtained ranging signals.

32. A system for implementing location determination in an indoor environment, the system comprising: A plurality of fixed nodes, the plurality of fixed nodes being arranged as a constellation in the indoor environment, where each of the plurality of fixed nodes is configured to: Transmit a ranging signal, Receive ranging signals transmitted by one or more neighboring fixed nodes among the plurality of fixed nodes, Calculate an offset between the ranging signal transmitted by the fixed node and the ranging signals received from the one or more neighboring fixed nodes, and Include the offset in the ranging signal transmitted by the fixed node, Where at least one of the plurality of fixed nodes is configured to transmit a packet, the packet including one or more parameters of the at least one fixed node and a set of neighboring multiple fixed nodes that are neighbors of the at least one fixed node, where the packet is a Bluetooth™ packet or a Wi-Fi™ packet, where the system further includes a roaming node, and where the roaming node includes at least one processor, the at least one processor being configured to: Detect the packet transmitted by the at least one fixed node; Use the one or more parameters in the packet to obtain the ranging signals of the at least one fixed node and a set of neighboring fixed nodes; And After obtaining the ranging signals of the at least one fixed node and the set of neighboring fixed nodes, calculate the three-dimensional position of the roaming node in the indoor environment based on the asynchronous time difference of arrival of the obtained ranging signals and the offset included in the obtained ranging signals.

33. A system for implementing location determination in an indoor environment, the system comprising: A plurality of fixed nodes, the plurality of fixed nodes being arranged as a constellation in the indoor environment, where each of the plurality of fixed nodes is configured to: Transmit a ranging signal, Receive ranging signals transmitted by one or more neighboring fixed nodes among the plurality of fixed nodes, Calculate an offset between the ranging signal transmitted by the fixed node and the ranging signals received from the one or more neighboring fixed nodes, and Include the offset in the ranging signal transmitted by the fixed node, At least one of the plurality of fixed nodes is configured to transmit a packet, the packet including an identifier of the fixed node, wherein the packet is a Bluetooth™ packet or a Wi-Fi™ packet, wherein the system further includes a roaming node, and wherein the roaming node includes at least one processor configured to: Detect the packet transmitted by at least one fixed node; Use the identifier in the packet to retrieve auxiliary information from a remote server via at least one network, wherein the auxiliary information includes one or more parameters of the at least one fixed node and a group of neighboring multiple fixed nodes that are neighbors of the at least one fixed node; Use the auxiliary information to obtain the ranging signals of the at least one fixed node and a group of neighboring fixed nodes; And After obtaining the ranging signals of the at least one fixed node and the group of neighboring fixed nodes, calculate the three-dimensional position of the roaming node within the indoor environment based on the asynchronous time difference of arrival of the obtained ranging signals and the offset included in the obtained ranging signals.

34. A system for implementing location determination within an indoor environment, the system including: A plurality of fixed nodes arranged as a constellation within the indoor environment, wherein each of the plurality of fixed nodes is configured to: Transmit a ranging signal; Receive ranging signals transmitted by one or more neighboring fixed nodes among the plurality of fixed nodes; Calculate an offset between the ranging signal transmitted by the fixed node and the ranging signals received from the one or more neighboring fixed nodes, and Include the offset in the ranging signal transmitted by the fixed node; and The system further includes a server configured to: Receive an indication of the power level of one or more ranging signals received by each of one or more roaming nodes within the indoor environment, the one or more ranging signals being transmitted by a subset of the plurality of fixed nodes; and Apply an optimization algorithm to the received indication of the power level to determine one or more adjustments to the transmission power of the ranging signals transmitted by one or more of the plurality of fixed nodes; And Send control instructions to one or more fixed nodes according to the determined one or more adjustments to adjust the transmission power of the one or more fixed nodes.

35. A method for implementing location determination within an indoor environment, the method including the following operations performed by each of a plurality of fixed nodes arranged as a constellation within the indoor environment: Transmit a ranging signal; Receive ranging signals transmitted by one or more neighboring fixed nodes among the plurality of fixed nodes, and the plurality of fixed nodes are not synchronized with each other; Calculate a time offset between the ranging signal transmitted by the fixed node and the ranging signals received from each of the one or more neighboring fixed nodes; and Include the calculated time offset in the ranging signal transmitted by the fixed node, wherein at least one of the plurality of fixed nodes is configured to transmit a packet, wherein the method further comprises the following operations performed by at least one processor of the roaming node: detecting the packet transmitted by at least one fixed node; using one or more parameters in the packet to obtain ranging signals of the at least one fixed node and a set of neighboring fixed nodes; and after obtaining the ranging signals of the at least one fixed node and a set of the neighboring fixed nodes, calculating a three-dimensional position of the roaming node within the indoor environment based on an asynchronous time difference of arrival of the obtained ranging signals and the time offset included in the obtained ranging signals.

36. A system for implementing location determination within an indoor environment, the system comprising: a measurement node arranged within a constellation of a plurality of fixed nodes within the indoor environment, wherein the measurement node is configured to: receive ranging signals transmitted by the plurality of fixed nodes, the plurality of fixed nodes not being synchronized with each other; calculate time offsets between the received ranging signals of all the plurality of fixed nodes; and broadcast the time offsets within the indoor environment; and the plurality of fixed nodes, wherein each of the plurality of fixed nodes is configured to receive the time offsets broadcast by the measurement node; and transmit ranging signals including the received time offsets, wherein at least one of the plurality of fixed nodes is configured to transmit a packet, wherein the system further comprises a roaming node, the roaming node including at least one processor, the at least one processor being configured to: detect the packet transmitted by at least one fixed node; using one or more parameters in the packet to obtain ranging signals of the at least one fixed node and a set of neighboring fixed nodes; and after obtaining the ranging signals of the at least one fixed node and a set of the neighboring fixed nodes, calculating a three-dimensional position of the roaming node within the indoor environment based on an asynchronous time difference of arrival of the obtained ranging signals and the time offset included in the obtained ranging signals.

Citation Information

Patent Citations

  • Systems and methods for indoor positioning using wireless positioning nodes

    US10015769B1

  • Position determination using time of arrival measurements in a wireless local area network

    US20150271643A1

  • Systems and methods for indoor positioning using wireless positioning nodes

    US20180310272A1