Autonomous Ground Vehicle Drifting

My knowledge of this topic mostly comes from interview prepping with an autonomous car research lab that I ultimately passed over, though I wish I was involved with the research itself.

I’ll start with the vehicle dynamics involved, phase portrait analysis of the nonlinear system, and then talk a little bit about control methodologies.

Vehicle Dynamics

The simplest vehicle model that is widely employed with autonomous vehicles is the well known bicycle model, as this captures the majority of the dynamics that are relevant to vehicles that do not exhibit large pitch and roll dynamics.

The traditional two state bicycle model consists of the dynamic equations for the sideslip angle, \beta, which is the ratio of the lateral to longitudinal velocities, and the yaw rate, r, with system inputs of longitudinal rear tire force, F_{xr} and steering angle, \delta.

Figure 1. Two State Bicycle Model

In order to relate the front tire lateral force, F_{yf} to the steering angle, \delta, we need to employ a tire model that establishes a mapping between these two quantities. In the literature from Chris Gerdes lab at Stanford, this model is typically a modified Fiala Tire Brush model.

\begin{aligned}   1) \displaystyle \qquad F_y = \begin{cases}   -C_{\alpha}z + \frac{C^2_{\alpha}}{3\xi \mu F_z} |z| z - \frac{C^3_{\alpha}}{27 \xi^2 \mu^2 F^2_z}z^3 & if |z| \leq \alpha_{sl} \\ -\xi \mu F_z sgn({\alpha})  & if |z| > \alpha_{sl}\\ \end{cases}   \end{aligned}  

and

\begin{aligned}  2) \displaystyle \qquad z &= tan( \alpha ) \\ \alpha_{sl} &= arctan \left (3 \xi \mu     \frac{F_z}     {C_{\alpha}} \right ) \ \end{aligned} 

By adding an additional state of lateral velocity, and augmenting the tire model to account for longitudinal force by using the well known friction circle relationship, we are able to derive the modified three state bicycle model that is used with autonomous drifting.

\begin{aligned}  3) \displaystyle \qquad \dot{\beta} &=    \frac{F_{yf} + F_{yr}}{m U_x}-r \\   \dot{r} &= \frac{a F_{yf} - b F_{yr}}{I_z} \\    \dot{U_x} &= \frac{F_{xr} - F_{yf} sin ( \delta    )}{m} + r U_x \beta   \end{aligned} 
Figure 2. Three State Bicycle Model

Now, we come across a pretty enlightening thing when we look at two dimensional cross sections of this dynamical system as a phase portrait of r vs \beta .

Lets look at the nominal case of a 0 degree steering angle (\delta = 0) and a fixed velocity of 8 m/s.

Figure 3. Phase portrait of yaw rate vs sideslip angle for 0 degree steering angle

What the above phase portrait tells us is that we have a stable equilibrium point at the origin and two unstable equilibrium points at (-12.5, 0.6) and (12.5, -0.6). Intuitively, this makes sense, as the node at the origin is the case where we are driving in a straight line: the vehicle is not yawing and there is no sideslip. It is easily seen that the equilibrium point at the origin is a stable node due to all nearby trajectories being attracted to it. The two remaining equilibrium points are unstable saddle points corresponding to a left handed drift when the sideslip is negative and a right handed drift when the sideslip angle is positive. In both of these cases, the objective of control law design for a drifting autonomous ground vehicle is evident: it is to stabilize the unstable saddle points.

Let’s proceeding by sectioning the three state system at different steering angles: this time, let’s look at a steering angle of \delta = 5 deg.

Figure 4. Phase portrait of yaw rate vs sideslip for a steering angle of -5 degrees.

In figure 3, we see that as the steering angle is changed, so too is the position of the equilibrium points. The stable node is shifted downwards, as this coincides with a steady state right hand turn, while the two unstable saddle points shift to the left. This shifting of equilibrium points indicates that our region of attraction in the third quadrant is getting much smaller; this is due to the front tires getting closer and closer to the friction limit.

When we continue to increase our steering angle we see what is one thing that makes nonlinear systems so tricky: a bifurcation. At this steering angle, the stable node and the unstable saddle point collide and annihilate each other, leaving a sole unstable equilibrium point. This bifurcation effectively illustrates the case when the steering angle is increased until the front tires become friction limited and break lose, causing the vehicle to spin out.

Figure 5. Saddle Node Bifurcation

Controller Design

Now, as I stated above, I wasn’t involved in any of this research, and therefore have not implemented any of these controllers, but I can attest to the model derivations, as I’m intimately familiar with them.

Now then, let’s get down to business (to defeat, the huns!)

Voser, Hindiyeh and Gerdes used a cascaded longitudinal controller and steering controller architecture around a reference steering angle of -15 degrees.

The longitudinal control law is a simple SISO proportional controller:

\begin{aligned}  4) \displaystyle \qquad U_{mot} &= K_{vx} \Delta V_x \\ \Delta V_x &= v_x - v^{des}_x \end{aligned} 

The steering control law is a two state, state space representation of the linearized bicycle model about the desired drift equilibrium (v^{eq}_y , r^{eq}). The choice of feeding back the longitudinal velocity is done in order to decouple the steering and longitudinal controllers, as selecting the sideslip angle, \beta would keep these dynamics coupled.

With this in mind the steering controller is designed as:

\begin{aligned}   5) \displaystyle \qquad \delta = \delta^{eq} + \Delta\delta = \delta^{eq} - K_{vy}\Delta v_y - K_r \Delta r  \end{aligned}  

Putting this in state space form we obtain:

\begin{aligned}   6) \displaystyle \qquad \dot{x} = Ax + Bu  \end{aligned}  

Where the state vector is x = \left [ \Delta v_y, \Delta r \right]^T and the control input scalar is u = \Delta\delta.

Upon defining the gain matrix K as K = \left [ K_{vy}, K_r \right ], it is easily shown that closed-loop stability of the system is achieved when the eigenvalues of A – BK have negative real part (remember back to your linear systems class where the closed loop state space representation is \dot{x} = (A-BK)x). With this in mind, the stable gain subspace is defined by equation 7, which will come in an upcoming update : ) .

Leave a Reply

Your email address will not be published. Required fields are marked *