The Parking Puzzle
Picture an empty parking spot just to your left, an arm's length away. You can see it. There is nothing in the way. Yet you cannot simply glide your car straight into it. Instead you pull forward, crank the wheel, back up at an angle, straighten out, and inch in. Why all the fuss to cover a gap you could cross in one step on foot?
The answer is one of the prettiest ideas in robotics: a car has fewer ways to move than places it can reach. Your hand on the steering wheel and your foot on the pedal give you only two independent controls, but the spot you want to occupy is described by three numbers — how far east, how far north, and which way you are facing. There is a real gap between what you can directly command and where you ultimately want to be. Closing that gap takes a little dance.
Constraints: What You Can't Do
A constraint is simply a rule that forbids some motions. To talk about it precisely, we describe a robot's state by its pose — its position plus its heading. For a robot rolling on a flat floor, the pose is three numbers: x, y, and the angle θ it is pointing. The set of all possible poses is the robot's configuration space, and we say a flat-ground vehicle has three degrees of freedom in where it can end up.
Here is the key split. A holonomic robot can move freely along every direction of its pose: at any instant it can go forward, sideways, or spin in place, independently. The number of things it can directly control equals the number of dimensions in its configuration space. A nonholonomic robot has fewer controls than that. Its wheels impose a velocity rule it cannot break — and that rule, named by the term holonomic vs nonholonomic constraints, is what forbids the sideways slide.
A standard car and a differential-drive robot (one driven wheel on each side, turned by spinning the two wheels at different speeds) are both nonholonomic. Each can only move toward — or away from — the heading it currently faces, while turning. Neither can teleport sideways. The constraint is not that the goal is unreachable: given enough room, both can reach any pose. It is about the path — you can only get there by stitching together motions you are allowed to make.
Why It's a Velocity Rule, Not a Wall
The subtle part is that a nonholonomic constraint restricts your velocity, not your position. A locked door is a position limit — there are rooms you can never enter. The car's rule is different: there is no pose it cannot reach, only directions it cannot move in at this instant. The wheels are happy to roll forward and to pivot, but they refuse to skid sideways. That refusal is the whole constraint.
We can write the forbidden direction as one tidy line. Let the car face along heading θ. Its sideways direction is perpendicular to that. The rule says the velocity component along that sideways direction must always be zero:
heading direction: ( cos θ , sin θ ) sideways direction: ( -sin θ , cos θ ) no-sideways-slip rule: x_dot * (-sin θ) + y_dot * (cos θ) = 0 ( x_dot, y_dot = the velocity components; the dot means rate of change )
What makes this constraint nonholonomic — rather than a plain limit you could simplify away — is that you cannot integrate it into a rule purely about position. There is no equation of the form "f(x, y, θ) = constant" hiding behind it. The proof is the parking spot itself: by wiggling back and forth, never once slipping sideways, you still arrive at a pose displaced purely sideways. The instantaneous bans do not add up to any forbidden region. That is the signature of a true nonholonomic system, the heart of holonomic vs nonholonomic motion.
Why Planners Care: Wiggling vs Gliding
This distinction is not academic — it changes how a robot has to think about getting from A to B. A holonomic robot can plan as if it were a free-floating point: draw the shortest clear line to the goal and follow it, adjusting heading whenever convenient. An omnidirectional drive robot, which uses special rollers to move in any direction at once, does exactly this — it can strafe straight into a tight slot that a car would need a multi-point turn to enter.
A nonholonomic robot cannot take that shortcut. Its planner must respect the no-slip rule at every point along the route, so it can only propose paths the wheels could actually follow — gentle arcs and forward-backward maneuvers, never a sudden sideways jump. Reaching a spot just off to the side may demand a sequence of moves far longer than the straight-line distance.
- Holonomic plan: aim a straight segment from the robot to the goal, check it is clear of obstacles, and glide. Heading can be set independently along the way.
- Nonholonomic plan: search over feasible arcs and forward/reverse segments, splicing them so the wheels never slip — the parallel-parking dance, found by the planner.
- Either way, a collision-free path still has to be turned into a smooth, timed trajectory the motors can execute — the difference is only in which path shapes are allowed.
Mapping the Drive Types
With the idea in hand, common wheeled platforms sort cleanly onto the two sides of the split. The nonholonomic family includes the Ackermann steering of ordinary cars (the front wheels pivot, just like a real automobile) and differential-drive robots like a robot vacuum: both steer by changing heading and cannot strafe.
The holonomic family is the omnidirectional drives. Using omni-wheels or angled mecanum wheels, these platforms can translate in any direction and rotate at the same time, decoupling where they go from where they face. They are favorites in warehouses and on competition robots — anywhere floor space is tight and full freedom of motion earns its keep.
The same lens reaches beyond wheels. A legged robot, walking with discrete footfalls, behaves much like an omni platform — it can step sideways about as easily as forward, so legged locomotion is effectively holonomic on flat ground. A boat or a fixed-wing aircraft, which must keep moving forward to steer, sits firmly on the nonholonomic side. The split is less about wheels than about one simple question: can you instantly move in every way your pose can change, or not?