Patent Description:
Global navigation satellite systems (GNSS) utilize satellites to enable a receiver to determine position, velocity, and time with very high accuracy and precision using signals transmitted from the satellites. Such GNSS include the Global Positioning System (GPS), GLONASS, and Galileo. The signals transmitted from the satellites include one or more carrier signals at separate known frequencies, such as a first carrier (L1), a second carrier (L2), and an additional third carrier (L5) in the GPS. A code, such as a pseudo-random (PN) noise code modulated with information, may modulate a carrier of the signal, and may be unique to each satellite. Because the satellites have known orbital positions with respect to time, the signals can be used to estimate the relative position between an antenna of a receiver and each satellite, based on the propagation time of one or more signals received from four or more of the satellites. In particular, the receiver can synchronize a local replica of the carrier and code transmitted in a signal to estimate the relative position.

The most accurate GNSS systems are referred to as precise point positioning real-time kinematic (PPP-RTK) or global RTK. The algorithms used in PPP-RTK systems are a combination of the algorithms used in local RTK systems and PPP systems. Both local RTK systems and PPP systems can achieve high accuracy by determining carrier phase related ambiguities. In local RTK systems, a roving receiver receives real-time corrections from a nearby local reference station, such as through a radio link. Because the local reference station has a known precise location, it can help determine the precise location of the roving receiver. In PPP systems, a roving receiver receives corrections that are globally applicable, which eliminates the need for local reference stations. The corrections can include information regarding the position and clock error of satellites, so that the roving receiver can receive information regarding the precise location of the satellites to help determine the precise location of the receiver. PPP systems have a global network of reference stations that are used to develop the global corrections, which are then transmitted to the roving receiver.

PPP-RTK systems involve integer ambiguity resolution at the global network of reference stations and at the roving receiver. PPP-RTK systems are often used in applications such as precision farming, military navigation, and marine offshore positioning, due to its improved navigation accuracy and simplified infrastructure (i.e., eliminating the need for local reference stations). However, current PPP-RTK systems do not typically have real-time integer ambiguity resolution that is simultaneously stable, robust, and accurate, and with fast initialization times.

Accordingly, there is an opportunity for a satellite navigation receiver that addresses these concerns. More particularly, there is an opportunity for a satellite navigation receiver and associated methods that can provide improved integer ambiguity resolution and more accurate positioning information.

In <CIT>, a method is described for processing a set of GNSS signal data derived from signals of GNSS satellites observed at reference station receivers, the data representing code observations and carrier observations on each of at least two carriers over multiple epochs, comprising: obtaining an orbit start vector comprising: a time sequence of predicted positions and predicted velocities for each satellite over a first interval, and the partial derivatives of the predicted positions and predicted velocities with respect to initial positions, initial velocities, force model parameters and Earth orientation parameters, obtaining ionospheric-free linear combinations of the code observations and the carrier observations for each satellite at multiple reference stations, and iteratively correcting the orbit start vector using at each epoch the ionospheric-free linear combinations and predicted Earth orientation parameters, as soon as the ionspheric-free linear combinations of the epoch are available, to obtain updated orbit start vector values comprising a time sequence of predicted positions and predicted velocities for each satellite over a subsequent interval of epochs and an estimate of Earth orientation parameters.

In "Flying™ RTK Solution as Effective Enhancement of Conventional Float RTK" of Kozlov et al, there is described an algorithm called 'Flying RTK' that purportedly provides statistically better performance compared with Float RTK.

In <NPL>, there is described a STEADYLINE functionality that purportedly helps mitigate the discontinuities that often occur when a GNSS receiver changes positioning modes. It is reported that the effect is especially evident when a receiver transitions from an RTK position mode solution to a lower accuracy "fall back" solution and that smooth transitions are particularly important for agricultural steering applications where sudden jumps may be problematic. It is reported that the STEADYLINE internally monitors the position offsets between all the positioning modes present in the receiver and, when the receiver experiences a position transition, the corresponding offset is applied to the output position to limit a potential real position jump, and, when the original accurate position type returns, the STEADYLINE algorithm will slowly transition back to the new accurate position at a default rate of <NUM>/s. It is reported that this creates a smoother pass-to-pass relative accuracy at the expense of a possible degradation of absolute accuracy. For example, a receiver can be configured to do both RTK and GLIDE. If this receiver has a fixed RTK position and experiences a loss of correction data causing the loss of the RTK solution it will immediately apply the offset between the two position modes and uses the GLIDE position stability to maintain the previous trajectory. Over time the GLIDE (or non-RTK) position will experience some drift. Once the RTK position is achieved again the receiver will start using the RTK positions for position stability and will slowly transition back to the RTK positions at a default rate of <NUM>/s.

In <CIT>, there is described a process for determining the position of a GNSS surveying receiver based on a plurality of RTK engines. A first RTK engine is implementing using a first set of parameters. A second RTK engine is implemented using a second set of parameter different than the first set. A plurality of GNSS signals are received from multiple satellites. At least one correction signal is received from at least one base receiver. A first position is determined from the first RTK engine based on the GNSS signals and the at least one correction signal. A second position is determined from the first RTK engine based on the GNSS signals and the at least one correction signal. A final position of the GNSS surveying receiver is determined based on the first position or the second position or a combination of both positions.

doi: <NUM>/navi. <NUM>), it is reported that the key to high precision parameter estimation in GNSS applications is to properly deal with the integer valued carrier-phase ambiguities. The class of integer estimators fixes all ambiguities to integer values. This can also decrease the precision of the estimates of the non-ambiguity parameters, if the fixing is incorrect. The best integer-equivariant (BIE) estimator is optimal in the sense of minimizing the mean-squared error of both the ambiguities and the real valued parameters, regardless of the precision of the float solution. However, the BIE estimator comprises a search in the integer space of ambiguities, whose complexity grows exponentially with the number of ambiguities. This search is not feasible for large-scale network solutions. To overcome this problem, a sequential BIE algorithm is proposed.

The invention is defined by the claims with features of preferred embodiments set out in the dependent claims.

The systems and methods described herein may result in a mobile receiver with improved integer ambiguity resolution and more accurate positioning information. The real-time integer ambiguity resolution described herein may be simultaneously stable, robust, and accurate, and have fast initialization times. A modified version of the best integer equivariant (BIE) process may enable the mobile receiver to perform the integer ambiguity resolution more optimally. The modified BIE process described below computes sums of weights and weighted sums of candidate narrow lane integer ambiguities during a search of the candidate narrow lane integer ambiguities. This may eliminate the need to store a large number of candidates or choose artificial thresholds to control the number of candidates to explore or store. The modified BIE process may also utilize an adaptive weight scaling during the search of the candidate narrow lane integer ambiguities. This may mitigate potential numerical issues attributable to a possible large dynamic range in weight magnitudes of the candidates. The modified BIE process may further utilize dynamic thresholds to control when to terminate the search of the candidates. In this way, only those candidates whose weight is large enough to have a meaningful numerical impact are included.

Other features described herein also enable the mobile receiver to perform the integer ambiguity resolution more optimally. The output of the modified BIE process is also time-domain smoothed to provide a solution which is smoother in ambiguity space, and therefore also provide a position solution that is smoother in time. As another example, transitions between an ambiguity-determined solution to a float solution, when necessary, may be smoothed in time. A weighting scheme dynamically blends the ambiguity-determined solution and the float solution to leverage the advantages of both solutions, such as faster pull-in, higher accuracy, and more stable and smooth performance. The weighting scheme may utilize particular figures-of-merit and other heuristics to perform the blending.

The description that follows describes, illustrates and exemplifies one or more particular embodiments of the invention in accordance with its principles. This description is not provided to limit the invention to the embodiments described herein, but rather to explain and teach the principles of the invention in such a way to enable one of ordinary skill in the art to understand these principles and, with that understanding, be able to apply them to practice not only the embodiments described herein, but also other embodiments that may come to mind in accordance with these principles. The scope of the invention is intended to cover all such embodiments that fall within the scope of the appended claims.

It should be noted that in the description and drawings, like or substantially similar elements may be labeled with the same reference numerals. However, sometimes these elements may be labeled with differing numbers, such as, for example, in cases where such labeling facilitates a more clear description. Additionally, the drawings set forth herein are not necessarily drawn to scale, and in some instances proportions may have been exaggerated to more clearly depict certain features. Such labeling and drawing practices do not necessarily implicate an underlying substantive purpose. As stated above, the specification is intended to be taken as a whole and interpreted in accordance with the principles of the invention as taught herein and understood to one of ordinary skill in the art.

<FIG> shows a satellite navigation receiver <NUM> capable of receiving signals transmitted by satellites <NUM> that include one or more carrier signals (e.g., a first carrier (L1), a second carrier (L2) and an additional third carrier (L5) of the Global Positioning System (GPS)) such that the receiver <NUM> can determine position, velocity, and time with very high accuracy and precision based on the received signals. The received signals may be transmitted from one or more satellites <NUM>, such as a GPS satellite, a Galileo-compatible satellite, or a Global Navigation Satellite System (GLONASS) satellite. The satellites <NUM> have approximately known orbital positions versus time that can be used to estimate the relative position between an antenna <NUM> of the receiver <NUM> and each satellite <NUM>, based on the propagation time of one or more received signals between four or more of the satellites <NUM> and the antenna <NUM> of the receiver <NUM>.

In any of the above referenced drawings of this document, any arrow or line that connects any blocks, components, modules, multiplexers, memory, data storage, accumulators, data processors, electronic components, oscillators, signal generators, or other electronic or software modules may comprise one or more of the following items: a physical path of electrical signals, a physical path of an electromagnetic signal, a logical path for data, one or more data buses, a circuit board trace, a transmission line; a link, call, communication, or data message between software modules, programs, data, or components; or transmission or reception of data messages, software instructions, modules, subroutines or components.

In embodiments, the receiver <NUM> described herein may comprise a computer-implemented system or method in which one or more data processors process, store, retrieve, and otherwise manipulate data via data buses and one or more data storage devices (e.g., accumulators or memory) as described in this document and the accompanying drawings. As used in this document, "configured to, adapted to, or arranged to" mean that the data processor or receiver <NUM> is programmed with suitable software instructions, software modules, executable code, data libraries, and/or requisite data to execute any referenced functions, mathematical operations, logical operations, calculations, determinations, processes, methods, algorithms, subroutines, or programs that are associated with one or more blocks set forth in <FIG> and/or any other drawing in this disclosure. Alternately, separately from, or cumulatively with the above definition, "configured to, adapted to, or arranged to" can mean that the receiver <NUM> comprises one or more components described herein as software modules, equivalent electronic hardware modules, or both to execute any referenced functions, mathematical operations, calculations, determinations, processes, methods, algorithms, or subroutines.

Precise point positioning (PPP) includes the use of precise satellite orbit and clock corrections provided wirelessly via correction data, rather than through normal satellite broadcast information (ephemeris and clock data) that is encoded on the received satellite signals, to determine a relative position or absolute position of a mobile receiver. PPP may use correction data that is applicable to a wide geographic area. Although the resulting positions can be accurate within a few centimeters using state-of-the-art algorithms, conventional precise point positioning can have a long convergence time of up to tens of minutes to stabilize and determine the float or integer ambiguity values necessary to achieve the purported (e.g., advertised) steady-state accuracy. Hence, such long convergence time is typically a limiting factor in the applicability of PPP.

As shown in <FIG>, the receiver <NUM> may include a receiver front-end module <NUM> coupled to an electronic data processing system <NUM>. Furthermore, a correction wireless device <NUM> (e.g., a receiver or transceiver) may provide correction data or differential correction data (e.g., PPP correction data) to enhance the accuracy of position estimates provided or estimated by the receiver <NUM>.

In an embodiment, the receiver front-end module <NUM> includes a radio frequency (RF) front end <NUM> coupled to an analog-to-digital converter <NUM>. The receiver front-end module <NUM> or the RF front end <NUM> may receive a set of carrier signals from one or more satellite transmitters on satellites. The analog-to-digital converter <NUM> may convert the set of carrier signals into digital signals, such as digital baseband signals or digital intermediate frequency signals for processing by the electronic data processing system <NUM>.

In an embodiment, the electronic data processing system <NUM> includes a baseband processing module <NUM> (e.g., baseband/intermediate frequency processing module) and a navigation positioning estimator <NUM>. For example, the baseband processing module <NUM> and the navigation positioning estimator <NUM> may be stored in a data storage device <NUM>.

In an embodiment, the baseband processing module <NUM> may include a measurement module <NUM> that includes a carrier phase measurement module <NUM> and/or a code phase measurement module <NUM>. The carrier phase measurement module <NUM> may facilitate the measurement of the carrier phase of one or more carrier signals received by the receiver <NUM>. Similarly, the code phase measurement module <NUM> may facilitate the measurement of the code phase of one or more code signals that modulate the carrier signals received by the receiver <NUM>.

The navigation positioning estimator <NUM> can use the carrier phase measurements and/or the code phase measurements to estimate the range between the receiver <NUM> and one or more satellites, or estimate the position (e.g., three dimensional coordinates) of the receiver <NUM> with respect to one or more satellites (e.g., four or more satellites). The ambiguities refer to the differences in the measurements, such as between-satellite single differences. The code phase measurements or carrier phase measurements can be converted from propagation times, between each satellite and the receiver <NUM> that is within reception range of the receiver, to distances by dividing the propagation time by the speed of light, for example.

In the electronic data processing system <NUM>, the data storage device <NUM> may be coupled to a data bus <NUM>. An electronic data processor <NUM> may communicate with the data storage device <NUM> and the correction wireless device <NUM> via the data bus <NUM>. As used herein, the data processor <NUM> may include one or more of the following: an electronic data processor, a microprocessor, a microcontroller, an application specific integrated circuit (ASIC), digital signal processor (DSP), a programmable logic device, an arithmetic logic unit, or another electronic data processing device. The data storage device <NUM> may include electronic memory, registers, shift registers, volatile electronic memory, a magnetic storage device, an optical storage device, or any other device for storing data.

In an embodiment, the navigation positioning estimator <NUM> includes a precise position estimator, such as a precise point position (PPP) estimator or a wide area differential global navigation satellite system (GNSS) position estimator. The navigation positioning estimator <NUM> may receive correction data from the correction wireless device <NUM>, which is a receiver or transceiver capable of communication with a wireless satellite communications device.

The mobile receiver described herein assumes that two frequencies are available and used for navigation. However, it is contemplated that the described concepts may be extended to cover scenarios with more than two frequencies, and to be usable with any GNSS systems.

The following description uses a notation system where individual terms may be related to a specific frequency, satellite, or receiver. The notation uses subscripts and superscripts to distinguish these elements and uses the location of the subscript or superscript to distinguish the elements, where frequency is designated by a numerical right subscript, receiver is designated by a left subscript, and satellite is designated by a left superscript. For example, the term <MAT> refers to a frequency I, a receiver R, and a satellite k. A right superscript retains the usual meaning of an exponent. However, not all subscripts and superscripts may be designated for each term. As such, when an element is not relevant to the context of a particular equation, the subscript and/or superscript may be dropped.

In addition, the following description utilizes parameters and notation, including fi as a frequency in hertz, λi as a wavelength of fi in meters, Pi as a measured pseudorange in meters, Φi as a measured carrier phase in cycles, N as an integer number of ambiguity cycles, <IMG> as a non-integer (float) number of ambiguity cycles, and c as the speed of light in meters/second. Differences between satellite pairs are represented using ∇ with left superscripts indicate the satellites involved. For example, the term i,j∇x is equal to ix - ix.

<FIG> shows a system diagram of operations within the receiver <NUM> for resolving integer ambiguities. The operations are shown as functional blocks within the baseband processing module <NUM> and the navigation positioning estimator <NUM>. The text between the functional blocks generally denotes the output generated by a block.

Baseband processing at block <NUM> may be performed by the baseband processing module <NUM>. The baseband processing may measure the pseudorange Pi and carrier phase Φi of one or more received satellite signals. The uncorrected pseudorange Pi and carrier phase Φi measurements, where the frequency i = <NUM>, <NUM>,. , may be given as: <MAT> <MAT> <MAT> where k = <NUM>, <NUM>,. is the index of the satellite; ρ is the geometric range in meters; B is the pseudorange bias in meters; b is the carrier phase bias in meters; I is the ionospheric error in meters-Hz<NUM>; εP,i is the pseudorange noise error in meters (including white noise, multipath, and remaining modeling errors); εΦ,i is the carrier measurement noise error in meters (including white noise, multipath, and remaining modeling errors); τ is the clock error in meters; Rτ is the receiver clock error and is specific to a given GNSS system; T is the tropospheric delay in meters; δPC is the phase center offset and variation in meters; δT is the error due to tidal forces and polar motion in meters; δR is the relativistic effect on satellite clock in meters; δS is the relativistic effect on signal propagation (the Shapiro delay) in meters; and δPW is the phase windup error in meters.

An alternative to having a receiver clock error Rτ for each GNSS system is to estimate one clock for a designated primary constellation (e.g., GPS) and relative receiver clock offsets between the primary constellation and the other GNSS constellations. The tropospheric delay T is typically divided into a dry component Tdry and a wet component Twet. The dry component Tdry can be accurately modeled using an a priori troposphere model, such as GPT2 (Global Pressure and Temperature). The remaining wet component Twet after removing an a priori wet model can be further estimated by one zenith bias with a mapping function bias and/or two additional horizontal gradient coefficients.

In blocks <NUM> and <NUM>, the pseudorange Pi and the carrier phase Φi from the baseband processing block <NUM> may be processed with models and measurement combinations to eliminate and/or reduce a subset of the error terms in equations (<NUM>), (<NUM>), and (<NUM>). For the ranging codes and the navigation message to travel from a satellite <NUM> to the receiver, they must be modulated onto a carrier frequency. In the case of GPS, two frequencies are utilized: one at <NUM> (<NUM> × <NUM>) called L1; and a second at <NUM> (<NUM> × <NUM>) called L2. Both L1 and L2 are in the satellite L-band.

The signals transmitted by GLONASS satellites <NUM> are derived from the fundamental frequencies of <NUM> for L1 and <NUM> for L2. Each GLONASS satellite <NUM> transmits on a different frequency using FDMA (frequency division multiple access) and according to a designated frequency channel number. The L1 center frequency for GLONASS is given by: <MAT> where kn is the frequency channel number of satellite k, and where kn E {-<NUM>, -<NUM>,. The L2 center frequency for GLONASS is given by: <MAT>.

In PPP systems, a float solution is based on processing ionosphere-free (IF) combinations of both the pseudorange Pi and the carrier phase Φi on the two frequencies, as given by: <MAT> <MAT> <MAT> <MAT> where RBIF is the receiver ionosphere-free code bias, which is the ionosphere-free combination of the L1 receiver code bias and the L2 receiver code bias. There is a receiver ionosphere-free code bias per receiver and constellation for all visible CDMA satellites.

For GLONASS satellites, an additional inter-channel code bias may need to be estimated, if the magnitude of the inter-channel code bias is significant. In this case, the ionosphere-free pseudorange measurement is given as: <MAT> where CGLN is the GLONASS code bias in meters.

In PPP systems, one goal is to have a coherent model for receiver clock and bias terms. The measurement compensation may include compensating the measurements using broadcast satellite ephemeris and clock, compensating the measurements for the deterministic terms (e.g., δPC, δT, δR, δS, and δPW), and compensating the measurements for the PPP corrections for the satellite orbit and clock.

In blocks <NUM> and <NUM>, it is assumed there is a common receiver clock term for both the pseudorange Pi and the carrier phase Φi. The receiver ionosphere-free code bias RBIF may be considered a nuisance parameter and be naturally absorbed into the receiver clock error Rτ. In addition, the PPP corrections for the satellite clocks inherently account for the satellite pseudorange bias terms kBIF (but not for the receiver-dependent GLONASS channel bias or the system bias between GPS and GLONASS). The receiver carrier phase bias RbIF may not be easily estimated separately in the float solution and is therefore absorbed into each of the resulting float ambiguity terms. The PPP corrections include additional terms for each satellite that enable compensation of each measurement for satellite carrier phase biases kbIF, which are not constant over time.

In block <NUM>, a recursive estimator (e.g., a Kalman filter) may compute a float solution and corresponding zero-difference ionospheric-free float ambiguity values. The float solution may consist of a state vector X and a covariance matrix P for terms such as position, clock bias, tropospheric delay, and floating ambiguity values. The position of the receiver may be updated at each interval (e.g., epoch) using the recursive estimator in block <NUM>, based on the compensated ionosphere-free measurements from block <NUM>. The float solution from block <NUM> does not itself involve ambiguity resolution.

The float solution may be determined using simplified ionosphere-free measurement equations. For GPS, such equations are given as: <MAT> <MAT> For GLONASS, such equations are given as: <MAT> <MAT>.

In equations (<NUM>) - (<NUM>), is the receiver position, <MAT> is the position of satellite k, and <MAT> is the receiver to satellite line-of-sight vector, where <MAT> and <MAT>. Also, τ is the receiver clock error (relative to GPS) in meters; TWet is the residual zenith tropospheric wet delay; E is the elevation angle from the receiver to the satellite; M(·) is the elevation wet mapping function that maps zenith tropospheric delay to the line-of-sight; <IMG> is the float ambiguity; λNL is the narrow lane wavelength and is defined as <MAT> <MAT>; ΔτGLN is a slowly varying term for the system bias between GPS and GLONASS; kCGLN is the GLONASS ionosphere-free code bias in meters; kεP̃IF is the ionosphere-free pseudorange measurement noise error in meters (including white noise, multipath, and remaining modeling errors); and kεΦ̃IF is the ionosphere-free carrier measurement noise error in meters (including white noise, multipath, and remaining modeling errors). The narrow lane wavelength λNL is utilized in equations (<NUM>) - (<NUM>) instead of an ionospheric-free wavelength because the ionospheric-free wavelength is relatively short, which causes difficulties in directly resolving integer ambiguities. Accordingly, the float ambiguity term satisfies: <MAT>.

The state vector of Kalman filter may consist of the collection of elements: receiver position <MAT>, receiver clock error τ, system bias ΔτGLN, ionosphere-free code bias kCGLN, tropospheric delay T, and float ambiguity <IMG>. The total active states may include three states for the receiver velocity <MAT> and be given by <NUM> + <NUM> + <NUM>+ NGLN + <NUM> + (NGPS + NGLN). There may be a total of <NUM> + NGPS + 2NGLN active states in the Kalman filter at any time, where NGPS and NGLN represent the number of GPS and GLONASS satellites in view of the receiver, respectively. The number of states may increase by two if tropospheric gradient terms are included.

The Kalman filter may have time update and measurement update operations, as is known in the art. The process noise added to the states may include a small amount of fully correlated noise (e.g., <NUM> cycles<NUM> per second) because the receiver phase bias RbIF has been absorbed into the zero-difference floating ambiguity states.

The state vector X and the covariance matrix P of the Kalman filter can be referred to as the float solution. The purpose of ambiguity determination as described herein is to result in corrections to the float solution (i.e., ΔX, ΔP). The corrected state vector may be given by X + ΔX with covariance P - ΔP. The corrected state vector may contain an improved estimate of the position, among other things, such as clock bias, tropospheric delay, and floating ambiguity values.

Ambiguity determination may be performed using wide lane and narrow lane measurement combinations, due to the relatively small ionosphere-free wavelength λIF, e.g., approximately <NUM> for GPS. The wide lane ambiguities may be determined in block <NUM> and the narrow lane ambiguities may be determined in block <NUM>. The wide lane wavelength may be given by: <MAT> and the narrow lane wavelength may be given by: <MAT> Accordingly, the wide lane wavelength may be approximately <NUM> for GPS and <NUM> for GLONASS, and the narrow lane wavelength may be approximately <NUM> for GPS and <NUM> for GLONASS.

The wide lane ambiguity NWL is defined as: <MAT> and may be determined first, and the narrow lane ambiguity NNL may be determined based on the wide lane ambiguity NWL. In particular, because: <MAT> the narrow lane ambiguity (i.e., any one of N<NUM> , N<NUM> , or NNL) can be found using one of the following relationships: <MAT> <MAT> <MAT>.

Accordingly, once the wide lane ambiguity NWL is determined, equations (<NUM>) - (<NUM>) may be utilized to find an expression to determine a narrow lane ambiguity. For example, using N<NUM> as the narrow lane ambiguity, N<NUM> can be found by rewriting equation (<NUM>) as: <MAT> Because the narrow lane wavelengths λNL are much longer than the ionosphere-free wavelengths λIF, ambiguity resolution is more easily performed. It should be noted that equations (<NUM>) and (<NUM>) could also be rewritten to find N<NUM> or NNL as the narrow lane ambiguity. Without loss of generality, in the description that follows, N<NUM> is used as the narrow lane ambiguity. For simplicity and clarity, the subscript "NL" is used for the narrow lane ambiguity.

Accordingly, at block <NUM>, the between-satellite single-difference wide lane ambiguities NWL may be resolved using the Melbourne-Wubbena combination. The Melbourne-Wubbena combination is a geometry-free, ionospheric-free linear combination of phase and code measurements from a single receiver, and is given as: <MAT> and can be written for GPS as: <MAT> and written for GLONASS as: <MAT> where kBWL and RBWL are the satellite and receiver wide lane biases, respectively, that are a collection of the original biases with various scaling factors. The term kIFBWL represents the inter-frequency bias term that models the effect of GLONASS code channel biases on the wide lane measurement combination. The inter-frequency bias may vary from receiver to receiver, and may also vary in different installations (e.g., due to varying antenna and cabling setups). The magnitude of the inter-frequency bias is typically less than <NUM> cycles per frequency number difference. It can be assumed that the GLONASS code bias-related terms can be accurately modeled by a term that is linear in the GLONASS frequency number. As such, the inter-frequency bias kIFBWL may be approximately equal to K * kn, where kn ∈ {-<NUM>, -<NUM>,. , <NUM>} and K is an unknown slowly varying coefficient for a given receiver.

In block <NUM>, undifferenced Melbourne-Wubbena measurements may be used to estimate one wide lane ambiguity state per visible satellite. Typically, the wide lane satellite biases kBWL are broadcast in real-time within correction data and can be used for measurement compensation. The receiver wide lane biases RBWL may be lumped into the float wide lane ambiguity state <IMG>. Accordingly, the float wide lane ambiguity state<IMG> is no longer an integer. However, the between-satellite single-differences <IMG> for GPS are integers and can be resolved in their single-difference form. For GLONASS, it is necessary to remove the inter-frequency bias contribution from the single-difference form in order to recover the integer.

Because the float ambiguity states contain the wide lane ambiguity and the receiver bias, some amount of fully correlated process noise is typically applied in the dynamic update of the Kalman filter. The single differential wide-lane ambiguity and the variance-covariance can be derived based on the undifferenced float ambiguity states and variance-covariance in block <NUM> after a reference satellite for each constellation is chosen. A standard ambiguity resolution process can be applied for single-difference ambiguities <IMG>. Techniques for solving this type of ambiguity resolution are known in the art. Ambiguity resolution validation may also be performed in block <NUM>. After ambiguity resolution validation is performed, a single-difference integer ambiguity constraint can be applied to wide lane float estimator.

Narrow lane ambiguities may be determined based on the wide lane ambiguities determined in block <NUM> and the ionospheric-free float ambiguity values from block <NUM>. Ultimately, single-difference float narrow lane ambiguities may be computed that are used to fix or determine precise ambiguity values. The updated values may then be used to correct the state vector and covariance matrix of the float solution (i.e., compute ΔX, ΔP) in order to update the position of the receiver.

In block <NUM>, initial estimates of the narrow lane ambiguities may be computed. The steps performed in block <NUM> are shown in the process <NUM> of <FIG>. At step <NUM>, subsets of visible satellites may be selected as candidates for processing the narrow lane ambiguities and as a reference satellite for between-satellite single-differencing calculations. The subsets of the visible satellites may be selected based on measurement residuals from processing the respective ionosphere-free code and carrier measurements in the float Kalman filter (i.e., equations (<NUM>) and (<NUM>)), float ambiguity covariance for the respective float ambiguity values, PPP correction quality for the given satellites, and wide lane fixing status for the satellites (i.e., fixed or not fixed). For example, when the measurement residuals are high, this indicates possible problems with the associated satellites, and can result in not selecting those satellites and their estimates and/or measurements.

At step <NUM>, it may be determined whether a condition exists for transitioning to the float solution from block <NUM> as the narrow lane ambiguity values. The conditions at step <NUM> may include whether the age of the PPP corrections is above a certain threshold (e.g., three minutes), whether there are not enough satellites available as candidates, and whether a suitable reference satellite is available. If such a condition exists at step <NUM>, then the process <NUM> continues to step <NUM> to transition to the float solution.

Transitioning to the float solution at step <NUM> may be performed to ensure that the transition is relatively smooth and not too rapid. Because the state vector after applying the correction due to ambiguity determination is given by X + ΔX, the difference between the float solution and the solution after ambiguity determination is given by the offset ΔX and using the float solution is equivalent to setting the offset ΔX to zero. Therefore, an offset ΔXt may be utilized to perform the transition, where the offset ΔXt has been stored at a previous interval. Starting at the interval when the transition is begun, the subsequent position change may be limited at each interval by a term related to the offset ΔXt. In particular, the position change may be limited to not vary by more than a magnitude ε that is a small predetermined value. The transition may be made over N steps, where N is the rounded-off value of ∥ΔXt∥/ε. Accordingly, at step <NUM>, for k = <NUM>. N, the float solution can be transitioned to by the end of the transition period, where <MAT>.

Returning to step <NUM> in <FIG>, if a transition condition does not exist, then the process <NUM> continues to step <NUM>. At step <NUM>, a reference satellite may be selected for each constellation. The selection of the reference satellite may be based on the float ambiguity covariance P and other heuristics, such as considering only the satellites for which wide lane ambiguity values have been determined and favoring the satellites which were used successfully for ambiguity determination in a previous interval. At step <NUM>, estimated float narrow lane ambiguities <IMG> may be determined that are between-satellite single-differences. For each constellation with m denoting the index of the selected reference satellite, the estimated float narrow lane ambiguities <IMG> may be given by: <MAT> The estimated float narrow lane ambiguities <IMG> may be considered as noisy measurements of the integers k,m∇NNL.

Returning to <FIG>, a modified BIE algorithm may be performed at block <NUM> to calculate the best estimate for narrow lane single-difference ambiguities <IMG>, based on the estimated float narrow lane ambiguities <IMG> and the corresponding covariance matrix <IMG>. Generally, these modified BIE single differences are non-integer. The modified BIE algorithm may be based on the LAMBDA technique to solve an integer least squares problem, which can optionally use a Z-transform and a reverse Z-transform. The model used by in block <NUM> may be written as: <MAT> where z is the measurement vector, N is the integer ambiguity vector, ξ is the vector of real-valued parameters, ηz is measurement noise, <MAT> with HN and Hξ being the corresponding design matrices and the noise assumed to be zero-mean normally distributed. The float solution after a least-squares adjustment may be given as: <MAT>.

The BIE solution may be given by: <MAT> <MAT> <MAT> <MAT> <MAT> <MAT> <MAT> <MAT>.

The steps performed in block <NUM> are shown in the process <NUM> of <FIG>. At step <NUM>, a tree search of the candidate narrow lane integer ambiguities k,m∇NNL may be initialized, such as by computing a Z-transform, for example. The nodes in the search tree are integer vectors. During this search, at step <NUM>, the next candidate narrow lane integer ambiguity k,m∇NNL may be visited in the tree and weighted sums ∑ z · w(z) of the candidate narrow lane integer ambiguities k,m∇NNL and a sum of weights ∑ w(z) may be updated. By updating both the sum of weights ∑ w(z) and the weighted sum ∑ z · w(z) during the search, there is no need to store a large number of candidates or utilize thresholds to control the number of candidates.

The weighting at step <NUM> may be adaptively scaled so that a large dynamic range in weight magnitudes of the candidates is avoided. For a given choice of <MAT>, scaled weights can be defined as <MAT>. Presuming that for any <MAT>, the ambiguity determined position solution <IMG> can be written as: <MAT> and therefore as: <MAT> The choice of <MAT> may be dynamically changed during the search to be the minimum <MAT> of all the candidates that have been visited during the search at that point. For each candidate visited during the search, partial sums of the numerator and denominator terms of equation (<NUM>) can therefore be accumulated.

In addition, because the sum of weights ∑ w(z) and the weighted sum ∑ z · w(z) are generated during the search, only the candidates with large enough weights to have a significant numerical impact may be included. For example, if z<NUM> represents the best solution (i.e., where <MAT> is a minimum) found so far in a search with w(z<NUM>) as its corresponding weight, and zc is an integer vector candidate at a current node of the search with a corresponding weight w(zc), then the candidate zc can be considered not significant when w(zc) ≪ w(z<NUM>). Candidates may be included during the search as long as: <MAT> where ε is a small threshold, such as <NUM>-<NUM>. This is equivalent to: <MAT>.

During the search, at step <NUM>, determined ambiguity values <IMG> can be formed based on the weighted sums of the candidate narrow lane integer ambiguities and the sum of weights. It can also be determined at step <NUM> whether there are candidates remaining with weights greater than a predetermined threshold. If there are still candidates remaining at step <NUM>, then the process <NUM> may return to step <NUM> to continue the search and repeat step <NUM> on the next candidate. If there are no candidates remaining at step <NUM>, then the process <NUM> may continue to step <NUM> to finalize the search, such as by applying a reverse Z-transform, for example. The determined ambiguity values <IMG> may be utilized to form a constraint that can be applied to the float solution in order to calculate an ambiguity determined position solution (ΔXBIE, ΔPBIE) at step <NUM>.

The steps performed in step <NUM> are shown in the process <NUM> of <FIG>. At step <NUM>, a float change vector ΔN may be calculated as the difference of the determined ambiguity values <IMG> (calculated at step <NUM>) and the float ambiguity values <IMG>. Accordingly, the float change vector ΔN may have elements consisting of <IMG> - <IMG>. At step <NUM>, a design matrix H may be formed. The design matrix H may have the same row dimensions as the float change vector ΔN and a column dimension equal to the state size of the float state vector X. Accordingly, each row of the design matrix H may have a +<NUM> coefficient at the state index of <IMG> and a -<NUM> coefficient at the state index of <IMG>, where m is the reference satellite for k.

At step <NUM>, the Kalman gain K may be computed based on the design matrix H and the covariance matrix P of the Kalman filter, as given by: <MAT> Correction terms may be formed at steps <NUM> and <NUM>. In particular, at step <NUM>, a state correction term ΔXBIE = KΔN, and at step <NUM> a covariance correction term ΔPBIE = KHP. The state correction term ΔXBIE and the covariance correction term ΔPBIE may form the ambiguity determined position solution. The state vector can be corrected by adding the state correction term ΔXBIE (i.e., X + ΔXBIE), and the covariance matrix can be corrected by subtracting the covariance correction term ΔPBIE (i.e., P - ΔPBIE).

Returning to <FIG>, the determined ambiguity values <IMG> may be time-smoothed at block <NUM> to generate smoothed ambiguity values <IMG>. The steps performed in block <NUM> are shown in the process <NUM> of <FIG>. At step <NUM>, a smoothed BIE estimator may be updated with the determined ambiguity values <IMG> to generate the smoothed ambiguity values <IMG>. The smoothed ambiguity values <IMG> are generally smoothly varying in time, changing gradually from the estimated float narrow lane ambiguities <IMG> to the determined ambiguity values <IMG>.

The steps performed at step <NUM> are shown in the process <NUM> of <FIG>. The following terms and notation are used in the discussed on the process <NUM>. In particular, <IMG> represents the float narrow lane value for a satellite k in cycles; <IMG> represents the ambiguity determined narrow lane value for a satellite k in cycles; <IMG> represents the smoothed ambiguity determined narrow lane value for a satellite k in cycles;<IMG> represents the narrow lane float bias value for a satellite k in cycles; W represents the window length for smoothing determined narrow lane values and is given as an integer number of intervals (e.g., epochs); and kC represents a smoothing count for satellite k, is given as an integer number of intervals (e.g., epochs), is initialized to <NUM>, and is incremented by one each interval. In addition, t may denote the current interval and t - <NUM> may denote the previous interval.

At step <NUM>, unavailable satellites may be removed from being used in the time-domain smoothing. An unavailable satellite may include satellites that the receiver can no longer receive signals from. At step <NUM>, it may be determined whether the reference satellite has changed from a previous interval. If the reference satellite has changed at step <NUM>, then the process <NUM> continues to step <NUM> to calculate time-domain smoothed ambiguity values for the new reference satellite and satellites other than the removed unavailable satellites. The old reference satellite may be denoted as m<NUM> and the new reference satellite may be denoted as m<NUM>. In addition, the difference in integer ambiguities between the new reference satellite m<NUM> and a given satellite k may be given by: <MAT>.

At step <NUM>, if the new reference satellite was not used in a previous interval, then the time-domain smoothed ambiguity values for the old reference satellite m<NUM>, the new reference satellite m<NUM>, and a given satellite k may be calculated by: <MAT> <MAT> <MAT> <MAT> <MAT> <MAT>.

If the new reference satellite m<NUM> was used in a previous interval, then the time-domain smoothed ambiguity values for the old reference satellite m<NUM>, the new reference satellite m<NUM>, and a given satellite k may be adjusted by: <MAT> <MAT> <MAT> <MAT> <MAT>.

Following step <NUM> or if the reference satellite has not changed at step <NUM>, then the process <NUM> continues to step <NUM>. At step <NUM>, it may be determined whether new satellites should be used in the time-domain smoothing. New satellites may include the satellites which were not used in utilized in a previous interval. If it is determined that no new satellites should be used at step <NUM>, then the process <NUM> continues to step <NUM>, as described below. However, if it is determined that new satellites should be used at step <NUM>, then the process <NUM> continues to step <NUM>. At step <NUM>, time-domain smoothed ambiguity values <IMG> may be calculated for the new satellites k having a reference satellite m (where k ≠ m), as given by: <MAT> <MAT>.

Following step <NUM>, the time-domain smoothed ambiguity values for the new satellites may be adjusted at step <NUM> by a bias between the estimated float narrow lane ambiguities <IMG> and time-domain smoothed ambiguity values <IMG> from a previous interval. By adjusting with the bias, the initial bias may be minimized between the estimated float narrow lane ambiguities <IMG> and time-domain smoothed ambiguity values <IMG> from the previous interval. This may be calculated by: <MAT> <MAT> The term <IMG>(t) in equation (<NUM>) represents the respective undifferenced float ambiguity entries in the state vector increment ΔXSBIE of the ambiguity determined position solution from the prior interval.

At step <NUM>, the time-domain smoothed ambiguity values for all of the satellites may be updated based on the determined ambiguity values <IMG>. Step <NUM> may be performed following step <NUM> or if no new satellites were determined to be needed at step <NUM>. In some embodiments, an exponential filter such as a recursive estimator may be utilized but in other embodiments, other techniques for smoothing may be utilized. The update of the time-domain smoothed ambiguity values <IMG> may be performed according to the following for each satellite k: <MAT> <MAT> <MAT>.

Following step <NUM>, an ambiguity determined position solution (ΔXSBIE, ΔPSBIE) may be calculated at step <NUM> based on the smoothed ambiguity values <IMG>. Step <NUM> may include the steps described above with relation to the process <NUM> of <FIG>, and may also correspond to block <NUM> of <FIG>. One difference is at step <NUM> where the Kalman gain K is computed. In the case of using the smoothed ambiguity values <IMG>, the Kalman gain K includes uncertainty in the constraint, and is given by: <MAT> where the covariance matrix R = diag(var(<IMG>)) is computed as a function of the weights used in the search performed at block <NUM> of <FIG>. At step <NUM>, float ambiguity biases may be stored that are derived from the ambiguity determined position solution (ΔXSBrE, ΔPSBIE) from step <NUM>. The float ambiguity biases are used as described above with relation to step <NUM> of the process <NUM> of <FIG>.

Returning to <FIG>, following block <NUM>, a final position solution may be computed using block <NUM>. Block <NUM> may include several steps, as shown in the process <NUM> of <FIG>. It should be noted that the weighting process described below may also be applied to the ambiguity determined position solution (ΔXBIE, ΔPBIE) from block <NUM>, in some embodiments. At step <NUM> (embodied in block <NUM>), the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) from block <NUM> may be blended with the float solution from block <NUM> to form a weighted smoothed ambiguity determined position solution (ΔXWSBIE, ΔPWSBIE). In particular, a time-weighted weighting factor w may be determined, where <NUM> ≤ w ≤ <NUM>. The weighted smoothed ambiguity determined position solution (ΔXWSBIE, ΔPWSBIE) may be computed from the ambiguity determined position solution (ΔXSBrE, ΔPSBIE) as follows: <MAT> <MAT>.

As can be seen from equations (<NUM>) and (<NUM>), when w = <NUM>, the float solution will be utilized and when w = <NUM>, the ambiguity determined position solution (ΔXSBrE, ΔPSBIE) will be utilized. A larger weighting factor w is used when the confidence in the correctness of the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) increases.

The weighting may be determined based on one or more factors. The factors may include a minimum variance solution, an acceptability factor a that indicates whether the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) is acceptable, a convergence indicator of the float solution, and/or a look-up table that is indexed by ranges of corresponding error variances and corresponding figures of merit of the float solution and the ambiguity determined position solution (ΔXSBIE, ΔPSBIE).

The minimum variance solution factor may minimize an error variance g of a combination of the float solution and the ambiguity determined position solution (ΔXSBIE, ΔPSBIE). The error variances may be three dimensional position variances that are computed as a trace of the corresponding three dimensional position covariance matrix. The error variance of the float solution may be denoted as <MAT> and the error variance of the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) may be denoted as <MAT>. The minimum variance weighting between the float solution and the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) may be given by: <MAT> where <MAT> The error variance g will be limited according to <NUM> ≤ g ≤ <NUM>, and will have a small value when the uncertainty of the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) is large, and conversely will have a large value when the uncertainty of the float solution is relatively large. In some embodiments, a time-filtered version g of the error variance g may be utilized due to noise.

The acceptability factor a may indicate whether the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) is acceptable and be limited according to <NUM> ≤ a ≤ <NUM>. The acceptability factor a may be smaller when the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) is unacceptable and may be larger when it is acceptable. The acceptability factor a may be dependent on a quality of the ambiguity determined position solution (ΔXSBIE, ΔPSBIE), such as based on the magnitude of the quadratic form of the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) and the ratio test. The ratio test can be defined as the ratio of the quadratic form of the second best solution to the best solution. When the ratio is large, it can indicate that the best solution is the correct solution.

The quadratic form of the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) may be very large if there are problems with determining ambiguity values. In this case, the acceptability factor a may be <NUM>. However, if the ratio test is large and the quadratic form is small, then the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) may be deemed more reliable and have an acceptability factor a of <NUM>. In between these cases, the acceptability factor a may by found by a smooth function which decreases from <NUM> to <NUM> as the ratio decreases and the quadratic form increases.

The convergence indicator factor may indicate whether the float solution has reached a steady state. In this case, the convergence indicator may be greater when the float solution has reached a steady state or is close to a steady state, and conversely may be less in other situations.

In embodiments, the weighting factor w may be chosen based on a combination of these factors. For example, if the acceptability factor a < <NUM> or the float solution has converged and the ambiguity determined position solution (ΔXSBIE, ΔPSBIE) is determined to be not trustworthy, then the weighting factor w may be equal to ag. In other cases, the weighting factor w may be equal to the acceptability factor a.

Returning to the process <NUM> of <FIG>, it may be determined at step <NUM> if the weighted smoothed ambiguity determined position solution (ΔXWSBIE, ΔPWSBIE) has a poor quality. If the weighted smoothed ambiguity determined position solution (ΔXWSBIE, ΔPWSBIE) has a poor quality, then the process <NUM> may continue to step <NUM> to transition to the float solution. However, if the weighted smoothed ambiguity determined position solution (ΔXWSBIE, ΔPWSBIE) does not have a poor quality then the process <NUM> may continue to step <NUM> (also embodied by block <NUM>).

At step <NUM>, an estimated position jump in the weighted smoothed ambiguity determined position solution (ΔXWSBIE, ΔPWSBIE) may be calculated. The estimated position jump may be calculated by comparing the change in position since the last interval to the change according to an estimate using the integrated carrier phase that infers positions between the intervals using carrier phase time differences, as is known in the art. At step <NUM>, it may be determined whether the estimated position jump from step <NUM> is greater than a predetermined threshold. If the estimated position jump is greater than the threshold, then the process <NUM> may continue to step <NUM> to transition to the float solution. However, if the estimated position jump is not greater than the threshold, then the process <NUM> may continue to step <NUM>.

At step <NUM>, the navigation output showing the position of the receiver may be updated at block <NUM> by adjusting the float solution from block <NUM> with the weighted smoothed ambiguity determined position solution (ΔXWSBIE, ΔPWSBIE). The state vector can be corrected by adding the state correction term ΔXWSBIE (i.e., X + ΔXWSBIE), and the covariance matrix can be corrected by subtracting the covariance correction term ΔPWSBIE (i.e., P - ΔPWSBIE).

Transitioning to the float solution at step <NUM> may be performed to ensure that the transition is relatively smooth and not too rapid. At each interval, an offset ΔXWSBIE is typically stored. The offset can be denoted as ΔXt at a subsequent interval when the decision to transition to the float solution is made. Accordingly, at a time t, the transition may be started and <MAT>. Starting at the interval when the transition is begun, the position change may be limited at each interval due to the offset ΔXt. In particular, the position change may be limited to not vary by more than a magnitude ε that is a small predetermined value. The transition may be made over N steps, where N is the rounded-off value of ∥ΔXt∥/ε. Accordingly, at step <NUM>, for k = <NUM>. N, the float solution can be transitioned to by the end of the transition period, where <MAT>.

Any process descriptions or blocks in figures should be understood as representing modules, segments, or portions of code which include one or more executable instructions for implementing specific logical functions or steps in the process, and alternate implementations are included within the scope of the appended claims in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those having ordinary skill in the art.

Claim 1:
A precise point positioning real-time kinematic, PPP-RTK, computer-implemented method for determining a position of a satellite navigation receiver (<NUM>), the method comprising:
determining (<NUM>) estimated float narrow lane ambiguities of measured carrier phases associated with received signals from one or more satellites (<NUM>) based on estimated integer wide lane ambiguities and ionospheric-free float ambiguities, wherein the received signals from one or more satellites include signals received at predefined L <NUM> and L2 frequencies, and the estimated float narrow lane ambiguities correspond to a narrow lane frequency that is a sum of predefined L1 and L2 frequencies;
at a regular interval, determining a weighted sum of candidate narrow lane integer ambiguities for the measured carrier phases, based on the estimated float narrow lane ambiguities, using a modified best integer equivariant, BIE, process (<NUM>), the modified BIE process including:
i) during a search (<NUM> to <NUM>) of the candidate narrow lane integer ambiguities, generating (<NUM>) weighted sums of the candidate narrow lane integer ambiguities and a sum of weights, based on minimizing a mean-squared error, MSE, of the candidate narrow lane integer ambiguities and real valued parameters of a float solution comprising a state vector and a covariance matrix;
ii) calculating determined narrow lane ambiguity values based on the weighted sums of the candidate narrow lane integer ambiguities and the sum of weights;
iii) forming a first constraint based on the determined narrow lane ambiguity values, wherein the first constraint is for applying to the float solution to calculate (<NUM>) a first ambiguity determined position solution comprising a first ambiguity determined position estimate;
iv) time-domain smoothing the determined narrow lane ambiguity values;
v) forming a second constraint based on the time-domain smoothed determined narrow lane ambiguity values, the second constraint for applying to the float solution to calculate a second ambiguity determined position solution comprising a smoothed ambiguity determined position estimate; and
vi) weighting the second ambiguity determined position solution to generate a second weighted ambiguity determined position solution by blending the float solution and the second ambiguity determined position solution.