System and method for high-integrity satellite positioning

By combining the positioning engine and the correction value processing engine, and utilizing carrier phase measurement and integer ambiguity determination, the limitations of the GNSS system in terms of accuracy and integrity are resolved, achieving high-precision and high-integrity positioning estimation suitable for the guidance of autonomous vehicles.

CN114174850BActive Publication Date: 2025-10-03SWIFT NAVIGATION INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
CN202080046172.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-05-01
Filing Date
2020-05-01
Publication Date
2025-10-03
Estimated Expiration
2040-05-01

AI Technical Summary

Technical Problem

Existing GNSS positioning systems struggle to meet the accuracy and integrity requirements of modern machine automation applications. This is especially true for autonomous vehicle guidance, where the practicality of traditional high-integrity GNSS systems is limited, as they are unable to effectively address pseudorange multipath errors and high costs in complex environments.

Method used

A system using a positioning engine and correction value processing engine, combined with GNSS receivers, reference stations and sensors, achieves high-precision and high-integrity positioning estimates through carrier phase measurements and integer ambiguity determination. It can quickly detect and suppress predetermined events and use the inertial navigation system to perform position estimation when satellite signals are interrupted.

Benefits of technology

It achieves high-precision positioning within 30 seconds, has low integrity risk and small protection level, can quickly respond to pseudo-range multipath errors in complex environments, provides sub-meter position accuracy and high integrity, and is suitable for guidance of automatic vehicles.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114174850B_ABST
    Figure CN114174850B_ABST
Patent Text Reader

Abstract

A system for estimating a receiver position with high integrity may include a remote server comprising: a reference station observation monitor configured to: receive a set of reference station observations associated with a set of reference stations, detect predetermined events, and suppress the effects of the predetermined events; a modeling engine configured to generate correction values; a reliability engine configured to verify the correction values; and a positioning engine comprising: an observation monitor configured to: receive a set of satellite observations from a set of global navigation satellites corresponding to at least one satellite constellation; detect predetermined events; and suppress the effects of the predetermined events; a carrier phase determination module configured to determine carrier phase ambiguities for the set of satellite observations; and a position filter configured to estimate the position of the receiver.
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 Serial No. 62 / 841,380, filed May 1, 2019, which is incorporated by reference in its entirety.

[0003] This application is related to U.S. patent application Ser. No. 16 / 817,196, filed on March 12, 2020, U.S. patent application Ser. No. 16 / 589,932, filed on October 1, 2019, and U.S. patent application Ser. No. 16 / 748,517, filed on January 21, 2020, each of which is incorporated by reference in its entirety. Technical Field

[0004] The present invention relates generally to the field of satellite positioning and, more particularly, to new and useful systems and methods for high-integrity satellite positioning.

[0005] background

[0006] Satellite positioning systems based on the Global Navigation Satellite System (GNSS) are essential for countless applications that require precise knowledge of an object's location on Earth. Like its terrestrial-based radio navigation ancestor, satellite positioning was initially used as a navigation aid for human navigators. With the advancement of automation, the connection between satellite positioning input and machine control output has become shorter and more direct. Unfortunately, the accuracy of GNSS positioning systems has not always kept pace with the needs of modern machine automation applications. In addition, applications where the cost of error is high (e.g., loss of human life) require not only high accuracy but also high integrity, a related but different concept (discussed in further detail in a later section) and another limitation of current GNSS positioning. Therefore, there is a need in the field of satellite positioning to create systems and methods for high-integrity satellite positioning. The present invention provides such new and useful systems and methods. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] Figure 1A is a diagram of a system according to an embodiment of the invention;

[0009] Figure 1B is a diagram of a system according to an embodiment of the invention;

[0010] Figure 1C is a diagram of a system according to an embodiment of the invention;

[0011] Figure 2 is a diagram of a positioning engine of a system according to an embodiment of the present invention;

[0012] Figure 3 is a diagram of a correction value processing engine of a system according to an embodiment of the present invention;

[0013] Figure 4 is a diagram of a modeling engine of a correction value processing engine of a system according to an embodiment of the present invention;

[0014] Figure 5 is a diagram of a reliability engine of a correction value processing engine of a system according to an embodiment of the present invention;

[0015] Figure 6A and Figure 6B is a schematic diagram of an example of verifying a dead reckoning position;

[0016] Figure 7 is a schematic diagram of an example method of using the system;

[0017] Figure 8 is a chart view of the method of the preferred embodiment;

[0018] Figure 9 is a conversion example view of the method of the preferred embodiment;

[0019] Figure 10A and Figure 10B This is an example diagram of ionospheric effect modeling;

[0020] Figure 11 This is an example diagram of GNSS effect interpolation;

[0021] Figure 12 is an example of a system for multiple global and local fear event detection, verification, and correction, with optional separation between remote and local computing systems;

[0022] Figure 13 is a schematic diagram of an example of a dead reckoning module; and

[0023] Figure 14 is a schematic diagram of an exemplary process for determining a dead reckoning position.

[0024] Description of Embodiments of the Invention

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

[0026] 1. Overview

[0027] like Figure 1A 、 Figure 1B and Figure 1CAs shown, the system preferably includes a positioning engine and a correction value processing engine. The system may optionally include one or more GNSS receivers, reference stations, and / or any suitable components. The positioning engine may include one or more of: an observation module, an outlier detector, a carrier phase determination module, a verification module, a position module, a velocity module, a dead reckoning module, a fast reconvergence module, and / or any suitable modules. The correction value processing engine may include one or more of: a reference observation monitor, a correction value data monitor, a metadata monitor, a modeling engine, and / or any suitable modules.

[0028] like Figure 7 As shown, the method may include receiving reference station observations, determining corrections based on the reference station observations, receiving satellite observations, resolving carrier phase ambiguities based on the satellite observations and the corrections, and estimating a position of the GNSS receiver based on the carrier phase measurements. The method may optionally include validating the corrections, detecting predetermined events, suppressing predetermined events, validating integer ambiguities, removing integer ambiguities from the carrier phase measurements, operating an external system based on the estimated position, and / or any other suitable steps.

[0029] Embodiments of the systems and / or methods may be used, for example, for automated vehicle guidance (e.g., for unmanned aerial vehicles (UAVs), unmanned aerial systems (UASs), autonomous vehicles, agricultural equipment, robotics, rail transportation / traffic systems, etc.), GPS / GNSS research, surveying systems, and / or for any suitable operation. In specific examples, the systems (and / or components) may be coupled to any suitable external system, such as a vehicle (e.g., a UAV, UAS, car, truck, etc.), a robot, a rail car, a user device (e.g., a cell phone, a mobile application), agriculture, robotics, and / or any suitable system. Additionally, the GNSS receiver may be designed to utilize open source software and firmware, making it easily customizable to the specific needs of the end-user application, thereby simplifying system integration and reducing host system overhead; however, the GNSS receiver may be designed in any suitable manner.

[0030] 1.1 GNSS Accuracy and Integrity

[0031] The accuracy of a GNSS positioning system is a characteristic of that system that provides statistical information about the possible errors in the system's position data output. For example, a standard GNSS receiver might specify an accuracy of 1 meter at approximately a 68% confidence level (i.e., 1 standard deviation of a normal distribution); in other words, 68% of the time, the position output by the system is within 1 meter of the true position. As another example, a high-precision real-time kinematic (RTK) GNSS receiver can provide an accuracy of 3 cm (at a 95% confidence interval or 2 standard deviations of a normal distribution). Therefore, a high-precision system is simply one that achieves low position errors most of the time (based on a posteriori measurements).

[0032] Like accuracy, integrity is based on position error; however, integrity includes the concept of real-time or near-real-time error estimation (as opposed to a posteriori error calculation). Based on this real-time error estimation, a positioning system with integrity can provide an alert when the positioning error is likely to exceed an error threshold. Broadly speaking, the integrity of a positioning system can be described by the following parameters: position error (PE), integrity risk, protection level (PL), alarm limit (AL), and time to alert (TTA). Real-time or near-real-time error estimation can occur within a predetermined estimation time (e.g., 100ms, 1s, 2s, 3s, 4s, 5s, 10s, 20s, 30s, 45s, 60s, 90s, 120s, 180s, 240s, 300s, 600s, etc.), "fast enough to be used during navigation," and / or with any suitable timing.

[0033] Position error is the error in the estimated position (e.g., if the estimated position is 1 meter from the true position, then the position error is 1 meter). As previously mentioned, it is impossible for a GNSS receiver to independently know the position error in real time (e.g., due to accuracy characterization, while the receiver may know that the error is under 1 meter 95% of the time, the receiver cannot independently determine that a given position estimate is exactly 0.5 meters from the true position, and if it could, it would simply subtract the error to obtain perfect accuracy). Note that while error is discussed in terms of "position error," integrity can generally be performed for any parameter estimated by the positioning system (e.g., horizontal position error of the receiver, vertical position error of the receiver, error in pseudoranges from the receiver to one or more satellites, velocity error, etc.).

[0034] Integrity risk is a measure of integrity (as accuracy is more generally a measure of system integrity). Integrity can be a measure of confidence in the correctness of the information provided by the navigation system. Integrity risk is typically specified as the probability that the position error will exceed a threshold (alarm limit) within a certain time period (e.g., at the current time, one second, one minute, one hour, one day, the duration of operation, etc.). Target integrity risk (TIR) ​​is the integrity risk target used to generate a protection level (e.g., an alarm or suppression threshold). In some variations, integrity risk can be broken down into (e.g., determined from) the following components: the probability that one or more of a set of predetermined events will occur (e.g., during the time period); intermediate data integrity risk (e.g., the probability that intermediate data used to estimate position (such as pseudorange; carrier phase; real-valued carrier phase; integer-valued carrier phase, etc.) will exceed a threshold within a time period; the probability that errors will exist in the intermediate data within a time period; the probability that the intermediate data will be transformed (e.g., fixed to an incorrect value); and / or any suitable probability. The estimated location integrity risk (and / or intermediate data integrity risk) can be the sum of one or more individual probabilities, the product of one or more individual probabilities, the maximum probability of the individual probabilities, the minimum probability, the average of one or more individual probabilities, based on an equation and / or model relating one or more individual probabilities to integrity risk (e.g., an equation and / or model determined empirically, based on fitted parameters, based on Monte Carlo simulation, etc.), and / or otherwise determined from one or more individual probabilities. Integrity risk (e.g., estimated location integrity risk, intermediate data integrity risk) can be determined using weighted or unweighted individual probabilities. However, integrity risk can be defined in other ways.

[0035] The protection level is a statistical upper bound on the position error calculated based on the target integrity risk and serves as a mechanism for real-time position error estimation. In other words, the protection level is the estimated position error that is guaranteed to satisfy a given TIR or P{PE>PL}≤TIR (at any point in time). For a given position estimate, the protection level is calculated such that the probability that the actual position error is greater than the protection level is less than the target integrity risk. Note that the protection level typically decreases as the GNSS receiver receives more data and / or spends more time performing calculations (i.e., the range of position errors that still satisfy TIR decreases as the receiver becomes more certain about the position). However, the protection level can be defined in other ways.

[0036] The alarm limit is a threshold for the protection level. In the illustrative example, when the protection level of the position estimate is above 10 meters (in this case, 10 meters is the alarm limit), the position estimate may be considered unreliable. Relatedly, the time to alert (TTA) is the maximum amount of time that can elapse between the protection level exceeding the alarm limit and the generation of an alarm (e.g., specifying that the position estimate is unreliable). However, the alarm limit can be defined in other ways.

[0037] While these parameters are standard for describing integrity, it's worth noting that many of them can be specified in different ways. For example, a position error estimate can be one or more upper bounds on the integrity risk of the position error. Generally speaking, the concept of integrity in satellite positioning involves estimating position error and responding accordingly. However, integrity can be described in other ways.

[0038] As mentioned previously, high-integrity positioning is crucial for applications where GNSS errors can lead to high costs. One application where high-integrity positioning is crucial is in autonomous vehicle (AV) guidance. Unfortunately, the practicality of traditional high-integrity GNSS systems (e.g., GNSS receivers that produce protection levels of around 10 meters) for AV guidance is severely limited—not only are these systems too expensive to use in most AVs, but the required alert levels for AV guidance (e.g., 3 meters) are significantly lower than the achievable alert levels of traditional systems. Furthermore, traditional system protection levels for aircraft are calculated under open sky conditions (unlike the busy and congested urban environments AVs must navigate), and therefore do not have to contend with the pseudorange multipath errors exacerbated by commercial-grade receivers. Furthermore, the operating environments of traditional systems utilize simplifying assumptions (e.g., single-fault assumptions, neglect of sub-meter threats) to accelerate validation, which is not achievable in some of the technology's intended use cases.

[0039] The systems and methods of the present disclosure are directed to novel high-integrity positioning that enables efficient use of GNSS positioning for commercial applications.

[0040] 1.2 Overview of Traditional GNSS, PPP, and RTK

[0041] As a quick refresher, a traditional satellite positioning system (such as standard GNSS) works by trying to align a local copy of a pseudo-random binary sequence (at the receiver) with a copy of the same sequence transmitted by a satellite; because the satellite is far away from the receiver, the signal transmitted by the satellite is delayed. 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, and this time 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 (for example, latitude, longitude and altitude). Typical GNSS can achieve an accuracy of 2m at best in positioning.

[0042] This level of accuracy is severely insufficient for many applications (e.g., guidance of autonomous passenger vehicles / drones / agricultural equipment, GPS / GNSS research, surveying). In response, two position correction algorithms have been developed: Precise Point Positioning (PPP) and Real-Time Kinematics (RTK).

[0043] Rather than solely using the positioning codes broadcast by satellites, PPP and RTK also utilize the satellite signal carrier phase to determine position. While using carrier phase data can achieve higher accuracy, accurately determining the position of a GNSS receiver (i.e., the receiver whose position is being calculated) requires accounting for many potential error sources. Furthermore, carrier phase measurements are ambiguous; because the carrier signal is uniform, it may be impossible to distinguish between a phase shift of φ and a phase shift of 2πN+φ, where N is an integer, using phase measurements alone. For example, it can be difficult to determine the difference between a phase shift of π radians and a phase shift of 3π radians (or –π, 5π, and so on).

[0044] PPP attempts to address this problem by explicitly modeling the errors present in GNSS receiver phase and code measurements. Some errors are global or nearly global (such as satellite orbit and clock errors); for these errors, PPP typically uses correction data with high-precision measurements. However, for local errors (i.e., errors that depend primarily on the positioning of the GNSS receiver), PPP can only model them very roughly. Fortunately, many local errors vary slowly over time; therefore, PPP can achieve high accuracy with just a single receiver, but it may take a long time to converge to accurately determine the local errors. As used in this application, "global error" refers to any error that does not vary significantly across multiple reference stations in a region, while "local error" refers to an error that does vary significantly across multiple reference stations (because the error is specific to a reference station and / or because the error varies significantly across locations within the region). Because such errors are related to positioning, they may also be referred to as "global positioning error" and "local positioning error."

[0045] RTK avoids much of the modeling work involved in PPP by using a GNSS reference station (with a precisely known position). Because the reference station is local to the GNSS receiver, differencing the reference station and GNSS receiver signals can significantly reduce errors. As a result, RTK solutions can converge much faster than PPP solutions (and without the high-precision global correction data required by PPP). However, RTK solutions require the presence of a base station near the GNSS receiver.

[0046] 1.3. Benefits

[0047] Changes in technology can bring several benefits and / or advantages.

[0048] First, variations of this technique can achieve high-precision positioning of GNSS receivers and / or external systems. In certain examples, using carrier phase measurements and / or determining integer ambiguities can improve the accuracy with which a GNSS receiver's position can be determined (such as achieving centimeter-level or better positioning of a mobile receiver). In certain examples, this level of precise positioning can be achieved with commercial-grade GNSS receivers and antennas that have adaptive tracking profiles as a function of receiver dynamics and have different levels of pseudorange errors than aviation-grade GNSS receivers and antennas.

[0049] Second, variations of this technique can achieve high-precision GNSS receiver and / or external system position estimates. In related variations, the integrity of the estimated position can be (approximately) independent of pseudorange multipath errors. In a specific example, using carrier phase ambiguities (e.g., integer-valued carrier phase ambiguities) with or without pseudorange measurements to estimate position can achieve high accuracy and / or reduce the estimated position's dependence on multipath errors.

[0050] Third, variations of the present technology can achieve high integrity (e.g., low integrity risk, low protection level, etc.) of the estimated GNSS receiver and / or external system position. In a specific example, the high integrity estimated position can be achieved by allocating predetermined event detection between a positioning engine (e.g., detecting threats with fast or immediate integrity impact) and a correction value processing engine (e.g., detecting threats with slow integrity impact (on the order of seconds or minutes)), detecting sub-meter threats with multiple verification levels of integer-valued carrier phase ambiguities using signals from multiple constellations within a threat model, determining corrections using a first set of reference station observations and verifying the corrections using a second set of reference station observations, enabling one or more high integrity estimated positions, and / or otherwise enabling the high integrity estimated position.

[0051] Fourth, variations of the present technique can rapidly estimate the position of a GNSS receiver and / or external system. In a specific example, a system and / or method can achieve a first TIR within 30 seconds (e.g., 5 seconds, 10 seconds, 15 seconds, 20 seconds, etc.), a second TIR within 90 seconds (e.g., upon startup, after achieving the first TIR, etc., such as 10 seconds, 20 seconds, 30 seconds, 45 seconds, 60 seconds, 75 seconds, 90 seconds, etc.), and a third TIR within 300 seconds (e.g., upon startup, after achieving the first TIR, after achieving the second TIR, etc., such as 10 seconds, 20 seconds, 30 seconds, 45 seconds, 60 seconds, 75 seconds, 90 seconds, 120 seconds, 150 seconds, 180 seconds, 200 seconds, 215 seconds, 250 seconds, 270 seconds, 300 seconds, etc.). However, the present technique can estimate and verify the position of a GNSS receiver and / or external system within any other suitable timeframe.

[0052] Fifth, variations of this technique can determine that a receiver position is at a threshold integrity level in the absence of satellite signals (e.g., when satellite signal detection is interrupted due to hardware issues, obstructions, etc.). In a specific example, when one or more satellite signals are not received, one or more sensors (e.g., an inertial navigation system (INS)) can be used to estimate the GNSS receiver and / or external system position. In this specific example, dead-reckoning positions determined using different INSs can be verified against each other to ensure that the dead-reckoning positions meet the threshold integrity level.

[0053] However, variations of the technology may impart any other suitable benefits and / or advantages.

[0054] 2. System

[0055] like Figure 1A 、 Figure 1B and Figure 1C As shown, system 1000 includes computing system 1300. Computing system may include positioning engine 1100 and correction processing engine 1500. System 1000 may optionally include one or more GNSS receivers 1200, reference stations 1600, sensors 1700, and / or any suitable components.

[0056] The system is used to estimate the position of a mobile receiver and / or external system. The estimated position preferably has high accuracy, but can have any suitable accuracy. For example, the estimated position can have an accuracy (e.g., with 50% confidence, 68% confidence, 95% confidence, 99.7% confidence, etc.) of up to 10 meters (e.g., 1 mm, 5 mm, 1 cm, 3 cm, 5 cm, 10 cm, 20 cm, 30 cm, 50 cm, 60 cm, 75 cm, 1 m, 1.5 m, 2 m, 3 m, 5 m, 7.5 m, etc.). The estimated position preferably has high integrity (e.g., low target integrity risk, small protection level, etc.), but can have any suitable integrity. For example, the estimated position (and / or velocity) can have an accuracy of less than about 10 -2 / hour (such as up to 10 -3 / hour, 10 -4 / hour, 10 -5 / hour, 10 -6 / hour, 10 -7 / hour, 10 -8 / hour and / or 10 -9 In a second example, the estimated location may have a protection level of less than about 10 meters, such as at most 5m, 3m, 2m, 1m, 75cm, 50cm, 40cm, 30cm, 25cm, 20cm, 10cm, 5cm, 3cm, 1cm, 5mm, and / or 1mm.

[0057] The system can additionally or alternatively be used to determine a probability and / or probability distribution that one or more predetermined events (e.g., a feared event, a threat, a failure, etc.) will occur within a given time period. The predetermined events can correspond to events that will degrade the accuracy, integrity, availability, and / or otherwise affect the estimated position. The predetermined events can directly affect the estimated position and / or indirectly affect the estimated position (e.g., by affecting the determination of a real-valued or integer-valued carrier phase, the determination of a dead reckoning position, corrections, outlier detection, the reception of satellite observations, the reception of reference station observations, the reception of corrections, etc.).

[0058] In certain examples, predetermined events may include: high-dynamic events, low-dynamic events, data link threats, and / or other events.

[0059] Examples of high dynamic events include: local scheduled events, such as pseudorange multipath, carrier phase multipath, carrier phase cycle slips, RF interference, non-line-of-sight (NLOS) tracking, false acquisition, Galileo binary offset carrier modulation (BOC) second peak tracking, spoofing, etc.; satellite and / or satellite constellation scheduled events (e.g., satellite-feared events), such as code-carrier incoherence, satellite clock step error, satellite clock drift error greater than 1 cm / s, GPS harmful waveforms, loss of satellite observation results, erroneous navigation messages, etc.; and / or other high dynamic events.

[0060] Examples of low-dynamic events include: environmental scheduled events, such as ionospheric gradients of up to 1 cm / s, tropospheric gradients, ionospheric scintillation, atmospheric events, etc.; network scheduled events, such as reference station false path multipath, reference station RF interference, reference station cycle slips, reference station observation loss, reference station observation corruption, etc.; low-dynamic satellite and / or satellite constellation scheduled events, such as satellite observation loss, erroneous navigation messages, satellite clock drift errors of up to about 1 cm / s, data anomaly problems, erroneous broadcast ephemeris, erroneous broadcast clock, constellation failure, etc.; metadata scheduled events, such as incorrect reference station coordinates, incorrect Earth rotation parameters, incorrect sun / moon ephemeris, incorrect ocean payload parameters, incorrect satellite attitude model, incorrect satellite phase center offset, incorrect satellite phase center change, incorrect leap second, etc.; and / or other low-dynamic events.

[0061] Examples of data link threats may include: correction message corruption, corrupted message loss, correction message spoofing, and / or other data transmission threats.

[0062] In variations, a high-dynamic event can be an event (e.g., a threat, a failure, etc.) that affects the integrity of the estimated position once the high-dynamic event is processed and / or used to estimate position (e.g., on the order of seconds, milliseconds, or nanoseconds while satellite signals are being processed). In related variations, a low-dynamic event can be an event (e.g., a threat, a failure, etc.) that affects the integrity of the estimated position within a threat time period. The threat time period can be predetermined (e.g., 1 second, 5 seconds, 10 seconds, 12 seconds, 20 seconds, 30 seconds, 40 seconds, 50 seconds, 60 seconds, 90 seconds, 120 seconds, 180 seconds, 240 seconds, 300 seconds, 600 seconds, etc.) based on the event, based on integrity (e.g., previously estimated position integrity, target integrity, application-required integrity, etc.), based on data transmission lag, and / or can be any suitable time period. In related variations, a data link threat can be an event based on sending and / or receiving data between computing systems.

[0063] The probability of a predetermined event occurring (and / or the impact of a predetermined event) can be determined heuristically, empirically, and / or in other ways based on computer simulations and / or models (e.g., Monte Carlo simulations, direct simulations, etc.). The probability of each predetermined event is preferably independent of the probabilities of other predetermined events. However, the probabilities of two or more predetermined events may be interdependent. In a variation, the probabilities of the predetermined events can be used to estimate (and / or determine) the TIR (e.g., for position estimates, for intermediate data, partially transformed data, etc.). In a specific example, the TIR can be determined based on the product of each predetermined event, and the probability of misdetecting the predetermined event and the impact of the predetermined event on the estimated position and / or intermediate data are scaled. However, the TIR can be determined in any other suitable manner.

[0064] The computing system 1300 is preferably configured to process data from reference stations, GNSS receivers, and / or sensors. The computing system may process this data for a variety of purposes, including data aggregation (e.g., tracking multiple mobile receivers, integrating satellite observations and sensor data, etc.), system control (e.g., providing directions to external systems based on position data determined from a GNSS receiver attached to the external system), position calculation (e.g., performing calculations on a GNSS receiver that is offloaded due to limited memory or processing power, receiver position determination, etc.), correction calculation (e.g., local and / or global correction data, such as correcting for clock errors, atmospheric corrections, etc.), detecting predetermined events (e.g., in satellite observations, reference station observations, data links, etc.), suppressing the effects of predetermined events (e.g., by removing observations that include the predetermined event, by scaling observations that include the predetermined event, etc.), and / or the computing system may process the data in any suitable manner. The computing system may additionally or alternatively manage reference stations or generate virtual reference stations for the GNSS receiver based on reference station observations. If the GNSS receiver is not directly connected to the internet, the computing system may additionally or alternatively act as an internet gateway for the GNSS receiver. The computing system can be local (e.g., a general-purpose computer, processor, GNSS receiver connected to the Internet with external systems, sensors, reference stations, etc.), remote (e.g., a central processing server, cloud, server, etc.), distributed (e.g., split between one or more local and remote systems), and / or configured in any suitable manner.

[0065] In a preferred embodiment, the computing system is distributed between a local computing system and a remote computing system (e.g., a server system). In a specific example, the local computing system may include a positioning engine, and the remote computing system may include a correction value processing engine. However, the local computing system may include a positioning engine and a correction value processing engine, the server may include a positioning engine and a correction value processing engine, the server may include a positioning engine, and the local computing system may include a correction value processing engine, and / or the positioning engine and / or the correction value processing engine may be distributed between the server and the local computing system. However, the computing system may include any suitable components and / or modules.

[0066] Positioning engine 1100 is used to estimate the position of GNSS receiver 1200 and / or an external system coupled to the GNSS receiver. Positioning engine 1110 preferably takes as input satellite observations (e.g., observation data) from GNSS receiver 1200 (or other GNSS data source) and corrections (e.g., correction data) from correction processing engine 1500 to generate an estimated position (e.g., position data). However, the positioning engine may additionally or alternatively obtain sensor data, predetermined event information (e.g., detection of a predetermined event, suppression of a predetermined event, probability of a predetermined event, etc.), reference station observations, satellite observations from other GNSS receivers, and / or any other data or information input. The positioning engine preferably outputs an estimated position and the integrity of the estimated position (e.g., protection limits, integrity risk, etc.). However, the positioning engine may additionally or alternatively output a dead-reckoned position, sensor biases, predetermined events (e.g., detection, identification, suppression, etc.), and / or any other suitable data. The positioning engine is preferably communicatively coupled to the GNSS receiver, correction processing engine, and sensors, but may additionally or alternatively be communicatively coupled to a reference station and / or any suitable component.

[0067] The position engine preferably performs error detection on the data received from the correction value processing engine (e.g., correction values, correction value reliability, predetermined event detection, etc.). The error detection is preferably based on a cyclic redundancy check (CRC) (such as CRC-16, CRC-32, CRC-64, Adler-32, etc.). However, the error detection can be based on a secure hash algorithm (SHA), a cryptographic hash function, a hash-based message authentication code (HMAC), a Fletcher's checksum, a longitudinal parity check, a sum's complement, a fuzzy checksum, a fingerprint function, a randomization function, and / or any suitable error detection scheme.

[0068] In some variations, correction values ​​received from the correction value processing engine may be invalidated (and / or otherwise unusable) after a timeout period has elapsed (and no new correction values ​​have been received within the timeout period). The timeout period may be a predetermined duration (e.g., 1 second, 2 seconds, 5 seconds, 10 seconds, 20 seconds, 30 seconds, 40 seconds, 50 seconds, 60 seconds, 90 seconds, 120 seconds, 180 seconds, 300 seconds, 600 seconds, etc.) based on the reliability of the correction values, based on predicted changes in the correction values, based on a random or pseudo-random duration of the GNSS receiver (e.g., position, velocity, acceleration, receiver bias, etc.), based on an external system (e.g., a required level of position integrity, a required level of position accuracy, position, velocity, acceleration, etc.), based on the application, based on the positioning engine (e.g., the ability of the positioning engine to adapt to inaccuracies in the correction values), and / or based on any suitable component. However, any suitable timeout period may be used.

[0069] In a particular example, the positioning engine (and / or components of the positioning engine) may perform any suitable methods and / or method steps as described in U.S. patent application Ser. No. 16 / 817,196, filed on March 12, 2020, entitled “SYSTEMS AND METHODS FOR REAL TIME KINEMATIC SATELLITE POSITIONING,” which is incorporated herein by reference in its entirety.

[0070] like Figure 2 As shown, positioning engine 1100 includes one or more of the following: an observation module 1110 (e.g., an observation monitor), a carrier phase determination module 1115, a fast reconvergence module 1140, an outlier detector 1150 (e.g., a cycle slip detector), a position module 1160 (e.g., a fixed integer position filter), a velocity module 1170 (e.g., a velocity filter), and a dead reckoning module 1180. However, one or more modules may be integrated with each other, and / or the positioning engine may include any suitable modules.

[0071] Notice, Figure 2 The interconnections shown are intended as non-limiting examples, and the components of positioning engine 1100 may be coupled in any manner.

[0072] The observation module 1110 is configured to take satellite observations (e.g., observation data) from the GNSS receiver 1200 as input and examine them for potential predetermined events and / or outliers (e.g., large errors in pseudoranges and / or carrier phase). However, the observation module may additionally or alternatively examine reference station observations, corrections, sensor data, and / or any other suitable data for predetermined events. The observation module is preferably configured to detect high-dynamic predetermined events, but may be configured to detect data link predetermined events, low-dynamic predetermined events, and / or any predetermined event. Potential predetermined events may include any problems with the detected observations, such as observations that change too quickly or exceed a threshold.

[0073] The observation module may additionally or alternatively suppress the effects of a predetermined event and / or transmit a suppression of the predetermined event (e.g., applied by an outlier detector, a carrier phase determination module, etc.), which is used to reduce the impact of the occurrence of the predetermined event on the estimated position (and / or any intermediate data in the position estimate). In a first specific example, when a predetermined event is detected in satellite observations, satellite observations with the predetermined event may be removed from the satellite observations. In a second specific example, when a predetermined event is detected in satellite observations, the satellite observations may be scaled to suppress and / or eliminate the effects of the predetermined event. In a third specific example, when a predetermined event is detected in satellite observations, additional satellite observations may be collected and / or transmitted to suppress the effects of the predetermined event. In a fourth specific example, when a predetermined event is detected, the associated satellite observations may be corrected (e.g., based on correction values ​​determined from interpolation, secondary sensors, other constellations, etc.). However, any suitable suppression strategy may be used to suppress the effects of the predetermined event.

[0074] The observation module is preferably communicatively coupled to the velocity module and the carrier phase determination module, but may be communicatively coupled to an outlier detector, a fast reconvergence module, a dead reckoning module, a correction processing engine, a sensor, and / or any suitable module. In a specific example, the observation module 1110 provides pseudorange and carrier phase data to the carrier phase determination module (e.g., the float position filter 1120) and provides carrier phase data to the velocity module 1170.

[0075] The carrier phase determination module is preferably configured to resolve ambiguities in the carrier phase caused by an indeterminate number of wavelengths passing before a satellite observation is received by the GNSS receiver. The carrier phase determination module is preferably communicatively coupled to the observation module, the correction processing engine, and the position module. However, the carrier phase determination module may be communicatively coupled to the sensor, the GNSS receiver, the outlier detector, the dead reckoning module, the fast reconvergence module, and / or any other suitable component. While the carrier phase determination module is preferably not communicatively coupled to the velocity module, the carrier phase determination module may be communicatively coupled to the velocity module. In a specific example, resolving the carrier phase ambiguities may include determining real-valued carrier phase ambiguities, determining integer-valued carrier phase ambiguities, testing the integer-valued carrier phase ambiguities, and generating a fixed estimator. However, the carrier phase ambiguities may be resolved in any suitable manner.

[0076] In a variation, the carrier phase determination module may include a floating point filter 1120 (eg, a floating point position filter) and an integer fixed module 1130 (eg, an integer ambiguity resolver). However, the carrier phase determination module may include any suitable components.

[0077] The floating-point filter 1120 is configured to generate a floating-point solution (e.g., a real-valued carrier phase ambiguity) for each satellite for use in position estimation. The input to the floating-point filter may include correction values ​​(e.g., correction values ​​with a reliability greater than a threshold), satellite observations (e.g., pseudoranges, carrier phases, satellite observations with predetermined event suppression, raw satellite observations, etc.), linear combinations of satellite observations, sensor data, and / or any suitable data. The output of the floating-point filter is preferably a real-valued carrier phase ambiguity, but the floating-point filter may output pseudoranges or any suitable information. The floating-point filter may determine the real-valued carrier phase ambiguity using least squares parameter estimation, recursive least squares parameter estimation, a Kalman filter, an extended Kalman filter, an unscented Kalman filter, a particle filter, and / or any suitable method for generating real-valued carrier phase ambiguities.

[0078] In a specific example, for a single satellite / receiver pair, the carrier phase measurement at the receiver can be modeled as follows:

[0079]

[0080] Where λ is the wavelength of the satellite signal, r is the distance from the receiver to the satellite, I is the ionospheric advance, T is the tropospheric delay, f is the frequency of the satellite signal, and δt r is the receiver clock deviation, δt s is the satellite clock bias, N is the integer carrier phase ambiguity, and ∈φ is the noise term.

[0081] The float filter 1120 preferably uses the carrier phase data and pseudorange data from the GNSS receiver 1200 and the correction data from the correction processing engine 1500 to generate floating ambiguity values ​​(i.e., solutions to integer carrier phase ambiguities that are not limited to integer values). The correction data is preferably used to reduce the presence of ionospheric, tropospheric, satellite clock bias terms, and / or other signals in the carrier phase measurements (e.g., via differencing or any other technique). Additionally or alternatively, the float filter 1120 can generate floating ambiguity values ​​in any manner. The float filter 1120 can also generate position and velocity estimates based on the pseudorange and carrier phase data.

[0082] In some cases, the float filter 1120 may use inertial data (eg, provided by sensors) to refine real-valued carrier phase ambiguities (eg, float ambiguity values).

[0083] The integer fix module 1130 (e.g., an integer ambiguity resolver) is configured to generate integer-valued carrier phase ambiguities from real-valued carrier phase ambiguities. The integer fix module 1130 may generate integer-valued carrier phase ambiguities in any manner (e.g., integer rounding, integer bootstrapping, integer least squares, etc.). The input to the integer fix module is preferably a real-valued carrier phase (e.g., from a floating-point filter), but may include pseudoranges, carrier phases, correction values, sensor data, previously estimated positions, and / or integer-valued carrier phase ambiguities, and / or any other suitable information. The output of the integer fix module is preferably an integer-valued carrier phase ambiguity value, but may include any other suitable information. In some variations, generating integer-valued carrier phase ambiguities may include decorrelated (real-valued) carrier phase ambiguities. The carrier phase ambiguities may be decorrelated using a LAMBDA method, an MLAMBDA method, an LLL reduction algorithm, a whitening transform, a coloring transform, a decorrelation transform, and / or any other suitable decorrelation or reduction algorithm.

[0084] The system can optionally include a validation module 1135 for validating the integer-valued carrier phase ambiguities generated by the integer fix module 1130, which is used to determine whether the integer-valued carrier phase ambiguities should be accepted and / or have met a threshold quality. Alternatively, the integer-valued carrier phase ambiguities can be validated by the integer fix module 1130 or any other suitable module. The validation of the integer-valued carrier phase ambiguities can be performed in any manner (e.g., ratio test, f-ratio test, range test, projector test, etc.).

[0085] In one variation, the verification module verifies integer-valued carrier phase ambiguities in a multi-step process. Each step of the multi-step process preferably corresponds to an increased confidence level in the integer-valued carrier phase ambiguity (e.g., the integrity of the estimated position calculated using the verified integer-valued carrier phase ambiguity), but may additionally or alternatively be associated with a different integrity level, verification performance level, and / or another integrity metric. Each step of the multi-step verification process may correspond to the amount of time required to verify (and / or determine) the integer-valued carrier phase ambiguity, the integrity of the estimated position (e.g., TIR, protection level, etc.), the probability that the integer-valued carrier phase ambiguity is correct, and / or any suitable quality. Each step (and / or the number of steps) may depend on satellite observations (e.g., the number of satellite observations, the number of satellite constellations, the number of satellites corresponding to each satellite constellation, the quality of the satellite observations, predetermined events in the satellite observations, etc.), the real-valued carrier phase ambiguity, the pseudorange, the external system, the application of the estimated position, the integrity of the estimated position (and / or the target integrity), the amount of time required to achieve verification, the sensors (e.g., sensor type, number of sensors, sensor data, etc.), and / or any suitable parameters. The number of steps (and / or the steps to be used) can be based on: the operating environment (e.g., the integrity level of a given operating environment), the available input data, the amount of available verification time, and / or other determinations. Alternatively, all steps can always be performed. Preferably, the previous steps are always performed before the next steps, but one or more steps can be skipped or performed in a different order.

[0086] A multi-step process may include at least three steps (eg, three steps, four steps, five steps, ten steps, etc.), but may additionally or alternatively include two steps and / or any suitable number of steps.

[0087] In a first illustrative example, a carrier phase ambiguity that has not been verified to an integer value of the first verification step may correspond to an estimated position of low integrity (e.g., non-life safety integrity), such as TIR ≥ 10 -4 In this illustrative example, an integer-valued carrier phase ambiguity that has been verified to the first verification step but not to the second verification level may correspond to an integrity risk of ≤10 for the estimated position. -4 / hour and protection level ≤ 2m. In this illustrative example, an integer-valued carrier phase ambiguity that has been verified to the second verification step, but not to the third verification step, may correspond to an integrity risk of the estimated position ≤ 10 -6 / hour and protection level ≤ 2m. In this illustrative example, an integer-valued carrier phase ambiguity that has been verified to the third verification step may correspond to an integrity risk of the estimated position ≤ 10 -7 / hour and protection level ≤3m. However, the integrity risk of the estimated position and / or protection level may be any suitable value for integer-valued carrier phase ambiguity for each verification step (such as ≤10 -2 / hour, ≤10 -3 / hour, ≤10 -4 / hour, ≤10 -5 / hour, ≤10 -6 / hour, ≤10 -7 / hour, ≤10 -8 / hour, ≤10 -9 / hour, ≥10 -2 / hour, ≥10 -3 / hour, ≥10 -4 / hour, ≥10 -5 / hour, ≥10 -6 / hour, ≥10 -7 / hour, etc. and / or 0.1m, 0.2m, 0.5m, 1m, 2m, 3m, 5m, 10m, 20m, 40m, etc.). The integrity risk and / or protection level associated with each step can be determined using simulation (e.g., Monte Carlo simulation), based on historical data (e.g., pattern matching), heuristics, neural networks, and / or otherwise.

[0088] In a second illustrative example, integer-valued carrier phase ambiguities that have not been verified by the first verification step can be output immediately upon startup (e.g., within <1s, <2s, <5s, <10s, etc.). In this illustrative example, integer-valued carrier phase ambiguities that have been verified to the first verification step but not to the second verification level can be generated within 30 seconds of startup of the positioning engine. In this illustrative example, integer-valued carrier phase ambiguities that have been verified to the second verification step but not to the third verification step can be generated within 90 seconds of startup of the positioning engine. In this illustrative example, integer-valued carrier phase ambiguities that have been verified to the third verification step can be generated within 300 seconds of startup of the positioning engine. However, the integer-valued carrier phase ambiguities at each verification step can correspond to any suitable amount of time (e.g., relative to startup of the positioning engine, relative to continued operation of the positioning engine, relative to a previous verification step, etc.).

[0089] In a third illustrative example, a validation module may simultaneously validate integer ambiguities for at least two satellite constellations (e.g., GPS and Galileo, GPS and GLONASS, GPS and BDS, Galileo and GLONASS, Galileo and BDS, GLONASS and BDS, etc.) in a first step. In the first step, the validation module preferably applies the same correction value to each satellite observation, but may apply correction values ​​corrected for regional offsets, different correction values ​​for each satellite (e.g., based on the satellite constellation), and / or any suitable correction value. In a second step, the validation module may validate satellite observations corresponding to the first satellite constellation independently (in parallel or sequentially) from satellite observations corresponding to the second satellite constellation. If the calculated ambiguities correspond to (e.g., match) the ambiguities from the first step, the confidence level is increased. Note that these validations for different satellite constellations can be performed using the same or different correction values ​​(e.g., the correction values ​​for satellite observations of a particular satellite constellation may be modified by residual regional offsets). Likewise, repeating one or more (such as two) additional consecutive validation steps for each constellation (e.g., corresponding to satellite observations for consecutive time periods, consecutive durations, the same time period, the same duration, etc.) can further increase the confidence in the calculated integer ambiguity values. However, in the first, second, and / or third steps, integer-valued carrier phase ambiguities corresponding to three or more satellite constellations, subsets of satellites within one or more satellite constellations (e.g., validating integer-valued carrier phase values ​​for satellite observations for each satellite from a single satellite constellation, validating integer-valued carrier phase values ​​for satellite observations corresponding to a first subset of satellites and a second subset of satellites of a single satellite constellation, validating integer-valued carrier phase values ​​for satellite observations for each satellite from multiple satellite constellations, etc.), and / or any suitable satellite observations can be validated and / or validated any suitable number of times.

[0090] At each step, when verification fails (e.g., the ambiguity does not match the corresponding reference ambiguity), the base observation can be removed from the set of observations used to determine the position, position determination can be restarted, certain external system functions can be selectively deactivated (e.g., associated with the invalid step or associated integrity level), and / or other suppression measures can be taken.

[0091] When using multiple satellite constellations, the ability to generate independent correction value data can enable the integer fix module to resolve two independent solutions to the integer ambiguity, which in turn increases the ability to provide high integrity positioning.

[0092] In a particular example, the validation module can validate satellite observations and / or a subset thereof (e.g., one or more steps of a multi-step validation) by performing hypothesis testing (and associated steps) as described in U.S. patent application Ser. No. 16 / 817,196, filed on March 12, 2020, entitled “SYSTEMS AND METHODS FOR REAL TIME KINEMATIC SATELLITE POSITIONING,” which is incorporated herein by reference in its entirety.

[0093] However, a single-step verification process is available.

[0094] Preferably, the integer-valued carrier phase ambiguities are transmitted to the position module 1160 for position estimation after they have been verified in at least one verification step, but the integer-valued carrier phase ambiguities may be transmitted to the position module 1160 for position estimation before or during verification of the integer-valued carrier phase ambiguities, at any other suitable time, and / or to any other suitable endpoint.

[0095] The fast reconvergence module 1140 is configured to provide robustness in the event of a brief interruption of GNSS service based on inertial data (e.g., provided by an inertial measurement unit (IMU)) and / or data from other non-GNSS sources (e.g., wheel odometer data, visual odometry data, image data, radar / lidar odometry data). For example, based on previous estimates and inertial / other data captured during the GNSS service interruption, the fast reconvergence module 1140 can provide estimated carrier phase ambiguities (e.g., real-valued carrier phase ambiguities, integer-valued carrier phase ambiguities, etc.) to the carrier phase determination module 1115. In one implementation, the fast reconvergence module 1140 can perform a difference calculation on the GNSS data after valid GNSS messages are restored, compare the difference with an estimate of the position change calculated using inertial and / or other data, and calculate a fast estimate of the integer ambiguity change based on the comparison (which can be added to the earlier integer ambiguity estimate to produce an estimate of the current integer ambiguity). This estimate can then speed up the process of reestablishing valid positioning data. However, after GNSS service is restored, the system can quickly reconverge on the carrier phase integer ambiguity in other ways.

[0096] Outlier detector 1150 is used to detect outliers, predetermined events (such as multipath errors, cycle slips, etc.), and / or erroneous measurements within data (e.g., satellite observations, sensor data, reference station observations, corrections, etc.). The outlier detector is preferably communicatively coupled to the velocity module, position module, sensor, and observation module, but may be communicatively coupled to the correction processing engine, carrier phase determination filter, fast reconvergence module, dead reckoning module, and / or any other suitable module. Inputs to the outlier detector may include sensor data, satellite observations, corrections, previously estimated position and / or velocity, reference station observations, and / or any other suitable data or information. Output from the outlier detector may include identification of a predetermined event (e.g., identification of the presence of a predetermined event, identification of the type of predetermined event, etc.), suppression of the predetermined event, suppressed satellite observations (e.g., satellite observations that have been corrected to account for and / or remove the predetermined event, outliers, and / or erroneous measurements), and / or any other suitable data or information. Suppressing the effects of outliers and / or predetermined events may include removing one or more satellite observations from the set of satellite observations, weighting satellite observations with predetermined events differently than satellite observations without predetermined events, applying a correction to remove the predetermined event from the satellite observations, and / or any suitable steps.

[0097] In a variation, the outlier detector may implement the method and / or any steps of the method disclosed in U.S. patent application Ser. No. 16 / 748,517, filed on Jan. 21, 2020, entitled “SYSTEMS AND METHODS FOR REDUCED-OUTLIER SATELLITE POSITIONING,” which is incorporated herein by reference in its entirety. However, the outlier detector may operate in any suitable manner.

[0098] In a particular example, the outlier detector may include a cycle slip detector 1155 for detecting potential cycle slips in the carrier phase observations (i.e., discontinuities in the receiver's continuous phase lock to the satellite signal). The cycle slip detector 1155 preferably detects cycle slips by examining linear combinations of the carrier phase observations (e.g., by calculating phase measurement residuals and comparing these residuals to integer multiples of the full phase period), but may additionally or alternatively utilize sensor data (e.g., inertial data) to detect cycle slips (e.g., when carrier phase ambiguities change rapidly but the inertial data does not show rapid movement, this may indicate a cycle slip). When a cycle slip is detected in a given observation, the cycle slip detector 1155 preferably discards the observation (making it unusable for position calculation). Alternatively, the cycle slip detector 1155 may respond to the cycle slip detection in any manner (e.g., weighting the observation less in the position calculation, attempting to correct the cycle slip in the observation, etc.).

[0099] Position module 1160 is used to calculate a position estimate for GNSS receiver 1200. The position estimate is preferably determined based on carrier phase ambiguities with resolved ambiguities (e.g., integer or real values), but may additionally or alternatively be determined based on sensor data (e.g., IMU data, INS data, etc.), real-valued carrier phase ambiguities, pseudoranges, integer-valued carrier phase ambiguities (e.g., calculated by integer fixation module 1130), and / or any other suitable data. In variations, the position estimate may have an accuracy that depends on the accuracy of the corrections (e.g., the accuracy of the correction processing engine), such as less than 50 cm at 3 sigma, but may alternatively have any other suitable accuracy. This is possible because carrier phase measurements are much more accurate than pseudorange measurements (e.g., 100 times more accurate) and have noise levels below the centimeter level. The position module may be communicatively coupled to the sensors, the dead reckoning module, the outlier detector, the carrier phase determination module, the observation module, the fast reconvergence module, the correction processing engine, and / or any other suitable components. The position module is preferably not communicatively coupled to the velocity module, but may be communicatively coupled to the velocity module.

[0100] The location module may additionally or alternatively calculate the integrity of the estimated location (e.g., integrity risk, protection level, or mathematically similar error estimate, etc.). The location module 1160 preferably utilizes a modified form of the Advanced Receiver Advanced Integrity Monitoring (ARAIM) algorithm to perform protection level generation (and fault detection). The ARAIM technique is based on weighted least squares estimation performed over a single epoch. Traditionally, the ARAIM technique is performed using pseudorange calculations; however, the location module 1160 preferably utilizes a modified form of the ARAIM algorithm that uses only carrier phase measurements as input. Using this algorithm, the location module can suppress predetermined events such as code-carrier incoherence, satellite clock step error, and satellite clock drift. However, the location module may utilize the Receiver Advanced Integrity Monitoring (RAIM) algorithm, the Aircraft Advanced Integrity Monitoring (AAIM) algorithm, the Multiple Solution Separation (MSS) algorithm, the Relative Receiver Advanced Integrity Monitoring (RRAIM), the Extended Receiver Advanced Integrity Monitoring (ERAIM), and / or any other suitable algorithm to calculate the integrity of the estimated location and / or to suppress the effects of predetermined events.

[0101] In certain examples, the position module 1160 calculates the estimated position (and associated protection level) based solely on carrier phase observations (and not on pseudorange observations), which limits the impact of certain predetermined events (such as pseudorange multipath) on the estimated position and / or the integrity of the estimated position.

[0102] In variations, the position module may additionally or alternatively perform any suitable transformation (eg, rotation, scaling, translation, reflection, projection, etc.) on the estimated position of the GNSS receiver to determine the estimated position of the external system.

[0103] The optional velocity module 1170 is used to estimate the velocity of the GNSS receiver 1200 (and / or external system) and, in addition, to calculate the integrity of the estimated velocity (e.g., TIR, protection level, or mathematically similar error estimates, etc.). Alternatively, the vehicle velocity can be determined from a time series of positions output by the position module, from inertial sensor measurements, or in some other manner. The velocity module 1170 preferably uses time-differentiated carrier phase measurements to estimate velocity, but may use Doppler shift data, sensor data, pseudoranges, differential estimated positions (e.g., differential estimated positions estimated by the position module at two or more points in time and / or durations), and / or estimated velocity in any manner. The velocity module preferably receives carrier phase data from the observation module, but may receive carrier phase data from the carrier phase determination module, the fast reconvergence module, and / or any other suitable module (e.g., real-valued carrier phase ambiguities, integer-valued carrier phase ambiguities, etc.). The velocity module is preferably communicatively coupled to the observation module and the outlier detection module, but may additionally or alternatively be communicatively coupled to a carrier phase determination module, a dead reckoning module, a position module, a correction processing engine, and / or any suitable module.

[0104] The estimated speed may be a relative speed (eg, between various time durations), an instantaneous speed, an average speed, an instantaneous rate, a relative rate, an average rate, and / or any suitable speed.

[0105] In some variations, the estimated velocity may be used to estimate the track angle (e.g., the direction of motion of the GNSS receiver and / or external system). In a particular example, the track angle may be estimated based on the horizontal component of the estimated velocity using trigonometric relationships. However, the track angle may be determined in any suitable manner.

[0106] Like the position module 1160, the velocity module 1170 preferably utilizes a modified form of the Advanced Receiver Advanced Integrity Monitoring (ARAIM) algorithm to perform estimated velocity integrity (e.g., TIR, protection level, etc.) generation (and fault detection). Traditionally, ARAIM techniques are performed using pseudorange calculations; however, the velocity module 1170 preferably utilizes a modified form of the ARAIM algorithm that only takes carrier phase measurements as input (e.g., similar to or different from the position module 1160). The velocity module 1170 can use this algorithm to suppress predetermined events such as code-carrier incoherence, satellite clock step error, satellite clock drift, jumps, accelerations, and / or other satellite-repellent events. However, the velocity module can utilize a Receiver Advanced Integrity Monitoring (RAIM) algorithm, an Aircraft Advanced Integrity Monitoring (AAIM) algorithm, a Multiple Solution Separation (MSS) algorithm, a Relative Receiver Advanced Integrity Monitoring (RRAIM), an Extended Receiver Advanced Integrity Monitoring (ERAIM), and / or any other suitable algorithm to calculate the integrity of the estimated velocity and / or to suppress the effects of predetermined events.

[0107] In some variations, velocity module 1170 may include an ionospheric bias monitor; when an ionospheric bias exceeding a threshold is detected for a given satellite, that satellite may be excluded from velocity solution generation. Alternatively, velocity module 1170 may share the ionospheric bias monitor with position module 1160, with the correction processing engine, and / or with any other suitable system. The ionospheric bias monitor of velocity module 1170 may monitor ionospheric conditions in any manner; for example, the monitor may measure changes in ionospheric delay using a linear combination of dual-frequency carrier phase measurements. For example, when the ionospheric delay measured in a signal from a satellite changes faster than (or exceeds) a certain threshold, some measurements from that signal may be excluded. The threshold value may be a predetermined threshold value (e.g., greater than approximately 0.5%, 1%, 5%, 10%, 20%, 25%, 30%, 40%, 50%, 60%, 75%, 80%, 90%, 100%, etc., varying over a period of time, such as 1, 2, 5, 10, 20, 30, 50, 100, 1000 durations, etc., 1s, 5s, 10s, 20s, 50s, 100s, 200s, 300s, 600s, etc.), dependent on the estimated velocity, dependent on satellite observations (e.g., satellite constellation, number of satellites, satellite frequency and / or frequency combination, etc.), dependent on the application, dependent on the external system, dependent on the estimated position, dependent on the completeness of the estimated velocity, and / or any suitable threshold value.

[0108] The dead reckoning module 1180 is configured to provide a dead reckoning navigation solution when position and / or velocity data is unavailable (e.g., because a protection level exceeds an alarm limit, one or more satellite observations are unavailable, a data link threat has occurred, correction data has timed out, etc.), when position data falls below a predetermined integrity or confidence threshold, and / or for other purposes. The dead reckoning module 1180 can use sensor data (e.g., IMU data), the last known position (e.g., having a predetermined integrity level), and / or any suitable data (e.g., based on extrapolation of previously estimated positions and velocities) to provide a dead reckoning position and / or velocity as an alternative to or in addition to the estimated position and / or velocity of the GNSS (e.g., estimated by the position module and / or velocity module). In certain examples, the dead reckoning position (and / or velocity) can be used as the estimated position (and / or velocity) when the position module (and / or velocity module) is unable to converge and / or determine an estimated position (and / or velocity). The position module (and / or velocity module) may fail to converge and / or determine an estimated position (and / or velocity), for example, when integer-valued carrier phase ambiguities are not verified (e.g., to a predetermined level of integrity), when one or more satellite observations are unavailable (e.g., GNSS receiver outage, obstruction, etc.), when one or more reference station observations are unavailable, when a predetermined event is detected, when a data link times out, based on user input, and / or at any suitable time.

[0109] The dead reckoning module may be communicatively coupled to the position module, the velocity module, the outlier detector, the fast reconvergence module, the observation module, the carrier phase determination module, the sensor, the correction processing engine, and / or any suitable component.

[0110] The dead reckoned position and / or velocity is preferably verified, but may not be verified. The dead reckoned position and / or velocity is preferably verified by comparing the dead reckoned position and / or velocity determined from two or more independent sensors. In a specific example, such as Figure 6A As shown, the verified dead reckoning position and / or velocity is preferably a position and / or velocity that defines an overlap between a dead reckoning position and / or velocity determined based on data from a first sensor and a dead reckoning position and / or velocity determined by a second sensor. In a second specific example, as Figure 6BAs shown, the validated dead reckoned position and / or velocity is preferably a position and / or velocity that defines a dead reckoned position and / or velocity determined based on data from a first sensor and a dead reckoned position and / or velocity determined by a second sensor. However, the validated dead reckoned position and / or velocity may be a position and / or velocity that defines all dead reckoned positions and / or velocities (e.g., surrounding, enclosing, matching their limits, etc.) and / or any suitable overlapping region, position and / or velocity. However, the dead reckoned position and / or velocity may be validated based on modeling, satellite observations (e.g., when a set or subset of satellite observations is available, the estimated position and / or velocity from those satellite observations may be used to validate the dead reckoned position and / or velocity), based on auxiliary sensors (e.g., lidar, radar, ultrasonic sensors, one or more cameras, etc.), based on communication with other systems (e.g., when other external systems are present), based on reference station observations, and / or in any suitable manner.

[0111] The dead reckoning module can additionally or alternatively be used to estimate and / or determine biases for one or more sensors. Preferably, the bias is determined based on comparing the dead reckoned position and / or velocity with an estimated position and / or velocity determined based on satellite observations (e.g., observations determined by the position module and / or velocity module). However, the bias can be determined through calibration, modeling of one or more sensors, auxiliary sensors, and / or other methods.

[0112] In the variant, Figure 13 As shown, the dead reckoning module may include one or more of: a fusion module 1183, a dead reckoning monitor 1185, and / or a dead reckoning integrity monitor 1187. However, the dead reckoning module may include any suitable module.

[0113] The fusion module is used to estimate the receiver position (e.g., when GNSS signals are unavailable, when GNSS signals are available, etc.) and / or estimate the integrity of the position. Inputs to the fusion module may include: sensor data (e.g., accelerometer data, gyroscope data, verified sensor data, timestamp, etc.), estimated GNSS position (e.g., last available GNSS position, most recent GNSS position, etc.), estimated GNSS position integrity (e.g., protection level, TIR, etc.), estimated GNSS velocity (e.g., last available GNSS velocity, most recent GNSS velocity, etc.), estimated GNSS velocity integrity (e.g., protection level, TIR, etc.), GNSS covariance matrix (e.g., GNSS position covariance, GNSS velocity covariance, etc.), and / or other inputs. Outputs from the fusion module may include an estimated fused position (e.g., an absolute estimated position; a relative estimated position (such as relative to the last available GNSS position, the last available position estimate, etc.), an estimated fused velocity (e.g., an absolute estimated velocity; a relative estimated velocity, such as relative to the last available GNSS velocity, the last available velocity estimate, etc.), a fusion covariance (e.g., an estimated position covariance, an estimated velocity covariance, etc.), an update integrity (e.g., a protection level, a TIR, etc. for the estimated fused position and / or the estimated fused velocity estimate), and / or other outputs. The fusion module may determine the output using one or more of an alignment algorithm (e.g., a strapdown inertial navigation system (SINS)), a zero velocity update (ZUPT) algorithm, a constant velocity update (CUPT), a stepwise algorithm, a zero angular velocity update (ZARU) algorithm, a heuristic heading reduction, a geomagnetic yaw method, a Kalman filter, an extended Kalman filter, a particle filter, and / or any algorithm.

[0114] The dead reckoning module may include one fusion module, multiple fusion modules (e.g., one fusion module per sensor, more than one fusion module per sensor, less than one fusion module per sensor, etc.), and / or any suitable number of fusion modules.

[0115] In variations that include more than one fusion module, the fusion modules are preferably independent (e.g., operating on different data inputs, generating independent data outputs, using different algorithms, etc.), but may be dependent (e.g., operating on the same inputs, including the same subset of inputs and a different subset of inputs, using the same algorithm, etc.). In a particular example, the dead reckoning module may include two fusion modules. A first fusion module may receive sensor data from a first subset of sensor data (e.g., associated with a first sensor) and an estimated position determined based on a first subset of satellite signals (e.g., the first subset of satellite signals is associated with a first satellite constellation, associated with a particular subset of satellites, etc.). A second fusion module may receive a second subset of sensor data (e.g., from a second sensor independent of the first sensor, a different subset of sensor readings, etc.) and an estimated position determined based on a second subset of satellite signals (e.g., associated with a second satellite constellation, associated with a different subset of satellites, etc.). However, the fusion modules may use any suitable data set or data subset.

[0116] The dead reckoning monitor is configured to detect predetermined events (e.g., failures) in estimated fusion data (e.g., estimated fused position, estimated fused velocity, estimated fused covariance, estimated fusion integrity, etc., such as from one or more fusion modules). The dead reckoning monitor preferably receives estimated fusion data from at least two fusion modules (e.g., two independent sets of estimated fusion data), but may additionally or alternatively receive estimated fusion data from a single fusion module (e.g., estimated fusion data at one or more points in time), estimated GNSS position (e.g., last available GNSS position, historical GNSS position, unverified GNSS position, etc.), estimated GNSS velocity (e.g., last available GNSS velocity, historical GNSS velocity, unverified GNSS velocity, etc.), GNSS integrity (e.g., last available GNSS position and / or velocity integrity, historical GNSS integrity, etc.), and / or any other suitable input. The dead reckoning monitor may transmit (e.g., output) one or more flags related to the status of the dead reckoning position (e.g., in use or not in use, secure or unsecure, etc.), but may also transmit achievable integrity (e.g., integrity of the estimated dead reckoning position, integrity of the estimated dead reckoning velocity, etc.), error (e.g., standard deviation, variance, etc.), confidence intervals, and / or any other suitable output. The output may be generated using an interacting multiple model (IMM) filter, a particle filter, an extended Kalman filter, by comparing one or more inputs to a threshold, and / or using any other suitable technique. However, the dead reckoning monitor may additionally or alternatively identify a predetermined event, mitigate the effects of the predetermined event, and / or perform any other suitable steps.

[0117] In a specific example, the dead reckoning monitor can compare a first set of estimated fused data with a second set of estimated fused data. When the overlap between the two sets of fused data (e.g., position overlap, velocity overlap, etc.) is greater than or equal to a threshold, the dead reckoning monitor can output a use flag. When the overlap between the two sets is less than (or equal to) the threshold, the dead reckoning filter can output a do not use flag. However, the dead reckoning monitor can generate an output in any manner.

[0118] A dead reckoning integrity monitor is configured to determine (e.g., estimate, calculate, etc.) the integrity of a dead reckoning position (and / or velocity). The dead reckoning integrity monitor may receive: estimated fusion data (e.g., from a single fusion module, from multiple fusion modules, etc.), an estimated GNSS position (e.g., the last available GNSS position, a historical GNSS position, an unverified GNSS position, etc.), an estimated GNSS velocity (e.g., the last available GNSS velocity, a historical GNSS velocity, an unverified GNSS velocity, etc.), GNSS integrity (e.g., the last available GNSS position and / or velocity integrity, the historical GNSS integrity, etc.), one or more outputs from the dead reckoning monitor (e.g., a flag, uncertainty, achievable integrity, etc.), and / or any suitable input. The dead reckoning integrity monitor preferably determines (e.g., based on the inputs) the integrity of the dead reckoning position and / or velocity (e.g., a horizontal protection level, a vertical protection level, a TIR, an alarm limit, etc.), but may determine any suitable output. The integrity of the dead reckoned position can be determined based on: overlap between dead reckoned positions and / or velocities (e.g., estimated fused positions, estimated fused velocities, etc.); estimated fused data (e.g., estimated fused data with higher integrity, estimated fused data with lower integrity, etc.); for example, as described in “Positioning platform definition for train control and ETC” and / or “Monitoring the integrity of the hybridized solutions” in “Integrity monitoring for mobile users in urban environment” by Philippe Brocard, INP DE TOULOUSE, 2016, English, Signal and Image processing, which is incorporated herein by reference in its entirety; for example, as described in Figure 6A and Figure 6B as shown; and / or in any suitable manner.

[0119] GNSS receiver 1200 is configured to receive a set of satellite observations corresponding to signals transmitted from one or more positioning satellites (preferably at least four, but alternatively any number). The satellites preferably correspond to at least two satellite constellations (e.g., GPS, BDS, GLONASS, Galileo), but may correspond to a single satellite constellation. These satellite observations (e.g., pseudoranges, carrier phases, Doppler measurements, C / M0 measurements, etc. for each satellite) are preferably processed by positioning engine 1100 to obtain an estimated position of receiver 1200 (as described in the previous section). GNSS receiver 1200 may additionally or alternatively transmit the data to a correction processing engine for use in correction generation.

[0120] The GNSS receiver 1200 is preferably coupled to an antenna made of a conductive material (eg, metal). The antenna may additionally or alternatively include a dielectric material to modify the antenna's properties or provide mechanical support.

[0121] The antennas may be of various antenna types; for example, patch antennas (including rectangular and planar inverted-F shapes), reflector antennas, wire antennas (including dipole antennas), butterfly antennas, aperture antennas, loop inductor antennas, and fractal antennas. The antennas may further include one or more types of antennas, and the types of antennas may include any suitable variations. The antenna structure may be static or dynamic (for example, a wire antenna comprising multiple parts that can be electrically connected or isolated depending on the state of the antenna). The antennas may have isotropic or anisotropic radiation patterns (i.e., the antennas may be directional). If the antennas are directional, their radiation patterns may be changed dynamically; for example, an antenna that emits radiation in substantially one direction may be rotated to change the direction of the radiation.

[0122] If the GNSS receiver 1200 is coupled to multiple antennas, the antenna coupler may use a splitter to distribute power between them; additionally or alternatively, the antenna coupler may include a switch to select between the multiple antennas, or the antenna coupler may be coupled to the antennas in any suitable manner.

[0123] GNSS receiver 1200 may include a front-end module that converts signals received at the antenna into digital baseband signals for processing. The front-end module preferably includes an analog-to-digital converter (e.g., a Maxim MAX2769) capable of operating at a high sampling rate. The front-end module is preferably capable of receiving L1GPS, GLONASS, Galileo, and SBAS signal bands. The front-end module may additionally or alternatively be capable of receiving additional frequency bands (e.g., L2GPS), or receiver 1200 may include multiple front-end modules for different frequency bands.

[0124] GNSS receiver 1200 may further include a satellite signal management module for performing satellite signal tracking and acquisition. The satellite signal management module may additionally or alternatively include a programmable digital notch filter for performing continuous wave noise nulling. The satellite signal management module preferably includes flexible and fully programmable correlators that the microcontroller can use to implement the tracking loop and acquisition algorithm.

[0125] In a specific example, the GNSS receiver can measure satellite observations for at least three satellite constellations (e.g., GPS, Galileo, BDS, GLONASS, etc.). However, the GNSS receiver can measure satellite observations for one or two satellite constellations. In this specific example, the GNSS receiver preferably receives satellite observations for at least three satellite constellations simultaneously, but may receive satellite observations sequentially and / or in any order. In this specific example, the GNSS receiver preferably receives at least two frequencies for one or more satellite constellations (e.g., L1, L2, L5, E1, E5a, E5b, E6, etc.), but may receive a single frequency for each satellite constellation. In this specific example, the GNSS receiver is preferably capable of tracking at least 24 satellites, but may track any number of satellites. In this specific example, the GNSS receiver preferably detects (and identifies) unresolved pseudorange code ambiguities. In this specific example, the GNSS receiver preferably detects (and identifies) unresolved half-cycle carrier phase ambiguities. In this particular example, the GNSS receiver preferably detects (and identifies) RF interference exceeding a threshold value (e.g., 1 dB, 5 dB, 10 dB, 30 dB, 50 dB) in the frequency band of interest. In this particular example, the GNSS receiver preferably detects (and identifies) spoofing attempts (e.g., for satellite observations, corrections, etc.). In this particular example, the probability of an unrecognized cycle slip in the GNSS receiver is preferably at most about 10 -1 / hour (e.g., under open sky conditions). In this specific example, the probability that a GNSS receiver pseudorange measurement error is greater than 10m is less than 1 / hour / satellite (e.g., under open sky conditions). Each satellite observation is preferably independent (e.g., independent of satellite observations corresponding to different satellites). For example, failure to observe a satellite observation from a given satellite should not trigger a predetermined event for another satellite. In this specific example, the time for a GNSS receiver to reacquire carrier phase after a GNSS signal interruption is preferably at most 6 seconds for GPS L1 C / A signals. In this specific example, the time for a GNSS receiver to reacquire carrier phase after a GNSS signal interruption is preferably at most 2 seconds for GPS L2C signals. In this specific example, the time for a GNSS receiver to reacquire carrier phase after a GNSS signal interruption is preferably at most 2 seconds for Galileo E1 signals. In this specific example, the time for a GNSS receiver to reacquire carrier phase after a GNSS signal interruption is preferably at most 2 seconds for Galileo E5b signals. In this particular example, the time it takes for the GNSS receiver to reacquire pseudoranges after a GNSS signal interruption is preferably at most 1 second for GPS L1 C / A signals. In this particular example, the time it takes for the GNSS receiver to reacquire pseudoranges after a GNSS signal interruption is preferably at most 1 second for GPS L2C signals. In this particular example, the time it takes for the GNSS receiver to reacquire pseudoranges after a GNSS signal interruption is preferably at most 1 second for Galileo E1 signals. In this particular example, the time it takes for the GNSS receiver to reacquire pseudoranges after a GNSS signal interruption is preferably at most 1 second for Galileo E5b signals. In this particular example, the GNSS receiver preferably measures carrier phase with at most 1-sigma carrier phase measurement noise of 0.005 cycles (e.g., under open sky conditions).

[0126] However, the GNSS receiver may meet any specifications and / or measure any suitable satellite observations.

[0127] The correction processing engine 1500 is used to generate corrections (e.g., correction data) to be used by the positioning engine 1100 (and / or the GNSS receiver 1200). The corrections are preferably used to improve the accuracy and / or integrity of the estimated position and / or velocity. These corrections can take the form of PPP corrections, RTK corrections, satellite-based augmentation system (SBAS) corrections, or any other type of correction. These corrections can be used to correct satellite observations (e.g., measured by a GNSS receiver), facilitate carrier phase determination (e.g., by a carrier phase determination module), facilitate detection of outliers (e.g., at an outlier detector), facilitate determination of predetermined events, and / or in any other suitable manner.

[0128] In a particular example, the correction value processing engine (and / or components of the correction value processing engine) may include a system and / or components thereof and / or execution methods and / or steps thereof as described in U.S. patent application Ser. No. 16 / 589,932, filed on October 1, 2019, entitled “SYSTEMS AND METHODS FOR DISTRIBUTED DENSE NETWORKPROCESSING OF SATELLITE POSITIONING DATA,” which is incorporated herein by reference in its entirety.

[0129] The correction value processing engine can additionally or alternatively be used to determine the reliability of the correction value. Reliability preferably ensures that the correction value is able to (e.g., support the positioning engine) enable a high-integrity estimated position and / or velocity to be determined. However, reliability can be used in any suitable manner. Reliability is preferably determined based on a different (e.g., non-overlapping, non-identical, etc.) set of data sources (e.g., reference stations (such as reliability reference stations)) from the data source used to generate the correction value (e.g., reference stations (such as correction value reference stations)). However, reliability and correction values ​​can be generated based on the same and / or any suitable data source.

[0130] Reliability can be a flag (e.g., used or not used), achievable completeness (e.g., completeness of estimated position, completeness of estimated velocity, completeness of real-valued carrier phase, completeness of integer-valued carrier phase, etc.), error (e.g., standard deviation, variance, etc.), confidence interval and / or any suitable form.

[0131] The correction processing engine is preferably communicatively coupled to the positioning engine and reference station, but may be communicatively coupled to a GNSS receiver, an external system, a sensor, and / or any suitable component.

[0132] In one implementation of an embodiment of the invention, rather than attempting to generate corrections from only a small set of high-quality global reference stations (as in PPP) or generating corrections solely by comparing data in GNSS receiver / reference station pairs (as in RTK), the correction processing engine 1500 collects data from reference stations 1600 (and / or other reference sources) and, instead of (or in addition to) directly applying that data to generate corrections, uses that data to generate one or more correction models (which can be used to generate correction data in a form usable by the positioning engine 1100).

[0133] By operating in this manner, the correction processing engine 1500 can provide corrections (e.g., a set of corrections) that are nearly free of the long convergence time issues of PPP, with the complexity of the solution scaling directly with the number of reference stations N (unlike RTK, where the complexity of the solution scales at least with the number of possible pairs (i.e., O(N))). 2 )). In fact, many current solutions scale with O(N 3 ) while scaling (or worse).

[0134] Furthermore, in some embodiments, the correction processing engine 1500 enables spatial interpolation and / or caching of corrections to be performed more generally than in conventional RTK. Virtual reference stations (also known as pseudo reference stations) typically involve interpolation of real-time RTK correction data (and, as previously mentioned, the error correction complexity increases at least as O(N)). 2 ) and scaled). In contrast, the interpolation in the correction processing engine 1500 can be limited to specific aspects of the global and / or local correction model, providing greater robustness to errors and / or predetermined events and providing better insight into the causes of errors and / or predetermined events. In a specific example, the specific aspects can include any suitable aspects of the region (e.g., a specific location), specific satellite observation data (e.g., pseudorange, carrier phase, etc.), a specific satellite constellation, an atmospheric model, and / or a global correction. Furthermore, unlike RTK, which requires real-time correction data, the correction processing engine 1500 can cache or otherwise retain model parameters even when data is limited (e.g., when a reference station becomes unavailable). However, the correction processing engine can operate in a manner similar to the RTK correction processing engine (e.g., performing real-time interpolation between reference stations, generating real-time correction data, etc.).

[0135] Note that the correction processing engine 1500 may additionally or alternatively generate correction data based on augmentation satellite systems (e.g., WAAS, EGNOS, SDCM, MSAS, QZSS-SBAS, GAGAN, BDABAS, etc.), auxiliary sensors, network information, almanac information, and / or in any other manner.

[0136] In one implementation, such as Figure 3 As shown, the correction value processing engine 1500 includes at least one of a reference station observation monitor 1510 (reference observation monitor), a correction value data monitor 1512, a modeling engine 1520, and a reliability engine 1530 (e.g., an integrity engine). Figure 3 The interconnections shown are intended as non-limiting examples, and the components of the correction value processing engine 1500 may be coupled in any manner, and / or the correction value processing engine may include any suitable components.

[0137] Reference station observation monitor 1510 is used to check reference station observations from a reference station (and / or other reference sources) for potential predetermined events. For example, reference station observation monitor 1510 can be used to detect reference station multipath error (e.g., a pseudorange error from reference station 1600 in a set of reference stations greater than approximately 10 cm, 20 cm, 50 cm, 1 m, 2 m, 5 m, 10 m, 20 m, 50 m, etc.), reference station interference error, reference station cycle slip error, reference station observation data corruption, and / or any other predetermined event associated with reference station data.

[0138] The reference station observation monitor is preferably communicatively coupled to the modeling engine and / or the reliability engine, but may additionally or alternatively be coupled to the correction data monitor, the positioning engine, and / or any suitable component.

[0139] The reference station observation monitor may additionally or alternatively suppress the effects of predetermined events in the reference station observations. Suppressing the effects of predetermined events in the reference station observations may include removing reference station observations (and / or associated data) associated with the predetermined events, scaling the reference station observations (e.g., based on the predetermined events), correcting for the predetermined events, and / or any other suitable suppression steps.

[0140] The reference station observation monitor preferably takes as input reference station observations (e.g., pseudoranges, carrier phases, etc.) from reference station 1600, but may additionally or alternatively take as input any data from reference station 1600, sensors, satellites, networks, databases, GNSS receivers, and / or other reference sources. Preferably, the correction processing engine knows the position of each reference station, but the correction processing engine may be provided with the position and / or be unaware of the position.

[0141] In a specific example, the correction value processing engine may include two reference station observation monitors 1510 and 1511. Reference station observation monitor 1510 is used to perform observation monitoring on reference station data that will be passed to modeling engine 1520 to generate correction values. Conversely, reference station observation monitor 1511 performs observation monitoring on reference station data used by reliability engine 1530 (to verify the correction values ​​generated by modeling engine 1520). Reference station observation monitors 1510 and 1511 preferably function identically, but may additionally or alternatively function differently (e.g., different thresholds for predetermined events, different predetermined event monitoring, etc.). Reference station observation monitors 1510 and 1511 may use any set of reference sources. For example, reference station observation monitors 1510 and 1511 may use a non-overlapping set of reference stations 1600 as a data source (so that the correction values ​​generated by modeling engine 1520 do not depend on the reference stations used to perform the reliability check). In a second example, reference station observation monitor 1511 may use an independent subset of the set of reference stations 1600 used by reference station observation monitor 1510. However, the reference stations 1600 referenced by reference station observation monitors 1511 and 1510 may overlap, be subsets of other independent sets, and / or be related in other ways. Similarly, these reference sources may receive satellite information from any set of satellites. However, both reference station observation monitors may receive reference station observations from the same reference station, overlapping reference stations (e.g., a common subset of reference stations), and / or any other suitable reference station.

[0142] However, a single reference station observation monitor may be used to monitor one or more sets of reference station observations, one or more sets of reference station observations may be used without monitoring, and / or any suitable reference station observation monitoring may be performed.

[0143] The reference station observation monitor may operate in the same or different manner as the observation monitor 1110 .

[0144] Correction data monitor 1512 is used to check inputs related to one or more satellites (e.g., inputs independent of reference stations) (e.g., global data) for potential predetermined events. For example, the correction data monitor may take as input global clock data, satellite orbit data, satellite code bias, satellite phase bias, and / or other data not associated with a specific reference station 1600. Global data can be determined based on satellite ephemeris, network information, database information, almanac information, satellite tracking, reference stations, GNSS receivers, and / or any other suitable source. Example predetermined events that correction data monitor 1512 can detect include satellite orbit error, satellite clock error, and / or any suitable predetermined event. Correction data monitor 1512 preferably provides such global correction data to modeling engine 1520 for correction generation. The correction data monitor can suppress the effects of predetermined events in the global data. For example, the correction data monitor may discard reference station observations corresponding to one or more satellites (e.g., satellites associated with a predetermined event), may instruct the modeling engine to discard one or more reference station observations, may recollect input (e.g., from an input source), may correct (and / or determine corrections for) a predetermined event, and / or perform any suitable suppression. In some variations, the correction data monitor may perform a message field range test (MFRT) and / or any related tests to detect the predetermined event. In related variations, the correction data monitor may ensure that new satellite observations are consistent with almanac data and / or previous observations. However, the correction data monitor may operate in any suitable manner.

[0145] Global data (and / or global data suppressed for predetermined events) can be valid indefinitely (e.g., usable by a modeling engine) for a predetermined amount of time (e.g., 1 hour, 2 hours, 4 hours, 8 hours, 24 hours, 48 ​​hours, 72 hours, 1 week, 1 month, 1 year, etc.) (as long as satellites are in view (e.g., of a reference station, a GNSS receiver, etc.)) and / or any suitable amount of time.

[0146] The correction data monitor is preferably communicatively coupled to the modeling engine, but may additionally or alternatively be coupled to a reference station observation monitor, a reliability engine, a positioning engine, and / or any suitable component.

[0147] In a variation, the correction value processing engine may include a metadata monitor for receiving metadata. The metadata is preferably used by the modeling engine in determining the correction value, but may be used to verify the correction value, detect predetermined events, and / or be used in any suitable manner. The metadata may be associated with a reference station, a satellite, a satellite constellation, a GNSS receiver, global metadata, local metadata, and / or any suitable source. In a specific example, the metadata may include one or more of the following: reference station coordinates, earth rotation parameters, sun / moon ephemeris, ocean load parameters, satellite attitude model, satellite phase center offset, satellite phase center change, leap seconds, antenna type, receiver type, and / or any suitable data.

[0148] The metadata monitor may additionally or alternatively be used to verify the metadata. The metadata may be verified by comparing the current metadata with previous metadata (e.g., almanac, previous observations, etc.), by verifying the metadata source (e.g., using CRC), and / or in any other manner.

[0149] The metadata monitor is preferably communicatively coupled to the modeling engine, but may additionally or alternatively be coupled to a reference station observation monitor, a correction data monitor, a reliability engine, a positioning engine, and / or any suitable component.

[0150] The modeling engine 1520 is used to generate correction data that can be used by the positioning engine 1100 to estimate the position and / or velocity of the GNSS receiver 1200. The modeling engine preferably generates corrections from reference station data (e.g., pseudoranges and carrier phases from the reference stations 1600), global correction data (e.g., satellite clock biases, satellite orbits, etc.), and / or metadata (e.g., reference station locations, ocean tidal loading, antenna type, receiver type, etc.), but may additionally or alternatively use sensor data, satellite observations (e.g., detected at the GNSS receiver), and / or any input data to generate corrections.

[0151] The modeling engine may be communicatively coupled to a reference station observation monitor, a correction data monitor, a metadata monitor, a reliability engine, a positioning engine, and / or any suitable component.

[0152] In one implementation of the embodiment of the present invention, the modeling engine 1520 includes a set of PPP filters 1521, an atmospheric modeler 1522, and a correction value generator 1523. Figure 4 However, modeling engine 1520 may be constructed in other ways.

[0153] PPP filter 1521 receives the reference station observations and estimates the atmospheric delay for reference station 1600. In this implementation, each PPP filter preferably estimates the atmospheric delay associated with a single reference station 1600 in the set of reference stations; alternatively, each PPP filter 1521 may correspond to any number of reference stations 1600. The set of reference stations preferably corresponds to a geographic region (e.g., a state; a country; a continent; a county; a parish; a city; approximately 100 mi 2 and 2*10 8 mi 2 (such as 1000mi 2 , 1*10 3 mi 2 , 1*10 4 mi 2 , 1*10 5 mi 2 , 5*10 5 mi 2 , 1*10 6 mi 2 、3*10 6 mi 2 , 4*10 6 mi 2 , 2*10 7 mi 2 ) etc.; etc.). However, the set of reference stations may correspond to any suitable locations.

[0154] Atmospheric modeler 1522 generates a model of atmospheric delays over the geographic area covered by the set of reference stations 1600. Atmospheric modeler 1522 preferably interpolates the atmospheric delays calculated by PPP filter 1521 to generate a local (e.g., reference station-independent, but location-dependent) model of atmospheric effects (e.g., tropospheric effects, ionospheric effects, etc.). For example, atmospheric modeler 1522 may convert a set of tropospheric effect models corresponding to various reference positions (each having a known position) into a regularly spaced grid. Additionally or alternatively, atmospheric modeler 1522 may function in any manner (e.g., by creating a continuously interpolated model of atmospheric effects rather than a discrete grid, using some other arrangement of discrete points other than a grid pattern, generating a fitted atmospheric model, using a neural network, based on a set of equations, etc.). Note that any interpolation technique may be used; for example, Gaussian processes such as kriging (which may also predict the uncertainty of the interpolated points); Hermite interpolation; displacement interpolation; rational interpolation; spline interpolation; polynomial interpolation; linear interpolation; piecewise constant interpolation; and / or any interpolation technique. An atmospheric model (e.g., a local position-dependent model) may be referred to as a "unified position-based model" (because it unifies the outputs of multiple models corresponding to various reference sources).

[0155] Based on the atmospheric model and other correction value data (e.g., global correction value data (such as satellite clock bias); metadata; etc.), the correction value generator 1523 generates correction values ​​(e.g., precise correction values). The correction value generator 1523 is used to generate correction values ​​that can be used by the positioning engine 1100 based on the atmospheric model generated by the atmospheric modeler 1522. The correction value generator 1523 can additionally or alternatively send or use the correction value data in any way to correct the position data (e.g., the correction value generator 1523 can take an estimated position and / or velocity as input and generate corrected position data instead of correction values ​​(such as positioning correction values) to be implemented by the positioning engine). The correction value generator 1523 preferably also generates estimated uncertainties in the generated correction values ​​(conventional PPP / RTK solutions cannot do this). The estimated uncertainty in the generated correction value can be determined based on uncertainty in (e.g., given) input parameters (e.g., error propagation, Monte Carlo simulation based on uncertainty in input parameters, etc.), empirically (e.g., from historical data), using simulation, heuristics, calculation, or in other determined manner.

[0156] The correction values ​​generated by the correction value generator 1523 preferably include correction values ​​for the effects of satellite orbit and clock errors, satellite code and phase bias, atmospheric effects (e.g., ionospheric delay, rate of change of ionospheric delay, tropospheric delay (such as zenith tropospheric delay), etc.), but may additionally or alternatively include correction values ​​for any set of errors. In some variations, the correction values ​​(e.g., correction values ​​associated with a given satellite constellation, correction values ​​associated with a given satellite, etc.) may include (e.g., be corrected for) regional offsets, for example, by transmitting a residual regional offset associated with the correction.

[0157] The reliability engine 1530 is used to verify the reliability (e.g., the integrity of the corrections) generated by the modeling engine 1520. 1530 may also transmit or prepare the corrections for use in positioning. The reliability engine may optionally issue flags (e.g., satellite flags, atmospheric flags, line-of-sight flags, etc.) that may prevent a local system from using a given set of corrections (e.g., if an integrity issue is detected). Figure 3 As shown, the reliability engine 1530 preferably verifies the correction value based on an independent reference station (and / or reference station observations). However, the reliability engine can verify the correction value based on a public reference station (e.g., reference station observations) and / or any suitable data source.

[0158] In one implementation of the embodiment of the present invention, the reliability engine 1530 includes a residual computer 1531 (eg, a residual calculation module), a correction value residual monitor 1532, and a speed deviation monitor 1533. Figure 5 However, the reliability engine may include any other suitable set of modules.

[0159] In this implementation, the residual computer 1531 calculates the residual values ​​by applying the correction values ​​to the reliability reference station observations. However, the residual computer may directly compare the corrected reliability reference station observations and / or correct the reliability reference station observations in any suitable manner.

[0160] Correction residual monitor 1532 can compare the residuals (and / or other corrected reliability reference station observations) to one or more thresholds. The correction residual monitor preferably operates in real time, but can operate offline, in near real time, with a delay, and / or with any suitable timing. The thresholds can be: specific to different types of feared events or failure modes; global thresholds; or any other suitable thresholds. The thresholds can be determined empirically, using modeling (e.g., Monte Carlo modeling), using neural networks, using artificial intelligence, predetermined, constant (e.g., 1%, 2%, 5%, 10%, 20%, 25%, 33%, 50%, 75%, etc. of the correction value), manually, adjustably, as integrity limits, and / or in any other suitable manner. In a specific example, Monte Carlo simulation can be used to determine the effect of corrections (and potential associated correction errors) on estimated position, real-valued carrier phase determination, integer-valued carrier phase fixation, estimated velocity, and / or another parameter. The thresholds can be set or otherwise determined based on the results of the Monte Carlo modeling.

[0161] The threshold value may be associated with an integrity bound (e.g., when the residual satisfies the threshold value, the correction value may achieve a high-precision estimated position, integer-valued carrier phase ambiguity determination, intermediate data generation, etc.), a confidence level that the integrity bound may be achieved (e.g., a confidence level that the correction value may achieve a high-precision estimated position, integer-valued carrier phase ambiguity determination, intermediate data generation, etc.), and / or any suitable result. When the residual is less than or equal to the threshold value, the correction value may be transmitted to and / or used by the positioning engine (e.g., the reliability of the correction value may indicate that the correction value is safe to use and will generate an estimated position and / or velocity with a target integrity, etc.). When the residual is greater than the threshold value, the reliability of the correction value may indicate that the correction value should not be used, that the correction value may be used to estimate a position (and / or velocity) with an integrity exceeding the target integrity, and / or be used in any suitable manner. However, when the residual exceeds the threshold value, the correction value may not be transmitted to the positioning engine, and / or the residual may be used in any suitable manner.

[0162] In one variant, each residual is compared to a threshold. In a second variant, the residual is compared to an integrity limit of one or more linear combinations of satellite frequencies and / or signals. This second variation can optionally determine whether the failure is due to satellite correction or atmospheric correction. The linear combination can correspond to a two-frequency linear combination (e.g., a linear combination of any two-frequency satellite signals (such as L1, L2, L3, L4, L5, E1, E2, E5a, E5b, E5AltBOC, E6, G1, G3, etc.), such as a Melbourne-Wübbena combination, etc.), a three-frequency linear combination (e.g., a linear combination of any three-frequency satellite signals, such as a Hatch-Melbourne-Wübbena combination), a four-frequency linear combination, an n-frequency linear combination (e.g., where n is an integer), a linear combination of satellite signals from different satellites (and / or satellite constellations), such as a multi-system combination, a geometry-free combination, a wide lane combination, a narrow lane combination, an ionosphere-free combination, and / or any suitable linear combination. In a specific example of the second variant, the linear combination may correspond to a linear combination that eliminates non-dispersive components (e.g., satellite clock, satellite orbit, tropospheric effects, etc.) and / or amplifies (or isolates) dispersive components (e.g., ionospheric effects, atmospheric effects, etc.) of the GNSS signal (e.g., a geometry-free linear combination, such as a dual-frequency geometry-free linear combination, a triple-frequency geometry-free linear combination, etc.). In this specific example, when coefficients and / or residual observations from several frequencies exceed a threshold, the correction value residual monitor may output a flag that classifies the error as an atmospheric error. In a second specific example of the second variant, the linear combination may correspond to a linear combination that eliminates dispersive components and / or amplifies (or isolates) non-dispersive components of the GNSS signal (e.g., an ionospheric-free linear combination, such as a dual-frequency ionospheric-free linear combination, a triple-frequency ionospheric-free linear combination, etc.). In this specific example, when coefficients and / or residual observations from several frequencies exceed a threshold, the correction value residual monitor may output a flag that classifies the error as a satellite error. In a third variation, the correction residual monitor may include a trained classifier that takes the residual and optionally the satellite frequency and / or signal and outputs a signature classification or probability for each of a set of predetermined signatures. However, the residual may be compared to a threshold in other ways.

[0163] The speed deviation monitor 1533 compares the change in the residual over time (e.g., to detect drift that may affect the speed estimate) to a threshold. In variations, the speed deviation monitor 1533 can detect anomalous drift that may affect the speed estimate. The threshold can be determined empirically, using modeling (e.g., Monte Carlo modeling), using a neural network, using artificial intelligence, predetermined, constant (e.g., 1%, 2%, 5%, 10%, 20%, 25%, 33%, 50%, 75%, etc., of the change in the correction over time), and / or in any suitable manner. When the change in the residual is less than the threshold, the correction value can be transmitted to the speed engine and / or used by the speed engine (e.g., the reliability of the correction value can indicate that the correction value is safe to use and will generate an estimated speed with a target integrity, etc.). When the change in the residual is greater than the threshold, the reliability of the correction value can indicate that the correction value should not be used, that the correction value can be used to estimate a speed with an integrity exceeding the target integrity, and / or be used in any suitable manner. However, when the residual exceeds a threshold, the correction value may not be transmitted to the speed engine, and / or the residual may be used in any suitable manner.

[0164] The reliability engine 1530 may further include a satellite threat model provider 1534, which provides the information required by the positioning engine 1100 to calculate a high-integrity position (e.g., satellite failure probability, constellation failure probability, etc.). The satellite threat model provider may optionally provide threat probabilities and / or magnitudes to a third party (e.g., a manufacturer backend, etc.). The output of the satellite threat model provider 1534 is preferably independent of the correction value residuals, but may be dependent on the correction value residuals. The satellite threat model provider may be a database, an API endpoint, or other data source. The data of the satellite threat model provider may be determined empirically (e.g., from historical data), using simulations, heuristically, calculated, or otherwise.

[0165] Finally, the reliability engine 1530 can additionally perform regional residual correction value generation. As previously mentioned, in some implementations, the system 1000 can utilize data corresponding to multiple satellite constellations to provide high-integrity positioning. In these implementations, the reliability engine 1530 can send multiple sets of correction value data (e.g., corresponding to different satellite constellations, corresponding to different individual satellites and / or satellite subsets, etc.). These sets of correction value data are preferably independent of each other, but can be dependent on each other. As with general correction values, they can be generated using data from any set of reference stations (e.g., overlapping, non-overlapping).

[0166] While the reliability engine 1530 may transmit multiple sets of correction values ​​in their entirety, the reliability engine 1530 may additionally or alternatively transmit a primary set of correction values ​​and then transmit the "remaining" secondary sets of correction values ​​(e.g., the primary set of correction values ​​is transmitted in its entirety, and the secondary sets are transmitted as modifications to the primary set of correction values). This may reduce the amount of information that needs to be transmitted to the GNSS receiver.

[0167] Reference station 1600 is used to provide reference station observations (e.g., pseudorange and / or carrier phase data, such as corresponding to one or more satellites, corresponding to one or more satellite constellations, etc.) for use in generating corrections. Reference station 1600 preferably has a known position with high accuracy. The reference station position is preferably the position of an antenna used to receive satellite signals, but may be any suitable position. The reference station position may be determined in any manner that yields a high degree of accuracy; for example, the reference station position may be determined by multiple receivers positioned at vertical and horizontal reference points around the reference station. Note that while reference stations 1600 are preferably fixed in position, they may additionally or alternatively be mobile. Preferably, the station position is re-determined to a high degree of accuracy before a mobile reference station resumes providing reference station observations; additionally or alternatively, a reference station may provide reference station observations before its position is re-determined (e.g., for attitude estimation; or, alternatively, may provide data without using it). Note that, over time, fixed reference stations 1600 can "self-measure" their own position with considerable accuracy.

[0168] Reference station 1600 preferably provides phase and pseudorange data for a plurality of satellite signals and the position of reference station 1600 via the Internet, but may additionally or alternatively provide the data by any other suitable method (e.g., transmission via a cellular radio modem). The reference station data is preferably directly available to system 1000, but may additionally or alternatively be processed or aggregated before being available to system 1000.

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

[0170] In certain variations, the system may include multiple groups of reference stations. For example, reference station observations corresponding to a first group of reference stations (e.g., correction value reference stations) may be used to generate correction values. Reference station observations corresponding to a second group of reference stations (e.g., reliability reference stations) may be used to verify the correction values ​​and / or determine the reliability of the correction values. The first group of reference stations is preferably a regional reference station (e.g., covering and / or spanning an area (such as a city, county, parish, state, country, group of countries, continent, etc.)). The reference stations in the first group of reference stations may be spaced at approximately 1 mi, 5 mi, 10 mi, 20 mi, 30 mi, 50 mi, 100 mi, 150 mi, 200 mi, 300 mi, 500 mi, 1000 mi, 2000 mi, and / or have any suitable spacing. The second group of reference stations is preferably a local reference station (e.g., a reference station within 0.1 mi, 0.5 mi, 1 mi, 2 mi, 3 mi, 5 mi, 10 mi, 20 mi, 50 mi, etc. of a GNSS receiver). However, the first and second sets of reference stations may include any suitable reference stations located in any suitable area.

[0171] In certain variations of systems including one or more sensors 1700, the sensors are preferably used to measure (e.g., provide) sensor data (e.g., assistance data, verification data, backup data, supplemental data, etc.). The positioning engine and / or correction processing engine may use the sensor data to assist (e.g., accelerate, correct, refine, etc.) position estimation, velocity estimation, correction value generation, correction value verification, carrier phase determination (e.g., estimating integer-valued carrier phase ambiguities), and / or any other suitable process. In a specific example, the sensor data may be used to estimate the receiver position when no satellite observations are received (e.g., in an urban canyon; due to obstructions such as billboards, weather, etc.); however, the sensor data may be used at any suitable time and in any suitable manner. The sensors are preferably in communication with a computing system, but may be in communication with a GNSS receiver, one or more reference stations, and / or any other suitable component. The sensors may be: onboard an external system, integrated into a mobile receiver (e.g., onboard the same external system, onboard a different external system), and / or separate from the mobile receiver, or otherwise associated with the mobile receiver. The sensor data is preferably used for an external system, but may additionally or alternatively be used for a mobile receiver or any other suitable sensor reference. The sensor data may include: inertial data (e.g., velocity, acceleration), odometry, attitude (e.g., position, orientation), mapping data (e.g., images, point clouds), temperature, pressure, ambient light, and / or any other suitable data. The sensors may include one or more of: an inertial moment unit (IMU), an inertial navigation system (INS), an accelerometer, a gyroscope, a magnetometer, an odometer (e.g., a visual odometry, a wheel odometry, etc.), and / or may include any suitable sensor.

[0172] In a particular example, the system may include multiple INSs (e.g., 2, 3, 5, 10 INS sensors, etc.). Each of the multiple INSs preferably generates an independent estimate of position and / or velocity (e.g., using dead reckoning). However, two or more INSs may generate correlated estimates of position and / or velocity. The independent dead reckoned positions and / or velocities may be used to validate the dead reckoned position. In a particular variation, the dead reckoned position (and / or velocity) estimate may be a position (and / or velocity) range surrounding an overlap region between the individual INS position (and / or velocity) estimates. In a second particular variation, the dead reckoned position (and / or velocity) estimate may be an overlapping position (and / or velocity) range from the individual INS position (and / or velocity) estimates. However, the dead reckoned position and / or velocity may be determined in any suitable manner.

[0173] Specific Examples of Systems and Methods of Use

[0174] In an illustrative example, Figure 12 As shown, a system for estimating a position of a GNSS receiver may include a remote server, the remote server including: a reference station observation monitor configured to: receive a first set of reference station observations associated with a first set of reference stations and a second set of reference station observations associated with a second set of reference stations; detect a predetermined event in the first set of reference station observations and the second set of reference station observations; and suppress the effect of the predetermined event when the predetermined event is detected; a modeling engine configured to generate a correction value based on the first set of reference station observations; and a reliability engine configured to determine the reliability of the correction value generated by the modeling engine based on the second set of reference station observations. The system may additionally or alternatively include a positioning engine executed on a computing system collocated with the receiver. The positioning engine may include: an observation monitor configured to: receive a set of satellite observations from a set of global navigation satellites corresponding to at least one satellite constellation; detect a predetermined event in the set of satellite observations; and when the predetermined event in the set of satellite observations is detected, suppress an effect of the predetermined event in the set of satellite observations; a floating-point filter configured to determine a real-valued carrier phase ambiguity estimate based on the set of satellite observations and a correction value having a reliability greater than a predetermined threshold; an integer ambiguity resolver configured to fix the real-valued carrier phase ambiguity estimate to an integer-valued carrier phase ambiguity, wherein the integer-valued carrier phase ambiguity is verified in a multi-step process; and a position filter configured to estimate a position of the receiver, wherein an integrity risk and a protection level of the estimated position depend on a verification step of the multi-step process.

[0175] In a first variation, an external system specifies the required integrity risk and / or protection level for a given function (e.g., using location), wherein if the integer-valued carrier phase ambiguity is not verified to the specified integrity risk and / or protection level, the position output by the system is not used (e.g., an assisted positioning system is used instead). Alternatively, the function is not enabled when the integer-valued carrier phase ambiguity is not verified to the specified integrity risk and / or protection level. In a second variation, the enabled function and / or operating conditions of the external system are adjusted based on the integrity risk and / or protection level of the instantaneous or historical location. In an illustrative example, the notification presentation trigger distance (e.g., the proximity distance for a proximity alert) can be a function of the integrity risk and / or protection level (e.g., increases as the integrity risk increases).

[0176] In a particular example, a method for determining a position of a global navigation satellite system (GNSS) receiver (e.g., using the system, using any suitable system) can include, on a remote server: receiving a first set of reference station observations (e.g., observations associated with the first set of reference stations); detecting a first set of predetermined events; when at least one predetermined event in the first set of predetermined events is detected, suppressing an effect of the detected predetermined event; generating an atmospheric model based on the first set of reference station observations; determining a correction value based on the atmospheric model; and verifying the correction value using a second set of reference station observations (e.g., observations associated with the second set of reference stations). The method may additionally or alternatively include, at a computing system collocated with a GNSS receiver: receiving validated corrections from a remote server; receiving a set of satellite observations from a set of global navigation satellites corresponding to at least one satellite constellation; detecting a second set of predetermined events; upon detecting at least one predetermined event in the second set of predetermined events, suppressing an effect of the detected predetermined event in the second set of predetermined events; resolving carrier phase ambiguities for the set of satellite observations based in part on the validated corrections; validating the carrier phase ambiguities using a multi-step validation process; estimating a position of the GNSS receiver based on the validated carrier phase ambiguities, wherein an integrity risk and a protection level of the estimated position depend on which step of the multi-step validation process is used to validate the carrier phase ambiguities. In this particular example, validating the corrections may include correcting the second set of reference station observations using the corrections; determining a residual of the corrected set of satellite observations; and validating the corrections when the residual is below a correction validation threshold. In this particular example, generating the atmospheric model may include estimating atmospheric delays associated with each reference station in the first set of reference stations using a PPP filter, and interpolating between the atmospheric delays associated with each reference station (e.g., using kriging) to generate the atmospheric model. In this particular example, the multi-step validation process may include a first validation step in which carrier phase ambiguities are simultaneously validated; a second validation step following the first validation step in which carrier phase ambiguities for a first subset of satellites in the set of global navigation satellites are simultaneously validated, and carrier phase ambiguities for a second subset of satellites in the set of global navigation satellites are simultaneously validated; and a third validation step following the second validation step in which the second validation step is repeated at least twice. In this particular example, the satellites in the first subset may correspond to a first satellite constellation, and the satellites in the second subset may correspond to a second satellite constellation different from the first satellite constellation. However, the first and second sets of satellites may correspond to subsets of the same satellite constellation, combinations of satellite combinations, and / or any suitable satellites. In this particular example, when the carrier phase ambiguity is verified up to the first verification step of the multi-step process, the integrity risk and protection level of the GNSS receiver position are at most 10 -4 / hour and 2m; when the carrier phase ambiguity is verified to the second verification step of the multi-step process, up to 10 -6 / hour and 2m; and when the carrier phase ambiguity is verified to the third verification step of the multi-step process, respectively, up to 10 -7 / hour and 3m. In this particular example, resolving the carrier phase ambiguity may include determining the real-valued phase ambiguity using a Kalman filter; and fixing the real-valued phase ambiguity to an integer-valued phase ambiguity includes decorrelating the real-valued phase ambiguity using at least one of a LAMBDA algorithm or an MLAMBDA algorithm. In this particular example, the first set of predetermined events may correspond to high dynamic events (e.g., at least one of an environmentally feared event, a network-feared event, a satellite clock drift of up to 1 cm / s, a data anomaly issue, an erroneous broadcast ephemeris, a constellation failure, reference station multipath, and a reference station cycle slip), and the second set of predetermined events may correspond to low dynamic events (e.g., at least one of code-carrier incoherence, a satellite clock step error, a satellite clock drift greater than 1 cm / s, pseudorange multipath, carrier phase multipath, carrier phase cycle slip, non-line-of-sight tracking, false acquisition, Galileo binary offset carrier second peak tracking, and spoofing). This particular example may also include estimating the velocity of the GNSS receiver using the time-differential carrier phase measurements independently of estimating the position of the GNSS receiver. In this particular example, at least one of a protection level for the estimated position and a protection level for the velocity may be determined using an Advanced Receiver Advanced Integrity Monitoring (ARAIM) algorithm using only carrier phase ambiguities. This particular example may include automatically operating a vehicle based on at least one of the estimated position and the velocity, wherein a GNSS receiver is coupled to the vehicle. This particular example may include determining a position of the GNSS receiver using dead reckoning based on data associated with an inertial navigation system when satellite observations corresponding to one or more satellites in the set of global navigation satellites are unavailable; and validating the position determined using dead reckoning by comparing a first dead reckoned position determined based on the data associated with the inertial navigation system with a second dead reckoned position determined based on data associated with a second inertial navigation system.

[0177] The method is preferably implemented by this system, but may additionally or alternatively be implemented by any system that estimates the position and / or velocity of a GNSS receiver and / or an external system based on satellite observations.

[0178] However, the system may include any other suitable components.

[0179] However, the method may comprise any suitable steps and / or sub-steps.

[0180] Specific Examples of Systems and Methods for RTK Satellite Positioning

[0181] like Figure 8 As shown, a specific example of a method 200 for real-time kinematic (RTK) satellite positioning includes: at a mobile receiver, receiving a navigation satellite carrier signal S210, receiving a phase correction signal S220 from a reference station, calculating integer phase ambiguities S230, and calculating a receiver position S240.

[0182] Step S210 includes receiving a navigation satellite carrier signal. Step S210 is used to provide a mobile receiver with phase and pseudorange measurements that can be used, along with a phase correction signal (received in step S220), to calculate the receiver position. The navigation receiver carrier signal is preferably received at the L1 frequency (1575.42 MHz), but may also be received at the L2 frequency (1227.60 MHz) or any other suitable frequency in addition or alternatively. The navigation satellite carrier signal received in step S210 may include a GPS signal, a GLONASS signal, a Galileo signal, an SBAS signal, and / or any other suitable navigation signal transmitted by a satellite.

[0183] Step S210 preferably includes receiving a navigation satellite carrier signal (which is an RF signal) at an RF antenna and converting the signal into a digital baseband signal. This digital baseband signal is preferably used in step S210 for two tasks: calculating the pseudorange from the receiver to the satellite (using standard GNSS time-of-flight techniques) and measuring the relative phase of the carrier signal.

[0184] Preferably, step S210 is performed for multiple satellites. Using pseudorange and phase data from multiple satellites can provide more accurate positioning, as described in the following section.

[0185] If the receiver carrier signal is received at both the L1 and L2 frequencies, step S210 may include combining the L1 and L2 frequency signals for each satellite to produce a beat signal. The resulting signal (i.e., the beat signal) has a center frequency significantly lower than either the L1 or L2 signal (~347.82 MHz), which allows for a smaller set of possible integer ambiguity values ​​under given a priori conditions (e.g., if |N| ≤ 10 for the L1 signal, |N| ≤ 2 for the example beat signal). The resulting signal may additionally or alternatively have other desirable properties (e.g., a reduction in ionospheric errors).

[0186] In a variation of the preferred embodiment, method 200 includes step S211: transmitting carrier signal data (e.g., pseudorange and / or phase data) from the receiver to a remote computer (e.g., a computer at a reference station, a cloud computing server). In this variation, steps S220 to S240 may also be performed on the remote computer.

[0187] Step S220 includes receiving a phase correction (or phase observation) signal from a reference station. Step S220 is used to receive phase correction information used to determine the position of the mobile receiver for a given satellite signal. Step S220 preferably includes receiving phase correction information for each satellite signal received in step S210, but may additionally or alternatively include receiving phase correction information for only a subset of the satellite signals received in step S210.

[0188] If step S220 includes receiving phase correction information for only a subset of satellite signals in step S210, step S220 may include estimating phase correction information for any of the subset of satellite signals for which phase correction information was not received.

[0189] Step S220 includes receiving phase correction information from at least one reference station, but may also include receiving phase correction information from additional reference stations.

[0190] Step S220 may include receiving phase correction information for some satellites from one reference station while receiving phase correction information for other satellites from another reference station. Additionally or alternatively, step S220 may include receiving phase correction information for a single satellite signal from multiple reference stations.

[0191] Step S220 preferably includes receiving the phase correction signal via a UHF radio (eg, at 915 MHz), but may additionally or alternatively include receiving the phase correction signal via any suitable communication medium (eg, an Internet connection, a cellular connection).

[0192] The phase correction signal preferably includes the carrier signal phase (measured at the reference station) and the reference station positioning information (or other positioning-related identification information). The phase correction signal may also include pseudorange data, positioning code data, or any other relevant data from the reference station.

[0193] The phase correction signal is preferably formatted as an RTCMv3 message, but may additionally or alternatively be formatted according to any suitable standard or method. The reference station used to transmit the phase correction signal may include a dedicated RTK reference station, a continuously operating reference station (CORS), a network RTK solution (including a virtual reference station solution), or any other suitable reference station.

[0194] Step S230 comprises calculating integer phase ambiguities.Step S230 serves to allow determination of the absolute phase difference between the satellite carrier signal received at the reference station and the satellite carrier signal received at the rover, which in turn enables calculation of the position of the rover relative to the reference station.

[0195] The integer phase ambiguities are preferably calculated using double-difference measurements of pseudorange and relative phase. The double-difference measurements are preferably calculated by taking the difference between the receiver and reference values. For example, the double-difference measurements of pseudorange and phase for two satellites (Satellite 1 and 2) can be modeled as

[0196] ρ 12 =(ρ mr -ρ ref ) i=1 -(ρ mr -ρ ref ) i=2

[0197] φ 12 =(φ mr -φ ref ) i=1 -(φ mr -φ ref ) i=2

[0198] where i is the satellite index, ρ mr 、φ mr are the pseudorange and phase measurements of the mobile receiver, ρ ref ,φ ref are the pseudorange and phase measurements of the reference station.

[0199] More specifically, for a mobile receiver and a reference station separated by a vector b, the double-difference equations for the pseudorange ρ and phase φ can be written as

[0200]

[0201]

[0202] where e n is the unit line of sight vector to satellite n, ∈ ρ represents the noise, λ is the wavelength of the carrier signal, and N is the integer phase ambiguity. Using double-differenced measurements allows the cancellation of satellite clock errors, receiver clock errors, and some atmospheric errors.

[0203] Step S230 preferably includes two sub-steps: generating a set of hypotheses S231, and performing hypothesis testing on the set of hypotheses S232. Additionally or alternatively, S230 may include computing the integer phase ambiguity N using any number or type of steps.

[0204] Step S231 is used to generate a set of possible N values ​​and iteratively refine the set of values. Step S231 preferably includes generating a set of possible N values ​​using a Kalman filter process.

[0205] The Kalman filter is a recursive filter that estimates the state of a linear dynamic system based on a series of noisy measurements. In general, the measurement equation is as follows

[0206] z i =H i x i +v i

[0207] where z i is the measurement value at time (or step) i, x i is the real state, v i is the observation noise (zero mean and with known covariance), and H i It is an observation model that maps the true state space to the observation space. The Kalman filter model further assumes that there is a relationship between the states at different times given by

[0208] x i =F i x i-1 +w i

[0209] where w i is the process noise (also zero mean and with known covariance), and F i It is a transition model that maps the true state at time i-1 to the true state at time i.

[0210] In particular, step S231 preferably includes generating a set of possible N values ​​using a Kalman filter known as a Bierman-Thornton filter; additionally or alternatively, step S231 may use any suitable process to generate possible N values.

[0211] Start with the following equation

[0212]

[0213] And noticed

[0214] For any matrix A operating on a normally distributed random variable x with covariance Σ, the random variable y = Ax will have covariance AΣA T ,

[0215] For a matrix A, there exists a subspace Ker[A] where any vector x∈Ker[A] has the property 0=Ax

[0216] The matrix Q can be constructed i , so that 0 = Q i DE i And this matrix can be used to form the second equation:

[0217]

[0218] This equation relates the phase change and pseudorange directly to N (excluding the baseline vector b). This equation can be used as the measurement equation for the Kalman filter of step S231 without requiring a corresponding dynamic conversion model. Directly calculating the value of N (rather than attempting to calculate the Kalman filter baseline) allows the baseline state to be removed from the filter; because N is constant, a dynamic conversion model is not required. Removing the requirement for a dynamic conversion model can significantly reduce the time and / or memory required to compute the solution. Furthermore, errors that may occur in the dynamic model cannot be interpreted as errors in the estimate of N.

[0219] Calculate Q i Need to know DE i . Step S231 preferably includes calculating the line of sight vector based on an estimate of b (although not directly calculated in the previous calculations, this estimate can be found using a set of phase measurements and an estimate of N). The estimate of b is preferably found as in step S240, but may additionally or alternatively be found by any suitable method. Additionally or alternatively, step S231 may include calculating the line of sight vector based on reference station data or in any other suitable manner.

[0220] For a specific set of viewing vectors, Q i It is preferably calculated by generating a matrix whose rows form the basis of the left null space of DE (or Ker[DE T ]). The generation is preferably done by QR decomposition, but may additionally or alternatively be performed using singular value decomposition or any other suitable method.

[0221] From these equations, a set of assumptions can be generated. The measurements resulting from the ambiguity vector N are expected to be normally distributed and have a mean value given by

[0222]

[0223] Determining the corresponding covariance based on the results of the Kalman filter in step S231 reduces the set of possible hypotheses (compared to the covariance derived directly from the measurement model). From this information, a set of hypothesized distributions can be found.

[0224] Ideally, all hypotheses within a specific confidence interval are tested. The number of hypotheses contained within this interval (hereafter referred to as the test set) depends on the covariance of the N distribution. Since N needs to be calculated for several satellites to determine the position of a mobile receiver, the total set of hypotheses that needs to be tested depends not only on the covariance of the N values ​​associated with each satellite, but also on the number of satellites.

[0225] Preferably, the hypothesis is bounded by an ellipsoid defined by a covariance matrix (for a specific confidence interval). The ellipsoid defined by the covariance matrix is ​​usually extremely elongated, resulting in a time and computationally intensive hypothesis generation process. In order to reduce the time and computational resources required to perform this process, step S231 may include performing a decorrelated reparameterization of the hypothesis search space, such as Figure 9 This reparameterization transforms the hypothesis space so that the elongated ellipsoid is transformed into an approximate ellipsoid; this transformation makes the hypothesis easier to identify. The hypothesis can then be transformed back to the original coordinate space by an inverse transformation (the inverse of the original reparameterization).

[0226] Step S231 preferably includes generating hypotheses for the test set based on memory limitations on the mobile receiver. For example, if the receiver has 64 kB of memory for storing hypotheses and storing initial hypotheses for eight satellites requires 70 kB (while storing initial hypotheses for seven satellites only requires 50 kB), step S231 may include generating an initial set of hypotheses for seven satellites and then adding a hypothesis for the eighth satellite after enough initial hypotheses for seven satellites have been eliminated. S231 may additionally or alternatively include waiting for the covariance of the Kalman filter estimate to decrease before generating a hypothesis if the current covariance is large enough that the memory cannot store a test set of at least four satellites at a certain threshold confidence level.

[0227] Although step S231 is preferably performed before the first execution of step S232, step S231 may be performed again at any suitable time to modify the set of hypotheses being tested. For example, as the probabilities of each hypothesis set are refined by step S232, hypotheses may be added to or subtracted from the test set by step S231. For example, if step S231 generates a test set A, and then a test set B containing a new satellite is added, a new test set may be generated by taking the Cartesian / outer product of A and B, where where the denominator is the number of hypotheses in set B, and P(A) is the probability of A generated in step S232. Step S232 may include initializing the probabilities via P(A, B) = P(A) (because step S232 preferably tracks relative probabilities rather than absolute probabilities). If step S231 includes dropping a satellite (e.g., if the satellite is no longer being tracked), this may be done via P(A, B) is marginalized over all hypotheses still in the set to illustrate. Step S232 preferably includes tracking the probability in logarithmic space; for l i =ln[p i ]

[0228]

[0229] Step S232 preferably includes performing a Taylor series on the probability or log-probability space. Additionally or alternatively, the logarithmic term can be estimated to be zero because the exponential term can be very small compared to 1. This approximation can result in reduced computation time and / or memory.

[0230] Step S232 is used to test the refined set of hypotheses generated by step S231 to identify a hypothesis corresponding to the actual value N. Step S231 preferably includes generating hypotheses using the mean and covariance generated by the Kalman filter, using a LAMBDA or MLAMBDA algorithm, but may additionally or alternatively include using any other mean or covariance estimate of N or generating hypotheses according to any suitable algorithm. Step S232 preferably includes testing the hypothesis h for a given observation y using a variation of the following Bayesian update formula:

[0231] ln[P i (h)]=l i (h) = l i-1 (h)+ln[P(y i |h)]-η i

[0232] in

[0233]

[0234] The variables to be used in this equation are preferably defined according to the following definitions:

[0235]

[0236] where r i A distribution has a mean and a covariance

[0237]

[0238] For the observation y i =r i And assuming h=N, the previous assumption update formula can be written as

[0239]

[0240] where k i is the scaling factor in the normal distribution.

[0241] Step S232 preferably includes running the above hypothesis test until the ratio of the probabilities of the best two hypotheses reaches a set threshold; additionally or alternatively, step S232 may include stopping the hypothesis test based on any other suitable condition (eg, time).

[0242] Step S232 may additionally or alternatively comprise discarding hypotheses from further testing if their associated pseudo-likelihoods are given by

[0243]

[0244] is less than a set threshold; for speed and numerical stability, the likelihood ratio test can be performed in single precision. Additionally or alternatively, step S232 may include using any other suitable metric to remove unlikely hypotheses; for example, removing hypotheses whose probability ratio (relative to the best hypothesis) is lower than a certain threshold.

[0245] Step S232 preferably includes calculating ∑ i and r i , rather than computing them once for each hypothesis N; additionally or alternatively, step S232 may include computing these at any suitable time.

[0246] Step S240 includes calculating the receiver position. Step S240 is used to calculate the position of the rover receiver based on the N value calculated in step S230. After determining N, step S240 determines the rover receiver's baseline vector b from the N value and the phase / pseudorange measurements; this gives the rover receiver's position relative to the reference station. If the reference station's location is known, step S240 may include calculating the rover receiver's absolute position (by applying b to the reference station coordinates).

[0247] Step S240 may also include transmitting or storing the receiver location data. For example, step S240 may include transmitting the receiver location data from the receiver to an external computer via a UHF radio device, the Internet, or any other suitable means.

[0248] All steps of method 200 are preferably performed on the mobile receiver, but additionally or alternatively, any step or set of steps may be performed on a remote platform, such as a cloud computing server if the mobile receiver has Internet access.

[0249] Specific examples of systems and methods for generating satellite positioning corrections

[0250] A system for distributed dense network processing of satellite positioning data includes a global correction module, a plurality of local correction modules, and a correction value generator. The system may also include one or more interpolators. For example, data from the global correction module may be used to initialize the local correction modules, may be passed to the correction value generator via the local correction modules, may be passed directly to the correction value generator, and / or may be used by the system in any other manner.

[0251] The system is used to generate correction data for use by a mobile GNSS (Global Navigation Satellite System) receiver or any other GNSS receiver that requires position / velocity / timing data corrections. Such a receiver (hereinafter referred to as a mobile receiver) can operate on any satellite navigation system; for example, GPS, GLONASS, Galileo, and BeiDou. The correction data is preferably used to improve the accuracy of the GNSS solution and can take the form of PPP corrections, RTK corrections, or any other type of corrections (discussed in the Correction Generator section).

[0252] The flexibility of the correction data format is an inherent and distinguishing aspect of this system relative to traditional position correction systems. Rather than attempting to generate corrections from only a small set of high-quality global reference stations (as in PPP) or by comparing data from mobile receiver / reference station pairs (as in RTK), the system collects data from reference stations (and / or other reference sources) and instead of (or in addition to) directly applying this data to generate connections, this data is used to generate a global correction model (in the global correction module) and multiple local correction models (in the local correction module). The outputs of these models are then passed to a correction generator, which can use the outputs to generate correction data in any form. In addition, the correction generator can cache and / or spatially interpolate (using an interpolator) the correction data to provide high-quality corrections to the mobile receiver, regardless of the correction capabilities (e.g., whether the receiver can process RTK / PPP corrections) and the positioning of the individual base stations.

[0253] By operating in this way, the system can provide a set of correction values ​​(although usable by a PPP receiver) that has almost none of the long convergence time issues of PPP, with the solution complexity scaling directly with the number of reference stations N (unlike RTK, where the solution complexity scales at least as fast as the number of possible pairs, N). 2 ). In fact, many current solutions scale with N 3 Furthermore, because the corrections are preferably computed using a local correction model that may rely on any number of individual reference stations (rather than specific pairs of reference stations), the corrections are substantially more stable to the loss of a base station.

[0254] Furthermore, the flexible nature of the system enables some functions (such as spatial interpolation and caching) to be performed more generally than with RTK; although the concept of a "virtual reference station" is known in RTK (also called a "pseudo-reference station"), a virtual reference station generally involves the interpolation of RTK correction data (and, as mentioned earlier, the complexity of the error correction increases with the number of N 2In contrast, interpolation in a system can be limited to specific aspects of the global and / or local correction model, providing greater robustness to errors and better insight into their causes. Furthermore, unlike RTK, which requires real-time correction data, a model-based system can cache or otherwise preserve model parameters even when data is limited (e.g., when a reference station suddenly becomes unavailable).

[0255] The system is preferably implemented in software as part of a networked distributed computing system, but may additionally or alternatively be implemented in any manner.

[0256] The global correction module is used to maintain one or more global correction models. The global correction model preferably performs two functions: correcting global errors (i.e., GNSS positioning errors that do not vary significantly across space) and error checking / seeding local error estimates (where local errors refer to errors that vary significantly across space or across each GNSS receiver). Note that seeding here refers to providing a rough estimate as a starting point for further refinement.

[0257] The global correction module preferably takes as input raw data from reference stations and rover receivers (e.g., carrier phase data, pseudorange data, reference station positioning, etc.), but may additionally or alternatively receive processed data from reference stations and / or rover receivers (e.g., positioning code data) or data from any other source (e.g., a PPP global correction value data source on the Internet, calibration data for a specific satellite or receiver type from the manufacturer or other source, satellite orbit data, satellite clock data).

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

[0259] The global correction module preferably explicitly models the effects of global parameters on GNSS navigation. These parameters preferably include satellite clock errors, satellite orbit errors, satellite hardware biases, satellite antenna phase windup, phase center offset (PCO) and phase center variation (PCV) (all of which are specific to each satellite but generally do not vary spatially), solid Earth tides, solid Earth magnetic pole tides, ocean tidal loads (which vary in space and time, but in a predictable manner), and a coarse global model of ionospheric and tropospheric effects (in this case, the global models themselves may not be accurate enough to model ionospheric and tropospheric effects, but they provide a starting point for later refinement). Additionally or alternatively, the global correction module may model the effects of any parameter received by the mobile receiver or reference station on the GNSS signal. The global correction module preferably also maintains uncertainty estimates for at least some of the global parameters; additionally or alternatively, the global correction module may not maintain uncertainty estimates.

[0260] Note that for receivers used to generate / update the global model, the global correction module may additionally or alternatively model those effects that are unique to the receiver; such as receiver clock error, receiver hardware bias, and receiver antenna phase saturation / PCO / PCV (these are unique to a given receiver but not directly dependent on positioning).

[0261] A plurality of local correction modules are used to maintain a local correction model. The local correction model preferably corrects for spatially local variations in influences on the GNSS signal, as well as influences specific to a particular receiver / reference station.

[0262] The local correction module preferably corresponds to (and receives data from) a single reference station. In some embodiments, there is a local correction module for each reference source or station, such that each local correction module takes input from a unique reference source. Additionally or alternatively, the local correction module can correspond to and / or be coupled to a reference station in any manner; for example, a local correction module can be used to model multiple reference stations within a particular spatial region. Additionally or alternatively, the system can include one or more local correction modules corresponding to a mobile receiver.

[0263] The local correction module preferably takes as input raw data from the corresponding reference station / rover (e.g., carrier phase data, positioning code data, reference station position, pseudorange, navigation data, message data, etc.), but may additionally or alternatively obtain processed data from the reference station and / or rover (e.g., broadcast ephemeris and almanac) or obtain data from any other source. The local correction module preferably also obtains data from the global correction module (e.g., to initialize the local correction model for a new reference station and / or compensate for the global component of the local error). Additionally or alternatively, the local correction module may obtain data from any source (e.g., the local correction module may obtain only reference data without obtaining any output of the global correction module).

[0264] The local correction module preferably explicitly models the effects of local parameters on GNSS navigation. These parameters preferably include tropospheric and ionospheric effects (which are not directly dependent on the reference station, but vary in space / time), receiver clock errors, receiver hardware biases, receiver antenna phase saturation / PCO / PCV (which are unique to a given receiver / antenna, but not directly dependent on positioning), carrier phase ambiguity, and other position errors (which cover effects not otherwise explicitly modeled). Additionally or alternatively, the local correction module can model the effects of any parameter on the GNSS signals received by the mobile receiver or reference station. Like the global correction module, the local correction module can additionally or alternatively maintain / track parameter uncertainty estimates.

[0265] In particular, the local correction module preferably models tropospheric and ionospheric effects as a function of the receiver location.

[0266] Ionospheric effects can be difficult to model. It is difficult to separate the effects of ionospheric effects on GNSS signals from the effects of receiver hardware biases; however, ionospheric effects tend to change more rapidly over time than receiver hardware biases. Therefore, the local correction module can attempt to separate the effects of ionospheric effects and hardware biases based on the rate of change of the combination of these effects. Furthermore, ionospheric effects vary greatly (and in ways that are not easily predictable) not only based on location, but also based on the path the GNSS signal takes through the ionosphere. Therefore, the ionospheric effect model may need to take each of these factors into account. In one implementation of an embodiment of the present invention, as Figure 10AAs shown, the local correction module models the ionospheric effects for each GNSS source (e.g., each satellite) as a function of both location (e.g., pierce point, where the line of sight between the receiver and the satellite intersects the atmosphere) and pierce angle (e.g., as a simulation of the signal path). Ionospheric effects can also be modeled with reference to frequency. Furthermore, the ionosphere is preferably modeled as one or more thin shells; however, the ionosphere can additionally or alternatively be modeled in any manner. Likewise, ionospheric effects can be modeled in any manner; as opposed to modeling ionospheric effects as a function of location and angle, ionospheric effects can be modeled based on a set of pierce locations for each shell of the ionospheric model, such as Figure 10B shown.

[0267] In contrast, tropospheric effects do not vary much with frequency (for most satellite frequencies); furthermore, while tropospheric effects do depend on angle, they generally do so in a predictable manner. Therefore, the local correction model preferably models tropospheric effects using static corrections based only on location (e.g., penetration point) using angles roughly corresponding to 1 / cosθ, where θ is the angle relative to the vertical. Additionally or alternatively, tropospheric effects may be modeled in any manner.

[0268] The models of the global correction module and the local correction module are preferably weakly coupled; that is, in either case, changes in the models propagate to each other, but in a damped manner (this allows reaction to changing conditions without causing correction accuracy to degrade due to bad data or loss of reference stations). Additionally or alternatively, the models can be coupled in any manner (or not coupled at all).

[0269] The models of the global correction module and the local correction module are preferably maintained / updated via a Kalman filter or a Gaussian process, but may additionally or alternatively be maintained / updated in any manner.

[0270] The global correction module and the local correction module can use any group of reference sources. For example, the local correction module can use a strict subset of the reference sources used by the global correction module (e.g., a subset of reference sources within the range threshold of the mobile receiver), or the global correction module can use a strict subset of the reference sources used by the local correction module (e.g., a subset of local reference sources with the highest accuracy). As a second example, the local correction module and the global correction module can use overlapping reference sources (but neither sets a subset of the other). As a third example, the local correction module and the global correction module can use non-overlapping reference source groups (i.e., they do not share reference sources). Similarly, these reference sources can receive satellite information from any group of satellites.

[0271] The outputs of the global correction module and the local correction module may be referred to as "pre-correction values" and may be generated in any form that a correction value generator may use to generate correction value data. The pre-correction values ​​generated by the global correction module may be referred to as "global pre-correction values," while the pre-correction values ​​generated by the local correction module may be referred to as "local pre-correction values."

[0272] In a variation of this embodiment, the global correction module includes a differential ambiguity fixer (DAF) 111, which computes carrier phase ambiguities for some reference station pairs. For example, this differential ambiguity fixer can be used to facilitate faster initialization of new reference stations in the global and local models. Alternatively, DAF 111 can be independent of the global correction module.

[0273] The interpolator is used to interpolate the spatially varying effects of the system. In particular, the interpolator is preferably used to transform each reference station model of local tropospheric and ionospheric effects into a local (reference station independent, but location dependent) model of local tropospheric and ionospheric effects. For example, the interpolator can convert a set of tropospheric effect models corresponding to various reference fixes (each with a known position) into a regularly spaced grid. Additionally or alternatively, the interpolator can function in any manner (e.g., by creating a continuously interpolated model of tropospheric / ionospheric effects rather than a discrete grid, or using some other arrangement of discrete points rather than a grid pattern, such as Figure 11 , etc.) Note that any interpolation technique can be used; for example, kriging can be used (this technique has the advantage of also predicting the uncertainty at the interpolation points). In general, the local location-dependent model can be referred to as a "unified location-based model" (because it unifies the outputs of multiple models corresponding to various reference sources).

[0274] The interpolator can additionally or alternatively be used to separate the effects of ionospheric effects and hardware biases; for example, the local correction module can output ionospheric and hardware bias estimates to the interpolator (optionally including a term characterizing the correlation between these estimates), and from these estimates, attempt to fit a unified (spatially varying) ionospheric model to the data (after which the hardware bias estimates for each reference source can be refined). For example, each local correction module (LCM i ) can output the ionospheric correction value I i (x,y,z) and hardware deviation correction value H i In the local correction module, these correction values ​​may be incorrectly separated; for example, I i =I i (Ideal)+Δ i , H i =H i (Ideal)-Δ i, but because the ionosphere estimates should fit the same model, the interpolator can use measurements from multiple reference sources to refine the estimates for both ionospheric correction and hardware bias correction.

[0275] A correction value generator is used to generate correction values ​​for use by a mobile receiver. The correction value generator preferably generates correction values ​​based on the outputs of the mobile receiver's global correction module and local correction module in a form usable by the mobile receiver. For example, if the mobile receiver can accept PPP correction values, the correction value generator may send the correction values ​​in the form of PPP correction values ​​(although, as opposed to true PPP correction values, the correction values ​​generated by the correction value generator may depend on the receiver position estimate or another spatial term). Additionally or alternatively, the correction value generator may send the correction values ​​in the form of RTK correction values ​​(e.g., of a virtual reference station) or in any other form (e.g., certain local coefficients as part of a local model). Note that the local correction values ​​and the global correction values ​​may occur in any order (and may be synchronous or asynchronous). The correction value generator may additionally or alternatively send or use the correction value data to correct the position data in any manner (e.g., the correction value generator may take the position data as input and generate corrected position data, rather than positioning corrections implemented by, for example, the mobile receiver).

[0276] The correction value generator preferably caches the model output and uses this cache to generate correction values. Thus, in the absence of some real-time data, the cached data can be replaced (not possible in conventional RTK). Additionally or alternatively, new parameters can be estimated based on predicted temporal changes (e.g., predicted from cached values), or the correction value generator may not rely on cached and / or predicted outputs.

[0277] The correction value generator may additionally or alternatively calculate estimated uncertainties in the generated correction values ​​given uncertainties in the input parameters (conventional PPP / RTK solutions cannot do this).

[0278] A method for distributed dense network processing of satellite positioning data includes receiving data from a set of reference stations, updating a GNSS correction model, updating a set of local GNSS correction models, and generating GNSS correction values.

[0279] The method preferably operates in a substantially similar manner to the system.

[0280] Receiving data from a set of reference stations is used to receive input data for updating global and local GNSS correction models, substantially similar to that described in the system.

[0281] Updating the Global GNSS Correction Model is used to update a global correction model that is substantially similar to the global correction model of the global correction module; this model preferably performs two functions: correcting global errors (i.e., GNSS positioning errors that do not vary significantly across space) and error checking / seeding local error estimates. The update is preferably performed as described in the system description.

[0282] Updating a set of local GNSS correction models is used to update local correction models substantially similar to the local correction models of the local correction module; these models preferably correct for spatially localized variations in the effects on the GNSS signals, as well as effects specific to a particular receiver / reference station. The updating is preferably performed as described in the system description.

[0283] Generating GNSS corrections is used to generate corrections from the global correction model and the local correction model for use by the mobile receiver. Generating GNSS corrections preferably includes generating corrections as described in the correction generator section; additionally or alternatively, as part of this generation process, interpolation may be performed (as described in the section on the interpolator). Similarly, caching the model output and generating corrections from this cache may be included. Thus, in the absence of some real-time data, the cached data can be replaced (which is not possible in conventional RTK).

[0284] The method is preferably implemented by the system, but may additionally or alternatively be implemented by any system for distributed dense network processing of satellite position data.

[0285] Specific examples of systems and methods for reducing outlier satellite positioning

[0286] The position estimate of S240 is preferably calculated by any number of prediction and updating steps based on the observations received at S210. For example, S210 may include receiving observations at different times, and S240 may include generating a position estimate using all of those observations and previous position estimates. Alternatively, S240 may include generating a position estimate from only a subset of the observations.

[0287] S250 includes generating a second receiver position estimate with reduced outliers. S250 is for detecting the effects of erroneous observations (i.e., erroneous observations detectable as statistical outliers) in the first receiver position estimate and modifying the position estimate to improve accuracy (generating a second receiver position estimate characterized by higher performance).

[0288] While there are techniques for removing or weighting measurement outliers in the prior art (as well as residual-based solutions or analysis of measurement quality), S250 includes specific techniques for suppressing the effects of outliers more effectively than the prior art. For example, while there are techniques for suppressing a single outlier at a time, the techniques of S250 may be suitable for identifying and / or suppressing multiple outliers in parallel.

[0289] S250 preferably uses one of the following three techniques (scaling residual technique, variance threshold technique and hybrid technique) to detect outlier observations. After detecting the outlier observation, S250 preferably includes generating a second position estimate in the same manner as in S240, but excluding any outlier observations. Additionally or alternatively, S250 may include generating the second position estimate by adding a new observation with a negative variance as an update to the first position estimate (the new observation is used to eliminate the effect of the detected outlier observation) or in any other manner. While these are two examples of how S250 can suppress the effect of outliers on the position estimate, S250 may additionally or alternatively achieve this in any manner (e.g., weighting non-outlier observations more strongly than outlier observations).

[0290] Scaling residual technique

[0291] In a first implementation of an embodiment of the present invention, S250 includes generating a second receiver position estimate with reduced outliers using the scaled residual technique described in this section. Note that the term "scaled residual technique" is coined here to accurately refer to the technique described herein (any similarity in name to other techniques is entirely coincidental).

[0292] In the scaled residual technique, S250 preferably includes calculating the a posteriori residual value of the satellite data observation result. That is, for the observation result z k and the posterior state estimate (calculated in S220), S250 preferably includes calculating the residual

[0293]

[0294] Hereinafter referred to as the posterior observation residual (sometimes referred to as the measured fitting residual). Based on the posterior observation residual, S250 preferably includes calculating the posterior observation residual covariance,

[0295]

[0296] where R k is n k The covariance of P k|k is the updated state covariance.

[0297] According to the posterior observation residual covariance, the variance of the posterior observation residual vector can be calculated:

[0298]

[0299] where DOF is the degree of freedom. Note that v can be written as Sz, where S is a matrix with the trace equivalent to DOF. From this, we can say

[0300]

[0301] Finally, this variance can be used to scale the residuals (For example, by dividing the residuals by their associated standard deviation or by their associated variance.) The scaled residuals are then compared to a threshold window (for example, a window corresponding to plus or minus 3 standard deviations from the mean), and any observations that fall outside the threshold window are marked as outlier observations.

[0302] A second receiver position state is then generated from the reduced set of observations as previously described.

[0303] Variance thresholding technique

[0304] In a second implementation of an embodiment of the present invention, S250 includes generating a second receiver position estimate with reduced outliers using the variance thresholding technique described in this section. Note that the term "variance thresholding technique" is coined here to accurately refer to the technique described herein (any similarity in name to other techniques is entirely coincidental).

[0305] In the variance thresholding technique, the calculations for the posterior residuals, posterior residual covariance, and posterior residual variance are the same as in the scaled residual technique. However, in this technique, the posterior residual variances are examined directly. If one or more of the posterior residual variances falls outside the threshold range, this indicates the presence of an outlier in the observed data.

[0306] In this technique, S250 preferably includes removing a set of observations and recalculating the posterior residual variance. If the posterior residual variance is below a threshold level, the algorithm can stop here; however, the algorithm can also try removing a different set of observations (and so on, until at least one or more of them is below the threshold level). Alternatively, the algorithm can continue until the number of posterior residual variances outside the threshold range is less than a threshold number.

[0307] Alternatively, in this technique, S250 may include calculating the variance of the posterior residuals for multiple reduced sets of observations (ie, different subsets of the full set of observations) and selecting the reduced set with the lowest variance.

[0308] This technique can be particularly useful for differenced measurements, which are correlated and therefore more likely to have an outlier in one observation corrupt the residuals corresponding to a different observation.

[0309] A second receiver position state is then generated from the reduced set of observations as previously described.

[0310] Hybrid Technology

[0311] In a third implementation of an embodiment of the present invention, S250 includes generating a second receiver position estimate with reduced outliers using the hybrid technique described in this section. Note that the term "hybrid technique" is coined here to accurately refer to the technique described herein (any similarity in name to other techniques is entirely coincidental).

[0312] In the hybrid technique, the calculation of the posterior residuals, posterior residual covariances, and posterior residual variances is the same as in the scaled residual technique. The posterior residual variances are then checked. If one or more posterior residual variances are above a threshold (note: this may be a threshold different from the threshold mentioned in the variance threshold technique), S250 includes detecting outliers using the variance threshold technique; however, if this is not the case, then S250 includes detecting outliers using the scaled variance technique. Additionally or alternatively, S250 may include selecting between the variance threshold and the scaled variance technique in any manner based on the number of posterior residual variances above the threshold and / or their magnitude.

[0313] A second receiver position state is then generated from the reduced set of observations as previously described.

[0314] All three techniques preferably treat the phase ambiguity as a continuous variable; however, S250 may additionally or alternatively attempt to constrain the phase ambiguity to an integer. For example, S250 may include (e.g., after calculating the second position estimate) calculating phase measurement residuals and comparing these residuals to integer multiples of the full phase period (e.g., 2πn). If the residuals are close, this may indicate a cycle slip rather than an erroneous observation.

[0315] In one implementation of an embodiment of the present invention, S250 includes detecting potential cycle slips, verifying that the cycle slip value can be reliably selected (e.g., by verifying that a known variance window around the residual value contains only single integer cycle slip values), and testing the cycle slip value against the residual (e.g., by verifying that the cycle slip value is within the variance window of the residual value). Note that the two variance windows described herein can be different (e.g., one can be smaller than the other). S250 can then include correcting for the cycle slip.

[0316] Note that if method 200 identifies data from one or more sources (e.g., satellites, base stations) as erroneous, method 200 may include flagging or otherwise providing notification that the source may be “unhealthy.” Additionally, method 200 may ignore or weight observations from these sources differently.

[0317] Method 200 is preferably implemented by system 100, but may additionally or alternatively be implemented by any system for processing satellite position data.

[0318] The methods of the preferred embodiments and variations thereof may 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 a computer-executable component that is preferably integrated with a system for high-integrity satellite positioning. The computer-readable medium may be stored on any suitable computer-readable medium, such as RAM, ROM, flash memory, EEPROM, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component is preferably a general-purpose or special-purpose processor, but any suitable special-purpose hardware or hardware / firmware combination device may alternatively or additionally execute the instructions.

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

Claims

1. A system for determining a position of a receiver, comprising: Remote servers, including: A reference station observation monitor configured to: receiving a first set of reference station observations associated with the first set of reference stations and a second set of reference station observations associated with the second set of reference stations; and detecting a predetermined event in the first set of reference station observations and the second set of reference station observations; When the predetermined event is detected, suppressing the influence of the predetermined event; a modeling engine configured to generate corrections based on the first set of reference station observations; and a reliability engine configured to validate corrections generated by the modeling engine based on the second set of reference station observations; and a positioning engine executed on a computing system collocated with the receiver, the positioning engine comprising: an observation monitor configured to receive a set of satellite observations from a set of global navigation satellites corresponding to at least one satellite constellation; a floating-point filter configured to determine a real-valued carrier phase ambiguity estimate based on the set of satellite observations and the validated correction; an integer fixing module configured to fix the real-valued carrier phase ambiguity estimate to an integer-valued carrier phase ambiguity, wherein the integer-valued carrier phase ambiguity is verified in a multi-step process; and a position filter configured to estimate a position of the receiver based on the satellite observations with corresponding integer-valued carrier phase ambiguities removed, wherein an integrity risk and a protection level of the estimated position depends on a validation step of the multi-step process; The positioning engine is configured to detect a predetermined event in the set of satellite observations; and upon detecting the predetermined event in the set of satellite observations, suppress an influence of the predetermined event in the set of satellite observations.

2. The system according to claim 1, wherein: The reliability engine is configured to verify the correction value by: Correcting the second set of reference station observations using the correction values; determining residuals of the corrected second set of reference station observations; as well as When the residual is less than a threshold, the correction value is verified. 3 . The system of claim 1 , wherein the positioning engine further comprises a velocity filter configured to estimate the velocity of the receiver using differential carrier phase measurements.

4. The system according to claim 3, wherein: At least one of the position filter and the velocity filter is further configured to determine a protection level of the estimated position and velocity using an Advanced Receiver Advanced Integrity Monitoring (ARAIM) algorithm.

5. The system according to claim 4, wherein: The ARAIM algorithm determines the protection level based on carrier phase measurements from the satellite observations with corresponding integer-valued carrier phase ambiguities removed.

6. The system according to claim 1, wherein: The multi-step process corresponds to a three-step process comprising: a first verification step, a second verification step, and a third verification step.

7. The system of claim 6, wherein: Prior to said first verification step, said integrity risk and protection level of said estimated position are not specified; After the first verification step and before the second verification step, the integrity risk is at most 10 -4 / hour, and the protection level is up to 2 meters (m); After the second verification step and before the third verification step, the integrity risk is at most 10 -6 / hour, and the protection level is up to 2m; and After the third verification step, the integrity risk is at most 10 -7 / hour, the protection level is up to 3m.

8. The system of claim 1 , further comprising a dead reckoning module configured to determine a dead reckoning position of the receiver based on input from an inertial navigation system (INS), wherein The estimated position corresponds to the dead reckoning position when one or more signals corresponding to one or more satellites in the set of global navigation satellites are not received.

9. A method for determining a position of a Global Navigation Satellite System (GNSS) receiver, the method comprising: At the remote server: receiving a first set of reference station observations associated with the first set of reference stations; detecting a first set of predetermined events; When at least one predetermined event of the first set of predetermined events is detected, suppressing an effect of the detected predetermined event; generating an atmospheric model based on the first set of reference station observations; determining a correction value based on the atmospheric model; as well as validating the corrections using a second set of reference station observations associated with a second set of reference stations; as well as At a computing system collocated with the GNSS receiver: receiving the verified correction value from the remote server; receiving a set of satellite observations from a set of global navigation satellites corresponding to at least one satellite constellation; resolving carrier phase ambiguities for the set of satellite observations based in part on the validated corrections; validating the carrier phase ambiguity using a multi-step validation process; detecting a second set of predetermined events; When at least one predetermined event in the second set of predetermined events is detected, suppressing an effect of the detected predetermined event in the second set of predetermined events; A position of the GNSS receiver is estimated based on the verified carrier phase ambiguities, wherein an integrity risk and a protection level of the estimated position depends on which step of the multi-step verification process is used to verify the carrier phase ambiguities.

10. The method of claim 9, wherein verifying the correction value comprises: Correcting the second set of reference station observations using the correction values; determining residuals of the corrected set of satellite observations; as well as When the residual is lower than a correction value verification threshold, the correction value is verified.

11. The method according to claim 9, wherein Generating the atmospheric model comprises: estimating an atmospheric delay associated with each reference station in the first set of reference stations using a PPP filter; and Interpolation is performed between the atmospheric delays associated with each reference station to generate the atmospheric model.

12. The method according to claim 9, wherein The multi-step verification process includes: a first verification step, wherein the carrier phase ambiguities are simultaneously verified; a second verification step, subsequent to said first verification step, wherein a first subset of carrier phase ambiguities corresponding to a first subset of satellites of said set of global navigation satellites is simultaneously verified, and a second subset of carrier phase ambiguities corresponding to a second subset of satellites of said set of global navigation satellites is simultaneously verified; and A third verification step is performed after the second verification step, wherein the second verification step is repeated at least twice.

13. The method according to claim 12, wherein: The first subset of satellites corresponds to a first satellite constellation, and the second subset of satellites corresponds to a second satellite constellation different from the first satellite constellation.

14. The method according to claim 9, wherein The GNSS receiver's position integrity risks and protection levels are: When the carrier phase ambiguity is verified to the first verification step of the multi-step process, the position integrity risk and protection level of the GNSS receiver are at most 10 -4 / hour and 2m; When the carrier phase ambiguity is verified to the second verification step of the multi-step process, the position integrity risk and protection level of the GNSS receiver are at most 10 -6 / hour and 2m; as well as When the carrier phase ambiguity is verified up to the third verification step of the multi-step process, the position integrity risk and protection level of the GNSS receiver are at most 10 -7 / hour and 3m.

15. The method of claim 9, wherein resolving the carrier phase ambiguity comprises: Resolving real-valued phase ambiguities using a Kalman filter; and Fixing the real-valued phase ambiguity to an integer-valued phase ambiguity includes decorrelating the real-valued phase ambiguity using at least one of a LAMBDA algorithm or an MLAMBDA algorithm.

16. The method according to claim 9, in, The first set of predetermined events corresponds to at least one of the following events: an environmentally feared event, a network-feared event, a satellite clock drift of up to 1 cm / s, a data anomaly problem, an erroneous broadcast ephemeris, a constellation failure, a reference station multipath, and a reference station cycle slip; as well as The second set of predetermined events corresponds to at least one of the following events: code carrier incoherence, satellite clock step error, satellite clock drift greater than 1 cm / s, pseudorange multipath, carrier phase multipath, carrier phase cycle slip, non-line-of-sight tracking, false capture, Galileo binary offset carrier second peak tracking and spoofing.

17. The method of claim 15, further comprising, independently of estimating the position of the GNSS receiver, estimating the velocity of the GNSS receiver using time-differential carrier phase measurements.

18. The method according to claim 17, wherein At least one of the protection level of the estimated position and the protection level of the velocity is determined using an Advanced Receiver Advanced Integrity Monitoring (ARAIM) algorithm that uses carrier phase ambiguities from the satellite observations with corresponding integer-valued phase ambiguities removed.

19. The method of claim 17, further comprising automatically operating a vehicle based on at least one of the estimated position and the speed, wherein the GNSS receiver is coupled to the vehicle.

20. The method of claim 9, further comprising: determining a position of the GNSS receiver using dead reckoning based on data associated with an inertial navigation system when satellite observations corresponding to one or more satellites in the set of global navigation satellites are unavailable; as well as The position determined using dead reckoning is validated by comparing a first dead reckoning position determined based on data associated with the inertial navigation system to a second dead reckoning position determined based on data associated with a second inertial navigation system.

21. A method of determining a position of a Global Navigation Satellite System (GNSS) receiver, the method comprising: generating a set of GNS S corrections based on a set of satellite observations recorded at a first set of reference stations; validating the GNSS corrections against a second set of satellite observations recorded at a second set of reference stations; receiving a set of satellite observations from a constellation of global navigation satellites; Resolving carrier phase ambiguities for the set of satellite observations based in part on the verified GNSS corrections; validating the carrier phase ambiguity using a multi-step validation process; detecting predetermined events; In response to detecting the predetermined event, suppressing an effect of the detected predetermined event in the set of satellite observations; as well as A position of the GNSS receiver is estimated based on the validated carrier phase ambiguities, wherein an integrity risk and a protection level of the estimated position depend on the step of the multi-step validation process used to validate the carrier phase ambiguities.

22. The method according to claim 21, wherein The first set of reference stations and the second set of reference stations are different.

23. The method according to claim 21, wherein The integrity risk is at most 10 -7 / Hour.

24. The method according to claim 21, wherein The predetermined event corresponds to at least one of: code carrier incoherence, satellite clock step error, satellite clock drift greater than 1 cm / s, pseudorange multipath, carrier phase multipath, carrier phase cycle slip, non-line-of-sight tracking, false acquisition, Galileo binary offset carrier second peak tracking, or spoofing.

25. The method according to claim 21, wherein The multi-step verification process includes a first verification step, wherein the carrier phase ambiguities are verified simultaneously.

26. The method according to claim 25, wherein The multi-step validation process includes a second validation step comprising validating integer carrier phase ambiguities of satellite observations associated with a first satellite constellation and integer carrier phase ambiguities of satellite observations associated with a second satellite constellation.

27. The method of claim 21 , further comprising estimating a velocity of the GNSS receiver using time-differential carrier phase measurements.

28. The method of claim 21 further comprising determining a position error estimate, wherein: The position error estimate is one or more upper limits on the integrity risk of the position error.

29. The method according to claim 21, wherein The integrity risk and / or the protection level is determined using a Monte Carlo simulation.

30. A method for determining a position of a Global Navigation Satellite System (GNSS) receiver, the method comprising: receiving a first set of reference station observations associated with the first set of reference stations; monitoring the first set of reference station observations for a predetermined event; In response to detecting the predetermined event, generating a set of reference station observations suppressing the predetermined event by suppressing the effects of the detected predetermined event in the first set of reference station observations; determining correction values ​​based on the set of reference station observations that suppress predetermined events; validating the corrections using a second set of reference station observations associated with a second set of reference stations; receiving a set of satellite observations from a constellation of global navigation satellites; Resolving carrier phase ambiguities for the set of satellite observations based in part on the verified corrections; as well as A position of the GNSS receiver is estimated based on the carrier phase ambiguity.

31. The method according to claim 30, wherein The estimated position includes up to 10 -4 / hour of integrity risk.

32. The method according to claim 30, wherein The predetermined event corresponds to at least one of the following events: an environmentally feared event, a network feared event, a satellite clock drift of up to 1 cm / s, a data anomaly problem, an erroneous broadcast ephemeris, a constellation failure, a reference station multipath, or a reference station cycle slip.

33. The method according to claim 30, wherein Verifying the correction value includes: Correcting the second set of reference station observations using the correction values; Determine the residuals of a set of corrected satellite observations; and When the residual is lower than a correction value verification threshold, the correction value is verified.

34. The method of claim 30, wherein: Determining the correction value includes generating a model by: estimating a delay associated with each reference station in the first set of reference stations using a filter; and Interpolation is performed between the delays associated with each reference station to generate the atmospheric model.

35. The method according to claim 34, wherein The filter includes a precise point positioning filter.

36. The method of claim 30, wherein: Resolving the carrier phase ambiguities includes validating integer carrier phase ambiguities of satellite observations associated with a first satellite constellation and integer carrier phase ambiguities of satellite observations associated with a second satellite constellation.

37. The method according to claim 36: in, validating integer carrier phase ambiguities of satellite observations associated with the first satellite constellation comprises directly applying the correction values; and Verifying integer carrier phase ambiguities of the satellite observations associated with the second satellite constellation includes applying correction values ​​having a residual regional offset.

38. The method of claim 37, wherein: The residual regional offset is estimated based on applying the correction value to the second set of reference station observations.

39. The method according to claim 30, wherein Monitoring the first set of reference station observations for the predetermined event includes monitoring the first set of reference station observations for outliers using at least one of a scaled residual technique, a variance threshold technique, or a hybrid technique.

Citation Information

Patent Citations

  • 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

  • Clock drift profile determination in navigation system receivers

    US20130099967A1

  • Fully-coupled positioning process and system thereof

    US6278945B1