Skip to content

Kinematic Model

Kinematic model

The kinematic model is a simple vehicle model and assumes that both front and rear tires share a common center of rotation. This means that the kinematic model completely neglects lateral slip and can go around corners arbitrarily fast. This is a strong assumption to make, and if we use this model in a controller, we need to add additional constraints to prevent it from doing this. However, the model is quite simple and therefore a good starting point for model-based controllers. image

The model also has very few vehicle parameters, which is only the front length, the rear length, and the time constant for the drivetrain.

The drivetrain of the kinematic model is modeled as a first order system. The physical meaning of the “torque” that is applied to the model is actually the desired steady state velocity that we want it to converge to.

Model Equations

\[ \frac{d}{dt} \begin{bmatrix} x \\ y \\ \varphi \\ v \\ \end{bmatrix}_{body} = \begin{bmatrix} v \cdot \cos(\varphi + \beta) \\ v \cdot \sin(\varphi + \beta) \\ \dot{v \cdot \sin(\beta) \cdot \frac{1}{l_r}} \\ -\frac{1}{\tau} \cdot v + \frac{1}{\tau} \cdot u_{kin} \end{bmatrix} \]
\[ \begin{gathered} \beta = \text{atan2}(\text{tan}(\delta) \cdot l_r, l_f + l_r) \\ u_{kin} = a\cdot u_t + b \end{gathered} \]

Example Configuration

type: "kinematic_model"

# Q (process noise covariance matrix)
Q:
  value:
    [
      [0.01, 0, 0, 0 ],
      [0, 0.01, 0, 0],
      [0, 0, 0.01, 0],
      [0, 0, 0, 0.0001]
    ] 
  is_diag: false

model_params:
  # size params
  lr: 0.038
  lf: 0.052
  tau: 0.6 # time constant of first order approx

  a: 6.1
  b: 0.2