# The Implementation of Precise Point Positioning (PPP): A Comprehensive Review
## 2 Error Sources in PPP
### Phase Wind-Up  
GNSS satellites transmit primarily Right-Hand Circularly Polarized (RHCP) electromagnetic waves. This particular polarization aids in diminishing multipath effects and liberates the system from constraints concerning the relative orientation of the GNSS satellite and receiver antennas [7]. However, any deviation in the antenna's orientation introduces a variation in the carrier-phase measurements, a phenomenon termed \"phase wind-up\" [62]. Notably, while code measurements remain unaffected by this phenomenon, a complete rotation of the receiving or transmitting antennas alters the measured carrier phase by a full cycle across all frequencies.  
Although the GNSS signal includes both RHCP and left-hand components, for receivers situated at small angles from the satellite antenna boresight, the left-hand component can be disregarded [62]. Therefore, under the pure RHCP assumption, we can model the phase wind-up effect using the effective dipole method [62]. In this method, both the satellite and receiver antennas are represented as crossed dipole antennas. Assuming that \(\hat{\mathbf{k}}=-\mathbf{u_{r}^{s}}\) is the unit vector from the satellite to receiver antennas, the effective dipole vectors for the satellite \(\mathbf{D_{s}}\) and receiver \(\mathbf{D_{r}}\) can be expressed as follows:  
\[\mathbf{D_{s}} =\hat{\mathbf{x_{s}}}-\hat{\mathbf{k}}(\hat{\mathbf{k}}\odot\hat {\mathbf{x_{s}}})+\hat{\mathbf{k}}\times\hat{\mathbf{y_{s}}} \tag{16}\] \[\mathbf{D_{r}} =\hat{\mathbf{x_{r}}}-\hat{\mathbf{k}}(\hat{\mathbf{k}}\odot \hat{\mathbf{x_{r}}})+\hat{\mathbf{k}}\times\hat{\mathbf{y_{r}}} \tag{17}\]  
where \(\hat{\mathbf{x_{s}}}\) and \(\hat{\mathbf{y_{s}}}\) are the satellite dipole unit vectors, whereas the receiver dipole unit vectors are denoted as \(\hat{\mathbf{x_{r}}}\) and \(\hat{\mathbf{y_{r}}}\). These dipole vectors are deliberately selected to be perpendicular to the direction of wave propagation, adhering to the right-hand rule. As a result, the receiver dipole vectors (\(\hat{\mathbf{x_{r}}},\hat{\mathbf{y_{r}}}\)) typically align with the receiver unit vectors in either (east, north) or (north, west) directions. The unit vectors in the east and north directions can be derived from the first and second columns of the direction cosine matrix described in (14). The satellite dipole unit vectors are defined in (8) and (9).  
The fractional component of the phase wind-up correction, denoted as \(\Delta\phi_{w}\) in radians, can be written as  
\[\Delta\phi_{w} =\text{sign}(\zeta)\arccos\biggl{(}\frac{\mathbf{D_{s}}\odot\mathbf{ D_{r}}}{\|\mathbf{D_{s}}\|\|\mathbf{D_{r}}\|}\biggr{)} \tag{18}\] \[\zeta =\mathbf{\hat{k}}\odot(\mathbf{D_{s}}\times\mathbf{D_{r}}) \tag{19}\]  
To maintain the continuity of the phase wind-up correction, the integer part \(N\) is determined using the preceding correction value \(\phi_{w_{pre}}\) as follows:  
\[N=\text{nint}\biggl{(}\frac{\phi_{w_{pre}}-\Delta\phi_{w}}{2\pi}\biggr{)} \tag{20}\]  
where nint is the nearest integer operator. The value of \(N\) can be initialized with zero. The total phase wind-up correction becomes  
\[\phi_{w}=2\pi N+\Delta\phi_{w} \tag{21}\]  
Finally, the phase wind-up correction is subtracted from the carrier-phase observation. However, it is essential to ensure unit consistency throughout the calculations. Given that the correction in (21) is expressed in radians, it must be divided by \(2\pi\) to convert it to cycles. Furthermore, if the carrier-phase observation is originally expressed in meters, the phase wind-up correction needs to be multiplied by the carrier wavelength.