
Left wheel, right wheel
Differential drive
Teaching this? Open projector mode
The simplest steering machine has two driven wheels, one on each side, and no steering wheel at all. It turns by spinning the wheels at different speeds. This is differential drive, and it is used by robot vacuums, many school robots, and countless lab robots. (A small caster ball or skid at the back or front keeps the body level; it just rolls along.)
Let the left wheel move forward at speed v_L and the right wheel at speed v_R, both in metres per second measured at the point where the wheel touches the floor. Let L be the distance between the wheels, the track width, in metres.
Two formulas describe everything.
v = (v_R + v_L) / 2 is the forward speed of the robot's centre: the average of the two wheels.
ω = (v_R − v_L) / L is how fast the robot turns, in radians per second (counter-clockwise is positive, so a faster right wheel turns the robot to the left). The bigger the speed difference, and the narrower the robot, the faster it spins.
Worked example. Take L = 0.20 m, v_L = 0.20 m/s and v_R = 0.30 m/s.
- v = (0.30 + 0.20) / 2 = 0.25 m/s
- ω = (0.30 − 0.20) / 0.20 = 0.5 rad/s
Half a radian per second is about 29 degrees per second, a gentle left curve. (One radian is about 57.3 degrees.)
Reading the formulas.
- Equal speeds, v_L = v_R: the difference is zero, so ω = 0 and the robot drives straight.
- Different speeds: ω is not zero, so the robot turns towards the slower wheel. If the right wheel is faster, the robot curves left; if the left is faster, it curves right.
- Opposite speeds, v_R = −v_L: v = 0, the centre does not move forward, and the robot spins on the spot.
Check yourself with a second example. L = 0.20 m, v_R = 0.40 m/s, v_L = 0.20 m/s gives ω = (0.40 − 0.20) / 0.20 = 1 rad/s, and v = 0.30 m/s. The right wheel is faster, so the robot curves to the left.
The wheel speeds are what the controller chooses; v and ω are what the robot does. A programmer who wants a certain v and ω turns the formulas around: v_R = v + ωL/2 and v_L = v − ωL/2.
If v_L equals v_R, what is ω?
A robot has L = 0.2 m, v_R = 0.4 m/s and v_L = 0.2 m/s. What is ω?
The right wheel runs faster than the left wheel. Which way does the robot curve?