CSCE 452/752 Robotics and Spatial Intelligence, Fall 2025

5. Differential drive locomotion

Wheeled locomotion

Probably the most common form of robot locomotion is terrestrial locomotion using wheels.
Key ideas today:

Types of wheels

Drive wheels are powered by an actuator, using friction against the ground to move the robot.
Steered wheels are powered to rotate relative to the ground, to influence the direction the robot moves.
Passive wheels are neither driven nor steered, but can contribute to the robot's stability.
the bottom of a robot vacuum cleaner
a Toyota Camry
Depending on the design, drive wheels may or may not be able to be controlled independently.
Some wheels may be both driven and steered.

Differential drive

Definition
A differential drive robot has two independent non-steered drive wheels along a common axis.
illustration of the notation for differential drive locomotion
Notation:
  • $R$: signed distance from center of robot to ICC.
  • $\ell$: distance between the wheels
  • $v_l$: linear velocity of left wheel
  • $v_r$: linear velocity of right wheel
  • $\omega$: angular velocity of rotation around ICC

States and actions for diff drive

States: Position and orientation: \[ (x,y,\theta) \]
Actions: Wheel velocities: \[ (v_l, v_r) \]
Time: Discrete, explicit. Each time step lasts $\Delta t$.

Diff drive state transitions

How do such actions change the state?
Main idea of differential drive motion
The robot moves with a constant angular velocity around a point called the instantaneous center of curvature.
So to understand the robot's motion, we need to compute:
  • the ICC, and
  • the angular velocity of the rotation about the ICC.
Remember: All wheels rotate around the ICC with the same angular velocity.
Use definition of angular velocity: \[ \omega = \frac{v_r}{R+\frac{l}{2}} = \frac{v_l}{R-\frac{l}{2}} \] Then solve (assuming for now $v_r \ne v_l$) for $R$ and $\omega$: \[ R = \left(\frac{l}{2}\right) \frac{v_r + v_l}{v_r - v_l} \] \[ \omega = \frac{v_r - v_l}{l} \]

Updating the state

Starting at state $(x_k,y_k,\theta_k)$ and executing action $(v_l, v_r)$.
What is the new state $(x_{k+1}, y_{k+1}, \theta_{k+1})$?
Location of ICC: \[ c = [x - R\sin(\theta), y + R\cos(\theta)] \] New state: \[ \left[ \begin{matrix} x_{k+1} \\ y_{k+1} \\ \theta_{k+1} \end{matrix} \right] = \left[\begin{matrix} \cos (\omega \Delta t) & -\sin(\omega \Delta t) & 0 \\ \sin (\omega \Delta t) & \cos(\omega \Delta t) & 0 \\ 0 & 0 & 1 \end{matrix}\right] \left[\begin{matrix} x - c_x \\ y - c_y \\ \theta \end{matrix}\right] + \left[\begin{matrix} c_x \\ c_y \\ \omega \Delta t \end{matrix}\right] \]

Diff drive special cases

There are two important special cases:
differential drive robots moving straight ahead and rotating in place

Navigating with a differential drive

A diff drive is nonholonomic system because it cannot move directly sideways.
Thus, navigating to a given goal state may require a series of actions.
One simple solution:
  1. Rotate in place until the robot is facing its destination.
  2. Move forward to the destination.
  3. Rotate to the correct orientation.