## 5 Localization Algorithm Performance
### Attitude and Velocity Accuracy  
While pseudo-ranges are mainly responsible for position aiding, attitude and velocity estimates derived from IMU measurements are mainly corrected by pseudo-range-rate and odometry observations. Pseudo-range-rates are measured and applied in the navigation coordinate frame, whereas the wheel velocities are measured in the body coordinate frame and applied in the navigation frame. Consequently, the inclusion of odometry measurements improves the estimation accuracy of yaw angle and velocity in the body coordinate frame. During periods with poor or no GNSS reception, odometry aiding improves estimation accuracy of velocity in the navigation coordinate frame and thereby position accuracy, as long as yaw angle accuracy is sufficiently high. To provide information about the availability of pseudo-range-rate observations during the test scenarios, Figure 5 shows the relative frequency distribution of the number of processed pseudo-range-rates for the multi-constellation algorithm in both data sets. Data set 1 (Figure 5a) has on average 9.5, data set 2 (Figure 5b) on average 12.5 observations available. For data set 1, six or more pseudo-range-rates are processed in more than 95% of epochs. In data set 2, it is eight or more observations in more than 95% of epochs. These high availability levels also show in the numerical analysis presented in Table 7: yaw error RMS is less than 1\({}^{\circ}\) in both sets, with and without odometry. The RMS error of \(v_{en}^{n}\) is less than 10\(\frac{\text{cm}}{\text{s}}\) in each coordinate. When comparing the results for odometry turned on and odometry turned off to each other, two main improvements can be identified when odometry is turned on: The 95% quantile of the yaw error gets reduced and horizontal accuracy of velocity estimation in the body coordinate frame is improved, especially along the lateral (\(y\)-)axis. The fact that odometry mainly benefits yaw angle estimation by reducing its 95% quantile can be explained as follows: Whenever the vehicle is traveling in a straight line, the yaw angle can be estimated reliably based on GNSS because the direction of travel is identical with the \(x\)-axis of the body coordinate frame. This is true most of the time. But whenever the vehicle is turning, the direction of travel and the body \(x\)-axis do not coincide anymore, causing the yaw angle estimate from GNSS/IMU integration to be less accurate. The odometry model is still able to estimate the velocity in the body coordinate frame reliably even during turns, thus improving yaw angle estimation accuracy in these types of situations. The same explanation holds for the accuracy of lateral velocity estimation: When driving in a straight line, \(v_{y}\) is zero and can be estimated accurately with GNSS. But during turns, \(v_{y}\) is nonzero and the inclusion of measurements derived from the odometry model improves its estimation accuracy. \begin{table}
\begin{tabular}{c c c c c c c c} \hline \hline \multirow{2}{*}{**Quantity**} & \multirow{2}{*}{**Unit**} & \multicolumn{2}{c}{**Data Set 1,**} & \multicolumn{2}{c}{**Data Set 1,**} & \multicolumn{2}{c}{**Data Set 2,**} & \multicolumn{2}{c}{**Data Set 2,**} \\  & & **Odometry Off** & **Odometry On** & **Odometry Off** & **Odometry On** \\ \hline RMS of \(\hat{\psi}_{nb}^{n}\) & \({}^{\circ}\) & [0.1; 0.1; 0.7] & [0.1; 0.1; 0.7] & [0.1; 0.1; 0.9] & [0.1; 0.1; 0.9] \\ \hline
50 \%/95 \% yaw error quantile & \({}^{\circ}\) & 0.2/1.1 & 0.2/0.8 & 0.3/0.8 & 0.1/0.4 \\ \hline RMS of \(\hat{\psi}_{en}^{b}\) & \(\frac{\text{cm}}{\text{s}}\) & [6; 10; 5] & [5; 2; 4] & [6; 13; 5] & [7; 4; 6] \\ \hline
50 \%/95 \% hor. quantile of \(\hat{\psi}_{en}^{b}\) & \(\frac{\text{cm}}{\text{s}}\) & 6/23 & 3/10 & 8/29 & 5/16 \\ \hline RMS of \(\hat{\psi}_{en}^{n}\) & \(\frac{\text{cm}}{\text{s}}\) & [9; 7; 4] & [6; 5; 4] & [4; 6; 4] & [5; 7; 5] \\ \hline \hline \end{tabular}
\end{table} 
Table 7: Accuracy Metrics for Attitude (Roll; Pitch; Yaw) and Velocity (FLU and ENU Coordinate Frames) Error.