The proposed estimator is based on an innovative combination of a standard kinematic filter and a novel dynamic filter. The following subsections describe in detail: (1) the kinematic filter; (2) the dynamic filter; (3) the cross-combined method to merge kinematic and dynamic filters.
Kinematic filter
The kinematic filter only exploits kinematic quantities related to vehicle motion, so that no tire model is needed to estimate the lateral velocity, hence the sideslip angle. By simply manipulating the expressions of longitudinal and lateral acceleration as functions of longitudinal velocity, lateral velocity, and yaw rate, and by choosing the state as \({\varvec{x}} = \left[ {v_{x} \quad v_{y} } \right]^{T}\), the ideal (noise-free) process is described by [7]:
$$\left[ {\begin{array}{*{20}c} {\dot{v}_{\mathbf{x}} } \\ {\dot{v}_{y} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} 0 & r \\ { - r} & 0 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {v_{\mathbf{x}} } \\ {v_{y} } \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} 1 & 0 \\ 0 & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {a_{\mathbf{x}} } \\ {a_{y} } \\ \end{array} } \right]$$
(14)
Regarding the description of the noise, the insightful yet simple approach described in [28] was chosen since it allows to include directly (in \({\varvec{Q}}\)) the measurement noise covariances of yaw rate, lateral and longitudinal acceleration. As a result, the process is described by:
$$\left[ {\begin{array}{*{20}c} {\dot{v}_{x} } \\ {\dot{v}_{y} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} 0 & r \\ { - r} & 0 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {v_{x} } \\ {v_{y} } \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} 1 & 0 \\ 0 & 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {a_{x} } \\ {a_{y} } \\ \end{array} } \right] + \left[ {\begin{array}{*{20}c} - v_{y} &- 1 &0 \\ v_{x} &0& - 1 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {w_{r} } \\ {w_{{a_{x} }} } \\ {w_{{a_{y} }} } \\ \end{array} } \right]$$
(15)
which uses the measurement of yaw rate directly in the dynamic matrix, and the measurements of longitudinal and lateral accelerations as inputs. The actual measurement equation of the filter is straightforward:
$${\varvec {z}} = {\varvec{Hx} }= \left[ {\begin{array}{*{20}c} 1 & 0 \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {v_{x} } \\ {v_{y} } \\ \end{array} } \right]$$
(16)
Because both the process and the measurement equations are linear, the state can be estimated with the basic KF (2–3) using the matrices:
$$\begin{aligned} &{\varvec {A}} = \left[ {\begin{array}{*{20}c} 0 & r \\ { - r} & 0 \\ \end{array} } \right] \\ &{\varvec {B}} = \left[ {\begin{array}{*{20}c} 1 & 0 \\ 0 & 1 \\ \end{array} } \right] \\& {\varvec {H}} = \left[ {\begin{array}{*{20}c} 1 & 0 \\ \end{array} } \right] \\& {\varvec {W}} = \left[ {\begin{array}{*{20}c} -v_{y} &-1 & 0 \\ v_{z} & 0 & -1 \\ \end{array} } \right] \\ \end{aligned}$$
(17)
The forward Euler method is applied to perform the calculation in discrete time. As already assessed in [8], kinematic approaches are unobservable when the yaw rate is close to zero. A simple reset logic is applied to correct lateral velocity estimation, by forcing \(v_{y}\) to zero when the magnitude of \(r\) is sufficiently small.
Finally, at each time step, the sideslip angle is calculated, by definition, as \(\beta = \arctan \left( {v_{y} /v_{x} } \right)\).
Dynamic filter
A dynamic filter is based on the equilibrium equations of the vehicle, which need a constitutive law (tire model) to explicitly express the tire forces as functions of relevant parameters. The subsequent paragraphs describe respectively: i) vehicle model and tire model; ii) the UKF implementation of the filter.
Vehicle model and tire model
A double-track vehicle model is adopted, as shown in Fig. 1. The lateral equilibrium equation and the yaw balance equation for this model are:
$$\begin{aligned} ma_{y} = m\left( {\dot{v}_{y} + v_{x} r} \right) = F_{{y11}} \cos \left( \delta \right) + F_{{y12}} \cos \left( \delta \right) + F_{{y21}} + F_{{y22}} \\ J_{z} \dot{r} = F_{{y11}} \cos \left( \delta \right)a + F_{{y11}} \sin \left( \delta \right)\frac{{t_{{w1}} }}{2} + F_{{y12}} \cos \left( \delta \right)a - F_{{y12}} \sin \left( \delta \right)\frac{{t_{{w1}} }}{2} - F_{{y21}} b - F_{{y22}} b \\ \end{aligned}$$
(18)
Note that the steering angles of the front left and front right wheels are assumed to be the same (\(\delta\)) and that because longitudinal interactions typically have small effects, these are neglected in the lateral dynamics equations. On the other hand, the proposed double-track schematization allows to consider effects such as individual wheel slip angles and lateral load transfers. These effects help grasping a fairly accurate vehicle behavior, benefiting the estimator accuracy, unlike the single-track vehicle model adopted in many other estimators.
The lateral forces are expressed by a nonlinear tire model, considering key aspects of tire behavior such as nonlinearity, saturation, and dependency on the vertical load. In particular, the version of the Dugoff tire model presented in [45] is chosen, as it presents a very similar behavior to the well-known—yet more complex—Magic Formula. For a single wheel, the tire lateral force can be expressed as:
$$F_{y} = C_{\alpha } (\tan {\alpha}) p\left( \lambda \right)G_{\alpha }$$
(19)
where \(p\left( \lambda \right)\) is a nonlinear function defined as:
$$\begin{aligned} p\left( \lambda \right) = \left\{ {\begin{array}{*{20}l} \left( {2 - \lambda } \right)\lambda & \lambda < 1 \\ 1 & \lambda \ge 1 \\ \end{array} } \right. \\ {\text{with}}\;\lambda = \frac{{\mu _{{max}} F_{z} }}{{2\left| {C_{\alpha } \tan \alpha } \right|}} \\ \end{aligned}$$
(20)
and \({G}_{\alpha }\) is a correction term, function of the wheel slip angle and the tire-road friction coefficient:
$$G_{\alpha } = \left( {\mu _{{max}} - 1.6} \right)\tan \alpha + 1.155$$
(21)
However, with this formulation of \(G_{\alpha }\) [45], same values of \(\alpha\) but with opposite signs would not result in the same magnitude of lateral force (note that this formulation does not account for camber). To correct that, in this paper Eq. (21) is modified as follows:
$$G_{\alpha } = \left( {\mu _{{max}} - 1.6} \right)|\tan \alpha | + 1.155$$
(22)
which ensures a symmetrical behavior for positive and negative values of \(\alpha .\)
The selected tire model also requires the vertical load on each tire:
$$\begin{aligned} F_{{z_{{11}} }} = \frac{{mgb}}{{2l}} - \frac{{ma_{x} h}}{{2l}} - mB_{1} a_{y} + \frac{1}{4}\rho v_{x}^{2} C_{{z_{1} }} S_{a} \\ F_{{z_{{12}} }} = \frac{{mgb}}{{2l}} - \frac{{ma_{x} h}}{{2l}} + mB_{1} a_{y} + \frac{1}{4}\rho v_{x}^{2} C_{{z_{1} }} S_{a} \\ F_{{z_{{21}} }} = \frac{{mga}}{{2l}} + \frac{{ma_{x} h}}{{2l}} - mB_{2} a_{y} + \frac{1}{4}\rho v_{x}^{2} C_{{z_{2} }} S_{a} \\ F_{{z_{{22}} }} = \frac{{mga}}{{2l}} + \frac{{ma_{x} h}}{{2l}} + mB_{2} a_{y} + \frac{1}{4}\rho v_{x}^{2} C_{{z_{2} }} S_{a} \\ \end{aligned}$$
(23)
Each expression in Eq. (23) includes, in order: static load contribution; longitudinal load transfer contribution; lateral load transfer contribution; downforce contribution. For the lateral load transfer, according to [46], it is:
$$\begin{aligned} B_{1} = \frac{1}{{t_{{w1}} }}\left( {\frac{b}{l}d_{1} + \frac{{K_{{r1}} }}{{K_{{r1}} + K_{{r2}} }}\left( {h - \left( {d_{1} + \frac{{\left( {d_{2} - d_{1} } \right)a}}{l}} \right)} \right)} \right) \\ B_{2} = \frac{1}{{t_{{w2}} }}\left( {\frac{a}{l}d_{2} + \frac{{K_{{r2}} }}{{K_{{r1}} + K_{{r2}} }}\left( {h - \left( {d_{1} + \frac{{\left( {d_{2} - d_{1} } \right)a}}{l}} \right)} \right)} \right) \\ \end{aligned}$$
(24)
where \(K_{{r1}}\) and \(K_{{r2}}\) are the roll stiffness values of, respectively, the front and rear axle, and \(d_{1}\) and \(d_{2}\) are the heights of the roll centers of, respectively, the front and rear axle.
Finally, the congruence equations [2] provide the relationship between kinematic quantities and slip angles:
$$\begin{aligned} &\alpha _{{11}} = \delta - \arctan \left( {\frac{{v_{y} + ra}}{{v_{x} - rt_{{{\text{w}}1}} /2}}} \right) \\ &\alpha _{{12}} = \delta - \arctan \left( {\frac{{v_{y} + ra}}{{v_{x} + rt_{{{\text{w}}1}} /2}}} \right) \\ &\alpha _{{21}} = - \arctan \left( {\frac{{v_{y} - rb}}{{v_{x} - rt_{{{\text{w}}2}} /2}}} \right) \\ &\alpha _{{22}} = - \arctan \left( {\frac{{v_{y} - rb}}{{v_{x} + rt_{{{\text{w}}2}} /2}}} \right) \\ \end{aligned}$$
(25)
From the above equations, it is clear that the vehicle longitudinal velocity is required. That is estimated based on measurements including wheel speed sensors and accelerometers, as discussed in Sect. 4.
UKF filter implementation
Based on the vehicle model in Eq. (18), the state vector is chosen as \({\varvec{x}} = \left[ {v_{y} \quad r} \right]^{T}\), so \(N = 2\). The input vector is \({\varvec{u}} = \left[ \delta \right]\) and the measurement vector is \({\varvec{z}} = \left[ {r \quad a_{y} } \right]^{T}\) (both variables can be easily measured with standard sensors). By discretizing Eq. (18) with the forward Euler method, the system dynamics is expressed as:
$$\begin{aligned} v_{{y_{k + 1}}} =\, & v_{{y_k}} + \left[ {\frac{{\left( {F_{{y11_k}} + F_{{y12_k}} } \right)\cos \left( {\delta _{k} } \right) + F_{{y21_k}} + F_{{y22_k}} }}{m} - v_{{x_k}} r_{k} } \right]\Delta t \\ r_{{k + 1}} =\, & r_{k} + \left[ {\left( {F_{{y11_k}} + F_{{y12_k}} } \right)\cos \left( {\delta _{k} } \right)a + \left( {F_{{y11_k}} - F_{{y12_k}} } \right)\sin \left( {\delta _{k} } \right)\frac{{t_{{w1}} }}{2} - \left( {F_{{y21_k}} + F_{{y22_k}} } \right)b} \right]\frac{{\Delta t}}{{J_{z} }} \\ \end{aligned}$$
(26)
together with Eqs. (19–25). Regarding the relationships between \({\varvec {z}}\) and \({\varvec {x}}\), \(r\) is straightforward because it appears directly both in \({\varvec {z}}\) and \({\varvec {x}}\), while \(a_{y}\) can be related to the vehicle state at each time step through:
$$a_{{y_{k} }} = \frac{1}{m}\left[ {F_{{y_{{21_{k} }} }} + F_{{y_{{22_{k} }} }} + \left( {F_{{y_{{11_{k} }} }} + F_{{y_{{12_{k} }} }} } \right)\cos \left( {\delta _{k} } \right)} \right]$$
(27)
together with Eqs. (19–25). The matrices \({\varvec{Q}}\) and \({\varvec{R}}\) are:
$${\varvec {Q}} = \left[ {\begin{array}{*{20}c} {v_{y,s}^{2} } & 0 \\ 0 & {r_{s}^{2} } \end{array} } \right]$$
(28)
$${\varvec {R}} = \left[ {\begin{array}{*{20}c} {r_{m,s}^{2} } & 0 \\ 0 & {a_{y,m,s}^{2} } \end{array} } \right]$$
(29)
where \(v_{{y,s}}\) is the standard deviation of the process noise on \(v_{y}\), \(r_{s}\) is the standard deviation of the process noise on \(r\), \(r_{{m,s}}\) is the standard deviation of the measurement noise on \(r\), and \(a_{{y,m,s}}\) is the standard deviation of the measurement noise on \(a_{y}\).
Based on Eq. (8), the \(2N + 1 = 5\) sigma-points are:
$$\begin{aligned} {\varvec{ X}}_{{\mathbf{k - 1}}}^{{\mathbf{\left( 0 \right)}}} &= \hat{\varvec{x}}_{{\mathbf{k - 1}}} \\ {\varvec{X}}_{{\mathbf{k - 1}}}^{{\mathbf{\left( 1 \right)}}}& = \hat{\varvec{x}}_{{\mathbf{k - 1}}} + \left( {\sqrt {\left( {N + \psi } \right) {\varvec{P}_{{\mathbf{k - 1}}}} } } \right)_{1} \\ {\varvec{X}}_{{\mathbf{k - 1}}}^{{\mathbf{\left( 2 \right)}}} &= \hat{\varvec{x}}_{{\mathbf{k - 1}}} + \left( {\sqrt {\left( {N + \psi } \right) {\varvec{P}}_{{\mathbf{k - 1}}} }} \right)_{2} \\ {\varvec{ X}}_{{\mathbf{k - 1}}}^{{\mathbf{\left( 3 \right)}}} &= \hat{\varvec{x}}_{{\mathbf{k - 1}}} - \left( {\sqrt {\left( {N + \psi } \right) {\varvec{P}}_{{\mathbf{k - 1}}} } } \right)_{3} \\ {\varvec {X}}_{{\mathbf{k - 1}}}^{{\mathbf{\left( 4 \right)}}} &= \hat{\varvec{x}}_{{\mathbf{k - 1}}} - \left( {\sqrt {\left( {N + \psi } \right) {\varvec{P}}_{{\mathbf{k - 1}}} } } \right)_{4} \\ \end{aligned}$$
(30)
where the square root of a matrix can be calculated with the Cholesky factorization. The estimated state vector at each time step can then be obtained using Eqs. (9–12), noting that for each sigma-point Eq. (9) is Eq. (26), while Eq. (27) is used in the first of Eq. (12). Finally, at each time step, again \(\beta = \arctan \left( {v_{y} /v_{x} } \right)\).
Cross-combination
The described kinematic filter and dynamic filter run at the same time. The final estimate of the sideslip angle is calculated as a weighted average of the sideslip angle obtained through the two filters according to the following procedure (Fig. 2): (1) the measured value of ay is stored in a 0.1 s buffer; (2) a steady-state index is calculated, mainly depending on the Root Mean Square (RMS) of the stored samples of \(a_{y}\); (3) the steady-state index is used to compute a weight for the kinematic contribution, \(w_{{kin}}\), and a weight for the dynamic contribution, \(w_{{dyn}}\), with \(w_{{kin}} + w_{{dyn}} = 1\). The rationale is that, as suggested in [29], kinematic and dynamic models are better suited for, respectively, transient and steady-state conditions.
For \(\left| {a_{y} } \right| \ge 1\), the root mean square (RMS) value of the lateral acceleration is computed over the 0.1 s buffer (e.g., 10 samples for a frequency of 100 Hz). A membership function is used to calculate the value of the steady-state index: if the computed RMS value is lower than 0.4 m/s2, meaning that \(a_{y}\) does not vary significantly, the steady-state index is set equal to 1; between 0.4 m/s2 and 0.6 m/s2 the membership function produces a linearly variable output from 1 to 0; for values larger than 0.6 m/s2 the maneuver is assumed to be in transient conditions, thus the steady-state index is set to 0. Instead, if \(a_{y}\) is within ± 1 m/s2, the steady-state index is set to 1, to prevent possible fluctuations of the sideslip angle estimation in nearly straight-line conditions due to the kinematic filter. \(w_{{dyn}}\) is 1 when the steady-state index is 1, while it varies linearly from 1 to 0.7 corresponding to values of the steady-state index from 1 to 0.
This paper also proposes, for the first time, to cross-combine the variables in common between the output of one filter and the input of the other. Precisely the variables in common are \(r\) and \(v_{x}\), in that:
Normally, for the kinematic filter, \(r\) is taken directly from a sensor, and for the dynamic filter, \(v_{x}\) is calculated as a function of the measured wheel speeds. While both values are affected by sensor noise, the values for the same quantities obtained as output of each filter are expected to be more accurate. The kinematic filter should produce a better estimation of \(v_{x}\) than the value calculated through wheel speed sensors, and the dynamic filter should produce a better estimation of \(r\) than the measured value obtained through the sensor – note that unmodeled effects, such as pitch and roll motion, do affect the accuracy of the yaw rate measurement. So, these values of \(v_{x}\) and \(r\) can be used as inputs of the kinematic and dynamic filter, respectively. This new idea, denoted as cross-combination and shown in Fig. 3, has the potential to improve the accuracy of the estimation of \(v_{y}\) and thus of the sideslip angle.