## 2 The CNES PPP-WIZARD Demonstrator
### The User Side of the Demonstrator
#### 2.3.1 Measurement Modeling in the User
With the notations of Equation (23), the Melbourne-Wubbena observation model is given by:  
\[\text{MW}(\bar{L}_{i},\bar{L}_{j},\bar{C}_{i},\bar{C}_{j})=\bar{L}_{i}-\bar{L} _{j}+\frac{\lambda_{i}-\lambda_{j}}{\lambda_{i}+\lambda_{j}}\Bigg{(}\frac{ \bar{C}_{i}}{\lambda_{i}}+\frac{\bar{C}_{j}}{\lambda_{j}}\Bigg{)}=N_{\text{WL},ij}+b_{\text{MW},jj}. \tag{28}\]  
With \(b_{\text{MW},jj}\), the Melbourne-Wubbena receiver bias given by:  
\[b_{\text{MW},jj}=\frac{\bar{b}_{r,L_{i}}}{\lambda_{i}}-\frac{\bar{b}_{r,L_{j} }}{\lambda_{j}}+\frac{\lambda_{i}-\lambda_{j}}{\lambda_{i}+\lambda_{j}} \Bigg{(}\frac{\bar{b}_{r,C_{i}}}{\lambda_{i}}+\frac{\bar{b}_{r,C_{j}}}{ \lambda_{j}}\Bigg{)} \tag{29}\]  
The benefit of obtaining undifferenced OSB lies in the fact that no matter the frequencies \(f_{i}\) and \(f_{j}\) chosen to build the Melbourne-Wubbena combinations, the integer property of the carrier phase ambiguities is always maintained. The user part of the demonstrator is also able to use the Doppler measurements for the receiver position and velocity estimation. As defined in [1] (Chapter 2), the frequency \(f_{r}^{s}\) seen by the receiver due to the motion of the GNSS satellite emitting the signal at the frequency \(f_{j}\) is:  
\[f_{r}^{s}=\bigg{[}\Delta\mathbf{v}_{r}^{s}\cdot\frac{\Delta\mathbf{p}_{r}^{s} }{||\Delta\mathbf{p}_{r}^{s}||}+\hat{h}_{r}^{s}\bigg{]}\frac{f_{j}}{c}, \tag{30}\]  
where \(\mathbf{v}_{r}^{s}\) is the difference between the satellite and the receiver velocities, \(\Delta\mathbf{p}_{r}^{s}\) is the ranging vector from the receiver to the satellite, \(\hat{h}_{r}^{s}\) is the clock drift, and \(c\) is the velocity of light in vacuum. In the demonstrator, the measurement that is taken into account has a velocity dimension. Therefore, the frequency measured by the receiver is multiplied by the wavelength of the original signal, so the Doppler observable reads:  
\[D_{j}=\lambda_{j}f_{r}^{s}=\Delta\mathbf{v}_{r}^{s}\cdot\frac{\Delta\mathbf{p} _{r}^{s}}{||\Delta\mathbf{p}_{r}^{s}||}+\hat{h}_{r}^{s}. \tag{31}\]As it can be seen in Equation (31), the velocity state of the receiver is involved in the Doppler model. As the receiver trajectory estimation is performed by means of a Kalman filter, the link with the position state is done in the prediction part of the filter. As described in references [32; 33], using the Doppler measurement improves the positioning accuracy. This will be assessed in the following sections. The state vector to be estimated consists of the receiver position, the receiver velocity, the receiver clock relative to \(P1\) for GPS, the receiver clock relative to \(E1\) for Galileo, the receiver clock relative to \(B1I\) for Beidou, the ionospheric elongation, the wet part of the zenithal tropospheric delay, the code and phase biases on all the frequencies except the \(f_{1}\) one, as well as the \(N_{1}\), \(N_{\mathrm{WL},jj}\), and \(N_{\mathrm{EWL},jk}\) ambiguities. The estimation is performed by a Kalman filter, implemented in a square root formulation, in the so-called \(UDU^{T}\) form (see references [34] (Chapter 5), [35], or [36], for instance). The integer ambiguities are recovered with a bootstrap method [37]. After having solved for the widelane and extra-widelane ambiguities, the ambiguities on each carrier-phase measurement are recovered thanks to the cascading scheme given by the Equations (25)-(27). Nevertheless, the integer \(N_{1}\) ambiguity is still to be solved for each constellation. This can be performed with the Best Integer Equivariant (BIE) method, for instance [38].