# Simple Understanding of Kinematic Bicycle Model

**Updates:**

Hi all, I have updated this blog in our website SHUFFLE. I modified some pictures to better illustrating the kinematic bicycle model. Also welcome to our website for more blogs about Self-driving cars, NLP, Computer Vision. All about AI. Me and my partner will post more blogs about AI in the future!

# 1. Introduction

2D bicycle model can be expressed as a simplified car model. This is a classic model that does very well at capturing vehicle motion in normal driving conditions.

The bicycle model weβll develop is called the front wheel steering model, as the front wheel orientation can be controlled relative to the heading of the vehicle. Our target is to compute state **[x, y, π, πΏ]**, π is heading angle, πΏ is steering angle. Our inputs are **[π£, π]**, π£ is velocity, π is steering rate.

To analyze the kinematics of the bicycle model, we must select a reference point X, Y on the vehicle which can be placed at the center of the rear axle, the center of the front axle, or at the center of gravity or cg.

# 2. Model Analysis

2.1 If the desired point is at the center of the **rear** axle.

First, apply the Instantaneous Center of Rotation ( ICR ).

Next, compute state change rate: [x_dot, y_dot, π_dot, πΏ_dot].

**x_dot = v * cos(π)**

**y_dot = v * sin(π)**

π_dot is equal to rotation rate π,

π = π£ / R, R is radius.

We must know how to compute the R. As the figure3 shows, L is the bicycle length, πΏ is steering angle, so R can be computed as:

R = L / tan(πΏ)

Now we can compute π_dot,

**π_dot = π£ / (L / tan(πΏ)) = π£ * tan(πΏ) / L**

πΏ_dot is equal to the input π (rate of change of steering angle).

**πΏ_dot = π**

2.2. If the desired point is at the center of the **front** axle.

As figure 5 shows, the desired point is in the center of front wheel. R can be computed as L / sin(πΏ). We can get the result of changing rate of x, y position.

**x_dot = v * cos(πΏ + π)**

**y_dot = v * sin(πΏ + π)**

**π_dot = v / R = v / (L/sin(πΏ)) = v * sin(πΏ)/L**

**πΏ_dot = π**

2.3. If the desired point is at the center of gravity or cg.

**x_dot = v * cos(π½ + π)**

**y_dot = v* sin(π½ + π)**

This model is a little complicated because we must compute R first in order to get π_dot. As shown in figure 6, we can first compute S.

S = L / tan(πΏ)

Then we can use S and π½ angle to compute R.

R = S / cos(π½) = L / (tan(πΏ) *cos(π½))

As we know R now, we can get π_dot as following:

**π_dot = v / R = v *tan(πΏ) *cos(π½) / L**

Furthermore, if we know the distance between the rear wheel and cg denoted as l_r, we can also compute the slip angle π½.

tan(π½) = l_r / S = l_r /(L / tan(πΏ)) = l_r * tan(πΏ) / L

So slip angle **π½ = arctan(l_r * tan(πΏ) / L)**

**πΏ_dot = π**

# 3. Summary

To recap, our model is the bicycle kinematic model as has been analyzed. States(outputs) are**[x, y, π, πΏ]. **Inputs are **[π£, π]**, π£ is velocity, π is steering rate. We can compute the changing rate of [x, y, π, πΏ]**, **which is **x_dot, y_dot, π_dot, πΏ_dot**. To get the final state **[x, y, π, πΏ], **we can use discrete time model.

**x_(t+1) = x_t + x_dot * βπ‘**

**y_(t+1) = y_t + y_dot * βπ‘**

**π_(t+1) = π_t + π_dot * βπ‘**

**πΏ_(t+1) = πΏ_t + πΏ_dot * βπ‘**