Systems and Methods for GNSS Correction Generation with Gaussian Process Enhancement

By updating the GNSS correction generation model using Gaussian process, the problems of high computational complexity and difficulty in updating model parameters in the prior art are solved, and more efficient and accurate GNSS positioning is achieved.

CN114502987BActive Publication Date: 2025-07-25SWIFT NAVIGATION INC
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
CN202080066941.9
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-08-01
Filing Date
2020-08-03
Publication Date
2025-07-25
Estimated Expiration
2040-08-03

AI Technical Summary

Technical Problem

Existing GNSS solutions usually require high computing power processors, and traditional network RTK methods are costly when increasing network size, and difficult to update model parameters, and there are defects in modeling of Kalman filters.

Method used

The Gaussian process is used to update the GNSS correction generation model, bypass the direct calculation of state vectors through kernel techniques, reduce the computational complexity, and use the Gaussian process to more accurately model the GNSS correction parameters.

Benefits of technology

It realizes the accuracy and robustness of GNSS positioning while reducing the computational complexity. It is suitable for various mobile receivers and reduces the dependence on real-time correction data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114502987B_ABST
    Figure CN114502987B_ABST
Patent Text Reader

Abstract

A method for generating GNSS corrections includes receiving data and determining GNSS corrections. The method may optionally include mitigating the effects of outliers in the data, determining a GNSS correction model, transmitting the GNSS corrections, determining the mobile receiver position, and / or any suitable steps. The data preferably corresponds to a set of satellite observations (e.g., pseudorange, carrier phase, ephemeris, code data, etc.) that corresponds to one or more satellites of one or more satellite constellations, detected at a set of reference stations, detected at other satellites (e.g., low Earth orbit satellites), and / or detected at any suitable detection location. However, the data may additionally or alternatively include sensor data, weather conditions (e.g., temperature, humidity, wind, etc.), and / or any suitable data.
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 U.S. Provisional Application No. 62 / 881,520, filed on August 1, 2019, the entire contents of each of which are incorporated herein by reference. Technical Field

[0003] The present invention generally relates to the field of satellite positioning, and more particularly, to a new and useful system and method in the field of satellite positioning.

[0004] Background

[0005] The ability to perform high - precision satellite positioning is important for a variety of applications. Unfortunately, current GNSS solutions are often either inaccurate or require processor capabilities beyond the ability of inexpensive hardware (local or in the cloud). Many solutions (including network real - time kinematic (network RTK) satellite positioning) have been proposed to address this problem. Unfortunately, in traditional network RTK methods, the input parameter space increases non - linearly with the size of the network, making the computational cost of increasing the network size (and thus increasing the coverage area and / or positioning accuracy) very high. However, other models may encounter problems related to how the model parameters are updated (usually via a Kalman filter or least - squares method). Therefore, there is a need in the field of satellite positioning to create a new and useful system and method. The present invention provides such a new and useful system and method.

[0006] Brief Description of the Drawings

[0007] Figure 1 is a graphical representation of a method of an embodiment of the present invention.

[0008] Figure 2 is a schematic representation of an example of a computing system for determining GNSS corrections.

[0009] Figure 3A and Figure 3B is an example representation of model parameters for atmospheric effects (such as ionospheric effects).

[0010] Figure 3C is a schematic representation of an example of a coordinate system used in an embodiment of an atmospheric effects model, where the origin can refer to the geocenter or any suitable reference point.

[0011] Figure 4 is a schematic representation of an embodiment of the system.

[0012] Figure 5 is a schematic representation of an example of a method.

[0013] Description of Embodiments of the Invention

[0014] The following description of the inventive embodiments of the present invention is not intended to limit the present invention to these inventive embodiments, but rather to enable any person skilled in the art to make and use the present invention.

[0015] 2.3 Overview

[0016] As Figure 1 shown, a method for generating GNSS corrections may include: receiving data S110 and determining GNSS corrections S130. The method may optionally include: mitigating the effects of outliers in the data S115, determining a GNSS correction model S120, transmitting GNSS corrections S140, determining a mobile receiver position S150, and / or any suitable steps. The data preferably corresponds to a set of satellite observations (e.g., pseudorange, carrier phase, ephemeris, code data, etc.) that corresponds to one or more satellites of one or more satellite constellations, detected at a set of reference stations, detected at other satellites (e.g., low Earth orbit satellites), and / or detected at any suitable detection location. However, the data may additionally or alternatively include sensor data, weather conditions (e.g., temperature, humidity, wind, etc.), and / or any suitable data.

[0017] As Figure 4 shown, a system for generating GNSS corrections may include: one or more mobile receivers, a set of reference stations, and a computing system. The system may optionally include sensors. The computing system may include: a correction modeler 131, a validator 138, a queryer 135, a stitcher 136, a correction generator 137, and / or any suitable components.

[0018] The system and / or method is preferably used to determine GNSS corrections that can be used to correct satellite observations and / or mobile receiver positions to improve the accuracy and / or integrity of the mobile receiver position.

[0019] Embodiments of the system and / or method can be used, for example, for autonomous or semi-autonomous vehicle guidance (e.g., for unmanned aerial vehicles (UAVs), unmanned aerial systems (UASs), autonomous vehicles, agricultural equipment, robots, rail transportation / delivery systems, automated trucking, last mile delivery, etc.), GPS / GNSS research, surveying systems, user equipment, mobile applications, Internet of Things (IoT) devices, and / or can be used for any other suitable application. In a specific example, the system (and / or component) can be coupled to any suitable external system, such as a vehicle (e.g., UAV, UAS, car, truck, etc.), robot, railcar, user equipment (e.g., mobile phone), and / or any suitable system, and can provide positioning data, integrity data (e.g., protection level data), and / or other data to the system.

[0020] In a specific example, the system and / or method can include receiving a set of satellite observations corresponding to one or more satellites associated with one or more satellite constellations; generating a set of GNSS corrections using a GNSS correction model, where the GNSS correction model includes a Gaussian process, and where the input to the GNSS correction model includes undifferenced and uncombined satellite observations from the set of satellite observations; wherein the set of GNSS corrections can be used to correct the position estimate of a mobile receiver.

[0021] 1.2 Traditional GNSS, PPP, and RTK

[0022] Traditional satellite positioning systems (e.g., standard GNSS) work by attempting to align a local copy of a pseudo-random binary sequence (at the receiver) with the same sequence copy transmitted by the satellite; since the satellite is far from the receiver, the signal transmitted by the satellite has a delay. By delaying the local copy of the sequence to match the copy transmitted by the satellite, the time it takes for the signal to travel from the satellite to the receiver can be found, which in turn can be used to calculate the distance between the satellite and the receiver. By performing this process for multiple satellites (usually four or more), the position of the receiver relative to the satellites can be found, which in turn can be used to find the position in a specific geographic coordinate system (e.g., latitude, longitude, and altitude). A typical GNSS system can achieve a positioning accuracy of up to 2m.

[0023] For many applications (e.g., for the guidance of manned autonomous vehicles / drones / agricultural equipment, GPS / GNSS research, surveying), this level of accuracy is severely insufficient. In response to this, two position correction algorithms have been developed: precise point positioning (PPP) and real-time kinematic (RTK).

[0024] PPP and RTK use not only the positioning codes broadcast by satellites, but also the carrier phase of the satellite signals to determine the position. Although much higher accuracy can be obtained using carrier phase data, accurately determining the position of a mobile receiver (e.g., the receiver whose position is to be calculated) requires consideration of many potential error sources. In addition, carrier phase measurements are ambiguous; since the carrier signal is uniform, using only phase measurements may not be able to distinguish and phase shifts, where N is an integer. For example, it may be difficult to determine the difference between a phase shift of π radians and a phase shift of 3π radians (or -π, 5π, etc.).

[0025] PPP attempts to solve this problem by explicitly modeling the errors present in the phase and code measurements of the mobile receiver. Some errors are global or nearly global (e.g., satellite orbit and clock errors); for these errors, PPP typically uses correction data with highly accurate measurements. However, for local errors (e.g., errors that depend substantially on the position of the mobile receiver), PPP can only perform very rough modeling. Fortunately, many local errors vary slowly over time; thus, PPP can achieve high accuracy using only a single receiver, but may require a long convergence time to accurately determine local errors. As used in this application, the term "global error" refers to any error that does not vary much between multiple reference stations in a region, while "local error" refers to an error that varies greatly between multiple reference stations (because the error is specific to the reference station and / or because the error varies greatly with position within the region). Since this error is related to positioning, such errors can also be referred to as "global positioning error" and "local positioning error".

[0026] RTK avoids most of the modeling present in PPP by using a GNSS reference station (with a precisely known position); since the reference station is local to the mobile receiver, differencing the reference station signal and the mobile receiver signal can result in a significant reduction in error. The result is that the RTK solution can converge faster than the PPP solution (and does not require the highly accurate global correction data required by PPP). However, the RTK solution requires the presence of a base station near the mobile receiver.

[0027] Recently, correction generation systems that navigate in the PPP and RTK trade-off have been developed, such as the system of U.S. Patent Application No. 16 / 195,427, the entirety of which is incorporated herein by reference.

[0028] In such a system, the flexibility in the form of correction data is an inherent and differentiating aspect that is superior to traditional position correction systems. Instead of attempting to generate corrections only from a small set of high-quality global reference stations (as in PPP) or by comparing data in a mobile receiver / reference station pair (as in RTK), such systems collect data from reference stations (and / or other data sources), and instead of (or in addition to) directly applying this data to generate connections, the data is used to generate correction models. The outputs of these models are then passed to a correction generator, which can use the said outputs to generate correction data in any form. Additionally, the correction generator can cache and / or spatially interpolate the correction data to provide high-quality corrections to mobile receivers, regardless of the correction capabilities (e.g., whether the receiver can handle RTK / PPP corrections) and the positions of individual base stations.

[0029] By operating in this way, such a system can provide a set of corrections (while being usable by PPP receivers), but with little of the long convergence time problem of PPP, where the complexity of the solution is proportional to the number N of reference stations (unlike RTK, where the complexity of the solution is at least proportional to the number of possible pairs; i.e., N 2 . In fact, many current solutions are proportional to N 3 or worse). Additionally, since the corrections are preferably calculated using local correction models that may depend on any number of individual reference stations (rather than specific reference station pairs), the corrections are substantially more robust to the absence of base stations.

[0030] Furthermore, the flexibility of such systems enables certain functions (such as spatial interpolation and caching) to be performed more generally than would be possible with RTK; while the concept of "virtual reference stations" is known within RTK (also called "pseudo reference stations"), virtual reference stations typically involve real-time interpolation of RTK correction data (and, as mentioned earlier, the complexity of error correction is proportional to N 2 . In contrast, interpolation in such systems may be limited to specific aspects of global and / or local correction models, providing greater robustness to errors and a better understanding of the causes of errors. Additionally, unlike RTK, which requires real-time correction data, model-based systems can cache or otherwise save model parameters even when data is limited (e.g., when a reference station suddenly becomes unavailable).

[0031] In such a model-based system, of course, it is necessary to update the model over time (since the effects that influence GNSS positioning themselves change over time). Traditionally, a Kalman filter can be used to update the model.

[0032] The Kalman filter can be used to update x by combining the observation vector z at time index k with the state vector at the previous time index (x k-1) is associated to estimate the state (x k – commonly referred to as the state vector) of the system at time index k as follows:

[0033] z k = H k x k + v k

[0034] x k = Φ k-1 x k-1 + w k-1

[0035] where v k is the observation noise (zero mean and with known covariance), H k is the observation model that maps the true state space to the observation space, w k-1 is the process noise (also zero mean and with known covariance) and Φ k-1 is the transition model that maps the true state at time k-1 to the true state at time k. In the case of updating the positioning correction generation model, the state vector may include the parameters of the model (and the observation vector includes the data for estimating these parameters – e.g., pseudorange, phase, and position data of the reference station).

[0036] An example of the state vector is as follows: where p x , p y , p z represent the position estimate in Cartesian form, dt represents the station clock error, b represents the bias for each frequency (both for pseudorange P and carrier phase L), and represents the ambiguity (for each frequency f and satellite-equipment pair s). The state vector may additionally or alternatively include terms for the ionosphere, troposphere, satellite clock, and bias, as well as other dynamics (e.g., velocity, acceleration, angular velocity, etc.).

[0037] However, the inventors have found that the Kalman filter may have many disadvantages when used to model non-differential and non-combined networks. For example, since the Kalman filter updates the state vector at each time step, if some parameters vary on a time scale very different from other parameters (e.g., clock bias may vary more frequently than ionospheric delay), the Kalman filter may become (incorrectly) overly biased towards past results for slowly varying parameters. In addition, the Kalman filter may have problems when modeling time-constant parameters (such as integer phase ambiguity) because the filter typically requires non-zero process noise to operate correctly. Another problem is that the Kalman filter typically needs to track the state of the model; this becomes a problem when dealing with spatial fields (since it will potentially require maintaining a grid of values of the field, thus greatly increasing the scale of the problem).

[0038] The systems and methods of the present application relate to new techniques for implementing Gaussian processes to update a positioning correction generation model. Such techniques can be used to more accurately model GNSS correction parameters, which in turn may lead to more accurate satellite positioning for mobile receivers using the corrections. In some implementations of GNSS correction generation, Gaussian processes can offer many advantages over the Kalman filter. For example, Gaussian processes can bypass the direct calculation of the model state through the "kernel trick" (note that this is a technical term), which allows for a reduction in computational complexity in many implementations compared to the Kalman filter method.

[0039] 1.3 Differences between Gaussian processes and Kalman filters

[0040] A key difference between, for example, least squares or the Kalman filter and Gaussian processes lies in the use of the kernel (or covariance) function, k(x i , x j ) = cov[y i , y j , which encodes the relationships between all observations, where y i and y j are observations (usually pseudorange or carrier phase) corresponding to two positions (or features) given by x i and x j . This kernel function is used to place a multivariate Gaussian prior f(x) ∼ N(0, K yy ) on the function values f(x), which can generate the observations y, where f(x) is a vector of function values at the training positions [f(x0),..., f(x n )], and the matrix K yy has elements [K yy ij = k(x i , x​j )。 Then, we can use this framework to make predictions for some new location x by solving for the function distribution at the predicted location based on the observations * and

[0041] Different from the Kalman filter, the Gaussian process does not require a state vector and thus does not require a process or observation model. Additionally, all observations can be considered simultaneously. Instead of defining a process and an observation model, the Gaussian process is defined by specifying a covariance function, which typically (although not always) describes how any two observations z i and z j are related to each other.

[0042] One of the advantages of using a Gaussian process is that by selecting a parameter set over time, the temporal variance of various parameters can be modeled on a clearly defined time scale. While the Kalman filter will provide the state of a certain parameter at time step k based on a prior and a set of updated data, the Gaussian process can be used to model the states of the same parameter at multiple time steps simultaneously.

[0043] Thus, for example, if the Kalman filter includes an ionospheric delay term (which can vary relatively slowly) and a clock error term (which can vary more rapidly), the Kalman filter must operate at a rate suitable for capturing the changes in the clock error term. This rate may be unnecessarily high for modeling the ionospheric delay term and may cause the ionospheric delay model to become biased towards the initial input.

[0044] In contrast, the Gaussian process can explicitly model a set of parameters over time. For example, if data is available within the time steps from 0 to k, the Gaussian process can fit the parameter {∈ c (clock error) at each time step {∈ c0 , ∈ c1 ,..., ∈ ck-1 , ∈ ck} and the parameters of a subset of the ionospheric delay I at the time steps (e.g., {I0, I 100 ,..., I k-100 , I k}). Additionally, the Gaussian process does not necessarily include the Markov assumption, which allows the Gaussian process to model smooth processes (such as smooth errors) better than the Kalman filter, implicitly capture strong correlations between errors, and / or improve outlier detection and integrity.

[0045] Correspondingly, a Gaussian process can be used to explicitly model the parameters as time-invariant, while a Kalman filter requires a certain amount of process noise (usually, for time-invariant parameters, the Kalman filter is configured with a very small but non-zero process noise).

[0046] Note that when modeling a Gaussian process, the covariance between parameters is typically specified. Thus, for example, for a set of three parameters, nine covariance terms are required (including the identity terms - note that some of these terms may be the same).

[0047] 2. System

[0048] The system preferably uses a set of data collected by one or more data sources 121. The data sources can include: mobile receivers, sensors (e.g., located on the receiver, external systems, reference stations, etc.), databases, satellites, reference stations, and / or any other suitable data sources. Examples of data that can be used include: satellite observations, sensor observations, and / or any other suitable data.

[0049] The mobile receiver 110 preferably receives a set of satellite observations (e.g., satellite signals such as carrier phases and satellite codes) from one or more satellites. In a variant, the mobile receiver can determine the position of the mobile receiver (and / or external system) based on the satellite observations. The mobile receiver preferably communicates with the computing system. However, the mobile receiver can be integrated with the computing system, and / or the mobile receiver and the computing system can be arranged in any suitable manner. The mobile receiver is preferably an independent device (e.g., a GNSS receiver, an antenna). However, the mobile receiver can be integrated into an external system (e.g., as a component of an automobile, an aircraft, a marine vehicle, a mobile device, a satellite, etc.), can be a user device (e.g., a smartphone, a laptop computer, a mobile phone, a smartwatch, etc.), and / or can be configured in any suitable way.

[0050] The set of satellite observations 125 may include orbital data (e.g., ephemeris), timestamps, code data, carrier phase data, pseudocode data, and / or any suitable data. The set of satellite observations preferably includes satellite observations corresponding to satellites from multiple satellite constellations (e.g., Global Positioning System (GPS), Global Navigation Satellite System (GLONASS), BeiDou Navigation Satellite System (BDS), Galileo system, etc.). However, the set of satellite observations may correspond to satellites from a single satellite constellation, may include data from augmentation systems (e.g., satellite-based augmentation systems (SBAS), such as Wide Area Augmentation System (WAAS), European Geostationary Navigation Overlay Service (EGNOS), Multi-functional Satellite Augmentation System (MSAS), Omnistar, StarFire, etc.; ground-based augmentation systems (GBAS), such as Local Area Augmentation System (LAAS); etc.), and / or may include any suitable data.

[0051] In a variant of a system including more than one mobile receiver, each mobile receiver may be configured to receive satellite observations corresponding to a satellite constellation, corresponding to a carrier frequency (e.g., frequencies such as L1, L2, L5, E1, E5a, E5b, E5ab, E6, G1, G2, G3, B1, B2, B3, LEX, etc.) and / or corresponding to any suitable source.

[0052] A reference station 121 is preferably used to receive a set of satellite observations (e.g., reference station satellite observations) and transmit the reference station satellite observations to a computing system (and / or mobile receiver). The satellite observations from the reference station can be used to determine corrections to the set of satellite observations (e.g., local corrections and / or global corrections to account for atmospheric effects, clock errors, etc.). Each reference station is preferably communicatively coupled to the computing system. However, the reference station may include the computing system and / or be coupled to the computing system in any suitable manner. The reference station can communicate with the mobile receiver. The reference station is preferably a common reference station, but may additionally or alternatively be a private reference station or any other suitable reference station. The reference station is preferably located within approximately 500 km of the mobile receiver, but the distance between the reference station and the mobile receiver can be any distance.

[0053] The reference station satellite observations may correspond to the same and / or a different set of satellites as the set of satellite observations received by the mobile receiver. However, the reference station satellite observations may correspond to any suitable satellite observations.

[0054] The location of the reference station (e.g., position) is preferably known with high accuracy (e.g., the uncertainty of the reference station location is less than 1 mm, 1 cm, 1 dm, 1 m, etc.). The location of the reference station can be static and / or dynamic. The reference station location is preferably the location of the antenna for receiving satellite signals. However, the reference station location can be any suitable location. For example, the reference station location can be determined by using a predetermined number of receivers arranged around the reference station at vertical and horizontal reference points. Note that although the reference stations are preferably fixed in location, they can additionally or alternatively be mobile. Before the relocated reference station resumes providing data, the station location is preferably re-determined with high accuracy. However, additionally or alternatively, the reference station can provide data before re-determining the location (e.g., for attitude estimation; alternatively, data can be provided but not used). As another alternative, the reference station may not provide absolute position data; for example, applications including attitude estimation may not require the absolute position data of the reference station. Note that over time, fixed reference stations may "self-survey" their own locations with a fairly high accuracy.

[0055] The reference station preferably provides data of multiple satellite signals and the location of the reference station via the Internet, but can additionally or alternatively provide data by any other suitable method (e.g., transmission via a UHF band radio modem). The reference station data is preferably directly usable for the method, but can additionally or alternatively be processed or aggregated before being usable for method 100.

[0056] The reference station preferably has one or more satellite receivers and generates corrections based on those receivers. The number and quality of the satellite receivers used by the reference station (or other factors such as antenna type / size / location) may determine the accuracy of the reference station data. The reference stations (or other reference station data sources; e.g., a reference source that creates correction data from multiple reference stations) can be sorted or grouped by reference station quality (e.g., accuracy of the correction) and / or location (e.g., if corrections are needed for a specific mobile receiver, the reference stations can be sorted or grouped by distance to that receiver). The reference station satellite receivers can be the same as and / or different from the satellite receivers of the mobile receiver.

[0057] The computing system 130 is preferably used to process data (such as satellite observations) from data sources (such as receivers, reference stations, etc.). The computing system can: aggregate data (such as combining receiver satellite observations, reference station satellite observations, and sensor data; for example, reorganizing receiver satellite observations, reference station satellite observations, and sensor data based on timestamps, transmission times, reception times, etc.; etc.), filter data (such as calculating state vectors, ambiguities (such as phase ambiguities), etc. associated with the data), calculate receiver positions (such as based on ambiguities), correct data (such as correcting satellite observations for clock errors, hardware biases, atmospheric effects, cycle slips, etc.), generate corrections (such as global corrections, atmospheric corrections, etc.), and / or can process data in any suitable manner. The computing system can be local (such as on an external system, integrated in a receiver, integrated with a reference station, etc.), remote (such as cloud computing, servers, networked, etc.), and / or distributed (such as between remote and local computing systems).

[0058] The GNSS correction 1300 is preferably used to correct one or more satellite observations. The GNSS correction can correspond to a single satellite, a group of satellites, a satellite constellation, a satellite frequency, each satellite, a reference station, and / or any data source. For example, the GNSS correction can be used to correct satellite observations for: atmospheric effects (such as ionospheric delay, tropospheric delay, ionospheric gradient, etc.), global effects (such as hardware biases, orbital errors, clock errors, etc.), local effects (such as receiver hardware biases, receiver clock errors, multipath, integer ambiguities, etc.), and / or any effects. The GNSS correction can correspond to RTK correction, PPP correction, PPP-RTK correction, SBAS correction, and / or any suitable correction. The GNSS correction can be updated (such as at a predetermined time, for example, based on correction type, expected application, external system, target receiver position accuracy, target receiver position integrity, etc.) and / or fixed. The GNSS correction can be updated at a predetermined time (such as 1 second, 5 seconds, 10 seconds, 30 seconds, 60 seconds, 2 minutes, 5 minutes, 10 minutes, 20 minutes, 30 minutes, 60 minutes, 2 hours, 4 hours, 8 hours, 12 hours, 24 hours, etc.), in response to a trigger (such as weather changes, temperature changes, changes in the position of the moving receiver, changes in the satellites in the receiver's field of view, etc.), manually (such as in response to a user's request to update the correction), and / or at any suitable timing. The GNSS correction can be associated with a validity period, where the GNSS correction can be invalid outside the validity period (such as and must be refreshed), or be permanently valid.

[0059] In a variant, GNSS corrections can be generated in batches. The batches can correspond to time batches (e.g., a set of satellite observations received within a predetermined time), spatial batches (e.g., all satellite observations received within a predetermined area (e.g., at a single reference station, at a cluster of reference stations, etc.)), and / or any suitable batches. Each batch preferably includes at least 1,000 satellite observations (and / or other data sets), such as approximately 3,000; approximately 5,000; approximately 7,500; approximately 10,000; approximately 15,000; approximately 20,000; approximately 25,000; approximately 30,000; approximately 35,000; approximately 50,000; approximately 100,000; approximately 150,000; approximately 200,000; approximately 250,000; approximately 500,000; approximately 1,000,000; approximately 1,000 - 1,000,000 satellite observations, etc. However, each batch can include fewer than 1,000 satellite observations or more than 1,000,000 satellite observations. Each new batch is preferably used to update the GNSS corrections. However, each batch can be used to generate different GNSS corrections, generate new GNSS corrections (e.g., independent of previous GNSS corrections), and / or can be used in other ways.

[0060] However, GNSS corrections can be generated continuously (e.g., when additional satellite observations are made, they are included in the model, when they are requested, etc.) and / or in any manner.

[0061] GNSS corrections are preferably determined using a Gaussian process. However, a particle filter (e.g., a Kalman filter, an extended Kalman filter, etc.) can be used to generate one or more GNSS corrections in a GNSS correction set using a model disclosed in U.S. Patent Application No. 16 / 589,932, titled "SYSTEMS AND METHODS FOR DISTRIBUTED DENSE NETWORK PROCESSING OF SATELLITE POSITIONING DATA", filed on October 1, 2019, which is incorporated herein by reference in its entirety and / or in any way. In an embodiment, GNSS corrections can be generated without using a Kalman filter. However, a Kalman filter can be used and / or one or more GNSS corrections in a GNSS correction set can be generated in any way.

[0062] The computing system is preferably communicatively coupled to a mobile receiver and a reference station, but the computing system can communicate with any suitable components.

[0063] In a variant, the computing system may include a correction modeler 131, a querier 135, a splicer 136, a correction generator 137, a validator 138, and / or any suitable module or component. In a specific example, the system may include one or more components as described in U.S. Application No. 16 / 817,196, filed on March 12, 2020, U.S. Application No. 16 / 865,077, filed on May 1, 2020, and / or U.S. Application No. 16 / 589,932, filed on October 1, 2019, each of which is incorporated herein by reference in its entirety or otherwise configured to be incorporated herein.

[0064] The GNSS correction modeler 131 is preferably used to determine GNSS corrections (and / or metadata). The system may include one or more correction modelers 131 (e.g., different modelers for different errors, different modelers for the same error, the same modeler for multiple errors, etc.). The correction modeler preferably uses reference station satellite observations to determine GNSS corrections, but may additionally or alternatively determine GNSS corrections based on errors and / or delays estimated using a PPP filter (e.g., ionospheric delay, tropospheric delay, etc.) and / or based on any data. The correction modeler preferably uses non-differential and / or non-combined GNSS corrections to determine GNSS corrections. However, the correction modeler may additionally or alternatively use the following to determine GNSS corrections: single-differenced satellite observations (e.g., between satellite observations received at a mobile receiver, between satellite observations received at a mobile receiver and satellite observations received at a reference station, etc.), double-differenced satellite observations (e.g., between satellite observations received at a mobile receiver and a reference station, between satellite observations received at a mobile receiver and different reference stations), triple-differenced satellite observations (e.g., between satellite observations received at a mobile receiver and a reference station during a first period and satellite observations received at a mobile receiver and a reference station during a second period), and / or otherwise combined or differenced satellite observations.

[0065] Each correction model is preferably valid for a predetermined geographic range (e.g., associated with a corresponding error; is predetermined, determined based on an input geographic range, etc.), but may additionally or alternatively be valid for the entire Earth, a time range, and / or any other suitable set of parameters. The correction modeler may output a correction model (e.g., covariance matrix, feature list, information vector, etc.), components of the correction model, and / or any other suitable information. The model may be serialized, batched, or otherwise output. The model may optionally be compressed (e.g., by predicting the zenith ionospheric mean and variance at a series of grid points for each thin shell model and using the predicted values instead).

[0066] The calibration modeler is used to determine the calibration model for GNSS calibration. Preferably, it is a Gaussian process and / or a sparse Gaussian process. However, machine learning can be used, using a particle filter (e.g., a Kalman filter, an extended Kalman filter, etc.) to generate one or more calibrations, and / or to generate GNSS calibrations in other ways.

[0067] The GNSS calibration modeler can include a validator 138 for validating GNSS calibrations. The GNSS calibrations can be valid for a predetermined amount of time (e.g., where the GNSS calibrations need to be updated after that time) and / or can be valid indefinitely. The GNSS calibrations can be validated based on a validation data set (e.g., a data set reserved from a set of satellite observations used to generate the GNSS calibrations, a data subset used to generate the GNSS calibrations, a set of satellite observations associated with one or more reference stations such as a validation reference station or a master reference station, etc.), a validation model, the residuals (or estimated residuals) of the receiver position, the comparison of GNSS calibrations generated by two or more different models, and / or the GNSS calibrations can be validated in other ways.

[0068] In an example, the GNSS calibration modeler can include a global calibration modeler 132, a local calibration modeler 133, an interpolator 134, an atmospheric modeler 139, and / or any components disclosed in the following documents and / or any components that can determine and / or validate GNSS calibrations as disclosed in the following documents: U.S. Patent Application No. 16 / 589,932, filed on October 1, 2019, entitled "SYSTEMS AND METHODS FOR DISTRIBUTED DENSE NETWORK PROCESSING OF SATELLITE POSITIONING DATA", and U.S. Patent Application No. 16 / 865,077, filed on May 1, 2020, entitled "SYSTEMS AND METHODS FOR HIGH-INTEGRITY SATELLITE POSITIONING", each of these U.S. patent applications is incorporated herein by reference in its entirety.

[0069] The querier 135 is preferably used to store (e.g., cache) GNSS corrections and process requests for GNSS corrections (e.g., from a mobile receiver or a reference station). The querier may store (e.g., cache) recent GNSS corrections, a buffer of GNSS corrections, all GNSS corrections (e.g., all GNSS corrections generated, all GNSS corrections generated within a predetermined amount of time, etc.), and / or any suitable GNSS corrections. Additionally or alternatively, the querier 135 may store a buffer of correction models and use the stored models to respond to receiver requests. For example, the querier 135 may return predicted ionospheric delays, clock corrections, and / or other corrections determined based on request parameters (e.g., including the approximate location of the receiver) and the stored correction models.

[0070] Examples of requests may include requests for GNSS corrections, requests for specific error sources, paths between the receiver and data sources, and / or any suitable requests. In an illustrative example for atmospheric effects, for instance, a querier request may look like a set of paths from a receiver (e.g., a mobile receiver, a reference station receiver, etc.) to several satellites, and the response will be the predicted atmospheric delays along those paths.

[0071] The splicer 136 is preferably but not exclusively included in variants of systems that process batches of satellite observations to generate GNSS corrections. The splicer is preferably used to connect and / or combine GNSS corrections associated with different batches. Additionally or alternatively, the splicer can be used to prevent discontinuities (e.g., jumps) between GNSS correction updates (e.g., associated with different batches of GNSS observations), constrain the discontinuities to be less than a threshold (e.g., duration, amplitude, location, etc.), reduce the number of discontinuities, decrease the frequency of discontinuities, and / or otherwise modify the GNSS corrections (especially between updates). Additionally or alternatively, the splicer 136 may store a buffer of correction models and generate a larger model (e.g., a larger Gaussian process, a combination of correction models, etc.) that combines results from the stored models. The correction models within the buffer preferably target the same error and extend across multiple time ranges; however, the correction models can target multiple errors and extend across the same or different time ranges. In variants that include a splicer, the corrections can be output directly by the splicer to the receiver, the models generated by the splicer can be provided to the querier 135 for storage and use, or the models generated by the splicer can be used in other ways.

[0072] Additionally or alternatively, the splicer may connect and / or combine GNSS corrections based on constraints, patchwork kriging, and / or other methods. The GNSS corrections may be constrained and / or connected based on data or corrections associated with a single reference station (e.g., "primary reference station"), a single satellite (e.g., "primary satellite"), an average reference station (e.g., an average of multiple reference stations), a satellite constellation, multiple satellites, and / or any suitable data source. In an illustrative example, the splicer may ensure that the bias estimate associated with the primary reference station remains constant between batches and / or GNSS correction updates.

[0073] The splicer 136 may additionally or alternatively be used to verify (or cross-verify) GNSS corrections, for example, relative to previous GNSS corrections. The updated corrections may be compared to the immediately previous GNSS correction, the averaged previous GNSS corrections (e.g., corresponding to one or more batches), and / or any suitable correction. When the GNSS corrections associated with one batch differ from those of another batch by less than or equal to a threshold, they may be cross-verified. When the GNSS corrections associated with one batch differ from those associated with another batch by more than the threshold, the more recent batch may be excluded, the GNSS correction model may be run again, the older batch may be excluded, the outlier detection may be repeated, a flag or warning may be output (e.g., indicating an unverified batch or GNSS correction, indicating the estimated accuracy of the receiver position using the GNSS correction, indicating the estimated integrity of the receiver position using the GNSS correction, etc.), and / or the splicer may operate in other ways. However, the GNSS corrections may be cross-verified when the difference between the GNSS corrections associated with the first batch and the second batch exceeds the threshold and / or may be cross-verified in other ways.

[0074] The calibration generator is preferably used to generate a receiver-specific model of GNSS corrections for each of a set of receivers (e.g., specific to a reference station receiver, a mobile receiver, etc.). This receiver-specific model can then be used (e.g., by an interrogator, by the receiver) to determine receiver-specific corrections. The receiver-specific model is preferably generated by querying a GNSS correction model (e.g., via an interrogator / splicer), but can be generated in other ways. The receiver-specific model is preferably generated by querying the GNSS correction model at certain points and establishing a new Gaussian process with an empirical covariance that is chosen to ensure that the resulting receiver model will produce substantially the same predictions for the same points (e.g., within up to 1%, 2%, 5%, 10%, 20%, 25%, etc. of the full correction model). The receiver-specific model can be updated: when the calibration modeler determines a new correction model; in response to the occurrence of a re-determination event (e.g., integrity risk exceeding a predetermined threshold, etc.); and / or at any other appropriate time. However, the receiver-specific model can be generated additionally or alternatively.

[0075] The positioning module 139 is preferably used to determine the receiver position using GNSS corrections. The positioning module 139 is preferably located on the receiver side (e.g., away from the calibration modeler, interrogator, splicer, remote processing system, etc.), but can alternatively be part of a remote processing system or otherwise arranged. The receiver position is preferably determined with high accuracy (e.g., less than about 1 mm, 5 mm, 1 cm, 2 cm, 5 cm, 1 dm, 2 dm, 5 dm, 1 m, 2 m, 5 m, etc.) and / or high integrity (e.g., total integrity risk < 10 -4 / hour, < 10 -5 / hour, < 10 -6 / hour, < 10 -7 / hour, < 10 -8 / hour, < 10 -9 / hour, < 10 -10 / hour, etc.); however, the receiver position can be determined with any accuracy and / or integrity. In an example, the position module can compute the receiver position and / or otherwise operate as a "position module" as disclosed in U.S. Patent Application No. 16 / 865,077, entitled "Systems and Methods for High-Integrity Satellite Positioning," filed on May 1, 2020. However, the positioning module can be configured otherwise.

[0076] 3. Method

[0077] This method is preferably used to determine GNSS corrections and / or estimate (e.g., calculate, determine) the position of a mobile receiver using GNSS corrections. The steps and / or sub-steps of this method can be performed iteratively (e.g., for different epochs, for the same epoch, etc.), sequentially, and / or in any suitable order. The steps and / or sub-steps of this method can be performed serially and / or in parallel. The steps and / or sub-steps are preferably performed by the system as described above, but can be performed by any system.

[0078] S110 includes receiving data from a set of data sources. The data sources preferably correspond to reference stations, but can additionally or alternatively include computing systems (e.g., databases, PPP global correction data sources, etc.) and / or any suitable data sources. The data preferably corresponds to raw (e.g., unprocessed) data, but can additionally or alternatively include processed data. The data preferably corresponds to non-differential and / or non-combined satellite observations (e.g., as measured at a reference station), but can additionally or alternatively include differential satellite observations, atmospheric delays (e.g., as estimated or determined using a PPP filter), calibration data (e.g., associated with satellites and / or receivers), satellite orbit data, and / or any suitable data.

[0079] In some embodiments of this method, the data can be associated with a batch (e.g., a set) of data. The data can be batched based on: the reception (and / or storage, processing, etc.) time; the time window during which the data is received (and / or stored, processed, etc.); the location associated with the data (e.g., the location of the reference station); and / or the data can be batched in other ways. Each batch of data preferably includes at least 1000 data points (e.g., satellite observations), but can include fewer than about 1000 data points and / or any number of data points.

[0080] S115 includes detecting one or more outliers in the data set, which is used to determine whether there are one or more outliers in the data. The outliers can be detected when the data is received, before the data is processed, after a batch of data has been received, and / or using any timing. The outliers can be detected within a batch of data, from all the received data, and / or in any data set. The outliers are preferably detected using the RANSAC method, but can additionally or alternatively be detected using the MLESAC method, the MAPSAC method, the KALMANSAC method, resampling, and / or in any way.

[0081] When one or more outliers are detected, the impact of the outliers can be mitigated. Examples of mitigating the impact of outliers include: removing the outliers from the dataset, weighting the data (e.g., using weights that depend on the probability that the data is an outlier and / or an inlier), obtaining additional data, and / or otherwise mitigating the impact of the outliers.

[0082] In some embodiments, one or more outliers can be detected and / or mitigated as disclosed in U.S. Patent Application No. 16 / 748,517, filed on January 21, 2020, entitled "SYSTEMS AND METHODS FOR REDUCED-OUTLIER SATELLITE POSITIONING", which is hereby incorporated by reference in its entirety. However, outliers can be detected in any manner.

[0083] S120 includes generating a GNSS correction model for determining a GNSS correction model for generating GNSS corrections, setting parameters and / or hyperparameters of the GNSS correction model (e.g., in response to data received from a reference station), and / or otherwise generating a GNSS correction model. The GNSS correction model is preferably generated by a correction modeler (e.g., of a computing system), but can be generated by any component.

[0084] The GNSS correction model can correct for any error source that affects satellite observations. For example, as described in U.S. Patent Application No. 16 / 195,427, and as Figure 2As shown, the correction model can be divided into a global model (which models the effects of global and / or spatially invariant errors on GNSS signals) and a local model (which models local and / or spatially varying effects on GNSS signals and / or effects specific to a particular receiver / reference station). Examples of global effects include satellite-specific effects (e.g., satellite clock error, satellite orbit error, satellite hardware bias, satellite antenna phase windup, phase center offset (PCO), phase center variation (PCV), etc.), satellite-independent effects (e.g., solid earth tides, solid earth pole tides, ocean tide loading, etc.), and / or other effects. In a variant, global effects can include atmospheric effects (e.g., ionospheric and / or tropospheric effects, e.g., a rough estimate of the atmospheric effects for use, e.g., in initializing subsequent refinement of the atmospheric effects). Examples of local effects can include receiver-independent effects (e.g., atmospheric effects, e.g., ionospheric effects such as ionospheric delay, ionospheric gradient, etc.; tropospheric effects such as tropospheric delay, etc.), receiver-dependent effects (e.g., receiver clock error, receiver hardware bias, receiver antenna phase windup / PCO / PCV, carrier phase ambiguity, multipath effects, etc.), and / or any local effects. Alternatively, the correction model can correct for any suitable error source.

[0085] The GNSS correction model can generate GNSS corrections in batches (e.g., segmentally, e.g., once a predetermined amount of data is available) and / or continuously. Batches can correspond to time batches (e.g., using a dataset collected within a time window), spatial batches (e.g., using a dataset collected within a spatial region), satellite batches (e.g., generated for a particular satellite or multiple groups of satellites), satellite constellation batches, reference station batches (e.g., a grouping of independent reference stations), and / or any suitable batch.

[0086] The GNSS correction model is preferably generated and / or updated using Gaussian processes. Preferably, the same Gaussian process is used to determine (e.g., estimate) the GNSS corrections for each error source (e.g., each error source to be considered). However, different Gaussian processes can be used for subsets of error sources (e.g., global effect Gaussian processes, local effect Gaussian processes, Gaussian processes specific to an error or effect, etc.), one or more effects and / or errors can be modeled (and / or estimated) using a particle filter (e.g., a Kalman filter), one or more effects and / or errors can be modeled (and / or estimated) using machine learning, and / or effects and / or errors can be estimated in any way. Here, "using a Gaussian process" preferably means fitting one or more Gaussian process models (which form at least part of the GNSS correction model) based on a dataset (e.g., reference station data). It is worth noting that many parameter fitting techniques make assumptions based on Gaussian distributions (e.g., the Kalman filter assumes Gaussian noise). "Gaussian process" is a technical term (referring to a probability distribution over a set of possible functions) and is not intended to simply refer to any parameter fitting technique that incorporates some aspect of Gaussian statistics. However, Gaussian processes can be defined in other ways.

[0087] In some variations, the GNSS correction model can include one or more sparse approximations of Gaussian processes. Using a sparse approximation of a Gaussian process can provide the benefit of reducing the computational load, which can be particularly beneficial when using a large amount of data input. Examples of sparse approximations that can be used include fully independent training conditions (FITC), partially independent training conditions (PITC), hierarchies using (e.g., multiple) layers of inducing points, variational free energy (VFE), information vector machines (IVM), and / or any suitable sparse approximation of a Gaussian process.

[0088] The inputs to the correction model can include: non-differential satellite observations, non-combined satellite observations, differential satellite observations (e.g., single difference, double difference, triple difference, linear combinations, etc.), pierce points, atmospheric delays (e.g., ionospheric delays, tropospheric delays, ionospheric gradients, higher order delays, etc. modeled using, e.g., the PPP filter 1200), sensor data (e.g., receiver velocity, receiver vibration, etc.), inducing points, and / or any data or information.

[0089] In variants that include induced points, the induced points can be used to reduce the amount of data input required for a GNSS correction model, which can provide the benefit of improving the computational efficiency and / or speed of the model. Each induced point preferably corresponds to one or more variables associated with a data source (e.g., state, effect, error, etc.), where the data observed by the data source is weakly or not correlated with data from other data sources. However, an induced point can correspond to variables of a data source cluster (e.g., where the data source cluster is weakly or not correlated with other data sources and / or data source clusters) and / or any data source. The variables can correspond to a subset of time (e.g., the time associated with a batch of satellite observations, a subset of the time associated with a batch of satellite observations, a time not associated with a batch of satellite observations, etc.), the entire time of observation, and / or any suitable time. In a variant, the induced points can include each variable associated with a data source. However, one or more variables associated with a data source can be excluded (e.g., to be explained by a Gaussian process), and / or the induced points can include any suitable variables. In an illustrative example, atmospheric effects (e.g., ionospheric delay, ionospheric gradient, tropospheric delay, etc.) can be excluded from the set of induced points (e.g., to be implicitly explained by a Gaussian process). However, any variable can be included in or excluded from the set of induced points.

[0090] In a specific example, the induced points can correspond to hardware biases of one or more reference stations, clock errors of one or more reference stations, atmospheric effects associated with a set or cluster of reference stations (e.g., ionospheric delay, tropospheric delay, ionospheric gradient, etc.), clock errors associated with one or more satellites, hardware bias errors associated with one or more satellites, orbital errors associated with one or more satellites, errors associated with one or more satellite constellations, hardware biases associated with a GNSS receiver, clock errors associated with a GNSS receiver, errors or effects associated with a sensor, and / or any suitable effects or errors associated with any data source.

[0091] In a first illustrative example, each induced point can correspond to variables associated with one or more reference stations in a set of reference stations.

[0092] In a second illustrative example, variables associated with each satellite (e.g., satellites within the field of view) (e.g., observations; satellite state, such as satellite orbit, satellite clock, satellite bias, etc.) can correspond to an induced point. In a variant of the second example, each satellite constellation can correspond to an induced point.

[0093] Outputs from a GNSS correction model can include: GNSS corrections (e.g., accounting for one or more effects and / or errors), residuals in the GNSS corrections, confidence in the GNSS corrections (e.g., prediction accuracy and / or integrity of a mobile receiver position determined using the GNSS correction, likelihood that the GNSS correction is correct, etc.), carrier phase ambiguities (e.g., fixed integer ambiguities, floating point ambiguities, etc.), outliers (e.g., outliers in the input data), and / or any outputs.

[0094] A Gaussian process is preferably associated with (e.g., depends on) a set of parameters. S121 can include determining the set of parameters. The parameters 1500 can be determined (e.g., computed) in real time or near real time, offline, and / or at any timing. The parameters can be determined automatically, semi - automatically, and / or manually. The parameters are preferably retrieved from a memory, but can be determined in any way. The parameters can be static, dynamic, variable, and / or otherwise defined. Examples of the parameters can include: covariance functions, functional relationships between variables (e.g., distance functions, time functions, etc.), mapping functions, distance functions, penetration points, data inputs, atmospheric shells (e.g., shell thickness, number of shells, type of shells, etc.), hyperparameters, spatio - temporal scales (e.g., spatial, temporal, etc. length scales), and / or any suitable data and / or information. In an illustrative example, the parameter covariance can be defined based on a model; for example, the covariance between ionospheric delays at two locations (e.g., corresponding to two reference stations) can be modeled as a function of the distance between penetration points (where the line of sight between the receiver and the satellite intersects the atmosphere, as Figure 3A and Figure 3B shown) and / or the penetration angle.

[0095] The covariance function preferably defines the relationship (e.g., correlation) between two or more variables (e.g., the inputs of a Gaussian process). In a specific example, the covariance can represent the covariance between satellite observations at a reference station (e.g., per-station covariance, per-station bias, etc.), the covariance between satellite observations from a single satellite (e.g., per-satellite covariance, per-satellite bias, etc.), the covariance between satellite observations from a satellite constellation (e.g., covariance per satellite constellation), the covariance between satellite observations from different reference stations, the covariance between satellite observations from different satellites, and / or the covariance between any satellite observations. The relationship can be spatial correlation (e.g., how the variables are correlated in space), temporal correlation (e.g., how the variables are correlated over time), dependence (e.g., a model that relates one input to another), dynamic correlation (e.g., the correlation of the speed, acceleration, jerk, etc. of the variables), frequency correlation (e.g., how the variables are correlated in frequency), satellite correlation, reference station correlation, satellite constellation correlation, combinations thereof, and / or any suitable correlation. Two or more covariance functions can be combined by addition (and / or subtraction), multiplication (and / or division), exponentiation, convolution, and / or in any way.

[0096] The covariance can depend on the differences between the inputs, the magnitudes of the differences between the inputs, parametric functions (e.g., processed inputs, functions of the inputs, etc.), independent inputs, products of the inputs, and / or any dependence on the inputs.

[0097] In a first illustrative example, the covariance function can depend on a distance function that determines the distance between two locations. Examples of distance functions include: Euclidean distance, great circle distance, geodesic distance, Chebyshev distance, Manhattan distance, Minkowski distance, and / or any distance metric or function. The distance function is preferably a radial basis function, but can include spherical basis functions, azimuthal basis functions, altitude basis functions, zenith basis functions, and / or any basis function.

[0098] In a second illustrative example, the covariance function can depend on (and / or include) a mapping function (e.g., m(p)) that is used to correct for the distance traveled by a signal (e.g., satellite observations) in a spatial region. Examples of mapping functions include: inclination (e.g., m(p) = sec(θ i ) where θ iis the angle at which the signal intersects the shell relative to a reference axis (e.g., an axis perpendicular to the shell, an axis perpendicular to the Earth's surface, a vertical axis, a horizontal axis, etc.), a Niell mapping function, an isobaric mapping function, a Vienna mapping function, a global mapping function, a hydrostatic mapping function, a wet mapping function, and / or any suitable mapping function.

[0099] Examples of covariance functions include: a constant function, a polynomial (e.g., linear, quadratic, piecewise smooth polynomial, etc.) function, a white noise function, a Kronecker delta (or Dirac delta function) function, a squared exponential function, an Ornstein-Uhlenbeck (e.g., Brownian) function (e.g., with a variable drift term depending on the current value of the process), a Weiner function, a Matérn function, a Bessel function, a periodic function, a rational (e.g., rational quadratic) function, a γ-exponential function, a neural network covariance function, and / or any suitable covariance function.

[0100] The covariance function can result in an isotropic (e.g., the covariance function depends on the magnitude of the difference between inputs) and / or anisotropic (e.g., the covariance function does not depend on the magnitude of the difference between inputs) Gaussian process.

[0101] The covariance function can result in a stationary and / or non-stationary Gaussian process. The covariance function can result in a periodic or non-periodic Gaussian process.

[0102] The covariance function can result in a smooth, mostly smooth (e.g., at least 60% of the Gaussian process is explained by the covariance function that results in a smooth Gaussian process), partially smooth (e.g., between about 40% - 60% of the Gaussian process is explained by the covariance function that results in a smooth Gaussian process), mostly non-smooth (e.g., at most 40% of the Gaussian process is explained by the covariance function that results in a smooth Gaussian process), and / or non-smooth (e.g., jittery) Gaussian process.

[0103] Each covariance function is preferably associated with one or more hyperparameters that are used to describe the correlation strength (e.g., correlation amplitude), variance, memory, decorrelation scale (e.g., the length scale, duration, etc. at which the input decorrelates to a threshold, e.g., relative to the maximum correlation strength, decorrelates to 50%, 40%, 33%, 30%, 25%, 20%, 15%, 10%, 5%, 2.5%, 2%, 1%, 0.5%, 0.1%, etc.; 1 / e, 1 / e 2 、1 / e 3 etc.; and so on) and / or otherwise characterize the correlation and / or covariance function.

[0104] In a first specific example, the covariance function for satellite and / or receiver (e.g., reference station, mobile receiver, etc.) errors (e.g., hardware biases, clock errors, orbit errors) can be an Omstein-Uhlenbeck function, e.g.:

[0105]

[0106] where z i and z j are two observations corresponding to times t i and t j respectively, and and α error are hyperparameters representing the total variance explained by the station clock and the timescale, respectively, where the timescale indicates how much "memory" the station clock has or how fast it de-correlates.

[0107] In a second specific example, the covariance function for satellite and / or receiver (e.g., reference station, mobile receiver, etc.) errors (e.g., hardware biases, clock errors, orbit errors) can be a squared exponential function, e.g.:

[0108]

[0109] In a third specific example, the covariance function for satellite and / or receiver (e.g., reference station, mobile receiver, etc.) errors (e.g., hardware biases, clock errors, orbit errors) can be the sum of an Ornstein-Uhlenbeck function and a squared exponential function, e.g.:

[0110]

[0111] where the relative magnitudes of the hyperparameters and can be related to the relative contributions of the processes to the errors, where and where α error,ORN and α error,GAU can have any relationship. However, and can be related in any way.

[0112] In a fourth specific example, the position covariance function can be a polynomial covariance function, e.g.:

[0113]

[0114] where u i is the unit vector pointing from the receiver to the satellite observed through the observation z i ​

[0115] In a fifth specific example, the covariance function may include, for example, terms such as:

[0116] c error (z i , z j ) = IsSameFreq(z i , z j )

[0117] c error (z i , z j ) = IsSameType(z i , z j )

[0118] Or c error (z i , z j ) = IsSameSource(z i , z j )

[0119] where IsSameX(zi, zj) returns 1 if true and 0 if false, where Freq refers to the carrier frequency corresponding to satellite observations (e.g., frequencies such as L1, L2, L5, E1, E5a, E5b, E5ab, E6, G1, G2, G3, B1, B2, B3, LEX, etc.), Type refers to the type of satellite observation (e.g., pseudorange, carrier phase, code, etc.), and Source refers to the data source (e.g., reference station, mobile receiver, satellite, satellite constellation, etc.).

[0120] In a sixth specific example, the atmospheric covariance function (e.g., ionospheric or tropospheric covariance function) can be a squared Gaussian function, such as:

[0121]

[0122] Or

[0123] where p i and p j correspond to two penetration points (e.g., as shown in Figure 3A , 3B and 3C), d(p i , p j ) corresponds to the distance function between the two penetration points, and h(pi, pj) corresponds to the height difference between the two penetration points.

[0124] In a seventh specific example, the atmospheric covariance function (e.g., ionospheric or tropospheric covariance function) can be an Ornstein - Uhlenbeck function, such as:

[0125]

[0126] In an eighth specific example, an atmospheric covariance function (e.g., an ionospheric or tropospheric covariance function) can be the product of a mapping function (e.g., m(x)) and a covariance function, such as:

[0127]

[0128] where can represent the correlation between electron contents at two different points in space. can represent the inclination angle where θ i is the angle at which the signal intersects the shell (e.g., relative to the vertical direction), and / or any other suitable mapping function.

[0129] In a ninth specific example, the atmospheric covariance function can be a convolution of covariance functions, such as:

[0130]

[0131] where corresponds to an ionospheric delay of 1250.

[0132] In a tenth specific example, the atmospheric covariance function can be an Ornstein-Uhlenbeck function, such as:

[0133]

[0134] where l atm is a hyperparameter corresponding to the length scale of the decorrelation at the penetration point. In this specific example, the mean of the covariance function can be given by:

[0135]

[0136] where μ corresponds to the mean, a atm corresponds to the inferred atmospheric offset, and corresponds to the value that the model (e.g., the Klobuchar model of the ionosphere, the Klobuchar model, the NeQuick model, the Beidou Global Broadcast Ionospheric Delay Correction Model [BDGIM], etc.) will give for the zenith ionospheric delay at the location .

[0137] In an eleventh specific example, the atmospheric model includes a Gaussian process that uses a covariance to model the following: per-satellite biases (e.g., even with high-precision clock / orbit products), multi-shell models (e.g., multiple shells for all satellites, one shell per satellite, etc.), and great-circle distances. However, the atmospheric model can be modeled in other ways.

[0138] In a twelfth specific example, the covariance function can be a sum, product, convolution, and / or otherwise combine any or all of the covariance functions from the foregoing examples (e.g., the sum of c atm_multiple , c station , c satellite ). However, any covariance function can be used for any model and / or error.

[0139] In a variant, the atmospheric model can include and / or correspond to a multi-shell model. The multi-shell model can refer to multiple shells, shells associated with each satellite, shells associated with each satellite constellation, and / or any suitable shells. Each shell in the multi-shell model can have the same or different thicknesses. However, the atmospheric model can include a single shell, continuously model the atmosphere, and / or otherwise model the atmosphere.

[0140] S121 can additionally or alternatively include dynamically modifying such a model (or changing the model) for the covariance based on the input data. For example, S121 can include a preprocessing step that determines the activity level of the atmosphere (e.g., ionosphere, troposphere) and adjusts the model hyperparameters based on the activity. More generally, S121 can include adjusting the model parameters, covariance terms, and / or hyperparameters in any way.

[0141] S121 can include not only selecting the parameters to be modeled but also the times at which these parameters should be modeled (and can include multiple time steps for each parameter).

[0142] S121 can additionally include setting constraints. For example, S121 can include constraining the Gaussian process such that the mean change in ionospheric delay and hardware bias (for a given receiver / satellite pair) is zero. Other useful constraints may include setting the mean of the satellite clock to zero (or some other value), stitching multiple models together (e.g., by performing boundary constraints at the transition times between models, such as by a sticher, etc.), setting the mean of the atmospheric model to the mean generated by the atmospheric model (e.g., where the model can be a Klobuchar model, NeQuick model, Beidou Global Broadcast Ionospheric Delay Correction Model [BDGIM], etc.), and / or applying any constraints to the parameters and / or hyperparameters.

[0143] S120 may include determining parameters and / or hyperparameters S122 associated with the GNSS correction model. S122 is used to determine the values of the parameters and / or hyperparameters used by the GNSS correction generation model based on the reference data input. S122 may use reference data (e.g., a subset of the dataset, a separate reference dataset, a dataset that partially overlaps with the dataset, etc.), past parameter estimates (raw estimates, smoothed estimates, posterior state values, etc.), and / or any suitable data to determine the GNSS correction model parameters.

[0144] Preferably, the parameters and / or hyperparameters are selected based on a quality metric. The quality metric may be a residual, correction likelihood, out-of-sample error, root mean square error, and / or other metrics. The quality metric is preferably associated with an adjusted dataset (e.g., a test dataset, a training dataset, etc.), and the adjusted dataset may be the same as the dataset used to generate the GNSS correction, a subset of the GNSS correction, or a dataset different from the dataset used to generate the GNSS correction. The parameters and / or hyperparameters may be selected when the quality metric is less than a threshold, greater than a threshold, and / or equal to a threshold. In a specific example, the parameters and / or hyperparameters may be selected based on optimizing (e.g., minimizing, maximizing) the quality metric. However, the parameters and / or hyperparameters may be selected in other ways.

[0145] In some variations, multiple quality metrics may be determined. The multiple quality metrics may correspond to the same or different adjusted datasets. Each quality metric may correspond to the same set of parameters and / or hyperparameters or a different set of parameters and / or hyperparameters. In these variations, the correction model may be selected based on a predetermined quality metric, an extreme value (e.g., minimum, maximum, etc.) quality metric, an average quality metric, a weighted quality metric, using voting, and / or otherwise based on the quality metric.

[0146] In a specific example, a calibration model (and / or its parameters or hyperparameters) can be determined by retaining one or more data sources (e.g., retaining data associated with one or more reference stations, sensors, satellites, satellite constellations, etc.), predicting GNSS corrections for the retained data sources using the remaining data sources and the GNSS calibration model, determining a quality metric based on the GNSS corrections of the retained data sources, and / or in other ways. This specific example can optionally include removing the mean from the retained data sources before and / or when determining the quality metric to correct for the bias of the data sources. The quality metric can be RMSE, the log-likelihood of the error, and / or any suitable quality metric. This specific example can be repeated for multiple retained data sources, for multiple calibration models (and / or their parameters or hyperparameters), and / or in other ways to select a calibration model. The parameters, hyperparameters, and / or calibration model can then be selected to have the highest likelihood correctly, the lowest residuals, the smallest root mean square error, the value that most accurately predicts the GNSS corrections of each data source, and / or in other ways.

[0147] In a related example, data collected from a data source during a first duration (e.g., t0 to t1) can be used to determine GNSS corrections, and a quality metric can be determined based on data collected from the data source during a second duration (e.g., t0 to t2, t a to t b , t1 to t2, etc.). In a variant of this example, the GNSS corrections can be valid and / or used during the first duration, the second duration, and / or any suitable duration.

[0148] For example, a set of parameters is calculated based on a first set of reference data. Later, when new data is available, S122 can include recalculating the set of parameters based on some combination of the new and old data (possibly excluding any old data); however, S122 can additionally or alternatively include updating one or more parameters from the initial set using the new data.

[0149] However, the calibration model can be selected in other ways.

[0150] S130 includes generating a set of GNSS corrections. S130 is used to generate a set of GNSS corrections using the GNSS correction model parameters S120. These corrections are preferably generated in a form available to the receiver for which the corrections are desired, but may additionally or alternatively be generated in any form. For example, when the receiver can accept PPP corrections, S130 may generate corrections in the form of PPP corrections (although the GNSS corrections generated by S130 may depend on the receiver position estimate or another spatial term compared to true PPP corrections). Additionally or alternatively, S130 may send the corrections in the form of (e.g., for a virtual reference station) RTK corrections, RTK-PPP corrections, SBAS corrections, and / or in any other form (e.g., local coefficients as part of a local model, global coefficients as part of a global model, etc.). Note that local and global corrections may occur in any order (and may be synchronous or asynchronous).

[0151] S130 may include dynamically adjusting the model used to generate GNSS corrections in any way. For example, S130 may include switching between models at any time based on changing conditions.

[0152] S130 may additionally include caching the model output S131 (and generating corrections using the cached model output). Thus, in some embodiments, cached data may be used in addition to or instead of real-time data. Additionally or alternatively, new parameters may be estimated based on predicted temporal changes (e.g., predicted according to cached values), or S130 may not rely on cached and / or predicted outputs.

[0153] S130 may also include calculating not only the GNSS corrections, but also an estimate of the uncertainty of these corrections (e.g., based on the uncertainty of the input parameters).

[0154] In a variant, S130 may include fixing the carrier phase ambiguity associated with one or more satellites in the line of sight of the receiver to an integer value. The carrier phase ambiguity may be fixed as part of the GNSS correction model, as disclosed in U.S. Patent Application No. 16 / 817,196, filed on March 12, 2020, entitled "SYSTEMS AND METHODS FOR REAL TIME KINEMATIC SATELLITE POSITIONING" or U.S. Patent Application No. 16 / 865,077, filed on May 1, 2020, entitled "Systems and Methods for High-Integrity Satellite Positioning", each of which is incorporated herein by reference in its entirety, and / or may be fixed or constrained in other ways.

[0155] In some variations, determining GNSS corrections can include updating data to include new data, new data batches, new induced points, and / or otherwise incorporating new data sets. The new data is preferably not related to the existing data, but can be related to the existing data. In a specific example, updating the GNSS correction model can include calculating Calculating (or updating) the QR decomposition And setting Where y a Corresponds to the first set of observations (e.g., existing data), y b Corresponds to the new data, Λ f Is the diagonal or block diagonal matrix corresponding to the difference between K ff (e.g., covariance function) and Q ff (e.g., the variance in f that can be explained by the observations u), QR corresponds to the QR decomposition of the matrix, P is the permutation matrix calculated during LDL T , QR, or Cholesky decomposition, v a Is the information vector corresponding to y a , and v is the information vector. However, the data can be updated in any way.

[0156] In some variations, determining GNSS corrections can include re-basing (and / or updating) the induced points of the GNSS correction model, which can be particularly but not exclusively beneficial for sparse Gaussian processes. The re-basing induced point function transforms a set of induced points u and is related to some new induced points z. Rebasing the induced points can include switching the induced points by predicting the prior of the new induced points and then re-calculating the quantities stored in a fitting manner. In a specific example, rebasing the induced points can include: calculating the posterior prediction associated with the induced points z (e.g., z ∼ N(m z , P zz )); calculating Calculating Calculating The LDLT of; and setting P zz = C T And R z = D 1 / 2 L T ; where D is the diagonal matrix, R is the residual matrix, and C is the Cholesky matrix. However, the induced points can be re-based in any way.

[0157] S130 may include verifying GNSS corrections S135. The GNSS corrections may be indefinitely valid within a verification time (e.g., a predetermined time), and / or valid within any suitable time. The GNSS corrections are preferably verified using a verification dataset (e.g., a subset of the dataset used to generate the GNSS corrections, a dataset different from the dataset used to generate the GNSS corrections, etc.), but may be verified for different GNSS correction models (e.g., different parameters, different hyperparameters, different model assumptions, etc.) and / or in any manner. The GNSS corrections are preferably verified when the residuals when the GNSS corrections are applied to the verification dataset are less than a threshold. When the residuals when the GNSS corrections are applied to the verification dataset are greater than the threshold, the GNSS corrections may be recalculated, the GNSS correction model may be updated (e.g., reparameterized, hyperparameters redetermined, etc.), additional data may be obtained, outlier detection may be repeated, a flag or warning (e.g., an unverified flag, an estimated accuracy or integrity accessible flag, a GNSS correction unavailable flag, etc.) may be included in the GNSS corrections, and / or any suitable response may occur. However, the GNSS corrections may be verified in other ways.

[0158] In some examples, the GNSS corrections may be verified (and / or generated) as disclosed in U.S. Patent Application No. 16 / 865,077, titled "Systems and Methods for High-Integrity Satellite Positioning", filed on May 1, 2020.

[0159] S140 includes transmitting the set of GNSS corrections. S140 is used to transmit the GNSS corrections to a mobile receiver that desires to perform GNSS corrections. The GNSS corrections may be transmitted wirelessly (e.g., via cellular, Wi-Fi, satellite, etc. networks), via a wired connection, and / or in any manner.

[0160] S150 includes using the set of GNSS corrections to correct a position estimate. The position estimate may be calculated at the mobile receiver, at a computing system (e.g., a positioning module associated with the correction generator), and / or at any suitable component. In some embodiments, it may be desirable for the GNSS correction generation source to calculate the position estimate (although this may have a higher latency, but in some cases, GNSS correction generation may be performed by a much more powerful computer compared to positioning calculations at the receiver). In such a case, S150 includes receiving the position estimate from the receiver and using the GNSS corrections generated in S130 to correct the position estimate (the corrected position may then be transmitted back to the receiver and / or any other location).

[0161] The methods of the preferred embodiments and their variations can be at least partially embodied and / or implemented as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions are preferably executed by computer-executable components preferably integrated with a system for GNSS correction generation. The computer-readable medium can be stored on any suitable computer-readable medium (such as RAM, ROM, flash memory, EEPROM, optical devices (CD or DVD), hard disk drive, floppy disk drive, or any suitable device). The computer-executable components are preferably general-purpose or special-purpose processors, but any suitable special hardware or hardware / firmware combination device can alternatively or additionally execute the instructions.

[0162] As those skilled in the art will recognize from the foregoing detailed description, as well as from the drawings and claims, modifications and changes can be made to the preferred embodiments of the present invention without departing from the scope of the present invention as defined in the appended claims.

Claims

1. A method for determining the position of a mobile receiver, comprising: Receiving a set of satellite observations from a set of reference stations; And Generating a set of GNSS corrections using a set of Gaussian processes, wherein the input of the set of Gaussian processes includes a set of covariance functions that are related to non-differenced and non-combined satellite observations from the set of satellite observations, and wherein the set of covariance functions includes: A covariance function related to satellite orbit errors between two satellite observations, including: a constant function combined with a squared exponential function, and the squared exponential function is combined with an Ornstein-Uhlenbeck function; A covariance function related to hardware biases between two satellite observations, including: a squared exponential bias function combined with an Ornstein-Uhlenbeck function; A covariance function related to clock errors between two satellite observations, including: an Ornsten-Uhlenbeck function; and A covariance function related to atmospheric delay, including: a squared exponential function; Wherein the mobile receiver receives a second set of satellite observations, corrects the second set of satellite observations using the set of GNSS corrections; and determines the receiver position using the corrected second set of satellite observations.

2. The method according to claim 1, wherein, The covariance function related to atmospheric delay includes: A radial covariance function related to a first penetration point associated with a first satellite observation and a second penetration point associated with a second satellite observation, the radial covariance function including a squared exponential function based on the great circle distance between the first penetration point and the second penetration point; and An altitude covariance function related to the altitude of the first penetration point and the altitude of the second penetration point.

3. The method according to claim 1, wherein One or more hyperparameters associated with at least one of the covariance functions are determined by: Selecting a set of tuning hyperparameters and a tuning data set of satellite observations; Predicting a set of predicted GNSS corrections using the set of tuning hyperparameters; Comparing the set of predicted GNSS corrections with a set of subsequently determined actual GNSS corrections; And Storing the tuning hyperparameters in the set of tuning hyperparameters that predicted the actual GNSS corrections with an accuracy higher than a threshold.

4. The method according to claim 1, wherein, The set of satellite observations includes at least 1,000 satellite observations.

5. A method for generating GNSS corrections, comprising: Receiving a set of satellite observations corresponding to one or more satellites of one or more satellite constellations from a set of reference stations; Estimating the atmospheric delay at each reference station in the set of reference stations using a precise point positioning filter, and Generating a set of GNSS corrections using a GNSS correction model, wherein the GNSS correction model includes a Gaussian process, and wherein the input of the GNSS correction model includes non-differenced and non-combined satellite observations from the set of satellite observations and the atmospheric delay at each reference station, and wherein the covariance function related to a first penetration point associated with a first satellite observation and a second penetration point associated with a second satellite observation includes a squared exponential function. Wherein, the set of GNSS corrections can be used to correct the position determined for a mobile receiver.

6. The method according to claim 5, wherein Estimating the atmospheric delay at each reference station includes modeling the total electron content of the ionosphere using a multi-shell model.

7. A method for generating GNSS corrections, comprising: Receiving, from a set of reference stations, a set of satellite observations corresponding to one or more satellites of one or more satellite constellations; Estimating the atmospheric delay at each reference station in the set of reference stations using a precise point positioning filter, wherein estimating the atmospheric delay at each reference station includes modeling the total electron content of the ionosphere using a multi-shell model; and Generating a set of GNSS corrections using a GNSS correction model, wherein the GNSS correction model includes a Gaussian process, wherein the input to the GNSS correction model includes non-differenced and non-combined satellite observations from the set of satellite observations and the atmospheric delay at each reference station, wherein the covariance function associated with a first penetration point associated with a first satellite observation in the set of satellite observations and a second penetration point associated with a second satellite observation in the set of satellite observations depends on the great circle distance between the single shell in the multi-shell model between the first penetration point and the second penetration point; Wherein, the set of GNSS corrections can be used to correct the position determined for a mobile receiver.

8. The method according to claim 6 or 7, wherein The covariance function associated with the Gaussian process includes the sum of the following terms: A covariance function associated with the satellite observations received at each reference station; A covariance function associated with the satellite observations received from each satellite; and A covariance function corresponding to the convolution between the covariance functions associated with each shell in the multi-shell model, wherein the covariance function associated with each shell in the multi-shell model corresponds to altitude covariance and radial covariance.

9. A method for generating GNSS corrections, comprising: Receiving, from a set of reference stations, a set of satellite observations corresponding to one or more satellites of one or more satellite constellations; Estimating the atmospheric delay at each reference station in the set of reference stations using a precise point positioning filter, wherein estimating the atmospheric delay at each reference station includes modeling the total electron content of the ionosphere using a multi-shell model; and Generating a set of GNSS corrections using a GNSS correction model, wherein the GNSS correction model includes a Gaussian process, wherein the input to the GNSS correction model includes non-differenced and non-combined satellite observations from the set of satellite observations and the atmospheric delay at each reference station, wherein the covariance function associated with the Gaussian process includes the sum of the following terms: A covariance function associated with the satellite observations received at each reference station; A covariance function associated with the satellite observations received from each satellite; and A covariance function corresponding to the convolution between the covariance functions associated with each shell in the multi-shell model, wherein the covariance function associated with each shell in the multi-shell model corresponds to altitude covariance and radial covariance; Wherein, the set of GNSS corrections can be used to correct the position determined for a mobile receiver.

10. The method according to claim 6 or 9, wherein, The covariance function associated with a first penetration point associated with a first satellite observation value in the set of satellite observation values and a second penetration point associated with a second satellite observation value in the set of satellite observation values depends on the great circle distance between a single shell in the multi-shell model between the first penetration point and the second penetration point.

11. The method according to any one of claims 5, 7 or 9, wherein The Gaussian process includes a sparse Gaussian process, wherein the sparse Gaussian process includes a set of inducing points, and the set of inducing points is associated with variables of the set of reference stations.

12. The method according to claim 11, further comprising re-basing the set of inducing points by: Calculating a posterior prediction associated with a second set of inducing points; and Scaling a prior associated with the set of inducing points based on the posterior prediction.

13. The method according to any one of claims 5, 7, or 9, further comprising identifying one or more outliers in the set of satellite observation values and removing the outliers from the set of satellite observation values.

14. The method according to claim 13, wherein, Identifying the outliers includes identifying the outliers using a random sample consensus method.

15. The method according to any one of claims 5, 7 or 9, wherein The set of GNSS corrections can be used to correct at least one of the following: satellite clock error, satellite orbit error, satellite hardware bias, satellite antenna phase saturation, satellite antenna phase center offset, satellite antenna phase center variation, solid earth tide, solid earth pole tide, ocean tide loading, ionospheric delay, tropospheric delay, receiver clock error, receiver hardware bias, receiver antenna phase saturation, receiver antenna phase center offset, receiver antenna phase center variation, carrier phase ambiguity, and multipath effect.

16. The method according to any one of claims 5, 7, or 9, further comprising determining parameters of the GNSS correction model by: Selecting a set of adjustment parameters; Predicting a set of predicted GNSS corrections using the set of adjustment parameters; Comparing the set of predicted GNSS corrections with a set of subsequently determined actual GNSS corrections; and Storing adjustment parameters in the set of adjustment parameters that predicted the actual GNSS corrections with an accuracy higher than a threshold.

17. The method according to any one of claims 5, 7, or 9, further comprising validating the GNSS correction by: Select a set of verified satellite observations, where, The set of validation satellite observation values is not used to generate the GNSS correction; Estimating a GNSS correction associated with the set of validation satellite observation values based on the GNSS correction model; When the residual associated with the GNSS correction associated with the set of validation satellite observation values is less than a threshold, validating the GNSS correction.

18. The method according to any one of claims 5, 7, or 9, further comprising constraining the GNSS correction associated with a first time and the GNSS correction associated with a second time to ensure a smooth transition between the GNSS corrections between the first time and the second time.

19. The method according to claim 18, wherein, Constraining the GNSS correction between the first time and the second time includes constraining the average number of satellite observations detected at a primary reference station in the set of reference stations to a common value between the first time and the second time.

Citation Information

Patent Citations

  • Systems and methods for high-integrity satellite positioning

    US10809388B1

  • Systems and methods for distributed dense network processing of satellite positioning data

    US20190154837A1

  • Systems and methods for distributed dense network processing of satellite positioning data

    US20200041654A1

  • Systems and methods for reduced-outlier satellite positioning

    US20200158883A1

  • Systems and methods for real time kinematic satellite positioning

    US20200271795A1