## 2 Utilization of GNSS
### Basic GPS L1 Algorithm  
The basic algorithm is a tightly coupled GPS/IMU fusion filter. The central component is a closed-loop error-state _Extended Kalman Filter_ (EKF) with 17 states (see Table 1). Errors in attitude, velocity and position are resolved in the local navigation coordinate frame (indicated by the superscript \(n\)) with the order _east-north-up_ (ENU). Errors in gyroscope and accelerometer offset are resolved in the body coordinate frame (indicated by the superscript \(b\)) with the order _front-left-up_ (FLU). The subscripts of the first nine states refer to the two coordinate frames being referenced to each other. For example, \(v_{en}^{n}\) is the velocity of the navigation frame \(n\) with respect to the earth-fixed frame \(e\), expressed in navigation frame coordinates. Errors in receiver clock bias \(\delta t\) and drift \(\delta t\) are multiplied by the speed of light \(c\) to get units of meters and meters per second, respectively. The localization algorithm inputs 3-D angular velocities and accelerations from a _microelectromechanical systems_ (MEMS) IMU as well as pseudo-ranges \(\rho\) and carrier-phase measurements \(\phi\) from the GPS receiver. The carrier-phase measurements are time-differenced to remove the phase ambiguity. This results in pseudo-range-rate observations \(\dot{\rho}\) which are input into the EKF for velocity determination. Since these pseudo-range-rates are derived from carrier-phase measurements at two consecutive epochs, they are applied to the navigation solution with a time stamp in the middle between these two epochs. The localization algorithm operates in two different modes: initialization and normal mode. For initialization of the EKF's states, different sources of information are used. In addition to the state estimates, _standard deviations_ (std.) to model the initialization values' accuracy are provided as well:  
* Roll and pitch angle are estimated from IMU-measured accelerations. Based on offset and noise characteristics of the IMU in use, the standard deviation is set to \(3\sigma=5^{\circ}\). * The yaw angle is estimated from the GPS-derived velocity under the assumption that the vehicle is traveling in a straight line without side slip. Based on velocity estimation quality of the GPS-receiver used here, a standard deviation of \(3\sigma=10^{\circ}\) is employed. * Velocity and receiver clock drift are estimated based on pseudo-range-rate observations \(\dot{\rho}\). The pseudo-range-rates' variance is set to \(\sigma_{\rho}^{2}=0.1\,\mathrm{m}^{2}/\mathrm{s}^{2}\). * Position and receiver clock bias are estimated from pseudo-ranges via a single-epoch navigation solution. The pseudo-ranges' variance \(\sigma_{\rho}^{2}\) is modeled as the sum of two parts: \(\sigma_{\rho,\rho}^{2}\), depending on the satellite's elevation \(\theta\), and \(\sigma_{\rho,C/N_{0}}^{2}\), depending on the signal's carrier to noise ratio \(C/N_{0}\). * Gyroscope and accelerometer offset are initialized as 0. Their initial variance is based on the nominal values for the bias repeatability given by the IMU's manufacturer. Once initialization is completed, the algorithm enters normal operation mode. Whenever a new set of IMU measurements is received, the estimated values of attitude, velocity and position are updated in a strapdown algorithm. Simultaneously, the state vector's covariance matrix is propagated \begin{table}
\begin{tabular}{c c c} \hline \hline
**State** & **Description** & **Symbol** \\ \hline
1–3 & Attitude error & \(\Delta v_{en}^{n}\) \\
4–6 & Velocity error & \(\Delta v_{en}^{n}\) \\
7–9 & Position error & \(\Delta p_{en}^{n}\) \\ \hline
10–12 & Gyroscope offset error & \(\Delta b_{en}^{n}\) \\
13–15 & Accelerometer offset error & \(\Delta b_{a}^{n}\) \\ \hline
16 & Error of GPS receiver clock bias & \(\Delta c\delta t\) \\
17 & Error of GPS receiver clock drift & \(\Delta c\delta t\) \\ \hline \hline \end{tabular}
\end{table} 
Table 1: State Vector of the Basic Algorithm. forward in time in the EKF.