The present application claims priority to Chinese Patent Application No. 201310199808.2, filed on May 24, 2013, with the State Intellectual Property Office in China.
During a global positioning system (GPS) positioning process, a local GPS system can measure an approximate distance from a satellite to the local GPS system. The approximate distance can be referred to as “pseudorange.” In a wireless communication channel, a wave of a signal may travel from the satellite to the local GPS system through multiple different paths due to reflection/refraction effect. These paths can be referred to as “multipath.” When the local GPS system successfully captures and tracks an intermediate frequency (IF) signal from the satellite, e.g., when a local coarse/acquisition (C/A) code is aligned with the data of the IF signal, the local GPS system can calculate a pseudorange from the satellite to the local GPS system based on the data of the IF signal. However, the calculated pseudorange includes errors caused by multipath effect.
In one embodiment, a method for estimating a pseudorange error includes generating a plurality of coarse/acquisition (C/A) codes corresponding to a satellite according to intermediate frequency (IF) signal data obtained from the satellite. The method further includes determining autocorrelation values for each of the plurality of C/A codes with the IF signal data; obtaining a first time-shifted value of a first prompt C/A code and a second time-shifted value of a second prompt C/A code corresponding to a maximum of the autocorrelation values; and determining a pseudorange error based on the first time-shifted value, the second time-shifted value, and the autocorrelation values. The multiple C/A codes may include the first prompt C/A code, a set of early C/A codes advanced relative to the first prompt C/A code, and a set of late C/A codes delayed relative to the first prompt C/A code.
In another embodiment, a pseudorange error estimating system includes an autocorrelation value generating circuit and an error estimating circuit. The autocorrelation value generating circuit generates a plurality of C/A codes corresponding to a satellite according to IF signal data obtained from the satellite, and determines autocorrelation values for each of the plurality of C/A codes with the IF signal data. The error estimating circuit obtains a first time-shifted value of a first prompt C/A code and a second time-shifted value of a second prompt C/A code corresponding to maximum of the autocorrelation values, and estimates a pseudorange error based on the first time-shifted value, the second time-shifted value, and the autocorrelation values. The C/A codes may include the first prompt C/A code, a set of early C/A codes advanced relative to the first prompt C/A code, and a set of late C/A codes delayed relative to the first prompt C/A code.
In yet another embodiment, a pseudorange measuring device includes an error estimating system and a pseudorange calculating system. The error estimating system generates a plurality of C/A codes corresponding to a satellite according to IF signal data obtained from the satellite. The error estimating system also determines autocorrelation values for each of the plurality of C/A codes with the IF signal data, obtains a second prompt C/A code corresponding to a maximum of the autocorrelation values, and determines a pseudorange error according to a first prompt C/A code, the second prompt C/A code, and the autocorrelation values. The pseudorange calculating system calculates a rough value of a pseudorange, and eliminates the pseudorange error from the rough value of the pseudorange to obtain a calibrated value of the pseudorange. The C/A codes may include the first prompt C/A code, a set of early C/A codes advanced relative to the first prompt C/A code, and a set of late C/A codes delayed relative to the first prompt C/A code,
Additional benefits and novel features will be set forth in part in the description which follows, and in part will become apparent to those skilled in the art upon examination of the following and the accompanying drawings or may be learned by production or operation of the disclosed embodiments. The benefits of the present embodiments may be realized and attained by practice or use of various aspects of the methodologies, instrumentalities and combinations set forth in the detailed description set forth below.
Features and benefits of embodiments of the claimed subject matter will become apparent as the following detailed description proceeds, and upon reference to the drawings, wherein like numerals depict like parts. These exemplary embodiments are described in detail with reference to the drawings. These embodiments are non-limiting exemplary embodiments, in which like reference numerals represent similar structures throughout the several views of the drawings.
Reference will now be made in detail to the embodiments of the present teaching. While the present teaching will be described in conjunction with these embodiments, it will be understood that they are not intended to limit the present teaching to these embodiments. On the contrary, the present teaching is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the present teaching as defined by the appended claims.
Furthermore, in the following detailed description of the present teaching, numerous specific details are set forth. However, it will be recognized by one of ordinary skill in the art that the present teaching may be practiced without these specific details. In other instances, well known methods, procedures, components, and circuit have not been described in detail for not obscuring aspects of the present teaching.
Some of the following portions of the detailed descriptions are presented in terms of procedures, logic blocks, processing and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are commonly used by those skilled in the data processing arts to convey the substance of their work to others skilled in the art. In the present application, a procedure, logic block, process, or the like, is conceived to be a self-consistent sequence of operations or instructions leading to a result. The operations are those requiring manipulations of components and/or data of quantities and/or qualities. Usually, although not necessarily, data take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system.
It should be noted that all of these and similar terms are merely convenient labels applied to the components and/or data associated therewith. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present application, discussions utilizing the terms such as “generating,” “performing,” “obtaining,” “calculating,” “determining,” “selecting,” “estimating,” “adding” or the like, refer to the actions and processes of a machine, e.g., a computer system, or a similar electronic computing device, that manipulates and transforms data represented as physical (electronic) and/or non-physical quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
For example, machine-readable media may comprise storage media and communication media. Storage media includes, but is not limited to, volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as machine-readable instructions, data structures, program modules or other data. Storage media includes, but is not limited to, random access memory (RAM), read only memory (ROM), electrically erasable programmable ROM (EEPROM), flash memory or other memory technology, compact disk ROM (CD-ROM), digital versatile disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information.
Communication media can embody machine-readable instructions, data structures, program modules or other data and include any information delivery media. For example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared and other wireless media. Combinations of any of the above should also be included within the scope of machine-readable media.
In the example of
In an embodiment, the autocorrelation value generating circuit 112, e.g., a loop tracking module, receives an IF signal 102, extracts a piece of data, e.g., of a navigation bit period, from the IF signal 102, and stores the piece of IF signal data. The autocorrelation value generating circuit 112 performs autocorrelation function calculation based on the stored IF signal data and a set of shifted C/A codes generated by the DLL circuit 236. By way of example, the autocorrelation value generating circuit 112 multiplies the stored IF signal data with a local carrier signal 242 (including two orthogonal signals: a sine signal and a cosine signal) to generate a multiplication result, and performs the inner product (or dot product) of the multiplication result with each of the shifted C/A codes from the DLL circuit 236 to generate an inner product result that includes an in-phase component I and a quadrature component Q. For instance, the coherent integrate-and-dump circuit 220 generates an inner product result that includes an in-phase component I and a quadrature component Q, and provides the in-phase component I and the quadrature component Q to the modulo circuit 226. The modulo circuit 226 performs modulo operation on the in-phase component I and the quadrature component Q to generate an autocorrelation value 114, e.g., given by (√{square root over (I2+Q2)}).
As mentioned above, the DLL circuit 236 can generate a set of shifted C/A codes used for autocorrelation function calculation with the IF signal data. The shifted C/A codes include a first prompt C/A code P, multiple early C/A codes E1, E2, . . . , EN1 advanced relative to the first prompt C/A code P, and multiple late C/A codes L1, L2, . . . , LN2 delayed relative to the first prompt C/A code P, wherein N1 and N2 are positive integers. In an embodiment, the autocorrelation value generating circuit 112, e.g., a loop tracking module, determines a C/A code that is aligned with the IF signal data by tracking the data in the IF signal 102, and this C/A code can be referred to as a “first prompt C/A code P.” In an embodiment, a time span between adjacent C/A codes of the early C/A codes E1, E2, . . . , EN1, the first prompt C/A code P, and the late C/A codes L1, L2, . . . , LN2 includes one or more local clock periods. The local clock period can be a sampling clock period at which the IF signal data is sampled. The autocorrelation value generating circuit 112 performs autocorrelation function calculation on the early C/A codes E1, E2, . . . , EN1, the first prompt C/A code P, and the late C/A codes L1, L2, . . . , LN2 respectively with the IF signal data to calculate/obtain/generate a set of autocorrelation values 114.
In the example of
By reference to
Thus, the error estimating circuit 116 can receive the autocorrelation values 114, and perform curve fitting to create a relationship curve representing a relationship between the autocorrelation values 114 and time-shifted values of the C/A codes. The error estimating circuit 116 can further calculate a time difference 106 representing a pseudorange error according to the relationship curve. The structure of the autocorrelation value generating circuit 112, e.g., a loop tracking module, does not need to be changed in order for the calculation of the time difference 106, which simplifies the structure of the error estimating system 110 and reduces the cost thereof. The curve fitting process is described by reference to
In an embodiment, the DLL circuit 236 generates early C/A codes E1, E2, . . . , E16, advanced relative to the first prompt C/A code P on the chip time axis, and generates late C/A codes L1, L2, . . . , L16, delayed relative to the first prompt C/A code P on the chip time axis. The autocorrelation value generating circuit 112 performs autocorrelation function calculation on the IF signal data of the IF signal 102 with the C/A codes P, E1, E2, . . . , E16, L1, L2, . . . , L16, respectively, to generate corresponding autocorrelation values. These autocorrelation values can be represented by the dots labeled “P,” “E1,” “E2,” . . . , “E16,” “L1,” “L2,” . . . , “L16” in the plot 404, respectively.
The error estimating circuit 116 can determine a first time-shifted value of the first prompt C/A code P. In the example of plot 404, the first time-shifted value of the first prompt C/A code P is corresponding to or represented by the time value of (− 2/16)C on the chip time axis. The error estimating circuit 116 can also find the maximum autocorrelation value among the generated autocorrelation values, and obtain a second time-shifted value of a shifted C/A code corresponding to the maximum autocorrelation value. The shifted C/A code corresponding to the maximum autocorrelation value can be referred to as a “second prompt C/A code.” In the example of plot 404, the second prompt C/A code is the late C/A code L2, and its second time-shifted value is corresponding to or represented by the time value of 0 C on the chip time axis. According to the first time-shifted value, the second time-shifted value, and the autocorrelation values, the error estimating circuit 116 can calculate a pseudorange error of a satellite corresponding to the C/A codes P, E1, E2, . . . , E16, L1, L2, . . . , L16, e.g., a pseudorange error in a roughly calculated pseudorange from the satellite to the local GPS system.
More specifically, in an embodiment, C/A codes advanced relative to the second prompt C/A code (e.g., L2) can be referred to as “early fitting C/A codes,” and C/A codes delayed relative to the second prompt C/A code (e.g., L2) can be referred to as “late fitting C/A codes.” The error estimating circuit 116 can select one or more early fitting C/A codes (e.g., L1, P, E1, E2, etc.) advanced relative to the second prompt C/A (e.g., L2) and selects one or more late fitting C/A codes (e.g., L3, L4, L5, L6, etc.) delayed relative to the second prompt C/A code (e.g., L2). According to the above mentioned second time-shifted value (e.g., represented by 0 C), the maximum autocorrelation value corresponding to the second prompt C/A code (e.g., L2), time-shifted values (e.g., represented by (− 1/16)C, (− 2/16)C, (− 3/16)C, (− 4/16)C, etc.) of the early fitting C/A codes (e.g., L1, P, E1, E2, etc.), autocorrelation values corresponding to the early fitting C/A codes, time-shifted values (e.g., represented by ( 1/16)C, ( 2/16)C, ( 3/16)C, ( 4/16)C, etc.) of the late fitting C/A codes (e.g., L3, L4, L5, L6, etc.), and autocorrelation values corresponding to the late fitting C/A codes, the error estimating circuit 116 can calculate a set of parameters. These parameters indicate a relationship between the autocorrelation values and the time-shifted values, and determine a curvilinear function, e.g., a parabolic function.
In an embodiment, the error estimating circuit 116 selects one or more early fitting C/A codes and one or more late fitting C/A codes, wherein adjacent C/A codes of the selected early fitting C/A codes, the second prompt C/A code, and the selected late fitting C/A codes can have, but not necessarily, the same time span therebetween on the chip time axis in the plot 404. The time span between adjacent C/A codes of the selected early fitting C/A codes, the second prompt C/A code, and the selected late fitting C/A codes includes one or more local clock periods, e.g., one or more abovementioned sampling clock periods.
More specifically, as shown in plot 406, the error estimating circuit 116, taking the second time-shifted value (e.g., represented by 0 C) as the origin of the chip time axis, selects two early fitting C/A codes (e.g., L1 and P) on the left side of the origin of the chip time axis and two late fitting C/A codes (e.g., L3 and L4) on the right side of the origin of the chip time axis. Time-shifted values of the C/A codes P, L1, L2, L3 and L4 are represented by (− 2/16)C, (− 1/16)C, 0 C, ( 1/16)C, and ( 2/16)C on the chip time axis of the plot 406. Autocorrelation values corresponding to the C/A codes P, L1, L2, L3 and L4 can be represented by y1, y2, y3, y4 and y5, respectively. A quadratic function can be given by:
y=ax
2
+bx+c, (1)
where the variable x represents a time-shifted value, the variable y represents an autocorrelation value, and the parameters a, b and c can determine the quadratic function.
The time-shifted values x and autocorrelation values y corresponding to the C/A codes P, L1, L2, L3 and L4 can be substituted into equation (1) to obtain the following set of equations (2).
Equation (2) can be rewritten in a matrix form as the follows.
Equation (3) can be rewritten as the follows.
The parameters a, b and c of the quadratic function (1) can be given as the follows.
a=18.2857142857143(2y1−y2−2y3−y4+2y5)
b=−1.6(2y1+y2−y4−2y5)
c=−0.0285714285714286(3y1−12y2−17y3−12y4−+3y5)
Thus, according to the presented calculation method, a quadratic function that indicates a relationship between autocorrelation values and time values in the chip time axis can be obtained.
In addition, the error estimating circuit 116 calculates a time-shifted value corresponding to a maximum value of the quadratic function. For example, a maximum value of the quadratic function, e.g., −b/2a, can be obtained by differentiating the quadratic function and setting the derivative of the quadratic function to zero. The time-shifted value corresponding to the maximum value can be calculated to be 0.7(2y1+y2−y4−2y5)/(2y1−y2−2y3−y4+2y5). Taking plot 406 as an example, the calculated time-shifted value corresponding to the maximum value of the quadratic function is −0.12 C. Moreover, the error estimating circuit 116 calculates a time difference 106 between the calculated time-shifted value (e.g., represented by −0.12 C) corresponding to the maximum value and the above mentioned first time-shifted value (e.g., represented by (− 2/16)C) of the first prompt C/A code P.
More specifically, in an embodiment, the error estimating circuit 116 calculates a first time difference between the above mentioned second time-shifted value (e.g., represented by 0 C in the plot 404) and the above mentioned first time-shifted value (e.g., represented by (− 2/16)C in the plot 404). In the example of plot 404, the first time difference is ( 2/16)C. The error estimating circuit 116 also calculates a second time difference between the calculated time-shifted value (e.g., represented by −0.12 C in plot 406) and the second time-shifted value (e.g., represented by 0 C in the plot 406). In the example of plot 406, the second time difference is −0.12 C. The error estimating circuit 116 adds the first time difference and the second time difference to obtain a time difference ΔT (e.g., ΔT=( 2/16)C−0.12 C). As mentioned above, in an embodiment, a chip time unit can be approximately 1×10−6/1.23 seconds. Thus, in the example of
The pseudorange calculating system 104 in
In operation in an embodiment, the autocorrelation value generating circuit 112 receives an IF signal 102 and extracts If signal data from it. The autocorrelation value generating circuit 112 also obtains a first prompt C/A code P by tracking the IF signal 102, and generates a set of early C/A codes E1, E2, . . . , EN1 advanced relative to the first prompt C/A code P and a set of late C/A codes L1, L2, . . . , LN2 delayed relative to the first prompt C/A code P. The autocorrelation value generating circuit 112 further calculates autocorrelation values of these C/A codes and the IF signal data. The error estimating circuit 116 finds a second prompt C/A code corresponding to a maximum autocorrelation value among the calculated autocorrelation values, and calculates a first time difference between the second prompt C/A code and the first prompt C/A code. The error estimating circuit 116 also performs curve fitting to create a relationship curve of the autocorrelation values and time values on a chip time axis using the C/A codes P, E1, E2, . . . , EN1, L1, L2, . . . , LN2, calculates a time-shifted value corresponding to a maximum value of the relationship curve, and calculates a second time difference between the calculated time-shifted value and a second time-shifted value of the second prompt C/A code. The error estimating circuit 116 further adds the first time difference and the second time difference to obtain a time difference 106 indicative of a pseudorange error, and provides the time difference 106 to the pseudorange calculating system 104. The pseudorange calculating system 104, thus, can calculate the pseudorange error according to the time difference 106, and calibrate a roughly calculated pseudorange.
At step 602, the autocorrelation value generating circuit 112 generates multiple C/A codes corresponding to a satellite of multiple satellites according to IF signal data obtained from the satellites. The multiple C/A codes includes a first prompt C/A code P, a set of early C/A codes E1, E2, . . . , EN1 advanced relative to the first prompt C/A code P, and a set of late C/A codes L1, L2, . . . , LN2 delayed relative to the first prompt C/A code P.
At step 604, the autocorrelation value generating circuit 112 performs autocorrelation function calculation on the C/A codes P, E1, E2, . . . , EN1, L1, L2, . . . , LN2 with the IF signal data to generate a set of autocorrelation values 114.
At step 606, the error estimating circuit 116 obtains a first time-shifted value (e.g., represented by (− 2/16)C in the plot 404) of the first prompt C/A code P and a second time-shifted value (e.g., represented by 0 C in the plot 404) of a second prompt C/A code (e.g., L2 in the plot 404) that is corresponding to a maximum autocorrelation value among the autocorrelation values 114.
At step 606, the error estimating circuit 116 calculates a pseudorange error from the satellite to a local GPS system according to the first time-shifted value, the second time-shifted value, and the autocorrelation values. Taking the plots 404 and 406 in
In summary, embodiments according to the present teaching provide a system and method for estimating a pseudorange error and eliminating the pseudorange error for a pseudorange measuring device. The system and method can enhance an accuracy of pseudorange calculation for the pseudorange measuring device, and increase a calculation speed for the pseudorange. The systems and method can also simplify the structure of the pseudorange measuring device and reduce the cost thereof. The system and method according to the present teaching can be used in communicating and positioning for various GPS systems.
While the foregoing description and drawings represent embodiments of the present teaching, it will be understood that various additions, modifications and substitutions may be made therein without departing from the spirit and scope of the principles of the present teaching as defined in the accompanying claims. One skilled in the art will appreciate that the teaching may be used with many modifications of form, structure, arrangement, proportions, materials, elements, and components and otherwise, used in the practice of the teaching, which are particularly adapted to specific environments and operative requirements without departing from the principles of the present teaching. The presently disclosed embodiments are therefore to be considered in all respects as illustrative and not restrictive, the scope of the teaching being indicated by the appended claims and their legal equivalents, and not limited to the foregoing description.
Number | Date | Country | Kind |
---|---|---|---|
201310199808.2 | May 2013 | CN | national |