ALearning Material
A mobile robot moves through its environment, and how it moves depends on its drive type. The arrangement of wheels or legs that turns motor commands into motion. The most common (and the one most teaching/research robots use) is the differential drive: two independently driven wheels. This lesson surveys the main mobile-robot types and then derives differential-drive kinematics (the math that turns wheel speeds into the robot's forward speed and turning rate) the bridge between the motors you command and the motion you get.
The main drive types trade off simplicity, manoeuvrability, and where they can go. Differential drive (two independently-driven wheels, plus a caster for balance) turns by driving the wheels at different speeds. Dead simple and very manoeuvrable (it can spin in place), which is why it dominates indoor and educational robots. Ackermann steering (car-like: driven wheels + steered front wheels) suits fast/outdoor vehicles but can't spin in place and has a minimum turning radius. Omnidirectional robots (special wheels) can move in any direction including sideways, very manoeuvrable but mechanically complex. Legged robots handle rough terrain/stairs but are complex to control. Then the core math: for a differential drive, the left and right wheel velocities determine the robot's linear velocity v (how fast it goes forward) and angular velocity omega (how fast it turns), and that relationship is differential-drive kinematics.
Differential drive: two wheel speeds set the robot's forward speed and turn rate:
MOBILE ROBOT TYPES (drive types):
- DIFFERENTIAL DRIVE: 2 independent wheels (+caster) - turn by speed difference; can spin in place; SIMPLE (most common)
- ACKERMANN (car-like): steered front wheels - fast/outdoor; CANNOT spin in place; minimum turning radius
- OMNIDIRECTIONAL: special wheels - move ANY direction (incl. sideways); very manoeuvrable; complex
- LEGGED: legs - rough terrain/stairs; complex to control
DIFFERENTIAL-DRIVE KINEMATICS (wheel velocities -> robot motion), wheels speed vL, vR, separation L:
LINEAR velocity v = (vR + vL) / 2 (forward speed - average of the wheels)
ANGULAR velocity omega = (vR - vL) / L (turn rate - difference over the wheel separation)
- both wheels equal -> straight; opposite -> spin in place (v=0); one faster -> arc
- TURNING RADIUS R = v / omega (how tight the arc; infinite = straight, 0 = spin in place)
The disciplines. Pick a drive type for the job (differential for simple/manoeuvrable indoor robots; Ackermann for car-like; omnidirectional for sideways motion; legged for terrain). For a differential drive, the linear velocity v = (vR + vL)/2 (the average of the wheel speeds: the forward motion) and the angular velocity omega = (vR: vL)/L (the difference over the wheel separation L: the turning). So equal wheel speeds drive straight, opposite speeds spin in place (v = 0), and unequal speeds trace an arc of turning radius R = v/omega. This is the forward kinematics of the base: given wheel speeds, find the robot's motion (and inverting it gives the wheel speeds for a desired v and omega). The habit: think of commanded motion as (v, omega) and translate to/from wheel speeds: the link between motors and movement.
Why it exists. A mobile robot's controller wants to command intuitive motion: 'go forward at this speed, turn at this rate' (v and omega), but the hardware only accepts wheel speeds. Differential-drive kinematics is the precise relationship between the two, so you can translate a desired motion into wheel commands (and interpret wheel motion as robot motion for odometry). Without it you couldn't connect the control/planning layers (which think in v and omega) to the motors, which is why it's a foundational piece, used by control, odometry, and simulation alike.
Mental model. A differential-drive robot steers exactly like a tank or a wheelchair: it has a wheel on each side, and you steer by spinning the two sides at different speeds. Both sides the same speed (it goes straight; the right side faster than the left) it curves left; one side forward and the other backward. It spins on the spot. There's no steering wheel; the difference in the two wheel speeds is the steering, and the average of the two speeds is how fast it's going. That single idea (average gives forward speed, difference gives turn rate) is the whole of differential-drive kinematics.
Common misunderstandings.
- "A robot can just move in any direction it likes." Most ground robots are nonholonomic. A differential drive can't move sideways (it can only go along the way it's facing and turn); it must turn to face a direction before driving there. (Only omnidirectional robots can translate sideways.) This constraint shapes how they must be controlled and planned for.
- "Forward speed and turning are controlled separately." For a differential drive both come from the same two wheel speeds: forward speed is their average, turn rate is their difference. You don't set them independently of the wheels: you set wheel speeds (or, equivalently, command v and omega and convert).
- "Turning radius is fixed by the robot." The turning radius R = v/omega depends on the commanded v and omega: large v with small omega is a gentle wide arc, small v with large omega is a tight turn, omega = 0 is straight (infinite radius), and v = 0 with omega != 0 is spinning in place (zero radius). It's set by how you drive the wheels, not a fixed property.
Connections. This is the kinematic bridge under the whole stack: it's the math behind the C++ differential-drive project and the simulated robot in Gazebo; the control layer of the autonomy stack (the autonomy-stack lesson) commands v and omega which this converts to wheel speeds; odometry (next lesson) runs it backwards. Reading wheel motion to estimate how the robot moved; and 'translate between intuitive motion and actuator commands' is the same forward/inverse-kinematics idea that returns for manipulators in Turn 2. Differential-drive kinematics is where motors meet motion.
BImmediate Active Recall
QUERYWhat are the main mobile-robot drive types, and what are their trade-offs?
REVEAL
Differential drive. Two independently-driven wheels (plus a caster); turns by a speed difference; simple and very manoeuvrable (can spin in place), the most common (indoor/educational). Ackermann (car-like). Driven wheels + steered front wheels; good for fast/outdoor, but can't spin in place and has a minimum turning radius. Omnidirectional. Special wheels that let it move in any direction (including sideways); very manoeuvrable but mechanically complex. Legged. Handles rough terrain/stairs but is complex to control. The trade-off is broadly simplicity vs manoeuvrability vs terrain capability. Differential drive wins on simplicity, which is why it dominates teaching/indoor robots.
QUERYFor a differential drive, how do the wheel velocities give the robot's linear and angular velocity?
REVEAL
With left/right wheel speeds vL and vR and wheel separation L: the linear velocity v = (vR + vL)/2 (the average of the two wheel speeds, the forward motion) and the angular velocity omega = (vR: vL)/L (the difference of the wheel speeds over the separation L, the turning rate). So the average of the wheels is how fast it goes forward, and the difference is how fast it turns. Both wheels equal -> straight (omega = 0); wheels opposite -> spin in place (v = 0); unequal -> an arc.
QUERYWhat is the turning radius, and what do the special cases look like?
REVEAL
The turning radius R = v/omega, how tight the arc the robot traces. Special cases: omega = 0 (equal wheels) -> straight (infinite radius); v = 0 with omega != 0 (equal-and-opposite wheels) -> spin in place (zero radius); large v, small omega -> a gentle, wide arc; small v, large omega -> a tight turn. So the radius isn't a fixed property of the robot. It's set by the commanded v and omega (i.e. by how you drive the two wheels).
QUERYWhat is the forward kinematics of the base, and why translate between (v, omega) and wheel speeds?
REVEAL
The forward kinematics of the base is: given the wheel speeds, find the robot's motion (v and omega) via v = (vR + vL)/2 and omega = (vR: vL)/L. You translate between (v, omega) and wheel speeds because the control/planning layers think in intuitive motion ('go forward at v, turn at omega') while the hardware only accepts wheel speeds, so you invert the kinematics to turn a desired (v, omega) into wheel commands (and run it forward to interpret wheel motion as robot motion, e.g. for odometry). It's the bridge connecting the motion you want to the motors that produce it.
CConceptual Questions
Answer each in your own words in the box, then reveal the model answer to compare. These ask why, not how, and your answers are saved.
Why is the differential drive so common, and what does its nonholonomic constraint (it can't move sideways) mean for how such a robot must be controlled and planned for?
REVEAL MODEL ANSWER
The differential drive is so common because it achieves excellent mobility with remarkable mechanical and control simplicity. It's the cheapest, simplest arrangement that still gives a ground robot full planar manoeuvrability (the ability to reach any position and orientation in a flat space). Mechanically it's just two independently-driven wheels (typically with a passive caster for balance) (no steering linkage, no complex mechanism) so it's inexpensive, robust, and easy to build. Yet it's highly manoeuvrable: by driving the two wheels at different speeds it can go straight, follow arcs of any radius, and even spin in place (zero turning radius), which car-like (Ackermann) robots cannot do. And its kinematics are simple: forward speed is the average of the wheel speeds and turn rate is their difference, an easy relationship to compute and invert. This combination (cheap and simple to build, yet manoeuvrable, with simple math) is why differential drive dominates indoor, educational, and research robots (and robot vacuums, etc.). But the differential drive (like most wheeled ground robots) is nonholonomic: it cannot move sideways. At any instant it can only move along the direction it's facing (forward or backward) and rotate. It has no way to translate directly to its left or right. This is a genuine constraint on its instantaneous motion, and it has real consequences for control and planning. For control: to get to a point that is off to the side, the robot cannot simply slide there. It must turn to face (or partly face) the direction it needs to go, then drive. So motion is a coordinated sequence of turning and driving, not arbitrary translation; controllers command (v, omega) and the robot's heading must be managed as part of reaching a position. For planning: the constraint means not every path is feasible. A path that required instantaneous sideways motion (or an infinitely sharp change of direction at speed) is not executable; feasible paths must respect that the robot moves along its heading and changes heading by turning. This is why, for example, parallel-parking a car (also nonholonomic) takes a back-and-forth manoeuvre rather than sliding sideways into the spot, and why motion planning for nonholonomic robots must produce paths the robot can actually follow given it can't move sideways (smooth paths with feasible curvature, or turn-then-drive sequences). Nonholonomic does not mean the robot can't reach any pose (a differential drive can get to any (x, y, heading) in free space) it just can't do it by arbitrary instantaneous motion; it must compose turning and driving. So the nonholonomic constraint shapes robotics deeply: controllers must coordinate heading with position (you steer by managing orientation), and planners must generate paths that obey the can't-move-sideways limit. Understanding this explains why ground-robot navigation looks the way it does (turn toward the goal, drive, adjust) and distinguishes these robots from omnidirectional ones (which can translate sideways and so escape the constraint, at the cost of mechanical complexity). The differential drive's popularity and its nonholonomic constraint are two sides of its simple two-wheel design: that design buys cheap, simple manoeuvrability, but at the cost of not being able to slide sideways. A constraint that control and planning must respect.
Why is the wheel-speeds-to-(v, omega) relationship the essential bridge between the robot's motors and its motion, and why does the same forward/inverse-kinematics idea matter throughout robotics?
REVEAL MODEL ANSWER
The wheel-speeds-to-(v, omega) relationship is the essential bridge between the robot's motors and its motion because the robot's hardware and the robot's intent speak two different languages, and this relationship is the translator between them. The hardware, the actuators, can only do one thing: spin each wheel at some speed. That's the entire physical interface to the robot's motion; everything the robot does to move, it does by setting wheel speeds. But the control and planning layers don't think in wheel speeds; they think in intuitive robot motion: 'drive forward at this speed and turn at this rate'. That is, in terms of the robot's linear velocity v and angular velocity omega. A path planner produces a route; a controller decides 'I need to go forward at 0.3 m/s while turning left at 0.5 rad/s'. It reasons about how the robot should move, not about individual wheels. So there's a gap between the language of intent (v, omega: how the robot body should move) and the language of the hardware (wheel speeds), and differential-drive kinematics is exactly the bridge across it: forward kinematics maps wheel speeds to robot motion (v = average, omega = difference/separation), and inverse kinematics maps a desired robot motion back to the wheel speeds that achieve it. Without this bridge, the control/planning layers, which necessarily think in robot motion, simply couldn't be connected to the motors, which only accept wheel speeds; you literally could not turn 'go forward and turn left' into actuator commands, nor interpret the wheels' motion as the robot's movement. This makes the relationship foundational: it's used forwards by odometry and simulation (read or assume wheel motion, compute how the robot moved) and backwards by control (want a (v, omega), compute the wheel speeds), tying the whole stack to the hardware. The same forward/inverse-kinematics idea matters throughout robotics because this gap between 'the motion we want, described naturally' and 'the actuator commands that produce it' is universal. It appears wherever actuators don't directly correspond to the motion you care about. The clearest recurrence is robotic manipulators (arms): there, the actuators are joint angles, but you care about the position and orientation of the end-effector (the gripper) in space. Forward kinematics maps joint angles to end-effector pose (where does the hand end up given the joint angles?), and inverse kinematics maps a desired end-effector pose back to the joint angles that achieve it (what joint angles put the hand there?): exactly analogous to the differential-drive case, just with joints instead of wheels and end-effector pose instead of (v, omega). The same pattern appears for any robot: there is a 'task space' (the motion or pose you care about) and an 'actuator space' (what the motors directly control), and kinematics is the mapping between them, forward (actuators to task) and inverse (task to actuators). Recognising this means the differential-drive derivation isn't a one-off trick but your first instance of a deep, recurring structure: robots are commanded in terms of meaningful motion but actuated in terms of motors, and kinematics, forward and inverse, is always the bridge. Mastering it here (where it's simple: average and difference of two wheel speeds) prepares you for the same idea in its harder forms (manipulator FK/IK in Turn 2), and explains why 'translate between intended motion and actuator commands' is one of the most fundamental and frequently-used operations in all of robotics.
DPractice Problems
P1 (easy). Name the main mobile-robot drive types, and give the differential-drive kinematics (v and omega from wheel speeds).
P2 (medium). A differential-drive robot has wheels at vL = 0.2 m/s and vR = 0.4 m/s, separation L = 0.5 m. Find v, omega, and the turning radius. Then find the wheel speeds for v = 0.5 m/s, omega = 0 (straight), and for v = 0, omega = 2 rad/s (spin in place).
P3 (harder). Why is the differential drive so common despite being nonholonomic (can't move sideways), and why is the wheel-speeds-to-(v,omega) relationship the essential bridge, an idea that recurs as manipulator FK/IK?
Solutionsclick to reveal
P1. Drive types: differential drive (2 independent wheels + caster; turn by speed difference; can spin in place; simple: most common), Ackermann/car-like (steered front wheels; fast/outdoor; can't spin in place; min turning radius), omnidirectional (special wheels; move any direction incl. sideways; complex), legged (rough terrain/stairs; complex). Trade-off: simplicity vs manoeuvrability vs terrain. Differential-drive kinematics (wheel speeds vL, vR; separation L): - linear velocity v = (vR + vL)/2 (the average, forward speed), - angular velocity omega = (vR: vL)/L (the difference over separation, turn rate). So equal wheels -> straight (omega = 0), opposite wheels -> spin in place (v = 0), unequal -> an arc of turning radius R = v/omega (infinite = straight, 0 = spin in place). This forward kinematics maps wheel speeds -> robot motion; inverting it gives the wheel speeds for a desired (v, omega), the bridge between commanded motion and the motors.
P2. Forward (wheels -> motion): - v = (vR + vL)/2 = (0.4 + 0.2)/2 = 0.3 m/s (forward). - omega = (vR: vL)/L = (0.4 - 0.2)/0.5 = 0.2/0.5 = 0.4 rad/s (turning, positive = toward the slower/left wheel). - turning radius R = v/omega = 0.3/0.4 = 0.75 m (a gentle left arc). Inverse (motion -> wheels): use vR = v + omegaL/2 and vL = v - omegaL/2. - Straight, v = 0.5, omega = 0: vR = 0.5 + 0 = 0.5 m/s, vL = 0.5 - 0 = 0.5 m/s (both wheels equal, straight, as expected). - Spin in place, v = 0, omega = 2 rad/s: vR = 0 + 2(0.5/2) = 0 + 0.5 = +0.5 m/s, vL = 0 - 0.5 = -0.5 m/s* (equal and opposite: spins on the spot, v = 0, R = 0). (The inverse formulas come from inverting v = (vR+vL)/2 and omega = (vR-vL)/L.)
P3. Why common despite nonholonomic: the two-wheel design is the cheapest, simplest arrangement giving full planar manoeuvrability, no steering linkage, inexpensive/robust, yet it can go straight, arc at any radius, and spin in place (which car-like robots can't), with simple math (average/difference of wheel speeds). That combination is why it dominates indoor/educational/research robots. But it's nonholonomic: it can't move sideways. At any instant it only moves along its heading (forward/back) and rotates. Consequences: control must turn to face (or partly face) a target before driving (motion = coordinated turning + driving, not arbitrary translation; heading is managed as part of reaching a position); planning must produce feasible paths that respect this (no instantaneous sideways motion or infinitely sharp turns at speed: smooth feasible-curvature paths or turn-then-drive). It does not mean it can't reach any pose: it can reach any (x, y, heading), just by composing turning and driving, not sliding. (Omnidirectional robots escape the constraint, at mechanical-complexity cost.) Why the wheel-speeds-to-(v,omega) bridge is essential: the hardware speaks only wheel speeds, but control/planning think in intuitive motion (v, omega: 'forward at this speed, turn at this rate'). The kinematics is the translator: forward (wheel speeds -> robot motion: v = average, omega = difference/separation) and inverse (desired motion -> wheel speeds). Without it, the motion-thinking layers couldn't connect to the motors at all. It's used forwards by odometry/simulation and backwards by control, tying the stack to the hardware. Why it recurs (manipulator FK/IK): the gap between 'the motion we want (task space)' and 'what the actuators control (actuator space)' is universal. For manipulators, actuators are joint angles but you care about the end-effector pose: forward kinematics maps joint angles -> end-effector pose, inverse kinematics maps a desired pose -> joint angles: exactly analogous to the diff-drive case (joints instead of wheels, pose instead of (v,omega)). So differential-drive kinematics is your first instance of a deep recurring structure: robots are commanded in meaningful motion but actuated by motors, and kinematics (forward/inverse) is always the bridge. Mastering it here (simple: average and difference) prepares you for its harder forms (manipulator FK/IK, Turn 2).
EFeynman Exercise
Explain to a beginner, using the way a tank or a wheelchair steers (a wheel on each side, no steering wheel): (1) why driving the two sides at different speeds is how it steers (both equal -> straight, one side faster -> curve, opposite -> spin in place), (2) why the average of the two wheel speeds is how fast it goes forward and the difference is how fast it turns, and (3) why it can't slide sideways. It has to turn to face where it wants to go.
REVEAL MODEL ANSWER
Differential-drive kinematics is best understood through the way a tank or a wheelchair steers: there's a wheel on each side and no steering wheel at all. First, you steer by driving the two sides at different speeds. Spin both sides at the same speed and it rolls straight. Spin the right side faster than the left and it curves to the left (the faster side swings around the slower side). Spin one side forward and the other backward and it spins right on the spot, turning without going anywhere. So the 'steering' isn't a wheel you turn: the difference between the two wheel speeds is the steering. Second, that gives a lovely simple rule: the average of the two wheel speeds is how fast the robot goes forward, and the difference between them is how fast it turns. Both wheels at the same speed -> a big average, zero difference -> straight ahead. Wheels equal-and-opposite -> zero average, big difference -> spinning in place. Anything in between -> it curves along an arc, tighter or gentler depending on how different the two speeds are. That's the whole of differential-drive kinematics: average -> forward speed, difference -> turn rate. Third, it can't slide sideways. Unlike a crab (or a special omnidirectional robot), a tank/wheelchair-style robot can only go in the direction it's facing and turn. It has no way to scoot directly to its left or right. So to reach a spot off to the side, it has to turn to face that way first, then drive, which is why these robots navigate by a dance of turning and driving rather than sliding around freely. Two wheels, steered by their speed difference, going forward at their average speed, unable to slide sideways. That's a differential-drive robot, and the simple math (average and difference) is the bridge between the wheel speeds you command and the motion you get.
FError Analysis Framework
- Assuming the robot can move directly sideways. Why: you want it to go left, so move left. Recognise: a differential drive is nonholonomic. It can't translate sideways. Avoid: turn to face the direction first, then drive (plan feasible turn-then-drive motion).
- Setting forward speed and turn rate as if independent of the wheels. Why: they seem like separate controls. Recognise: both come from the same two wheel speeds (average = v, difference = omega). Avoid: command (v, omega) and convert to/from wheel speeds via the kinematics.
- Thinking the turning radius is a fixed property of the robot. Why: the robot has 'a' turning circle. Recognise: R = v/omega depends on the commanded v and omega (gentle arc vs tight turn vs spin). Avoid: set the arc by choosing v and omega (omega=0 straight, v=0 spin in place).
- Mixing up which wheel-speed combination does what. Why: different speeds just 'turn it'. Recognise: equal -> straight, opposite -> spin in place, unequal -> arc (sign of the difference sets turn direction). Avoid: use v=(vR+vL)/2 and omega=(vR-vL)/L to get motion exactly right.
GMini Challenge
Explain mobile-robot drive types and differential-drive kinematics for a new roboticist: the main drive types and trade-offs, the kinematics (v and omega from wheel speeds, turning radius), the nonholonomic constraint, and why the wheel-speeds-to-(v,omega) relationship is the bridge between motors and motion (recurring as manipulator FK/IK).
REVEAL MODEL ANSWER
Drive types & trade-offs: differential drive (2 independent wheels + caster; turn by speed difference; can spin in place; simple: most common), Ackermann/car-like (steered front wheels; fast/outdoor; can't spin in place; min radius), omnidirectional (special wheels; move any direction incl. sideways; complex), legged (terrain/stairs; complex). Broadly simplicity vs manoeuvrability vs terrain.
Differential-drive kinematics (wheel speeds vL, vR; separation L): v = (vR + vL)/2 (average -> forward speed), omega = (vR: vL)/L (difference over separation -> turn rate). Equal wheels -> straight (omega = 0), opposite -> spin in place (v = 0), unequal -> arc of turning radius R = v/omega. Inverse: vR = v + omega*L/2, vL = v - omega*L/2.
Nonholonomic constraint: a differential drive can't move sideways. At any instant it moves only along its heading and rotates. So control must turn to face a target before driving (manage heading as part of reaching a position) and planning must produce feasible paths (no sideways motion; smooth/turn-then-drive). It can still reach any (x, y, heading), by composing turning and driving.
Why the wheel-speeds-to-(v,omega) bridge matters: the hardware accepts only wheel speeds, but control/planning think in (v, omega) (intuitive motion). The kinematics translates: forward (wheels -> motion) for odometry/ simulation, inverse (desired motion -> wheels) for control. Without it the motion-thinking layers couldn't drive the motors. It recurs as manipulator FK/IK (Turn 2): there actuators are joint angles and the task is the end-effector pose: forward kinematics maps joints -> pose, inverse maps pose -> joints, exactly analogous. Generally there's a task space (motion you care about) and an actuator space (what motors control), and kinematics (forward/inverse) is always the bridge: this is your first, simplest instance.
Connections: the math behind the C++ diff-drive project and the Gazebo robot; the autonomy stack's control layer (the autonomy-stack lesson) commands v and omega which this converts to wheel speeds; odometry (next) runs it backwards to estimate motion from wheel encoders. Where motors meet motion.
Quiz Check
A quick auto-graded check, separate from the recall cards above. Your score is pooled with the recall cards into this module's Mastery score, and completing this lesson requires the quiz submitted with pooled mastery at 80% or above.