## 3 Odometry Model  
Even with multi-constellation GNSS, satellite availability is sparse in urban canyons and zero in tunnels. Odometry measurements do not suffer from limited availability due to environmental influences. In modern vehicles equipped with _electronic stability control_ (ESC), the _brake control unit_ (BCU) receives the rotation increments of all wheels and the steering wheel angle \(\psi_{SW}\) from the corresponding sensors. The BCU converts the rotation increments into angular velocities \(\omega_{wheel}\) and outputs them onto a data bus, usually a _Controller Area Network_ (CAN). For the odometry model, \(\omega_{wheel}\) and \(\psi_{SW}\) are read from the CAN bus and supplied with a GPS time stamp. The utilization of four different angular wheel velocities as well as the steering wheel angle enables the calculation of a 2-D horizontal velocity for each wheel. In contrast to the commonly used odometry models with just the angular velocity of one undriven, unsteered axle as input, this method works for cornering and slipping vehicles as well. To transform \(\omega_{wheel}\) into velocities, the dynamical tire radii \(r_{dyn}\) are estimated in the EKF. For this purpose, the EKF's state vector is augmented by four states, resulting in a total of 22 states (see Table 4). Just as for GNSS processing, the odometry measurements get processed in two steps:  
1. Preprocessing: Employing polynomials obtained through calibration for each wheel, the wheel steering angle of each front wheel is computed from the measured steering wheel angle \(\psi_{SW}\). Longitudinal and lateral wheel slip are estimated based on the accelerometer outputs of the IMU (corrected for the estimated IMU biases). The horizontal velocity of each wheel is computed from \(r_{dyn}\) and \(\omega_{wheel}\) as well as longitudinal and lateral slip. For the front wheels, the resulting values have to be rotated into the body coordinate frame via the wheel steering angles. Output values of the odometry preprocessing are the \(x\)- and \(y\)-components of the vehicle velocity in the body coordinate frame at each wheel as well as the corresponding covariance matrices. 2. Measurement update: The innovation \(\delta z\) is formed as difference between the measured 2-D velocity at each wheel and its predicted counterpart. These predictions are based on the a-priori estimates of attitude, velocity and dynamical tire radii as well as the vehicle's geometry, namely the leverarms from the IMU to the four wheels. Finally, \(\delta z\) and the associated measurement noise covariance are used to determine corrections for the state vector's a-priori estimates. Simultaneously, the state vector's covariance matrix is updated to reflect the newly incorporated information. Figure 1 displays a block diagram of the tightly coupled algorithm. Only the most important in- and outputs of each component are shown. The three sensor groups on the left provide the algorithm with raw data: pseudo-ranges \(\rho\) and carrier-phase measurements \(\phi\) from the GNSS receiver, 3-D angular velocities \(\omega_{ib}^{b}\) and accelerations \(a_{ib}^{b}\) from the IMU as well as angular wheel velocities \(\omega_{wheel}\) and steering wheel angle \(\psi_{SW}\) from the odometry sensors. These inputs are utilized by the preprocessing components in the middle to produce the input data for the EKF: ionosphere-free pseudo-ranges \(\rho_{IF}\) and pseudo-range-rates \(\dot{\rho}\) from GNSS, a-priori estimates of attitude \(\hat{\psi}_{nb}^{n,-}\), velocity \(\hat{\psi}_{en}^{n,-}\) and position \(\hat{\rho}_{en}^{n,-}\) from the strapdown algorithm as well as velocity in the body coordinate frame \(v_{eb}^{b}\) for each wheel from odometry. The option to input single-frequency pseudo-ranges into the EKF is omitted in the block diagram for the sake of clarity. After performing the measurement update, the EKF outputs the a-posteriori estimates of attitude \(\hat{\psi}_{nb}^{n,+}\), velocity \(\hat{v}_{en}^{n,+}\) and position \(\hat{\rho}_{en}^{n,+}\).