2.1. Theory
For real time GNSS PPP, sequential least squares and Kalman filter estimations are the two most used methods; they are popular for the advantage of less computation burden since only information of adjacent epochs is required, and these two methods are essentially equivalent. This article takes the Kalman filter as an estimator, and it can be divided into two steps: the first one is called the Kalman filter prediction, as seen in Equation (1), and the second one is named the Kalman filter update, as seen in Equation (2).
where
denotes the predicted value of parameters to be estimated at epoch
, and the
denotes the updated value of estimated parameters at epoch
;
is the state transition matrix of all parameters from epoch
to
;
and
are the corresponding prior and post covariance matrix of all parameters at the epoch
k + 1 and
k respectively; the super script “
” means transposition;
is the process noise matrix of all parameters;
is the gain matrix;
is the design matrix at epoch
k + 1;
denotes the measurement noise matrix at current epoch;
is the updated value of all parameters at current epoch;
means the matrix of observation minus computation;
is the updated covariance matrix of all parameters;
is a identify matrix whose dimension depends on parameter number. The parameters
to be estimated in undifferentiated and uncombined PPP for dual frequency can be expressed as follows:
where
,
, and
are position parameters which keep constant in static mode and vary every epoch in kinematic mode;
denotes receiver clock error which may suffered from clock jump;
is a shorten for zenith total delay;
is the slant ionospheric delay for satellite
,
, and
denote the ambiguities of satellite
on frequency
and
, respectively.
Before Kalman filtering, the observation should be preprocessed to obtain clean data, and this preprocessing work includes the clock jump detection, especially when the carrier phase and pseudo range are inconsistent, and one of them should be corrected to keep consistent with other. During the Kalman filter, reasonable noise should be given for each parameter in order to obtain a better result, and the essence of process noise setting is to restrict variation of parameters; among all the parameters, usually shows the most uncertainty, while for other parameters, the process noise of ambiguity is 0, and the left ones do not vary dramatically.
As noted in the Introduction Section, the receiver clock jump may exist in different forms. In the PPP, the quantities
directly related to the clock jump are as follows:
where
is the observation record time tag,
and
denote the pseudo range and carrier phase in distance of frequency
without clock jump,
denotes the corresponding distance of ambiguity in
which keeps constant if no cycle slip or clock jump occurring,
is the famous Melbourne–Wubbena combination, and it can be expressed as follows [
13,
14]:
where
denotes frequency, the
and
are the clock jump values of carrier phase and pseudo range compared to the previous epoch (if no clock jump happening, both of them are equal to zero). For simplicity, other error sources are not further discussed here. If
equates to
and
equates to
Equation (5) can be simplified as follows:
Indeed, this is a key character of clock jumps on either pseudo range or carrier phase as it has the same scale jump on different frequencies, but it should be noted that pseudo range and carrier phase may have different scale jumps at the same time. Based on the character, the geometry free (GF) combination in Equation (7) is not affected by clock jump, so it not only can be used for cycle slip detection but also can be used for clock jump detection.
Due to the
in
, the datum of PPP comes from the
, so the current
should be satisfied with the following formulas:
According to the above equations, the relationship among the related quantities is shown in
Table 1. Despite other types of the receiver clock jumps possibly existing, they can be converted to one of the types in the table.
In
Table 1, the first three quantities can be considered as independent variables, and the last three can be considered as dependent variables. For the first type, the absolute value of
increases with the observation time, which does not affect cycle slip detection. For the second type, the pseudo range and carrier phase have the same scale clock jump at the same time, which is common in the corrected observations, in this situation, it does not affect the
to detect the cycle slip too. Obviously, the first type and the second type can be converted to each other. For the third type and the last type, both of them change the
to affect the cycle slip detection, and also the ambiguity changes too based on Equations (6) and (8). Here
and
denote the distance of pseudo range and carrier phase at any frequency and may suffer from clock jump to distinguish the former
and
.
Before the introduction of the new method, all the clock jumps are broadly divided into the following two types:
Type I: The pseudo range and carrier phase have the same scale clock jump, and the time tag’s jump belongs to this type too.
Type II: The pseudo range and carrier phase have different scale jumps.
There are two typical examples for type I and II clock jumps, as seen in
Figure 1 and
Figure 2. In
Figure 1, the original L1 and P1 observations for satellite G02 of site CUT0, which is an IGS track station equipped with TRIMBLE NETR9 receiver, have the same scale clock jump, and due to the improved signal tracking technique, the L1 and P1 time series are generally overlapped, and although clock jumps exist, this observation keeps the carrier phase and pseudo range consistent, and the L2 and P2 have similar trends. Not only the G02 has this phenomenon, but also other satellites at corresponding epochs. While in
Figure 2, the raw L1 (* denotes that the L1 has a shit of 3.0 × 10
7 m) and P1 observations for satellite G24 of site PIXI, which is a local station equipped with TRIMBLE 5700 receiver, have the different scale clock jumps, the carrier phase is smooth and the pseudo range time series have a shape like a sawtooth; for this clock jump of type I, it should be repaired according to Equation (6) in order to avoid the jump of
and misjudging of the cycle slip detection.
Many IGS station observations downloaded from the IGS data center have the clock jump of type I. Currently, for the clock jump of type II the traditional methods used to correct the original observations [
7]. If the clock jump of type II in
Figure 2 needs to be converted to the clock jump of type I in
Figure 1, the L1 should be corrected with the value (bule curve) in
Figure 3 so that then the pseudo range and carrier phase have the same trend. According to
Figure 3, once the clock jump happens, all the observations of each frequency for each satellite after this epoch need to be repaired, and the correction value mainly depends on the times of the clock jumps and scale of each jump since the correction value is in the form of steps. It should be noted that someone may want to correct the P1 in
Figure 2, but this leads to the unlimited increasing of
.
Since original observations have direct relations with ambiguity, instead of dealing with so many observations, this type of clock jump may be compensated by corrected ambiguity at the clock jump epochs only. For this situation, Equation (8) can be re-simplified as follows:
where
is a lumped ambiguity in the forms of steps when clock jumps exist. For example, in
Figure 3 there are 31 epochs needing to be handled for compensating ambiguity, while for the traditional method nearly 700 epochs need to be handled.
2.2. Solution for Type I Clock Jump
This type of clock jump is very common with the observation data download from current IGS data center. Although this type of clock jump does not affect the cycle slip detection, reasonable process noise should be provided in order not to be troublesome. In Kalman filtering, the process noise plays the role to balance the accuracy of state transition for each parameter, so corresponding process noise matrix setting mainly depends on the accuracy of state transition for all parameters, and the ideal situation is that the state transition parameter is exactly correct, for example the ambiguity keeps constant and its state transition parameter is 1 with process noise of zero, so is the position parameter in static mode. There is an example for state transition and process noise matrixes which corresponds to Equation (3), as shown in Equations (10) and (11) when static mode is selected and time gap is 30 s. Both of them are diagonal matrixes, and it can be known from Equation (10) that the state transition matrix is an identify matrix here, since the
,
, and
are not constant, their corresponding noises are not zero in Equation (11), and it can be seen that the noise of
is much larger than other parameters; here, the 9.0 × 10
10 m
2 means the clock may have a 3.0 × 10
5 m change between adjacent epochs, and this value is just about 1 ms clock jump. If a small value is given for
, it means a tight constraint for its variety, and the updated clock error
may cannot absorb all the clock jump completely, which leads the coordinates, tropospheric, and ionospheric parameters may absorb part of the residual jump too; for example, the ionospheric delay is not as a constant parameter with both static and kinematic mode, and also the position parameter with kinematic mode in data processing. Assuming that the large process noise is provided for
, but the process noise of other parameters is usually small, it is easy to obtain a singularity for
, and this disadvantage is inherited by
according to Equation (1); as a result, after update, the diagonal elements of
may appear as negative values for some program platforms.
In response to the above problem, it is suggested that the prior (predicted) value
is computed from every epoch’s single point positioning (SPP) of pseudo range. If the prior
is not propagated from the previous epoch, its prior variance cannot be propagated from the previous epoch either. The priori covariance matrix
of all parameters to be estimated in PPP can be expressed as Equation (12), where
is a 3 × 3 matrix of position covariance propagated from the last epoch’s a posteriori covariance
while in a static PPP processing without the need to add process noise.
is a covariance matrix of the troposphere, ionosphere (for undifferentiated and uncombined PPP ), and ambiguity propagated from last epoch’s posterior (updated) covariance, for troposphere and ionosphere small process noise should be considered depending on the time gap of the adjacent epochs, for the ambiguity the processing noise is zero, and
and
are also composed by the corresponding elements copied from last epoch’s posterior covariance,
is a 3 × 1 matrix full of zeros,
is a 1 × 3 matrix full of zeros,
and
are row and column vectors full of zeros, respectively.
Now in the , the only element that needs to be determined is , which denotes the prior variance of . To obtain the reasonable , the simplest way is the SPP via pseudo range, the model can be IF or uncombined which depends on the model of PPP. Of course, fault detection and exclusion should be implemented for this positioning, and also, in order to reduce the iteration, initial values of SPP can be obtained from . Generally, obtained from SPP is an approximate value due to the low accuracy of the pseudo range. For most situations, this variance can reach a few meters’ accuracy; in order not to be overly optimistic, a square of tens of meters is usually a reliable choice, though other better values may exist. aIt should be noted that when the geometric dilution of precision (GDOP) is large, this variance should be enlarged too. For this method, the is directly given, so there is no need to consider how to precisely determine the process noise, and at the same time, the numerical problem can be avoided.
2.3. Solution for Type II Clock Jump
Unlike the previous type of clock jump, this one affects the cycle slip detection. Since in the PPP,
, and
combinations are always used as cycle slip detectors. However, from the above discussions, it can be known that the
is unaffected under clock jump. Therefore, additional attention should be paid to the
. In order to avoid the misjudging of cycle slips based on the
under the clock jump, firstly the
filter algorithm is reviewed as Equations (13) and (14) [
15]:
where
denotes the mean of
,
and
denote current epoch and last epoch,
is the corresponding standard deviation of
; here, the
denotes order in the satellite data arc.
Before handling the
, whether the type II clock jump happened needs to be judged. The condition to satisfy the Formula (15) can be considered as a clock jump:
where 0.001 denotes the 1 ms and c is light speed, the 15 m is subtracted for the pseudo range noise,
means a relaxed constraint for cycle slip exclusion which is the ionospheric wavelength, and for GPS
equals 0.054 m when first and second frequencies are used.
means the absolute value. The clock jump size
can be determined by the following formula:
where the
denotes the average value for corresponding satellites.
Once the clock jump happens and the size is determined, the
of current epoch can be changed as follows and then Equations (13) and (14) can be used for cycle slip detection.
According to Equation (9) and
Table 1, the priori ambiguity should be updated by the correction of clock jump if no cycle slip is happening or cycle slip repairing is in need.
where the super script
means the prior value during the filter,
here denotes the corresponding posterior ambiguity from the last epoch, but when cycle slips happen with no repairing and satellite new appearing, there is no need to proceed the correction for prior ambiguity, because this is proceeded by initializing the ambiguity.
After cycle slip detection, the should be corrected back to the original value in order not to affect next epoch’s cycle slip detection, and of course, the should be corrected by the adding of ms’ distance.
As the above steps are for uncombined models, the IF model is generally the same except for the ambiguity, but it is easy to extend the Equation (18) as follows:
Compared to the original observations repairing method, the ambiguity compensating method has an equivalent result, but this new method has the advantage that only the clock jump epoch needs special handling here.