Omni wheels have rollers aligned 90 degrees to the wheel. This allows the wheels to apply force forwards and backwards, and to slide freely left and right.
A hypothetical wheel with parallel rollers around its rim would be rather useless, because it would apply zero force forwards or backwards (wasting the power of the motors attached to it), but it would still resist sliding left and right.
Mecanum wheels have rollers at an angle (say 45 degrees). This means that when a motor rotates a mecanum wheel, it produces a force 45 degrees away from the way the wheel is facing (parallel to the roller axles). Depending on whether the rollers are 45 degrees clockwise or counterclockwise, a mecanum wheel rotating forwards will push either forwards-and-left or forwards-and-right.
Here is a mecanum wheel viewed from above, with its axle going along the y-axis of the picture:
← |||| → traction wheel pushes forward or backward
↗ mecanum wheel can push this way
\\\
↙ or that way
In this picture, you are viewing the rollers on the top of the wheel. The rollers on the bottom of the wheel (the ones touching the carpet) are at this angle: ///
. This is why the wheel can push in the ↗↙
directions, and freely slide in the ↖↘
directions. Analogously, an omni wheel with its rollers are oriented like ===
can push in the ←→
directions, and freely slide in the ↑↓
directions. Roller wheels can always push parallel to their rollers’ axles, and freely slide perpendicular to their rollers’ axles.
Let’s say your robot has 2 mecanum wheels. One has its rollers twisted clockwise, and the other has its rollers twisted counterclockwise. When you spin both wheels “forwards”, one wheel will push forwards-and-left, and the other wheel will push forwards-and-right. The left- and right-forces will cancel each other out (so long as your robot isn’t putting more weight on one than the other), and the robot will move forward.
↗ this wheel pushes this way
\\\
|
| → robot goes forward
|
///
↘ this wheel pushes that way
This robot does a funny thing when it tries to turn in place. It turns (because one side is being pushed forwards and the other is being pushed backwards), but it also slides sideways (because one wheel changed direction, so both wheels are now pushing sideways the same way).
↗ this wheel pushes this way
\\\
|
| robot goes ↷ and also ↑
|
///
↖ but this wheel pushes another way!
Because there are only 2 wheels, and each one sorta pushes in 2 directions (a left-right direction and a forward-backward direction), we can’t always make the forces add up to what we need. Let’s use 4 wheels!
\\\-----///
| |
| |
| |
///-----\\\
(It’s important that the wheels be organized exactly this way, because otherwise the robot can’t turn.)
It can still go forward (and backward), because the left-right forces are still balanced, and the forward-backward forces are all forward.
↗
\\\-----///
| | ↘
| → | robot goes forwards
| | ↗
///-----\\\
↘
Now, it can also turn! The back wheels still produce the same sliding force that they did when there were no front wheels, but the front wheels now produce an equal and opposite sliding force. The robot spins in place with little wasted force.
↗
\\\-----///
| | ↘
| ↷ | robot turns
↖| |
///-----\\\
↙
Turning is done by making the left wheels spin one way (forwards, in the above example) and the right wheels spin the other way. What happens if we make one diagonal pair spin one way, the the opposite diagonal pair spin the other? It goes sideways!
↗ ↖
\\\-----///
| |
| ↑ | robot translates sideways
↖| |↗
///-----\\\
A tank-drive robot can drive forward/backward, turn in place, or make wide turns (facing tangent to the turn). They can only face the way they are going.
A mecanum drive robot can drive forward/backward, drive left/right, turn in place, drive diagonally, make wide turns facing tangent to the turn, and make wide turns facing into or away from the center of the turn. This is the same flexibility that swerve drive robots have – the ability to travel in any direction, and face any direction, at any time.
Mecanum drive robots are built very similarly to tank drive robots. You need separate motors for each of the 4 wheels, but the axles and wheels are mounted identically to tank drive wheels. You can easily make a mecanum drive robot from the kit-of-parts chassis.
Mecanum drive has serveral major weaknesses:
-
The wheels are heavy, and the small ones are often fragile. In addition to eating into your weight budget, heavy wheels require a lot more motor power to accelerate or decelerate.
-
Mecanum is never totally efficient. Tank is efficient going forwards/backwards (all wheels push the right direction) and inefficient when turning (all non-central wheels scrub). Swerve is always efficient, because it can always make all 4 wheels push the right direction. Mecanum makes all 4 wheels push in ways that add to the right direction, but there are almost always extra (wasted) forces that cancel each other out. Wasted force = wasted traction and wasted energy.
-
Mecanum drive is only controllable if all 4 wheels have equal traction. If one or more wheels have less traction than the others, then those wheels will also produce less force than the other wheels, and the forces will no longer add up or cancel out the way you expect. The robot will do weird drifts or turns when it isn’t supposed to, and be hard to control. Reasons why the wheels might have different traction include:
- the wheels are on different surfaces (like carpet and HDPE)
- the robot is tipping while performing an aggressive maneuver, reaching out with a manipulator, being defended against, or carrying heavy game pieces
- the robot’s center of gravity is not centered between the 4 wheels
- one of the wheels is damaged
- some of the rollers are bolted in too tightly, worn down, poorly lubricated, or dirty
-
Mecanum wheels have poor traction. The small rollers have rather hard rubber coatings on them, so they can’t sink and bite into carpet nearly as much as plaxion tread, or pneumatic tires. Also, because each wheel is covered in rollers, they can slide freely in the direction their rollers are pointed. The robot doesn’t slide freely (because half of the rollers point one way and the other half point the other way), but it is still much easier to push than a tank drive robot.
Fast, well-driven mecanum drive robots can evade defenders, but can’t push through them. Slow mecanum drive robots driven by inexperienced drivers will fall victim to any defender. Mecanum robots are nearly useless as defenders, unless they block game pieces in-air, block driver or robot vision, or brace themselves against the field.
This is really the key reason you don’t see more mecanum robots. Teams that are comfortable with swerve will almost always choose swerve because of its advantages (efficiency, speed, maneuverability, traction). Teams that aren’t comfortable with swerve have to evaluate every game after kickoff. If defense will be effective and commonplace, teams will stick with tank. If defense will be minimal (ineffective, difficult, risky, or outright illegal), and maneuverability valuable, then mecanum might be a competitive choice that year.
Even if a game is free of defense, most teams will still build tank drive robots, because those are simpler to build, simpler to program, and simpler to drive. Simple robots get “done” sooner, enabling more driver practice. Simple robots cost less. Simple robots are more reliable in competition. And every year, at least one robot on the Einstein-winning alliance has been tank drive.
That said, mecanum drive is really cool! I think it’s great for off-season robots. They’re not too difficult to build or program, and they are very interesting to onlookers (and sponsors!). It’s also much more viable in FTC, where defense is less common, efficiency is less important (you aren’t as worried about tripping 40-Amp fuses), and the forces are much lower.