Tutorial · Beginner · 25 min
Holonomic Drives: Omni, Mecanum, Swerve Compared
What holonomic actually means, why a differential-drive robot cannot park sideways, and an honest comparison of omni, mecanum and swerve on grip and cost.
The word, and what it costs you
A robot on a flat floor has three degrees of freedom: it can be at some x, at some y, and pointing some direction θ. That is what a position on a floor is.
A drivetrain is holonomic when it can independently control all three at once — when the number of directions it can instantaneously move in equals the number of directions it can end up in. A drivetrain is nonholonomic when it cannot: it can reach any pose eventually, but not by moving directly there.
The everyday example is a car. A car can end up in any parking space on the street, including the one directly to its left. It just cannot drive there — it has to shuffle. That is a nonholonomic constraint, and it is the single reason parallel parking is a skill.
A differential-drive robot has the same problem in a friendlier form. It can spin on the spot, which a car cannot, so it only has two controllable velocities — forward and rotation — against three degrees of freedom. Sideways is missing. To move 20 cm left it must turn, drive, and turn back, which takes time it may not have and costs heading accuracy it may not be able to spare.
A holonomic drive just goes left.
Why it matters more than it sounds
“It can go sideways” reads like a party trick. Where it actually pays:
- Tight spaces. A robot that never needs turning room fits down an aisle exactly its own width. Warehouse AGVs are mecanum for this reason and no other.
- Holding a heading while moving. A camera, a sensor mast or a gripper that must keep facing one way while the base repositions. Nonholonomic drives cannot do this at all.
- Decoupled path following. A pure pursuit controller on a differential base has to trade position error against heading error, because they share one actuator. A holonomic base fixes each with its own axis.
- Corrections that do not cost heading. Drift 3 cm off a line, and a holonomic robot steps 3 cm back. A differential robot has to arc out and arc in, and on a slippery floor those two extra turns are where the error comes from. In the simulator, a square driven by strafing on a greasy floor still ends with its heading at exactly 0.0°, because no rotation was ever commanded; the same square driven by turning at the corners ends tens of degrees off, and then drives each following leg in the wrong direction. Every spin is another chance to lose the heading, and the holonomic robot never takes one.
And where it does not pay: anything that has to push, climb, or cross a threshold. Every holonomic wheel trades grip for freedom.
The four options
Differential drive — the baseline
Two driven wheels, one caster. Not holonomic, and still the right answer for most robots. All of a plain wheel’s traction, two motors, and thirty years of libraries that assume exactly this geometry.
Omni wheels in an X (“X-drive”)
Four omni wheels — rollers at 90° to the wheel, not 45° — mounted at the four corners, each turned 45° so its rolling direction points at the corner. Every wheel pushes along a diagonal; the four diagonals sum to anything.
- It is mecanum’s speed envelope, rotated 45° and √2 bigger. Both drivetrains can reach a diamond-shaped set of velocities; on mecanum the fast directions are straight ahead and straight sideways, on an X-drive they are the chassis diagonals. From the same wheel rim speed an X-drive goes 1.41× faster forward — and produces √2 less force doing it. It is a gear ratio, not a free lunch.
- Packaging is awkward. The wheels sit at 45° to the chassis, which wastes corner space and usually forces direct drive.
- Traction is poor and the wheels are fragile — small rollers, small contact patch.
Mecanum — rollers at 45°
Four wheels that look like normal wheels, mounted the normal way, with the 45° hidden inside the wheel. Two left-handed, two right-handed, in an X pattern.
- Packages like a normal drivetrain. This is the real reason mecanum wins over X-drive in practice.
- Forward and sideways are equally fast; diagonals cost 1/√2. A 45° command asks two wheels for everything and two for nothing, so the robot tops out at 71% of its straight-line speed. (An X-drive has the same 71% penalty — it just applies to a different pair of directions.)
- Traction costs 1/√2. The ground force is pinned at 45°, friction caps the whole vector, and only the component along the rolling direction is useful.
- Pushing power is bad. A mecanum base loses a shoving match to a plain-wheeled robot of the same weight, every time.
Swerve — steer every wheel
Four modules, each with a drive motor and a steering motor. Point all four wherever you like and drive.
- Holonomic with full traction. No roller, no 45°, no penalty. This is the only option in the list that does not trade grip for freedom.
- Eight motors, eight encoders, slip rings or cable management, and a control problem with real singularities. Roughly four times the work of mecanum for a robot that does the same three things, faster and harder.
The comparison, honestly
Speeds are given against each drivetrain’s own straight-ahead top speed, except the “per wheel speed” row, which compares them all on the same motors and wheels.
| Differential | Omni X-drive | Mecanum | Swerve | |
|---|---|---|---|---|
| Holonomic | No | Yes | Yes | Yes |
| Motors | 2 | 4 | 4 | 8 |
| Sideways speed | — | 100% | 100% | 100% |
| Diagonal speed | — | 71% | 71% | 100% |
| Forward speed per wheel speed | 100% | 141% | 100% | 100% |
| Traction vs plain wheels | 100% | 71%, and worse rubber | 71% before roller rubber | ~100% |
| Terrain | Good | Flat only | Flat only | Good |
| Odometry from drive wheels | Decent | Poor | Poor | Decent |
| Packaging | Easy | Awkward | Easy | Hard |
| Cost and build time | ★ | ★★ | ★★ | ★★★★★ |
Only swerve escapes the diamond: because it can point every wheel the same way, its reachable velocities are a full circle, so no direction costs anything. Every roller-based drivetrain buys sideways motion with a 45° force vector and pays the same √2 twice.
Choosing
A short decision path that gets it right most of the time:
- Does it need to move sideways or hold a heading while moving? No → differential drive. Stop here; you have just saved two motors, four wires and a month.
- Is the floor flat, hard and clean, every time? No → differential drive, or swerve if the budget is unreasonable.
- Does it have to push, tow or shove anything? Yes → not mecanum. The 71% is before you account for roller rubber, and real mecanum bases lose pushing matches badly.
- Is packaging tight, or does it have to look like a normal robot? Yes → mecanum. No → an omni X-drive is simpler to reason about and geared 1.41× taller on the same motors.
- Is this a competition where somebody will deliberately push you? → swerve, or accept you will be pushed.
What holonomic does not give you
Three things people expect and do not get:
It does not give you better odometry. It gives you worse. A roller that slips is doing its job, so wheel encoders on a holonomic base measure the wheel and not the floor even more than usual. Budget for an IMU, or unpowered dead wheels, from the start.
It does not remove the need to plan. A holonomic robot still has to get round obstacles; it just has more ways to. A* on an occupancy grid and coverage planning work the same, and the path is easier to follow rather than easier to find.
It does not make the robot feel intuitive to drive. Quite the opposite: a human driving a strafing robot loses track of which way it is pointing within about ten seconds. The fix is field-oriented control, which is a small piece of maths and a mandatory one.
Next
The maths that makes all four force vectors add up: mecanum wheel kinematics. Then drive one and try to break it in the mecanum drive simulator — the greasy-floor preset is the fastest way to feel what holonomic actually costs.
Explore the graph
Part of these builds
Projects and learning paths that include this tutorial.
Further reading