Direct Kinematics of Wheeled Platforms

Kinematics of Wheeled Platforms

The study of motion in wheeled robotic platforms. An analysis of the position, velocity, and acceleration of the platform and how it relates to the wheel setups. There are two major approaches to deriving the direct kinematics, an overview approach and a wheel by wheel approach.

Methods of Modeling Direct Kinematics

When deriving the direct (also referred to as forward) kinematics there are two major approaches. They two approaches are the frame of reference (or overview) approach. The second is the wheel type approach. Both approaches are commonly used, however, most books on robot kinematics use a wheel by wheel approach when setting up the direct kinematic equations for a wheeled platform.

An important note that affects both approaches is that only fixed wheels and steerable wheels have an impact on the robot chassis kinematics. Therefore only these two types of wheels require consideration when computing the robot's kinematic constraints.

Frame of Reference Approach

In simple cases $\dot \xi_{R} = R(\frac{\pi}{2})\dot \xi_{I}$ is sufficient to capture the direct kinematics of a mobile robot. It is important to note that:

  • subscript $I$ refers to the global reference frame
  • subscript $R$ refers to the robot's frame
  • $\xi_{I} = \left[ \begin{array}{c} x \\ y \\ \theta \end{array} \right]$

Next we look at mapping and realize that it is a function of the robot's pose in its current state and can be represented by the following orthogonal matrix:

\begin{align} R(\theta) = \left[ \begin{array}{ccc} cos\theta & sin\theta & 0\\ -sin\theta & cos\theta & 0\\ 0 & 0 & 1 \end{array} \right] \end{align}

This orthogonal matrix can then be used to map the motion in reference to the global frame. Then $\{X_{I}, Y_{I}\}$ can be mapped in terms of the robots frame (local frame) $\{X_{R},Y_{R}\}$. This mapping operation can be denoted by $R(\theta)\dot\xi_{I}$. [1][2]

Wheel Type Approach

It can be said that a robot has $N$ standard wheels where $N = N_{f} + N_{s}$. Where $N_{f}$ refers to fixed wheels and $N_{s}$ refers to steerable wheels. You can then denote the variable steering angles of all the $N_{s}$ wheels with $\beta _{s}(t)$. Another useful notation is the orientation of the fixed wheels, $N_{f}$, which is represented by $\beta _{f}$.

Both types of wheels, $N$ wheels, are subject to wheel spin. This means that the rotational position is a function of time. These positions are contained in an aggregate matrix, $\theta (t)$. The matrix is of the form:

\begin{align} \theta (t) = \left[ \begin{array}{c} \theta _{f}(t) \\ \theta _{s}(t) \end{array} \right] \end{align}

This matrix contains the positions of the fixed and steered wheels, $\theta _{f}(t)$ and $\theta _{s}(t)$ respectively.

Then you can combine all the rolling constraints into a single equation.

\begin{align} J_{1}(\beta _{s})R(\theta)\dot\xi _{I} + J_{2}\dot\theta = 0 \end{align}

It should be noted that this equation follows the constraint that all standard wheels must spin around their horizontal axis so that rolling occurs at the ground point.

$J_{2}$ is an $N$ x $N$ matrix that holds standard wheel radius values. It can then be said that [[$J_{1}(\beta _{s}) is a matrix containing projections for all wheels along the plane for each individual wheel. That matrix is:

\begin{align} J_{1}(\beta _{s} = \left[ \begin{array}{c} J_{1f}\\J_{1s}(\beta _{s}) \end{array} \right] \end{align}

Make not that $J_{1}(\beta -{s})$ is a function of $\beta _{s}$ and not $\beta _{f}$ because of the previously mention fact that the orientations are a function of time. Therefore, $J_{1f}$ is always a matrix of size $N_{f}$ x 3. Each row of the matrix contains the three terms in:

\begin{align} \left[\begin{array}{ccc} sin(\alpha + \beta) & -cos(\alpha + \beta) & (-l)cos(\beta \end{array} \right]R(\theta)\dot\xi _{I} - r\dot\phi = 0 \end{align}

At the same time, $J_{1}(\beta -{s})$ is always of the size $N_{s}$ x 3 where each term consists of the three terms in equation (5).

This same technique can be used on sliding constraints which give you the equation:

\begin{align} C_{1}(\beta _{s})R(\theta)\dot\xi _{I} = 0 \end{align}


\begin{align} C_{1}(\beta _{s}) = \left[ \begin{array}{c} C_{1f}\\C_{1s}(\beta _{s}) \end{array} \right] \end{align}

Similar to the rolling constraints $C_{1f}$ is a matrix of size $N_{f}$ x 3 and $C_{1}(\beta _{s}$ is of size $N_{s}$ x 3. The three terms in each matrix consist of the three terms in:

\begin{align} \left[ \begin{array}{ccc} cos(\alpha + \beta) & sin(\alpha + \beta) & lsin(\beta) \end{array} \right]R(\theta)\dot\xi _{I} = 0 \end{align}

Some say that the sliding constraints have the biggest impact on defining the overall chassis maneuverability.[1][2]

Wheeled Platform Types

There are many different setups of the fixed and steerable wheels. Following are three of the most popular, the differential drive, the tricycle, and the skid steering.

Differential Drive

Differential drive platforms are setup so that each of the driven wheels can rotate at different speeds and therefor allow for not only turning, but turning at variable speeds. These platforms have two wheels with diameter r and you can denote a point P centered between these two wheels where each wheel sis a distance l from P. We let $\phi_{1}$ and $\phi_{2}$ denote the spinning of the wheels. In order to predict overall speed of the robot in a global reference frame you would have:

$\dot{\xi}_{I} = \left[ \begin{array}{c} \dot{x} & \dot{y} & \dot{\theta} \end{array} \right] = f(l,r,\theta,\phi_{1},\phi_{2})$

we can manipulate this into the robot or local frame by rearranging $\dot{\xi}_{R}=R(\frac{\pi}{2})\dot{\xi}_{I}$ to solve for $\dot{\xi}_{I}$.

The first step in deriving the direct kinematic equations is to compute the contribution of each wheel in the robot reference frame. To do this you must assume that the robot reference frame is aligned so it moves forward with $+X_{R}$. A suggested approach is to first analyze the contribution from the wheels that are spinning compared to the translation speed at P. To do this you hold one wheel stationary while allowing the other to spin. This will give the robot a speed of


and in the same respect if you held the other wheel constant and let the first spin you would have


$\dot{x}_{R}$ can be calculated by adding both of the previous two equations and it will then become a component in $\dot{\xi}_{R}$. Because in a differential setup neither wheel may contribute to sideways motion $\dot{y}_{R}$ which is therefore equal to zero.

For $\dot{\theta}_{R}$ you can also add the contribution from wach wheel. Doing this you find that

$w_{1} = \frac{r\phi_{1}}{2l}$


$w_{2} = -\frac{r\phi_{2}}{2l}$

combining it all you get

$\dot{\xi}_{I} = R(\theta)^{-1}\left[ \begin{array}{c} -\frac{r\phi_{1}}{2}}+\frac{2\phi_{2}}{2} & 0 & \frac{r\phi_{1}}{2l}-\frac{r\phi_{2}}{2l} \end{array} \right]$

Another method of representing this can be as follows:

Wheels $\alpha$ $\beta$ l
1f 0 0 L
2f $\pi$ 0 L
3c $\frac{3\pi}{2}$ - L


$J_{1} = \left[ \begin{array}{c} J_{1f} & J_{1c}(\beta_{c}) \end{array} \right] = \left[ \begin{array}{ccc} 0 & 1 & L & 0 & -1 & L & cos\beta_{c} & sin\beta_{c} & Lcos\beta_{c} \end{array} \right]$

$J_{2} = \left[ \begin{array}{ccc} r&0&0&0&r&0&0&0&r \end{array} \right]$


$C_{1} = \left[ \begin{array}{c} C_{1f} & C_{1c}(\beta_{c}) \end{array} \right]$


Type (2,0)

A differential wheeled platform is considered a type (2,0) robot because of its mobility rating. It has a mobility of two, the equation looks like this:


This setup has no steering wheels and has one or several fixed wheels on a single common axle. The mobility is restricted in the sense that, for any trajectory the velocity is constrained to the 2-dimensional distribution.[1]

Canfield Example


This is a simpler platform than the differential system. All wheels about a point called the center of curvature, which is the intersection of the common axes. The equations for tricycle are derived in the same manner as the differential steer robot and have and end form of

Wheels $\alpha$ $\beta$ l
1f 0 0 L
2f $\pi$ 0 L
3s $\frac{3\pi}{2}$ - L


$J_{1} = \left[ \begin{array}{c} J_{1f} & J_{1s}(\beta_{s}) \end{array} \right] = \left[ \begin{array}{ccc} 0 & 1 & L & 0 & -1 & L & cos\beta_{s} & sin\beta_{s} & Lcos\beta_{s} \end{array} \right]$

$J_{2} = \left[ \begin{array}{ccc} r&0&0&0&r&0&0&0&r \end{array} \right]$


$C_{1} = \left[ \begin{array}{c} C_{1f} & C_{1s}(\beta_{s}) \end{array} \right] = \left[ \begin{array}{ccc} 1&0&0&-1&0&0&sin\beta_{s}&-cos\beta_{s}&Lsin\beta_{s} \end{array} \right]$


Type (1,1)

A tricycle platform is considered a type (1,1) robot because of its mobility rating. It has a mobility of two, the equation looks like this:


This setup has one or more fixed wheels with a single common axle and one or more steering wheels with the condition that the center of one steering wheel is not located on the axle of the fixed wheels. If this condition was not met the structure would be singular. The velocity is constrained to belong to a 1-dimensional distribution parameterized by the orientation angle of one arbitrarily chosen steering wheel.[1]

Canfield Example

Skid Steer

Perhaps the biggest difference between skid steering and the previous setups is that you can no longer make the assumption that slip does not occur. Typically this assumption can be made because each tread's contact is limited to a single point. Whereas, on a skid steer, the contact occurs within an entire patch.

The origin of the local frame should be centered within the left and right contat surfaces, with its Y axis aligned towards the forward motion. Now, once we realize that the vehicle is controlled by two inputs, the linear velocity of the left and right treads, we can state the direct kinematics as the following:

$\left( \begin{array}{c} \nu_{x} & \nu_{y} & \omega_{z} \end{array} \right)=f_{d}\left( \begin{array}{c} V_{l} & V_{r} \end{array} \right)$


$\nu = (\nu_{x},\nu_{y})$

is the vehicle's translational velocity with respect to its local frame, and


is its angular velocity.

Next its important to look at the instantaneous centers of rotation. A typical platform has a single ICR, whereas a skid steer platform had three. One for the vehicle itself, and one for both the right and left treads. An illustrated layout can be found below:

ICRs.jpg [5]

We can now derive the geometrical relationships between the ICRs and the rotational velocities. They are as follows:





Notice that there are correction factors


that affect the tread speeds and account for mechanical issuses such as belts, pulleys, tire, tire inflation, etc.

We can now go back and simplfy our first equation to reflect the ICR equations to get the following:

$\left( \begin{array}{c} \nu_{x} &\nu_{y} & \omega_{z} \end{array} \right)=A\left( \begin{array}{c} V_{l} & V_{r} \end{array} \right)$


$A=\frac{1}{x_{ICR_{r}}-x_{ICR_{l}}} \left[ \begin{array}{cc} -y_{ICR_{\nu}}\alpha_{l} & y_{ICR_{\nu}}\alpha_{r} & x_{ICR_{r}}\alpha_{l} & -x_{ICR_{l}}\alpha_{r} & -\alpha_{l} & \alpha_{r} \end{array} \right]$ [5]


3. Canfield, Stephen. Lecture notes: “Mobile Robot Kinematics -A Primer- * So Easy an ECE Could Do It*”
4. Spong, Robot Modeling and Control.
5. Mandow,"Experimental kinematics for wheeled skid-steer mobile robots"

External Links

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License