GNSS positioning system and method using multiple processing threads

10330795 ยท 2019-06-25

Assignee

Inventors

Cpc classification

International classification

Abstract

A plurality of GNSS satellite signals feeds multiple signal processing engines, each operating in certain processing mode including carrier smoothed pseudorange positioning, precise point positioning (PPP), pseudorange differential (DGNSS), carrier phase differential (RTK). Each processing engine (or processing thread of the same engine) runs the same unified numerical algorithm and uses the same or different sets of parameters. All engines can use the same set of signals, or the set of signals can be split into non-intersecting subsets, or the set of signals can be split into the overlapping subsets. Each engine produces estimates of certain parameters, namely carrier phase ambiguities and ionospheric delays for each satellite. These estimates are then combined into a resulting estimate which in turn is used for calculation of the final position reported by the receiver.

Claims

1. A satellite navigation positioning method, comprising: receiving n navigation signals from K navigation satellites, wherein the n navigation signals are on at least two different carrier frequencies, and wherein n is at least 8 and K is at least 4; on a processor of a navigation receiver, executing m processing threads, each processing thread running one instance of a processing engine, wherein each processing engine processes at least 8 out of the n navigation signals from at least 4 satellites; for each processing engine, generating a phase ambiguity vector and an ionospheric delay vector; selecting one phase ambiguity vector and one ionospheric delay vector out of all the vectors generated by the processing engines; and calculating a position based on the selected phase ambiguity vector and the selected ionospheric delay vector.

2. The method of claim 1, wherein the at least two different carrier frequencies are selected from GPS L1, GPS L2, GPS L5, Galileo L1, Galileo L2, Galileo E5a, Galileo E5b, QZSS L1, QZSS L2, QZSS L5, QZSS E6, GLONASS L1, GLONASS L2, GLONASS L3, BEIDOU B1, BEIDOU B2 and BEIDOU B3.

3. The method of claim 1, wherein each processing engine executes in a processing mode one of standalone carrier phase pseudorange smoothing, PPP, DGNSS and RTK, and wherein at least two out of standalone carrier phase pseudorange smoothing, PPP, DGNSS, and RTK are executed on the processing engines.

4. The method of claim 3, wherein each processing engine is running the same unified numerical scheme independently of its processing mode.

5. The method of claim 1, wherein the vectors are selected based on voting on a best vector.

6. The method of claim 1, wherein the vectors are selected based on a weighted average of multiple vectors.

7. The method of claim 1, wherein m<n.

8. The method of claim 1, wherein m>n.

9. The method of claim 1, wherein m=n.

10. The method of claim 1, wherein at least some of the processing engines use different assumptions and hypotheses about any of: a) state of an ionosphere, b) level of local multipath conditions, and c) level of the measurement noise.

11. The method of claim 10, wherein the vectors are selected based on voting on a best vector based on which assumption is likely true.

12. The method of claim 10, wherein the vectors are selected based on a weighting procedure that aggregates all or some of the assumptions.

13. A system for determining coordinates based on satellite navigation signals, the system comprising: an antenna configured to receive n navigation signals from K navigation satellites, wherein the n navigation signals are on at least two different carrier frequencies, and wherein n is at least 8 and K is at least 4; a receiver including a processor, the processor configured to execute m processing threads, each processing thread running one instance of a processing engine, wherein each processing engine is configured to process at least 8 out of the n navigation signals from at least 4 satellites; for each processing engine, the processor configured to generate a phase ambiguity vector and an ionospheric delay vector; the processor configured to select one phase ambiguity vector and one ionospheric delay vector out of all the vectors generated by the processing engines; and the processor configured to calculate a position based on the selected phase ambiguity vector and the selected ionospheric delay vector and providing an output corresponding to the position.

Description

BRIEF DESCRIPTION OF THE ATTACHED FIGURES

(1) The accompanying drawings, which are included to provide a further understanding of the invention and are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and together with the description serve to explain the principles of the invention.

(2) In the drawings:

(3) FIG. 1 illustrates multiple instances of the unified numerical scheme (the engine template).

(4) FIG. 2 illustrates an exemplary navigation receiver on which the invention may be implemented.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

(5) Reference will now be made in detail to the embodiments of the present invention, examples of which are illustrated in the accompanying drawings.

(6) Thus, equations (8) and (10) above are the basis for construction of the unified numerical scheme covering the following processing modes:

(7) Standalone with carrier phase smoothing of pseudoranges,

(8) PPP,

(9) DGNSS,

(10) RTK.

(11) As explained, different processing modes use the same set of equations presented in the generalized form. Therefore, the general purpose unified numerical scheme of the processing engine can be used. Each processing mode is thus performed by the certain embodiment of the same processing engine. The same source code, such as a C++ source code template in one embodiment, can be used to generate multiple processing threads working in parallel. We call them threads, since they can be implemented as parallel processing threads being governed by an appropriate operating system, such as LINUX, RTEMS, or eCos.

(12) Each processing mode can be presented by one or more multiple threads, running the same algorithm with different parameters sets reflecting different assumptions about errors to be modeled or different statistic assumptions about stochastic noise component of the error. Implementation of this idea as it applies to only RTK is the subject of the patent [3]. In the present discussion, we explore a more general idea using multiple threads for support of all possible processing modes (and not only RTK) and describe more general voting procedure allowing to combine phase ambiguities and ionosphere delay estimates produced by different threads, not just final RTK positions produced by different threads. This allows for deeper and tighter integration of results produced by different parallel threads. It also allows for seamless transition between processing modes, i.e., standalone, PPP, DGNSS, RTK float, and RTK fixed.

(13) Following the idea of using the generalize processing scheme, all unknowns are grouped into following groups:

(14) Arbitrary varying variables dx(t) and (t),

(15) Slow varying variables subjected to certain dynamic model i(t),

(16) Constant (time invariant) variables n and .

(17) To estimate all three groups of variables in real time, the recursive estimator must be applied. It can be implemented as a sort of Kalman filter, particle filter, another recursive estimator which is convenient for the real time implementation. In one exemplary embodiment, the general purpose processing thread can run the recursive estimator described in [1, Chapt. 3.5].

(18) To specify dynamic model that governs variation of i(t) let us suppose that the vector i(t) is restricted by equations

(19) i p ( t ) = i i p ( t - 1 ) + .Math. i ( t ) ( 11 ) where i = e - t i ( 12 )

(20) with t being the across-epoch time difference, and .sub.i is the correlation time reflecting the rate of variation of the ionospheric delay in time. A typical value for .sub.i is 600 seconds, provided no ionospheric scintillations happened. Otherwise, if detection criteria (not described here) signal a presence of fast variation of ionosphere, the instant value of .sub.i can be temporary scaled down until the fast variations end. The white noise .sub.i(t) has a variance .sub.i.sup.2, which provides the variance of the across-receiver ionosphere satisfying the condition
|i.sup.p(t)|s10.sup.6baseline(13)

(21) with a certain scale factor s, which takes values 1 to 5, depending on the current solar activity. It follows from (11) that i.sup.p(t).sup.2=.sub.ii.sup.p(t1)+.sub.i(t).sup.2. Then, assuming that the stochastic process i.sup.p(t) is stationary and i.sup.p(t) does not depend on .sub.i(t), we take a mean value of both sides of the last equality. We obtain
.sub.i.sup.2=(1.sub.i.sup.2)(s10.sup.6baseline).sup.2(14)

(22) Let us define the measurement and dynamic models. The measurement model combines equations (8) and (10).

(23) The group of constant variables n and form the vector

(24) y = ( n ) ( 15 )

(25) The group of arbitrary varying variables dx(t) and (t) form the vector

(26) x _ ( t ) = ( d x ( t ) ( t ) ) ( 16 )

(27) Then the algorithm described in [1, Table 3.5.1] can be applied.

(28) Definition of Multiple Processing Threads

(29) The same general purpose numerical scheme or the engine template is used to generate multiple instances as shown in FIG. 1. In this exemplary implementation, several Standalone, several PPP and several RTK engines are implemented.

(30) Each engine (indexed by the variable j ranging from 1 to m) calculates its own vector of carrier phase ambiguities n.sub.j and its own vector of ionospheric delays estimate i.sub.j(t). Each estimate is accompanied by its covariance matrix C.sub.n.sub.j and C.sub.i.sub.j respectively. The resulting ambiguity and ionospheric delay vectors can be calculated in the following two ways:

(31) A. Having covariance matrices C.sub.n.sub.j and C.sub.i.sub.j we select the thread corresponding to the minimum quantity tr(C.sub.n.sub.j)+tr(C.sub.i.sub.j) where tr(.Math.) denotes the trace of the matrix.

(32) B. Weighted estimates are calculated according to the formulas

(33) n = ( .Math. j = 1 m C n j - 1 ) - 1 .Math. j = 1 m C n j - 1 n j ( 17 ) i ( t ) = ( .Math. j = 1 m C i j - 1 ) - 1 .Math. j = 1 m C i j - 1 i j ( t ) ( 18 )

(34) Estimates of the vectors n and i(t) produced in the way A or B according to (17) and (18) are then substituted into the equation (10), which is finally solved for time-varying variables

(35) x _ ( t ) = ( d x ( t ) ( t ) )
using minimization of least squares, according to the expression
x(t)=+(b.sub.(t)n+.sup.1i(t))(19)
=.sup.1[A|e](20)

(36) where the symbol .sup.+ denotes the matrix pseudoinverse.

(37) Using different sets of signals in the processing threads and using different sets of the processing parameters allows introduction of randomization into the set of a priori hypotheses placed into the measurement models, which in turn allows for faster ambiguity resolution and better averaging of the measurement errors.

(38) Computational Complexity

(39) The computational complexity of the processing thread can be roughly estimated as
T.sub.1=Cn.sup.3(21)

(40) where C is a constant specific to the certain processing algorithm and n is number of signals. This estimate follows from the fact that most complex part of the numerical scheme is the matrix inverse of Cholesky factorization, or another factorization.

(41) If all threads use the same set of signals, then the overall computational cost is estimated as
T.sub.m=mT.sub.1(22)

(42) Assume now that the set of n signals is divide into m threads. The resulting complexity can then be estimated as

(43) T m n / m = m C ( n m ) 3 = C n 3 m 2 = T 1 m 2 ( 23 )

(44) which means that the computational complexity can be even reduced if the set of signals is appropriately distributed among processing threads.

(45) In a general case, the set of signals is not necessarily split into m not intersecting subsets. Instead, subsets can overlap. Thus, resulting computational cost T can be estimated as

(46) 0 T 1 m 2 T _ m T 1 ( 24 )

(47) As a further option, each engine thread can use different settings of parameters, even if they run the same processing mode. Also, each engine thread can use different sets of signals. The processing threads can use different a priori assumptions and hypotheses about:

(48) a) state of the ionosphere

(49) b) level of the local multipath conditions

(50) c) level of the measurement noise

(51) The voting procedure judges which assumption is likely true. Alternatively, a weighting procedure aggregates all or some of the assumptions.

(52) FIG. 2 illustrates an exemplary navigation receiver on which the invention may be implemented. As will be appreciated by one of ordinary skill in the art, the various blocks shown in FIGS. 1-2 can be implemented as discrete components, as an ASIC (or multiple ASICs) and/or as software running on a processor.

(53) Having thus described the different embodiments of a system and method, it should be apparent to those skilled in the art that certain advantages of the described method and apparatus have been achieved. It should also be appreciated that various modifications, adaptations, and alternative embodiments thereof may be made within the scope and spirit of the present invention. The invention is further defined by the following claims.

REFERENCES (INCORPORATED HEREIN BY REFERENCE IN THEIR ENTIRETY)

(54) 1. A. Leick, L. Rapoport, D. Tatarnikov, GPS Satellite Surveying, Wiley & Sons, 2015. 2. R. Hatch, The synergism of GPS code and carrier measurements, Proceedings of International Geodetic Symposium on Satellite Doppler Positioning, 3rd, Las Cruces, N. Mex., Feb. 8-12, 1982, Proceedings. Volume 2 (A84-18251 06-42), Las Cruces, N. Mex., New Mexico State University, 1983, pp. 1213-1231. 3. J. Ashjaee, L. Rapoport, GNSS surveying receiver with multiple RTK engines, U.S. Pat. No. 8,872,700, issued Oct. 28, 2014.