# Mobile Robot Kinematics Equations

Learn details about mobile robot kinematics equations including unicycle, bicycle, differential drive, and Ackermann models. This topic covers the variables and specific equations for each motion model . For an example that simulates the different mobile robots using these models, see Simulate Different Kinematic Models for Mobile Robots.

### Variable Overview

The robot state is represented as a three-element vector: [$x$ $y$ $\theta$].

For a given robot state:

• $x$: Global vehicle x-position in meters

• $y$: Global vehicle y-position in meters

• $\theta$: Global vehicle heading in radians

For Ackermann kinematics, the state also includes steering angle:

• $\psi$: Vehicle steering angle in radians

The unicycle, bicycle, and differential drive models share a genrealized control input, which accepts the following:

• $v$: Vehicle speed in meters/s

• $\omega$: Vehicle angular velocity in radians/s

Other variables represented in the kinematics equations are:

• $r$: Wheel radius in meters

• $\underset{}{\overset{˙}{\varphi }}$: Wheel speed in radians/s

• $d$: Track width in meters

• $l$: Wheel base in meters

• $\psi$: Vehicle steering angle in radians

### Unicycle Kinematics

The unicycle kinematics equations model a single rolling wheel that pivots about a central axis using the `unicycleKinematics` object. The unicycle model state is [$x$ $y$ $\theta$].

Variables

• $x$: Global vehicle x-position in meters

• $y$: Global vehicle y-position in meters

• $\theta$: Global vehicle heading in radians

• $\underset{}{\overset{˙}{\varphi }}$: Wheel speed in meters/s

• $r$: Wheel radius in meters

• $v$: Vehicle speed in meters/s

• $\omega$: Vehicle heading angular velocity in radians/s

Kinematic Equations

Depending on the `VehicleInputs` name-value argument, you can input only wheel speeds or the vehicle speed and heading rate. This change in input affects the equations.

Wheel Speed Equation

`$\left[\begin{array}{c}\underset{}{\overset{˙}{x}}\\ \underset{}{\overset{˙}{y}}\\ \underset{}{\overset{˙}{\theta }}\end{array}\right]=\left[\begin{array}{cc}r\mathrm{cos}\left(\theta \right)& 0\\ r\mathrm{sin}\left(\theta \right)& 0\\ 0& 1\end{array}\right]\left[\begin{array}{c}\underset{}{\overset{˙}{\varphi }}\\ \omega \end{array}\right]$`

Vehicle Speed and Heading Rate Equation (Generalized)

When the generalized inputs are given as the speed $v=r\underset{}{\overset{˙}{\varphi }}$ and vehicle heading angular velocity $\omega$, the equation simplifies to:

`$\left[\begin{array}{c}\underset{}{\overset{˙}{x}}\\ \underset{}{\overset{˙}{y}}\\ \underset{}{\overset{˙}{\theta }}\end{array}\right]=\left[\begin{array}{cc}\mathrm{cos}\left(\theta \right)& 0\\ \mathrm{sin}\left(\theta \right)& 0\\ 0& 1\end{array}\right]\left[\begin{array}{c}v\\ \omega \end{array}\right]$`

### Bicycle Kinematics

The bicycle kinematics equations model a car-like vehicle that accepts the front steering angle as a control input using the `bicycleKinematics` object. The bicycle model state is [$x$ $y$ $\theta$].

Variables

• $x$: Global vehicle x-position in meters

• $y$: Global vehicle y-position in meters

• $\theta$: Global vehicle heading in radians

• $l$: Wheel base, in meters

• $\psi$: Vehicle steering angle in radians

• $v$: Vehicle speed in meters/s

• $\omega$: Vehicle heading angular velocity in radians/s

Kinematic Equations

Depending on the `VehicleInputs` name-value argument, you can input the vehicle speed as either the steering angle or heading rate. This change in input affects the equations.

Steering Angle Equation

`$\left[\begin{array}{c}\underset{}{\overset{˙}{x}}\\ \underset{}{\overset{˙}{y}}\\ \underset{}{\overset{˙}{\theta }}\end{array}\right]=\left[\begin{array}{c}v\mathrm{cos}\left(\theta \right)\\ v\mathrm{sin}\left(\theta \right)\\ \frac{v}{l}\mathrm{tan}\left(\psi \right)\end{array}\right]\left[\begin{array}{c}v\\ \omega \end{array}\right]$`

Vehicle Speed and Heading Rate Equation (Generalized)

In this generalized format, the heading rate $\omega$ can be related to the steering angle $\psi$ with the relation $\omega =\frac{v}{l}\mathrm{tan}\psi$. Then, the ODE simplifies to:

`$\left[\begin{array}{c}\underset{}{\overset{˙}{x}}\\ \underset{}{\overset{˙}{y}}\\ \underset{}{\overset{˙}{\theta }}\end{array}\right]=\left[\begin{array}{cc}\mathrm{cos}\left(\theta \right)& 0\\ \mathrm{sin}\left(\theta \right)& 0\\ 0& 1\end{array}\right]\left[\begin{array}{c}v\\ \omega \end{array}\right]$`

### Differential Drive Kinematics

The differential drive kinematics equations model a vehicle where the wheels on the left and right may spin independently using the `differentialDriveKinematics` object. The differential drive model state is [$x$ $y$ $\theta$].

Variables

• $x$: Global vehicle x-position, in meters

• $y$: Global vehicle y-position, in meters

• $\theta$: Global vehicle heading, in radians

• ${\underset{}{\overset{˙}{\varphi }}}_{L}$: Left wheel speed in meters/s

• ${\underset{}{\overset{˙}{\varphi }}}_{R}$: Right wheel speed in meters/s

• $r$: Wheel radius in meters

• $d$: Track width in meters

• $v$: Vehicle speed in meters/s

• $\omega$: Vehicle heading angular velocity in radians/s

Kinematic Equations

Depending on the `VehicleInputs` name-value argument, you can input the wheel speed as either the steering angle or heading rate. This change in input affects the equations.

Wheel Speed Equation

`$\left[\begin{array}{c}\underset{}{\overset{˙}{x}}\\ \underset{}{\overset{˙}{y}}\\ \underset{}{\overset{˙}{\theta }}\end{array}\right]=\left[\begin{array}{cc}\frac{r}{2}\mathrm{cos}\left(\theta \right)& \frac{r}{2}\mathrm{cos}\left(\theta \right)\\ \frac{r}{2}\mathrm{sin}\left(\theta \right)& \frac{r}{2}\mathrm{sin}\left(\theta \right)\\ -r/2d& r/2d\end{array}\right]\left[\begin{array}{c}{\underset{}{\overset{˙}{\varphi }}}_{L}\\ {\underset{}{\overset{˙}{\varphi }}}_{R}\end{array}\right]$`

Vehicle Speed and Heading Rate Equation (Generalized)

In the generalized format, the inputs are given as the speed $v=\frac{r}{2}\left({\underset{}{\overset{˙}{\varphi }}}_{R}+{\underset{}{\overset{˙}{\varphi }}}_{L}\right)$ and vehicle heading angular velocity $\omega =\frac{r}{2d}\left({\underset{}{\overset{˙}{\varphi }}}_{R}-{\underset{}{\overset{˙}{\varphi }}}_{L}\right)$. The ODE simplifies to:

`$\left[\begin{array}{c}\underset{}{\overset{˙}{x}}\\ \underset{}{\overset{˙}{y}}\\ \underset{}{\overset{˙}{\theta }}\end{array}\right]=\left[\begin{array}{cc}\mathrm{cos}\left(\theta \right)& 0\\ \mathrm{sin}\left(\theta \right)& 0\\ 0& 1\end{array}\right]\left[\begin{array}{c}v\\ \omega \end{array}\right]$`

### Ackermann Kinematics

The Ackermann kinematic equations model a car-like vehicle model with an Ackermann-steering mechanism using the `ackermannKinematics` object. The equation adjusts the position of the axle tires based on the track width so that the tires follow concentric circles. Mathematically, this means that the input has to be the steering heading angular velocity $\underset{}{\overset{˙}{\psi }}$, and there is no generalized format. The differential drive model state is [$x$ $y$ $\theta$ $\psi$].

Variables

• $x$: Global vehicle x-position in meters

• $y$: Global vehicle y-position in meters

• $\theta$: Global vehicle heading in radians

• $\psi$: Vehicle steering angle in radians

• $l$: Wheel base in meters

• $v$: Vehicle speed in meters/s

Kinematic Equations

For the Ackermann kinematics model, the ODE is:

`$\left[\begin{array}{c}\underset{}{\overset{˙}{x}}\\ \underset{}{\overset{˙}{y}}\\ \underset{}{\overset{˙}{\theta }}\\ \underset{}{\overset{˙}{\psi }}\end{array}\right]=\left[\begin{array}{cc}\mathrm{cos}\left(\theta \right)& 0\\ \mathrm{sin}\left(\theta \right)& 0\\ \mathrm{tan}\left(\psi \right)/l& 0\\ 0& 1\end{array}\right]\left[\begin{array}{c}v\\ \underset{}{\overset{˙}{\psi }}\end{array}\right]$`

### References

 Lynch, Kevin M., and Frank C. Park. Modern Robotics: Mechanics, Planning, and Control. Cambridge University Press, 2017.

For an example the simulates the different mobile robot using these models, see Simulate Different Kinematic Models for Mobile Robots.