1 Introduction

1.1 Literature review

Minimum-Lap-Time Planning (MLTP) problems are among the hottest topics in the automotive research field. Nowadays, they are widely employed in the industry to investigate car performances and provide guidelines both in the design and the tuning stages.

Two fundamental elements of MLTPs are the car and the track model. The choice of the track model is closely related to the MLTP formulation, which can be defined on a time or spatial domain. As well described in [1], the latter approach is the most commonly used, although it requires a well defined and differentiable track. For this, a spline representation is often used and the state of the art is well represented by [2] and [3]. In [2] a 3D ribbon-shaped racetrack model is obtained using a generalized Frenet–Serret apparatus. In particular, the authors propose an optimal estimation procedure that provides a smooth parameterization of the road from noisy data, allowing to model curvature, camber and elevation changes, as well as a variable track width. Lovato et al. in [3] further extended the ribbon-type road model to include lateral curvature. This accounts for lateral camber variations across the track; hence, lateral position-dependent camber is introduced as a generalization required for some racetracks.

The choice of the car model depends on the level of details required to describe the vehicle dynamics. The most simple model is the single-track one [4]. Rucco et al. [5] formulate an optimal control problem adopting the single-track model on a 2D track, and include important aspects of vehicle dynamics such as load transfers and nonlinear tire models. Increasing in complexity, a double-track model is implemented in [6], where longitudinal and lateral load transfers are considered along with aerodynamic loads and Pacejka’s Magic Formula [7]. The double-track model has been further refined to cover four-wheel drive vehicles with active aerodynamic controls [8] and limited-slip differential [9]. Instead, Limebeer et al. [10] develop a double track vehicle model embedded in a 3D track. Hence, they take into account the effects of track geometry when computing load transfers and vehicle absolute velocity.

As the last stage of complexity, a multi-body approach can be used to increase the level of details. In particular, in [11] a 2D multi-body dynamic model is developed where the rear wheels are fixed to the chassis—making it a single rigid body—while the front wheels are independent bodies pinned to the main chassis via revolute joints. Dal Bianco et al. [12] extended further and developed a 3D multi-body car model with 14 degrees of freedom.

Even if successful, all the mentioned contributions do not provide a systematic framework for the assembly of the vehicle dynamic equations, especially when considering their motion on 3D tracks. Their approaches seem episodic lacking a systematic procedure. Moreover, they do not exploit the recent developments in recursive dynamics algorithms, quite popular, on the contrary, in the fields of robotics and general computational dynamics, see e.g. [13] and [14]. In a recent contribution by the authors [15], a detailed multi-body model is constructed employing Featherstone’s Articulated-Body Algorithm (ABA) [14]. The ABA offers a systematic approach and has an algorithmic complexity of O(n), which scales linearly with the number of degrees of freedom. This leads to a significant reduction in the volume of the algebra during the assembly of the dynamic equations. In contrast, the classical Lagrange equation-based approach, with its complexity of \(O(n^3)\), is not considered in this analysis due to its inferior performance. For more details see [14, chap. 10, p. 203].

In this work, we present a unified framework to systematically build a reduced-order vehicle model that strikes a balance between accuracy and efficiency. More specifically, we develop a Lie-group based race-car model where the vehicle is regarded as a serial robot. The effects of 3D track geometry are directly included via a generalized kinematic joint, enabling a natural embedding of the car model into the 3D track. The dynamics equations are obtained by merging an efficient recursive formulation based on the Articulated-Body Algorithm and a simplified yet rigorous treatment of the vehicle dynamics [4]. Finally, fundamental phenomena in vehicle dynamics such as the load transfers and the nonlinear dependence of tire forces on vertical are incorporated within the ABA formulation by suitably defined algebraic equations. A noteworthy result is that our framework opens up the possibility to directly employ efficient and open-source rigid body dynamics libraries (see, e.g. [16] documented in [17]) also within the vehicle dynamics context.

1.2 Structure of the work

The main contributions of this paper are organized as follows. In Sect. 2, we delve into the parameterization of the track and vehicle, emphasizing crucial elements such as the mathematical representation of the track, the reference frames, and the kinematic chain that characterizes the vehicle structure. This section provides a comprehensive understanding of the foundational aspects of our reduced-order model.

Section 3 focuses on deriving the vehicle’s dynamic model using the ABA formulation. We describe how tire forces and load transfers are reconciled with the wrench formalism proper of the ABA framework. Key to this reconciliation are the suspension constitutive equations, which are addressed within the framework proposed in [4].

Finally, in Sect. 4, we present numerical results obtained from solving a minimum-lap-time problems on the Nürburgring Nordschleife circuit. First we validate of our proposed reduced-order against a reliable multi-body model introduced by the same authors in [15]. On a particularly demanding segment of the track, we demonstrate how our simplified model accurately manages to capture the essential dynamics of the system, while presenting a significantly improved computational efficiency. This computational advantage makes our model particularly suitable for long-term planning scenarios. As a demonstration, we report a solution for a full lap of the circuit.

2 Kinematic model

With reference to Fig. 1, the kinematic model of a vehicle traveling on a 3D track is devised as a serial kinematic chain whose root node consists of a fixed Cartesian reference frame \(\{B_{0}\}\) and whose end-effector represents the vehicle sprung mass, to which frame \(\{B_{6}\}\) is attached. The serial chain starts with a complex joint that accounts for advancing tangentially to the road centerline, and proceeds with a series of virtual prismatic and revolute joints.

Fig. 1
figure 1

Kinematic chain of the 3D vehicle model with the reference frames and degrees of freedom described by coordinates q

To efficiently parameterize the posture of the i-th body respect to the fixed reference frame \(\{B_{0}\}\), we employ the body-fixed (local) version of the Product of Exponentials (POE) formula [18]

$$\begin{aligned} g_{0, i}(q) = \prod _{k = 1}^{i} g_{k-1, k}(0) e^{\hat{X}_kq_{k}}, \end{aligned}$$

where \(g_{0, i}\in \text {SE(3)}\) denotes the posture of \(\{B_{i}\}\) with respect to \(\{B_{0}\}\), \(g_{k-1, k}(0)\) represents the initial configuration of \(\{B_{k}\}\) w.r.t. \(\{B_{k-1}\}\), \(\hat{X}_k\) are the (homogeneous representations of the) twists of the joints defining the kinematic chain, and \(q = [q_1, \dots , q_i]^T\) are the exponential coordinates of the 2nd kind [19] for a local representation of SE(3) for the i-th body.

The symbol \(X_{k}\) is a shorthand for \(X_{k}^{k}\), i.e. \(X_{k} = X_{k}^{k}\) when expressed in the attached local frame \(\{B_{k}\}\), the right superscript denoting the reading frame \(\{B_{k}\}\). It is worth recalling that \(X_k\in \mathbb {R}^6\) is the vector representation of \(\hat{X}_k\in \mathbb {R}^{4 \times 4}\), according to the standard Lie groups notation [19] and [20]. In the general case,

$$\begin{aligned} X_{k}^{i} = {{\,\textrm{Ad}\,}}_{g_{i, j}} X_{k}^{j} \end{aligned}$$

where the adjoint operator \({{\,\textrm{Ad}\,}}_{g_{i, j}}\) maps the same twist \(X_{k}^{}\) from reading frame \(\{B_{j}\}\) to \(\{B_{i}\}\).

The rigid-body velocity \(\hat{V}_{0, i}^{i}\) of \(\{B_{i}\}\) w.r.t. \(\{B_{0}\}\) in the moving frame \(\{B_{i}\}\) is given (as a 4x4 matrix) by the following formula

$$\begin{aligned} \hat{V}_{0, i}^{i}:= g_{0, i}^{-1}\dot{g}_{0, i}= \begin{bmatrix} \hat{\omega }_{0, i}^{i}&{} v_{0, i}^{i}\\ 0_{1\text {x}3} &{} 0 \\ \end{bmatrix} \end{aligned}$$

where, given the 3x3 rotation matrix \(R_{0, i}\) from \(\{B_{0}\}\) to \(\{B_{i}\}\), \(\hat{\omega }_{0, i}^{i}:= R_{0, i}^{T}\dot{R}_{0, i}\) is the skew-symmetric matrix of the angular velocity components (in \(\{B_{i}\}\)) of \(\{B_{i}\}\) w.r.t. \(\{B_{0}\}\), and \(v_{0, i}^{i}= R_{0, i}^{T}\dot{d}_{0, i}^{i}\) are the components (in \(\{B_{i}\}\)) of the velocity of the origin \(O_i\) with respect to \(O_0\). Equation (3) can be rewritten (as a 6x1 vector) in a convenient form by factoring out the joint velocities \(\dot{q}\) as follows

$$\begin{aligned} V_{0, i}^{i}= J_{0, i}^{i}(q)\dot{q}, \end{aligned}$$

with \(q = [q_1 \cdots q_i]^T\) and the distal Jacobian \(J_{0, i}^{i}\) can be computed as

$$J_{{0,i}}^{i} (q) = [d1{\mkern 1mu} \cdots {\mkern 1mu} {\text{d}}i],{\text{d}}k = {\mkern 1mu} {\text{Ad}}{\mkern 1mu} _{{C_{{k,i}}^{{ - 1}} }} X_{k} ,$$

where we define \(C_{k, i} = e^{\hat{X}_kq_k} g_{k,i}\) and \(k = 1, \dots , i\).

Similarly to twist formulation, \(W_{k}^{k} \in \mathbb {R}^{6}\) denotes the components in \(\{B_{k}\}\) of the wrench exerted on the k-th body. A generic wrench can be expressed, relative to a different frame, as follows

$$\begin{aligned} W_{k}^{i} = {{\,\textrm{Ad}\,}}_{g_{i, j}}^{*} \begin{bmatrix} f_{k}^{j} \\ m_{k}^{j}\\ \end{bmatrix} = {{\,\textrm{Ad}\,}}_{g_{i, j}}^{*} W_{k}^{j}, \end{aligned}$$

where \(f_k^j\) are the components of the force acting on body k, expressed in \(\{B_{j}\}\), and \(m_{k}^{j}\) the components with respect to \(O_{j}\) and in \(\{B_{j}\}\) of the resulting moment applied to body k. The operator \({{\,\textrm{Ad}\,}}_{g}^{*} = {{\,\textrm{Ad}\,}}_{g}^{-T}\) maps the same wrench in different reading frames.

2.1 Track parameterization

Fig. 2
figure 2

3D ribbon track with intermediate reference frame \(\{H\}\) and track reference frame \(\{S\}\)

To build an analytical model of the track, that is continuously differentiable and capable of efficiently represent complex shapes while remaining numerically stable, we employ 3D NURBS curves [21]. The track centerline (spine) curve \(C(\alpha )\) is defined by a position vector \(\textbf{p}(\alpha )\) such that

$$\begin{aligned} C(\alpha ) = \{[\textbf{p}(\alpha )]^{G} \in \mathbb {R}^{3}:\alpha \in [0,1]\}. \end{aligned}$$

In our representation, \(\alpha\) is not necessarily the curvilinear abscissa s (i.e. the arc length of the spine), but a generic curvilinear parameter. The relationship between s and \(\alpha\) can be described by

$$\begin{aligned} \dfrac{\text {d}s}{\text {d}\alpha } = \Vert \textbf{p}_{,\alpha }\Vert , \end{aligned}$$

where \(\textbf{p}_{,\alpha } = \text {d}\textbf{p}/\text {d}\alpha\).

In order to precisely define a track frame \(\{S\}= (O_{S}; [\textbf{t},\, \textbf{n},\, \textbf{m}])\) that follows the 3D ribbon along its spine (see Fig. 2), an intermediate frame \(\{H\}= (O_{H}; [\textbf{t},\, \textbf{v},\, \textbf{w}])\) needs to be introduced. Here \(\textbf{t}= \text {d}\textbf{p}/\text {d}s\) is the unit vector tangent to C; \(\textbf{v}\) is the unit vector obtained normalizing \(\textbf{k}_{G} \times \textbf{t}_{\Pi _{\textbf{k}_G}}\), with \(\textbf{k}_{G}\) the unit vector representing the vertical direction of the ground-fixed reference frame and \(\textbf{t}_{\Pi _{\textbf{k}_G}}\) the projection of \(\textbf{t}\) on the plane \(\Pi _{\textbf{k}_G}\), perpendicular to \(\textbf{k}_{G}\); finally \(\textbf{w}\) is defined as as \(\textbf{t}\times \textbf{v}\). Then, \(\{S\}\) is obtained by rotating \(\{H\}\) about \(\textbf{t}\) through an angle \(\nu\), which represents the track banking.

It is worth remarking that the complex track joint cannot be analyzed using the exponential approach proper of the POE (see (1)); hence, the transformation matrix \(g_{G, S}\), along with the rigid-body velocity \({V}_{G, S}^{S}\) of \(\{S\}\) w.r.t. \(\{G\}\) expressed in \(\{S\}\), need to be derived following the general definition in [19]. Once the track is parameterized and the NURBS analytical model is available, the quantities \([\textbf{t},\, \textbf{n},\, \textbf{m}]\) can be computed and \(g_{G, S}\) can be evaluated as

$$\begin{aligned} g_{G, S}(\alpha ) = \begin{bmatrix} R_{G, S}(\alpha ) &{} C(\alpha )\\ 0_{1 \times 3} &{} 1 \end{bmatrix}; \hspace{5mm} R_{G, S} = [t^{G},\, n^{G},\, m^{G}] \end{aligned}$$

where \(R_{G, S}\) is the rotation matrix from \(\{G\}\) to \(\{S\}\), and \(t^{G},\, n^{G},\, m^{G}\) are the components of \(\textbf{t},\, \textbf{n},\, \textbf{m}\) in the fixed-ground reference frame \(\{G\}\).

Instead the velocity \({V}_{G, S}^{S}\) can be computed as

$$\begin{aligned} {V}_{G, S}^{S}= \begin{bmatrix} v_{G, S}^{S} \\ \omega _{G, S}^{S} \end{bmatrix} = \begin{bmatrix} t^{S} \dot{s} \\ \Omega _{G, S}^{S} \dot{s} \end{bmatrix} = T_{G, S}^{S} \dot{s} = T_{G, S}^{S} {\dot{\alpha }} \Vert \textbf{p}_{,\alpha }\Vert . \end{aligned}$$

Here, \(T_{G, S}^{S}\) is the geometric twist obtained by differentiation of C and \(R_{G, S}\) with respect to s, \(t^{S}\) is the unit tangent vector to the centerline, and \(\Omega _{G, S}^{S}\) is the angular velocity defined by

$$\begin{aligned} {\hat{\Omega }}_{G, S}^{S} = R_{G, S}^{T} \frac{\text {d}R_{G, S}}{\text {d}s}. \end{aligned}$$

2.2 Vehicle parameterization

The vehicle kinematic chain is shown in Fig. 1, where the kinematic joints are depicted along with the reference frames \(\{B_{0}\}\) to \(\{B_{6}\}\), their corresponding joint variables \(q_i\), and the twist velocities \(X_i\).

Starting from ground, the first joint is associated with the track and transforms the ground frame \(\{B_{0}\}\) into the track frame \(\{B_{1}\}\). Its motion is parameterized by the \(q_1\) coordinate. Then the variables \(q_2\) and \(q_3\), respectively associated with a (virtual) prismatic and revolute joint, encode the vehicle degrees of freedom w.r.t. to \(\{B_{1}\}\). Specifically, the car can translate along the normal direction \(\textbf{j}_1\), thus defining the frame \(\{B_{2}\}\), and rotate along the vertical direction \(\textbf{k}_2\), defining \(\{B_{3}\}\). The latter frame is located at road level and it is thought of as fixed to the car axles plane, where the interaction forces between road and vehicle are exchanged.

The remaining joints variables \(q_4\), \(q_5\) and \(q_6\) parameterize the relative motion of the car body frame \(\{B_{6}\}\) with respect to the car axles plane, due to the suspension system. In particular, \(q_4\) is the vertical displacement, and \(q_5\) and \(q_6\) are, according to common vehicle dynamics terminology [4], the pitch and roll angles of the chassis.

It is worth observing that the last two revolute joints have intersecting axes. Furthermore, our reference frames definition implies that \(O_4 \equiv O_5 \equiv O_6\). In particular, point \(O_6\) does not coincide with car body center of mass \(G_6\) (which is located above along \(\textbf{k}_6\) direction), but coincides with the vehicle invariant point (VIP) [4]. This point, regardless of the roll angle, remains centered with respect to the four contact patches, hence in the middle of the vehicle, even when it rolls. This property makes such point the best option to monitor the vehicle position.

As we pointed out in the previous section, the track joint—unlike the joints from \(\{B_{1}\}\) to \(\{B_{6}\}\)—cannot be parameterized by the exponential approach and requires a dedicated formulation. Considering that \(\{S\}\) and \(\{G\}\), introduced in Fig. 2, become \(\{B_{0}\}\) and \(\{B_{1}\}\) according to the notation of Fig. 1, and that the joint variable \(\alpha\) becomes \(q_1\), we can rewrite (9) and (10) as follows

$$\begin{aligned}&g_{0, 1}= \begin{bmatrix} R_{0, 1}(q_1) &{} C(q_1)\\ 0_{1 \times 3} &{} 1 \end{bmatrix} \end{aligned}$$
$$\begin{aligned}&{V}_{0, 1}^{1}= T_{0, 1}^{1} \Vert \textbf{p}_{,q_1}\Vert \dot{q_{1}} = {J}_{0, 1}^{1}\dot{q}_{1}. \end{aligned}$$

3 Dynamic model

Once the vehicle has been parameterized by means of the Lie group machinery, the equations of motion can be derived systematically. To this end we can employ the Articulated-Body Algorithm [14].

Following the ABA approach, the dynamics of a generic body k connected to a parent joint is written using the Newton–Euler equations

$$\begin{aligned} W_{k_{\text {J}}}^{k}= M_{k}^{k}\dot{V_{k}}^{k}+ b_{k}^{k}, \end{aligned}$$

where \(W_{k_{\text {J}}}^{k}\) is the wrench exerted on body k through the previous connection joint, \(M_{k}^{k}\) is the inertia matrix k, \(\dot{V_{k}}^{k}\)Footnote 1 is the rigid-body acceleration, and \(b_{k}^{k}\) is the bias force, defined as

$$\begin{aligned} b_{k}^{k}= {{\,\textrm{ad}\,}}_{V_{k}^{k}}^{*}M_{k}^{k}{V_{k}}^{k}- W_{k_{\text {E}}}^{k}. \end{aligned}$$

In (14), the first term on the right-hand side accounts for the generalized gyroscopic forces and torques, which are bilinear in \({V_{k}}^{k}\), while \(W_{k_{\text {E}}}^{k}\) is the wrench exerted by the forces directly applied to the body k. The mathematical operator \({{\,\textrm{ad}\,}}_{V}\) in (14) transforms the input vector \(V = [v^T\, \omega ^T]^T\in \mathbb {R}^6\) in a \(6 \times 6\) matrix as follows

$$\begin{aligned} {{\,\textrm{ad}\,}}_{V} = \begin{bmatrix} {\hat{\omega }} &{} \hat{v} \\ 0_{3 \times 3} &{} {\hat{\omega }}, \end{bmatrix} \end{aligned}$$

and serves to compute the Lie derivative between two vector fields. Referring to [19], it is worth recalling that \({{\,\textrm{ad}\,}}_{V}^* = -{{\,\textrm{ad}\,}}_{V}^{T}\).

The ABA algorithm revolves about the concept of articulated body, defined as a collection of \(N_{B}\) rigid bodies interconnected by movable joints (either active or passive). Remarkably, if k is the first body (the handle) of the articulated body, its dynamics can still be written similar to (13) in the following form

$$\begin{aligned} W_{k_{\text {J}}}^{k}= \hat{M}_{k}^{k}\dot{V_{k}}^{k}+ \hat{b}_{k}^{k}, \end{aligned}$$

where \(\hat{M}_{k}^{k}\) and \(\hat{b}_{k}^{k}\) are now generalized inertial and bias terms accounting for the inertia and bias forces of the children bodies in the kinematic chain that are structurally transmitted backwards to the handle k.

The explicit expressions of the articulated-body inertia and bias terms \(\hat{M}_{k}^{k}\) and \(\hat{b}_{k}^{k}\), along with other fundamental aspects of the ABA algorithm, will be given in the next subsection.

3.1 Forward dynamics via a tailored ABA formulation

The Articulated-Body Algorithm consists of three subsequent steps.

3.1.1 Forward propagation of posture and velocity

In Step 1, starting from the handle body, the rigid-body postures and velocities are being propagated from ground to the car body.

figure a

The number of rigid bodies in our articulated body is \(N_B = 6\). These are identified by frames \(\{B_{1}\}\) to \(\{B_{6}\}\) and their inertial properties are introduced in the next ABA step. As detailed in Sect. 2, it is worth noting that the first joint (track transformation) is treated separately, via the homogeneous matrix \(g_{0, 1}\) and the Jacobian \(J_1^1\).

3.1.2 Evaluation of the generalized bias force and articulated-body inertia

In this step, starting from the last body of the kinematic chain, we evaluate \(\hat{M}_{k}^{k}\) and \(\hat{b}_{k}^{k}\) (introduced in (16)) for a generic body k.

figure b

The quantities \(\bar{M}_{l}^{l}\) and \(\bar{b}_{l}^{l}\) are calculated as

$$\begin{aligned}&\bar{M}_{l}^{l}= \hat{M}_{l}^{l}- \dfrac{\hat{M}_{l}^{l}X_l X_l^{T} \hat{M}_{l}^{l}}{X_l^{T} \hat{M}_{l}^{l}X_l} \end{aligned}$$
$$\begin{aligned}&\bar{b}_{l}^{l}= \Bigg [A_{k l}^{*} \hat{b}_{l}^{l}- A_{k l}^{*} \bar{M}_{l}^{l}{{\,\textrm{ad}\,}}_{X_{l}\dot{q}_{l}}V_k^{l}+ \dfrac{A_{k l}^{*} \hat{M}_{l}^{l}X_l (\tau _l - X_l^{T}\hat{b}_{l}^{l})}{X_l^{T}\hat{M}_{l}^{l}X_l} \Bigg ], \end{aligned}$$

where the shorthand notation \(A_{l k} = {{\,\textrm{Ad}\,}}_{g_{k+1,k}}\) is used and \(\tau _l\) is the active joint force (or torque, depending on the nature of the joint). In the vehicle model we propose joints are not actuated: the non-zero \(\tau _l\)’s are passively generated by springs and dampers.

Step 2 can be easily implemented once the terms \(M_{k}^{k}\), \(\tau _l\) and \(W_{k_{\text {E}}}^{k}\) have been defined for each body.

In our serial kinematic chain, only the inertias of sprung \(M_{6}^{6}\) and unsprung masses \(M_{3}^{3}\), as usual in vehicle dynamics [4], are different from zero.

Regarding the active joint force (or torque) \(\tau _l\), we clearly distinguish the first three joints from the last ones. For the former group of joints, which are fictitious, we have \(\tau _1 = \tau _2 = \tau _3 = 0\). For the latter, although not actuated, we have in general non-zero forces \(\tau _4,\, \tau _5,\, \tau _6\) developed by the presence of springs and dampers. Their constitutive equations are described by

$$\begin{aligned}&\tau _6 = -k_{\phi }q_6 -c_{\phi }\dot{q}_6 \end{aligned}$$
$$\begin{aligned}&\tau _5 = -k_{\theta }q_5 -c_{\theta }\dot{q}_5 \end{aligned}$$
$$\begin{aligned}&\tau _4 = -k\,q_4 -c\,\dot{q}_4, \end{aligned}$$

where \(k_{\phi }\), \(k_{\theta }\) and k are first-order approximations of roll, pitch and vertical stiffness about a nominal working condition of the vehicle. Similarly, the coefficients \(c_{\phi }\), \(c_{\theta }\) and c, respectively approximate the roll, pitch, and vertical damping. Employing symbol p to represent either k or c, the explicit expression of these coefficients can be computed as follows

$$\begin{aligned}&p_{\phi } = \dfrac{p_{11} + p_{12} }{4}t_1^2 + \dfrac{p_{21} + p_{22} }{4}t_2^2 \end{aligned}$$
$$\begin{aligned}&p_{\theta } = (p_{11} + p_{12})a_1^2 +(p_{21} + p_{22})a_2^2 \end{aligned}$$
$$\begin{aligned}&p = p_{11} + p_{12} + p_{21} + p_{22}, \end{aligned}$$

where, according to the notation in [4], the subscript of \(p_{ij}\) refers to the axle and side of the vehicle (\(i = 1,2\) for front/rear and \(j = 1,2\) for left/right). As usual, \(t_1\) and \(t_2\) denote he front and rear tracks of the car.

Finally, to evaluate \(b_{k}^{k}\) as in (14), we must have the external wrenches \(W_{kE}^k\). The only external contributions in our model come from the aerodynamic forces, applied to the car body (fixed to \(\{B_{6}\}\)), and the interaction between the axle body (fixed to \(\{B_{3}\}\)) and the road. The contribution of gravity is treated separately, as explained in Step 3. As far as the aerodynamic wrench \(W_{6E}^{6}\) is concerned, it is convenient to evaluate it in \(\{B_{3}\}\) and then express it back in \(\{B_{6}\}\) through (6) to also model its effects on the roll, pitch and bounce motion. Therefore, its expression is computed as \(W_{6_{\text {E}}}^{6}= {{\,\textrm{Ad}\,}}_{g_{6,3}}^{*}W_{6_{\text {E}}}^{3}\), where

$$\begin{aligned} \begin{aligned} W_{6_{\text {E}}}^{3}&= [f_{x_a},\, 0,\, f_{z_a},\, 0,\, m_{y_a},\, 0]^{T}\\&=-\dfrac{1}{2} \rho S (v_{3_{x}}^3)^{2} [C_{x},\, 0,\, C_{z},\, 0,\, C_{z2}a_2 - C_{z1}a_1,\, 0]^{T}. \end{aligned} \end{aligned}$$

Here, \(\rho\) is the air density, S is the vehicle frontal area, \(v_{3_{x}}^3\) is the component of \(v_{3}^3\) along \(\textbf{i}_3\), and \(a_1,\, a_2\) are the longitudinal distances of \(G_6\) from the front and rear axles, respectively. \(C_x > 0\) is the drag coefficient, \(C_z > 0\) the downforce coefficient, and \(C_{z2},\, C_{z1}\) are such that \(C_z = C_{z1} + C_{z2}\).

Fig. 3
figure 3

Step 2 of the Articulated-Body Algorithm: Evaluation of the articulated-body inertia \(\hat{M}_3^{3}\) and representation of in-plane (blue) and out-of-plane (red) wrenches

The other non-zero external wrench \(W_{3_E}^{3}\) is applied directly on the axle body (fixed to \(\{B_{3}\}\)) and accounts for a portion of the interactions between road and vehicle. In our model, as in a real vehicle, the totality of the external forces that act on the car (except for the aerodynamic ones) are developed through the contact between tires and road. However, since we are considering the body \(\{B_{3}\}\) as the handle of an articulated body going up to \(\{B_{6}\}\), it is more convenient to encode the in-plane components of the force in the external wrench \(W_{3_{E}}^3\) and the out-of-plane ones in the internal wrench \(W_{3_{J}}^3\), as shown in Fig. 3. The total wrench \(W_3^3\), collecting all forces and torques generated at the four contact patches between road and tires, is thus partitioned as

$$\begin{aligned} W_{3}^{3} = W_{3_J}^{3} + W_{3_E}^{3}. \end{aligned}$$

More in detail, we define

$$\begin{aligned}&W_{3_{J}}^3 = [0, 0, f_{3_z}^{3}, m_{3_x}^{3}, m_{3_y}^{3}, 0]^{T} \end{aligned}$$
$$\begin{aligned}&W_{3_{E}}^3 = [f_{3_x}^{3}, f_{3_y}^{3}, 0, 0, 0, m_{3_z}^{3}]^{T}. \end{aligned}$$

Considering that the first three joints are passive, \(W_{3_{J}}^3\) represents a structural wrench: its non-zero components \(f_{3_z}^{3}\), \(m_{3_x}^{3}\) and \(m_{3_y}^{3}\) are the forces and torques that can be thought, in line with the ABA perspective, as those structurally absorbed by the first three virtual joints of the kinematic chain. These components restrain \(\{B_{3}\}\) to stay on the track. Instead, the components \(f_{3_x}^{3}\), \(f_{3_y}^{3}\) and \(m_{3_z}^{3}\), lying on the plane locally tangent to the road surface, are treated as external forces accounting for the tire adherence and traction and are embedded in \(W^3_{3_E}\). These will be linked, in the next subsection, to the control inputs of our model.

3.1.3 Forward propagation of acceleration

In this step, again starting from the first body, we compute and forward propagate the joint accelerations \(\ddot{q}_k\) to obtain the rigid-body accelerations \(\dot{V_{k}}^{k}\). This procedure is presented in the pseudo-code below.

figure c

As in Step 1, the first joint is treated separately, due to its non-standard nature; thus we let \(J_{1,q_1}^1 = \text {d}J_1^1/\text {d}q_1\). Furthermore, in order to model the presence of gravity, we introduce a fictitious acceleration on \(\{B_{0}\}\) (which is automatically propagated through the kinematic chain) by setting

$$\begin{aligned}&\dot{V}_0^0 = [0,\, 0,\, a_g,\, 0,\, 0,\, 0]^{T} \end{aligned}$$
$$\begin{aligned}&V_0^0 = [0,\, 0,\, 0,\, 0,\, 0,\, 0]^{T}, \end{aligned}$$

where \(a_g = 9.81\) m/s\(^2\) is the gravity acceleration.

After Step 3, having computed \(\dot{V}_3^3\), we can calculate the structural wrench \(W_{3_J}^{3}\) through (16) as follows

$$\begin{aligned} W_{3_J}^{3} = \hat{M}_{3}^{3}\dot{V}_{3}^{3} + \hat{b}_{3}^{3}. \end{aligned}$$

Considering that \(W_{3_J}^{3}\) has only three non-zero components, (24) provides three scalar equations linking \(f_{3_z}^{3}\), \(m_{3_x}^{3}\) and \(m_{3_y}^{3}\) to the inertial, bias and acceleration terms obtained through the ABA algorithm. More in detail, since the \(\tau _k\)’s only depend on q and \(\dot{q}\), and \(\hat{b}_3^3\) only depends on \(W_{3_E}^3\), we can express \(W_3^3\) as

$$\begin{aligned} W_{3_J}^{3} = W_{3_J}^{3}(q, \dot{q}, \ddot{q}, W_{3_E}^3). \end{aligned}$$

3.2 Reconciliation of ABA wrenches with tire forces and load transfers

The paramount aspect that characterizes vehicle dynamics is the interaction between road and tires. As explained in the previous subsection, in our model this interaction is encoded in the wrenches \(W_{3_J}^{3}\) and \(W_{3_E}^{3}\). In order to model the dynamics of an actual vehicle with tires, it is therefore necessary to link them to the actual forces developed at the four contact patches.

The generic wrench exerted on the ij-th wheel (where ij refers, as usual, to the considered axle and side of the vehicle) is assumed to have only three non-zero components \(f_{ij_x},\, f_{ij_y},\, f_{ij_z}\), which are expressed in the corresponding frameFootnote 2\(\{B_{ij}\}\). Assuming a front-wheel steering vehicle and a parallel steering law, we set \(\delta _{21} = \delta _{22} = 0\) and \(\delta _{11} = \delta _{12} = \delta\).

We start by analyzing the vertical force \(f_{ij_z}\). Inspired by [4] we write

$$\begin{aligned} f_{ij_z} = f_{z_{i0}} + f_{z_{ia}} + \Delta f_z + (-1)^j \Delta f_{z_i}, \end{aligned}$$

where \(f_{z_{i0}}\) is the static load, \(f_{z_{ia}}\) is the aerodynamic force, and \(\Delta f_z\), \(\Delta f_{z_i}\) are the longitudinal and lateral load transfers, respectively. Equation (26) (one for each wheel) represent implicit equations in the \(f_{ij_z}\) terms. To make this more explicit, the four terms of (26) are analyzed, and their dependencies on \(f_{ij_z}\) and on the non-zero components of \(W_{3_J}^3\) highlighted.

The first term \(f_{z_{i0}}\) is computed, by definition, from its dynamic counterpart \(f_{3_z}^3\) filtering out the aerodynamic force as follows

$$\begin{aligned} f_{z_{i0}}=f_{z_{i0}}(f_{3_z}^3) = (f_{3_z}^3 - f_{z_a})\dfrac{(l-a_i)}{2l}, \end{aligned}$$

where \(l = a_1 + a_2\) is the wheelbase of the vehicle. After reintroducing the downforce via

$$\begin{aligned} f_{z_{ia}} = \dfrac{1}{4}\rho C_{zi} S (v_{3_x}^3)^2, \end{aligned}$$

the longitudinal load transfer can be obtained as

$$\begin{aligned} \Delta f_z = \Delta f_z(m_{3_y}^3) = -(m_{3_y}^3 - m_{y_a})/(2l), \end{aligned}$$

where we are subtracting the aerodynamic moment since it already results from how we defined the \(f_{z_{ia}}\) on each wheel. Finally, according to [4, p. 152], and assuming the tires to be perfectly rigid in the vertical direction, we can compute the lateral load transfers as follows

$$\begin{aligned} \begin{aligned} \Delta f_{z_i}&= \Delta f_{z_i}(f_{11_z}, f_{12_z}, f_{21_z}, f_{22_z}) \\&= {\dfrac{k_{\phi _i}}{k_{\phi }t_i}[- m_{3_x}^{3} - (Y_1 h_{q_1} + Y_2 h_{q_2})]} + {\dfrac{Y_i h_{q_i}}{t_i}}. \end{aligned} \end{aligned}$$

Here, \(Y_i = Y_i(f_{i1_z}, f_{i2_z})\) is the lateral force acting on i-th axle, expressed in \(\{B_{3}\}\), \(k_\phi =k_{\phi _1}+k_{\phi _2}\) is the roll stiffness of the i-th axle and \(h_{q_i}\) is the distance of the no-roll center of the i-th suspension from the road [4, p.119].

The explicit expressions of \(Y_1\) and \(Y_2\) are given by

$$\begin{aligned}&\begin{aligned} Y_{1}&= Y_{1}(f_{11_z}, f_{12_z}) \\&= (f_{11_y} + f_{12_y})\cos (\delta ) + (f_{11_x} + f_{12_x})\sin (\delta ) \end{aligned}\end{aligned}$$
$$\begin{aligned}&Y_{2} = Y_{2}(f_{21_z}, f_{22_z}) = f_{21_y} + f_{22_y}. \end{aligned}$$

In (31) we highlight the dependencies of the lateral force \(f_{ij_y}\) on the vertical load on each wheel, according to the tire model detailed below.

To describe the tire behavior in the lateral direction we use the Pacejka’s Magic Formula [7], which reads

$$\begin{aligned} \begin{aligned} f_{ij_{y}}&= f_{ij_y}(f_{ij_z}) \\&= D_y \sin (C_y \arctan (B_y \alpha _{ij} - E_y(B_y \alpha _{ij}\\ {}&\hspace{100pt}- \arctan (B_y \alpha _{ij})))). \end{aligned} \end{aligned}$$

It is worth noting here the explicit dependence of four factors \(D_y(f_{ij_z})\), \(C_y(f_{ij_z})\), \(B_y(f_{ij_z})\) and \(E_y(f_{ij_z})\) on the vertical load \(f_{ij_z}\) on the tire. The \(\alpha _{ij}\)’s are the tire slip angles, which we may assume to be equal for wheels of the same axle, as frequently done in [4]. Their expressions are given by

$$\begin{aligned}&\alpha _{11} = \alpha _{12} = \delta - \dfrac{v_{3_y}^{3} + \omega _{3_z}^{3}a_1}{v_{3_x}^{3}} \end{aligned}$$
$$\begin{aligned}&\alpha _{21} = \alpha _{22} = - \dfrac{v_{3_y}^{3} - \omega _{3_z}^{3}a_2}{v_{3_x}^{3}} \end{aligned}$$

Finally, considering a rear-wheel drive vehicle equipped with an open differential (which makes \(f_{21_x} = f_{22_x}\)), we compute the longitudinal forces as

$$\begin{aligned}&f_{11_x} = f_{12_x} = \dfrac{1}{2}f_{xb}k_b \end{aligned}$$
$$\begin{aligned}&f_{21_x} = f_{22_x} = \dfrac{1}{2}f_{xb}(1-k_b) + \dfrac{1}{2}f_{xa} \end{aligned}$$

where \(k_b\) is the braking ratio, and \(f_{xb},\, f_{xa}\) respectively represent the total braking and traction force on the vehicle.

At this point it is important to underline how to combine the above equations in order to characterize the implicit Eq. given by (26).

Substituting (32) in (31) and inserting the result in (30), we obtain the explicit expression that links each \(\Delta f_{z_i}\) to all four vertical loads \(f_{{ij}_z}\).

Then, Eqs. (30), (29), (28) and (27) can be substituted in (26). Here, note that (30), (29), (28) and (27), beside \(v^3_{3x}\), also contain the components \(m^3_{3_x}\), \(m^3_{3_y}\) and \(f^3_{3_z}\) of \(W_{3_J}^{3}\); nevertheless, according to (25) and the relations resulting from the ABA steps, these can be eliminated in favor of a direct dependence on q, \(\dot{q}\) and \(W_{3_E}^{3}\).

On the other hand, since (30) contains \(Y_i\), which depends through (31), (33) and (34) on q, \(\dot{q}\), \(f_{xa}\), \(f_{xb}\) and \(\delta\), Eq. (26) can be written in the form of the following four implicit equations

$$\begin{aligned} f_{ij_z} = \widetilde{f}_{ij_z}(q, \dot{q}, \ddot{q}, W_{3_E}^{3}, f_{11_z}, f_{12_z}, f_{21_z}, f_{22_z}, f_{xa}, f_{xb}, \delta ). \end{aligned}$$

It is worth noting that the system of vertical forces thus obtained is equivalent to \(W_{3_{J}}^{3}\).

A final consistency condition is required to ensure that the external wrench \(W_{3_{E}}^{3}\), defined in (22b) and appearing in (35), is the resultant of the in-plane tire forces. Thus we write

$$\begin{aligned}&\begin{aligned} f_{3_x}^{3}&= f_{3_x}^{3}(f_{11_z}, f_{12_z})\\&= X_1(f_{11_z}, f_{12_z}) + X_2 \end{aligned}\end{aligned}$$
$$\begin{aligned}&\begin{aligned} f_{3_y}^{3}&= f_{3_y}^{3}\left( f_{11_z}, f_{12_z}, f_{21_z}, f_{22_z}\right) \\&= Y_1(f_{11_z}, f_{12_z}) + Y_2(f_{21_z}, f_{22_z}) \end{aligned} \end{aligned}$$
$$\begin{aligned}&\begin{aligned} m_{3_z}^{3}&= m_{3_z}^{3}\left( f_{11_z}, f_{12_z}, f_{21_z}, f_{22_z}\right) \\&= Y_1(f_{11_z}, f_{12_z}) a_1 - Y_2\left( f_{21_z}, f_{22_z}\right) a_2, \end{aligned} \end{aligned}$$

where, for brevity, we let \(X_1(f_{11_z}, f_{12_z}) = (f_{11_x} + f_{12_x})\cos (\delta ) - (f_{11_y} + f_{12_y})\sin (\delta )\) and \(X_2 = f_{21_x} + f_{22_x}\). By expanding the whole dependencies in (36), we can also write

$$\begin{aligned} W_{3_E}^3 = W_{3_E}^3\left( q, \dot{q}, f_{11_z}, f_{12_z}, f_{21_z}, f_{22_z}, f_{xa}, f_{xb}, \delta \right) , \end{aligned}$$

and substituting (37) in (35) we finally obtain following the four expressions

$$\begin{aligned} f_{ij_z} = \widehat{f}_{ij_z}\left( q, \dot{q}, \ddot{q}, f_{11_z}, f_{12_z}, f_{21_z}, f_{22_z}, f_{xa}, f_{xb}, \delta \right) \end{aligned}$$

(one for each wheel).

The dependency of \(f_{ij_z}\) on \(\ddot{q}\), leads to an implicit dynamic equation (see line 7 of Step 3), due to the dependency of \(W_{3_E}^3\) on \(f_{ij_z}\). To cut open the resulting algebraic loop and restore the explicit form for the dynamic equations, in our implementation we introduce 7 algebraic variables as placeholders. These include the three non-zero component of \(W_{3_E}^3\), and the four components \(f_{ij_z}\). Accordingly, we implement (36) as three and (35) as four algebraic equations. Along with the six ODEs coming from line 7 of Step 3, they form a Differential Algebraic Equations (DAE) system which can be approached, within the MLTP formulation, by introducing algebraic equations as path equality constraints of the optimization problem (see Sect. 4).

4 Application to trajectory optimization

To showcase the validity of the proposed approach we set up a minimum-lap-time scenario implementing our dynamic model. The aim of the problem is to find the optimal trajectories for the inputs—and the resulting motion of the vehicle—that minimize the lap-time achieved on a given track.

In general, MLTP problems can be formulated on a time or spatial domain (see [22] and [23], respectively). The first approach parameterizes the position of the vehicle with respect to the ground-fixed reference frame, with time as the independent variable of the equations of motion. Instead, in the second approach, the vehicle position is described in terms of road coordinates, and the curvilinear parameter of the track centerline (here \(q_1\)) is employed as the independent variable. Since in our model the vehicle position and orientation are parameterized through the track coordinates (\(q_1\), \(q_2\) and \(q_3\)), the natural choice for us is to use the second approach. For this sake, the model equations obtained through the ABA algorithm have to be translated into the spatial domain.

Our dynamic model is characterized by the states \(x = [q_1,\, q_2,\, q_3,\, q_4,\, q_5,\, q_6,\, \dot{q}_1,\, \dot{q}_2,\, \dot{q}_3,\, \dot{q}_4,\, \dot{q}_5,\, \dot{q}_6]\), the control inputs \(u = [f_{xa},\, f_{xb},\, \delta ]\) and the algebraic variables \(z = [f_{11_z},\, f_{12_z},\, f_{21_z},\, f_{22_z},\, f_{3_x}^3,\, f_{3_y}^3,\, m_{3_z}^3]\). To obtain the spatial formulation for the model, we compute \(x_{,q_1} = \text {d}x/\text {d}q_{1}\), where \(q_1\) is the track curvilinear parameter defined in Sect. 2. Then, we can evaluate \(x_{,q_1}\) as follows

$$\begin{aligned} x_{,q_1}(q_1) = \dot{x}/\dot{q}_1 = F(x(q_1), u(q_1), z(q_1))/\dot{q}_1, \end{aligned}$$

where \(F(\cdot )\) is the dynamic vector field, computing the \(\ddot{q}_{i}\) components through the Articulated-Body Algorithm, and the system evolution is expressed as a function of \(q_1\) instead of t.

4.1 Formulation via direct collocation

Among the many techniques that can be employed to solve Optimal Control Problems (OCPs) [24], for this work we choose the direct collocation method. The peculiarity of this method is the discretization of the original OCP as a large (but sparse) Nonlinear Program (NLP). The generic form of the NLP resulting from this approach is

$$\begin{aligned}&\underset{x, v, u, z}{\textrm{minimize}}\hspace{10mm} \sum _{i = 0}^{N-1} l_{i}(x_i, v_i, u_i, z_i) + E(x_{N})\nonumber \\&\begin{aligned} \text {subject to}\hspace{10mm}&g(x_{i},x_{i+1}, v_i, u_{i}, z_{i}) = 0,\\&h(x_{i},u_{i},z_{i}) \le 0,\\&(i = 0, 1, \dots , N-1)\\ \end{aligned} \nonumber \\&\hspace{24mm} r(x_{N},u_{N-1},z_{N-1}) \le 0. \end{aligned}$$

Here, we can distinguish the controls \(u(q_1)\), the states \(x(q_1)\) and the algebraic variables \(z(q_1)\). These variables are discretized on a fixed space grid \(q_{1_i} = \Delta _q i\), (\(i = 0,\dots , N\)), with \(\Delta _q = q_{1_N}/N\), where \(q_{1_N}\) is the final value of the spline parameter and N is the number of mesh intervals. In agreement with the dimension of controls, states and algebraic vectors, we therefore have in our problem a number of \(u(q_{1_i}) = u_i \in \mathbb {R}^{3}\), \(x(q_{1_i}) = x_i \in \mathbb {R}^{12}\) and \(z(q_{1_i}) = z_i \in \mathbb {R}^{7}\) decision variables. With \(v_i\) we indicate the collocation states [25] located within the generic i-th interval.

The equality constraints \(g_i(\cdot )\) include the dynamic Eq. (39), and the path algebraic Eqs.  (35) and (36).

The inequality constraints \(h_i(\cdot )\) comprise all path constraints limiting states, controls, and algebraic parameters. Power limits, adherence constraints and bounds on the lateral displacement \(q_2\) (necessary to remain within the track bounds), are also included in this term.

The terminal constraint \(r(\cdot )\) is optional and can be included, for continuity purposes, to enforce a closed lap optimization.

Finally, the cost function is approximated in each interval by a quadrature formula. A typical stage cost \(l_i\) can be of the form

$$\begin{aligned} l_i = (\Delta _{q}/{\dot{q}}_{1_{i}} )^2 + K_\delta (\delta _{i+1} - \delta _{i}) + K_f({f_{xa_{i}}}{f_{xb_{i}}}), \end{aligned}$$

where the first term penalizes lap-time, and the last two penalizes abrupt variations of the steer angle and the input force. Instead, the last term is introduced, with its weight \(K_f\), as a relaxation for the complementary constraint \(f_{xa}f_{xb} = 0\). To prevent simultaneous traction and braking action, we introduce the complementary condition \(f_{xa}f_{xb} = 0\) as an additional path constraint.

The optimal control problem is coded in a scripting environment using the MATLAB interface to the open-source CasADi framework [26], which provides building blocks to efficiently formulate and solve large-scale optimization problems.

Fig. 4
figure 4

The two lines show the optimal trajectories for the proposed model and the one serving as validation. In this figure and the following ones, the most significant points of the track are addressed with numbers, to help visualize the behavior of the vehicle

Fig. 5
figure 5

This figure show the trajectory of the controls (thick line for multi-body model and thin one for reduced-order model). The solver strives to keep the input force as close as possible to the maximum value allowed by the power limit. To provide a validation curve for the steering input \(\delta\), we averaged the effective steering angles of the front wheels of the multibody model

Fig. 6
figure 6

Optimal profiles of the forward velocity, drift velocity, and yaw rate (thick lines for multi-body model and thin ones for reduced-order model). The agreement of the proposed solution with the validation curves is complete, proving the validity of our model

Fig. 7
figure 7

Optimal profiles of the pitch and roll angles (thick lines for multi-body model and thin ones for reduced-order model). In correspondence to corners, the proposed solution slightly deviates from the validation curves. This undesired behavior is to be ascribed to the simplified suspension model employed in our system, which fails accurately describe the different compliance offered by the four independent suspensions. Nevertheless, the overall evolution of the angles is correct and consistent with the gross motion of the vehicle during corners. For example, in correspondence of the three marked corners the pitch angle (\(q_5\)) increases when the vehicle is braking, while the roll angle (\(q_6\)) grows in the outward direction of the turn under the effect of the centrifugal acceleration

4.2 Numerical results

Table 1 The table lists the values of the main parameters of the Formula SAE car model employed in this study. For the notation we refer to [4]

Numerical results of the MLTP are obtained and discussed for a Formula SAE vehicle (whose data are reported in Table 1) on the Nürburgring Nordschleife circuit. We consider two cases: first, we run a simulation on a short segment of the track (\(\approx\) 2 km) to assess the validity of the proposed model against a more complex and reliable multi-body model; then, we compute the optimal trajectory on a full lap of the circuit (\(\approx\) 21 km) to demonstrate the efficiency of the proposed approach.

4.2.1 Model validation

To substantiate our results, we provide a comparison between the optimal solutions obtained using the proposed reduced-order model and a full multi-body model [15] that describes the dynamics of the vehicle’s bodies with greater accuracy. Both simulations are run under the same conditions and using the same Formula SAE vehicle as a reference. As test bench we choose a sector of the Nürburgring circuit that is sufficiently rich of corners and slopes to excite the relevant dynamics of the system.

Fig. 8
figure 8

Optimal trajectory of the controls on a full lap of the Nürburgring circuit. The blue line shows the total longitudinal force profile while the red line shows wheel steering angle

Fig. 9
figure 9

Optimal velocity profiles on a full lap of the Nürburgring circuit

An overview of the solutions is provided in Fig. 4. In Fig. 5, 6 and 7 we show and discuss the optimal trajectories of the controls, the velocities and the attitudes of the two models, depicting with thick and thin line the multi-body and the proposed reduced-order model solution, repsectively. The similarity between the two solutions is evident, and there is large agreement on almost every segment of the track. The optimal lap-times are also comparable, with the reduced-order model scoring a \(t_{\textrm{opt}} = 53.9\) s versus the \(t_{\textrm{opt}} = 54.3\) s achieved by the multi-body one.

The only noticeable difference in the behavior of the two models concerns the trajectory of their attitude. As it can be observed in Fig. 7, the pitch of the reduced-order model is more steady and less prone to variations. This behavior can be ascribed to the simplified model of suspensions we are employing in this model; in particular, the proposed approach fails to capture the different stiffness opposed by the front and rear axle to the roll motion, and the consequent variation of pitch angle that arises during cornering.

This slight inaccuracy, however, is greatly compensated in terms of computational complexity and efficiency. With the same number of discretization intervals \(N=400\), the NLP resulting from the full multi-body approach features a total number of \(N_{\textrm{opt}}=36000\) decision variables and is solved in \(t_{\textrm{calc}}=116.3\) s after 64 iterations; the proposed approach, on the other hand, leads to a NLP with \(N_{\textrm{opt}}=18000\) variables which we have been able to solve in \(t_{\textrm{calc}}=29.3\) s and 62 iterations.Footnote 3 Remarkably, the computation time required to find a solution is reduced by about a factor of four.

4.2.2 Full lap

We conclude our work with presenting an optimal solution computed on a full lap of the Nordschleife circuit. The full length of the track is 21.7 km and has been sampled in \(N=2000\) equispaced points. The resulting NLP features \(N_{\textrm{opt}}=90000\) variables; with our reduced-order approach, we managed to find a solution in \(t_{\textrm{calc}}=100.0\) s and 70 iterations, achieving an optimal lap-time of \(t_{\textrm{opt}}=531.7\) s. This is quite a remarkable result, especially if considering the huge extension of the track and the variety of effects included in our model.

The optimal trajectories of the controls and the speed profiles are reported in Figs. 8 and 9.

5 Conclusions

In this paper a reduced-order race car model is presented. The mathematical model is formulated using Lie group formalism and is devised as a serial kinematic chain, linked to a 3D track via a series of joints suitably defined for this purpose.

It is clearly shown how our framework gracefully merges with the Articulated-Body Algorithm and enables a fresh and systematic formulation of vehicle dynamics. A noteworthy contribution is the rigorous reconciliation of the ABA steps with the salient features of vehicle dynamics, such as the road-tire interaction, the nonlinear tire characteristics, the aerodynamic forces, and the longitudinal and lateral load transfers. The discussion highlights the need to introduce algebraic variables to encode the dynamics as a system of DAE.

To foster the validity of the proposed approach, we set up a Minimum-Lap-Time Planning problem based on our reduced-order model, where the algebraic equations are nicely embedded as path equality constraints. The problem is formulated via a direct collocation method and solved using the open-source CasADi suite.

To prove the accuracy of our modeling efforts, we provide a comparison with a more detailed vehicle model. Then we show the achieved advantage in terms of computational complexity by reporting a minimum-lap-time solution in a real-world scenario of a Formula SAE car on the Nürburgring Nordschleife circuit.

As a last remark, it is noteworthy to highlight that our framework facilitates the direct utilization of efficient and open-source rigid-body dynamics libraries, like [16], also in the domain of vehicle dynamics. Ultimately, we hope that this undertaking will inspire the development of computationally more efficient yet realistic models for use in the design and optimization of next-generation vehicles.