About

Background

Global Navigation Satellite Systems (GNSS) see ubiquitous use. Beyond getting directions on a cell phone, GNSS is used for asset tracking, autonomous landing for passenger planes, remote sensing, and a plethora of other civilian applications. GNSS has become a critical piece of civilian infrastructure that millions of people rely on every day.

There are three main GNSS constellations - the US’s GPS, Russia’s GLONASS, and China’s Beiduo, and they all operate in fundamentally the same way. Satellites in high orbits transmit signals containing timestamps from onboard atomic clock. By comparing the arrival time of these signals to the encoded timestamps, a receiver can estimate the time it took the signal to propagate from the satellite, which is directly related to the distance between the satellite and the receiver. With signals from four satellites, the receiver can compute its location in 3D space and any error between its own clock and the more accurate clocks on the satellites.

To provide global coverage, the satellites are placed in high geosynchronous orbits many thousands of miles from the Earth’s surface. Because these satellites transmit with only a few hundred watts (comparable to an incandescent lightbulb), the signals are extremely weak when they arrive at a receiver. In most cases, the signals from GPS satellites are buried in electronic noise picked up by the antenna.

To deal with this, many receivers rely on the fact that this random noise averages to zero over a significant amount of time. By averaging the signal over many samples, the noise averages to zero and only the small nonzero offset from the satellite signal is left. This makes it possible to integrate GNSS receivers into small electronics like cell phones, but it makes GNSS signals very susceptible to interference and jamming. Any signal large enough to disrupt the balance between detecting a 1 or 0 from the largely random noise will prevent a receiver from obtaining a lock on the GNSS signal. This means that GNSS can be jammed with a signal that is even weaker than the random environmental noise. Since most terrestrial sources of interference are much closer to the receiver than the GNSS satellites, a low-power transmitter can be used to deny GNSS service to a very large area.

This is in contrast to many other terrestrial signals. To jam a broadcast FM radio signal, the jammer would need to produce a stronger signal than a transmitter operating in the 10,000 Watt range. Beyond that, to render the signal undetectable, the jammer needs to put out so much power that a receiver runs out of dynamic range. For dedicated receivers, especially those located closer to the transmitter than the jammer, this could mean millions of watts of output power.

Using terrestrial signals for geolocation is extremely attractive for its robustness to jamming/interference. Unfortunately, without the timing information encoded in GNSS satellite signals, it is not possible to compute the transit time for a radio signal, so most terrestrial signals are not useful for geolocation. Some countries are working to develop dedicated terrestrial geolocation transmitters, but this is very expensive and must clear significant regulatory hurdles.

Terra provides timing information for existing transmitters like FM broadcast stations, radars, TV transmitters and Starlink satellites. This information is made available over a network connection so that client devices can compute the distance to these transmitters regardless of the form or content of the transmission. Because this approach uses existing transmitters, it is very cheap to provide location service to a large area - only one reference receiver is required, and no license for transmission is required.

Reference Receivers and Signal Features

The first component of the Terra system is a set of reference receivers that track a set of signals for a given area. These receivers identify highly recognizable features of the signal and associate them with timestamps from an accurate clock. These signal features can then be uploaded to the backend server. Because the signal features are extracted at the site of the receiver, the network bandwidth required for the reference-backend connection is relatively small, and it is possible to combine multiple receivers for different signals at a single site. This way, a single receiver can cover a large region.

Once good candidate features are detected, the timestamp associated with them is nothing more than the index of the sample at the beginning of that feature. The timestamp is advanced by the known propagation time of that signal based on the locations of the reference receiver and the transmitter, so that the published timestamp is equivalent to the time at which the first sample of the feature left the transmitter.

Backend

This server ingests features from the reference receivers, and serves them to clients based on the range of timestamps requested by the clients.

Client Receivers

The client receivers use an onboard radio to record some of the stations, and then they request the associated features from the server. Once they have the feature data, they annotate the recorded received signals and use them to compute their location in a similar way to a traditional GNSS receiver. The process of getting a location solve generally follows these steps:

  1. Requesting Data: After recording a chunk of data from available transmitters in the region, the client submits a request to the backend server for features from the signals and time covered by the recording. The latency of this transaction largely determines the latency of position updates for the client.

  2. LO Correction: Due to variations in the clocks on the client devices, the signals that a given client detects will likely appear at slightly different frequencies than expected. When the features and the received data are at different frequencies, they will not show strong correlations (they will not line up), and this makes it impossible for the receiver to locate the features within the received data. To address this, the receiver must first calibrate its local oscillator (“LO” - the onboard clock) against a signal with a known frequency to determine the offset. This can be done with any of the transmitter signals, since the server is capable of providing the true frequency for these signals.

  3. Coarse Clock Offset Correction: Even for a network-connected client, there is almost certainly some error between the UTC time recorded by the receiver and the Terra References. This means that from the perspective of the client, a feature 0 with timestamp T 0 might actually show up several hundred milliseconds earlier or later than expected ( T 0 + τ ) in the recorded data. However, this offset will be very close for all of the features, so it is possible to extract it by finding the value of τ where there are good matches for many features in the recorded data. This involves sliding the received features at their respective timestamps across the recorded data and looking for offsets where good matches exist for as many features as possible. Importantly, the precise clock offset will be slightly different for each signal due to the different transit times from the different receivers, but these differences are much smaller than the offsets from large clock errors. This coarse step allows the following steps to search a significantly smaller range of timestamps for the precise locations of the features, which is important to reduce the number of false positives and speed up solving.

  4. Sample Rate Correction: Similar to the issue of LO offset, the receiver clock the determines when samples are taken may also be different than the clocks in the Terra Reference. In cases where the LO and sample clock are derived from the same crystal, these two corrections are not independent, and the sample rate correction can be computed directly from the LO offset. In other cases, a sample offset appears as a drift in the sample indices where the features are found compared to the indices where they are expected. If the first feature appears at index n 0 as expected, but the last feature appears at index ( n 0 + k ) , then the sample rate can be corrected by resampling the signal at ( n 1 − n 0 ) / ( n 1 + k − n 0 ) .

  5. Extraction of Pseudoranges and Solving: From this point on, getting a location follows the same procedure as a GNSS receiver. The “pseudorange” is the difference between the timestamp reported by the server and the timestamp where the features for each signal are detected after applying each correction. These pseudoranges define a system of equations that can be solved with the Gauss-Newton method to compute the true location and the fine clock offset.