## 2 Utilization of GNSS
### Multi-Frequency GPS Algorithm
They also suffer from increased code tracking noise [1]:  
\[\sigma_{\rho,IF}=\frac{\sqrt{f_{\alpha}^{4}\sigma_{\rho,\alpha}^{2}+f_{\beta}^ {4}\sigma_{\rho,\beta}^{2}}}{\left|f_{\alpha}^{2}+f_{\beta}^{2}\right|} \tag{2}\]  
where \(\sigma_{\rho,IF}\), \(\sigma_{\rho,\alpha}\) and \(\sigma_{\rho,\beta}\) are the code tracking error standard deviations for the ionosphere-free combination (IF), the first signal (\(\alpha\)) and the second signal (\(\beta\)), and \(f_{\alpha}\) and \(f_{\beta}\) are the first and second signal's carrier frequencies. When taking into account the slightly different code tracking error standard deviations due to different transmission powers for each signal, this results in an amplification of the standard deviation by a factor of ca. 3.36 (for L2C-L1 C/A combinations) or ca. 2.59 (for L5-L1 C/A combinations) in comparison to single-frequency L1 C/A measurements [1]. We decided to implement option (4) because it offers the main advantage of multi-frequency measurements (eliminating the ionospheric error almost completely) while only requiring changes to the algorithm's GPS preprocessing and not to the EKF and its state vector. The lack of support for three or more carrier frequencies is not a significant issue, as the inclusion of more than two frequencies offers diminishing performance improvements when compared to the improvement achieved by integrating a second frequency. As the Kalman Filter possesses an inherent smoothing ability, it attenuates the increased measurement noise's effect, hence mitigating the second disadvantage of ionosphere-free linear combinations. According to the GPS interface specifications [11; 12], the ionosphere-free linear combinations based on CNAV data for L1 C/A, L2C, L5I and L5Q are:  
\[\rho_{IF}=\frac{\left(\rho_{\alpha}-\gamma_{\beta,\alpha}\rho_{\beta}\right)+c \left(\text{ISC}_{\alpha}-\gamma_{\beta,\alpha}\text{ISC}_{\beta}\right)}{1- \gamma_{\beta,\alpha}}-cT_{GD} \tag{3}\]  
where \(\alpha\) and \(\beta\) stand for either L1 C/A, L2C, L5I or L5Q. \(\gamma_{\beta,\alpha}\) is the squared ratio between the respective carrier frequencies, \(c\) is the speed of light, ISC\({}_{i}\) is the _inter-signal correction term_ for the channel indicated by the subscript \(i\) (equivalent to the term \"satellite-specific DCB\" [4]) and \(T_{GD}\) is the timing group delay from the GPS _legacy navigation message_ (LNAV). Accessing the ISCs is problematic as the _Receiver Independent Exchange Format_ (RINEX) in its current version 3.03 only supports GPS LNAV data [13]. To avoid these restrictions, a CNAV-compatible RINEX-style format developed for the CNAV test campaign in 2013 [14] and the corresponding navigation files provided by the _Crustal Dynamics Data Information System_ (CDDIS) [15] are used. For the calculation of satellite positions, the ephemeris provided by LNAV continue to be used in order to preserve compatibility with block IIR and earlier GPS satellites as well as Galileo, whose ephemeris representation is identical to GPS LNAV. Initially, an algorithm capable of working with L2C-L1 C/A combinations, L5I-L1 C/A combinations, L5Q-L1 C/A combinations, L5Q-L1 C/A combinations and single-frequency L1 C/A measurements simultaneously without considering DCBs was implemented. Based on the available pseudo-range measurements at each epoch, the GPS preprocessing decides what data it forwards to the EKF and computes a matching variance. From most favorable to least favorable, the hierarchy is L5Q-L1 C/A > L5I-L1 C/A > L2C-L1 C/A > L1 C/A. Higher preference was given to L5 compared to L2C because L5 offers a larger frequency difference to L1 and the L5/L1 carrier frequencies match those of Galileo E5a/E1. The variance of all pseudo-range measurements is given by:  
\[\sigma_{\rho}^{2}=\sigma_{\rho,\theta}^{2}+\sigma_{\rho,C/N_{0}}^{2}-\sigma_{ \rho,jono}^{2} \tag{4}\]  
where the first two terms \(\sigma_{\rho,\theta}^{2}\) and \(\sigma_{\rho,C/N_{0}}^{2}\) are the same as they were for the basic GPS L1 algorithm.