crab drive vs. mecanum drive system

My team is debating on the drive system we want to use and I thought I would ask what has worked well for other teams.

  1. Crab drive works best

  2. Mecanum drive with each wheel having its own motor wins.

  3. Use mecanum drive with one motor per side.

  4. don’t do any and use some other drive system

Won’t work, Mecanum requires having 2 motors per side.

Personally I have always liked 6 wheel drive machines w/ a drop center wheel. It may not be as flashy as a 3 speed swerve drive but it is reliable. In my book reliability beats everything.

A well built crab/swerve will beat a mechanum drive in most, if not all cases. The only problem is that to successfully build a crab/swerve drive you need to have good machining capability, and really good programming.

A mechanum drive system is much easier to manufacture since there are no custom parts needed except for the wheels, and programming should not be extremely difficult due to the fact that you do not need to have feedback loops.

All of the mechanum systems that I have seen have had 4 motors. From my understanding of mechanum, if you only put two motors on the system, you basically have a tank drive.

Echo’ing that mecanum wheels need four motors/gearboxes. Each wheel creates a its own force vector. sells swerve modules, that would give you a good start if you wanted to do it.

Do you mean omnidrive? This is not with mechanum wheels, it uses omniwheels, and generally uses either three (kiwi drive) or four. Probably the simplest holonomic drive train is the 4-wheel version with two on the sides, and then one each for front and back, so you just feed the front and back ones values from the X-axis of a joystick, and the ones on the side values from the Y-axis.

However, whether you want to use any of these systems depends on what your team is aiming for. If you just want to learn how to build and drive a holonomic platform, do it. One deciding factor might be the game challenge. Last year, we played around with several strategies before we settled on needing a very maneuverable robot, and because of field losses, we decided to use swerve drive to keep the wheels pointed in the same direction as the driving vectors most of the time. Definitely not the only way to do it, but we did learn a lot.

Here’s the run-down in my opinion:

  1. Most complicated. If you use full swerve drive (wheels rotate independently), it will require a lot of motors, a lot of power, and careful design to get things to line up. Not to mention, the code is fairly hard to do if you want position feedback. If you use crab instead of full swerve, you may want some kind of turret, because rotating can be VERY important.

  2. Mechanum has fewer losses than omnidrive doing forward, but has huge losses strafing. Going diagonally can cause interesting vectors to result accidentally. Definitely the loudest of the drive trains when strafing. Simple to build, more expensive than most of the others (depending on how you make swerve drive, and if you make your own mechanum wheels), hard to conceptualize. Possibly hard to program, I don’t know, I haven’t tried.

  3. My personal favorite. Omnidrive results in what looks like a hockey puck on wheels, it moves almost eerily, and I’ve played around with it on Vex many times before. If you have the wheels mounted at 90-degree angles from the center (on the front and back and the two sides), your efficiency is 100% of a two-motor drive train, in both the X and Y directions. If you mount at 45-degree angles (on the corners), you get a theoretical maximum of 70% efficiency going straight forward or sideways, but you get more power behind it. However, you will not win any pushing matches, I guarantee. It can also be a problem to mount wheels at odd angles if you go that route. Fairly simple conceptually, the code isn’t that complicated (I have a library for Vex if you want to see it).

  4. Generally, skid steer/tank drive/differential steering/whatever you want to call it is the simplest, easiest, and most of the time, most effective. You have to remember that anytime you embark on a more complicated project, there will be a learning curve, and it will consume time. If you care more about learning the mechanical/electrical/control systems side of things, go with a holonomic drive train. If you care more about autonomous routines, camera interpretation, and perfecting manipulators and driver skill, go with something a little simpler.

Here’s our RobotC code from 2008. There are a lot of lines and redundant variables for debugging.

/********** Mecanum Code **********/
int FL_X, FR_X, RL_X, RR_X;
int FL_Y, FR_Y, RL_Y, RR_Y;
int FL_Z, FR_Z, RL_Z, RR_Z;
int X, Y, Z;
int FL, FR, RL, RR;

void drive (signed int joyX, signed int joyY, signed int joyZ)
	char reduce = 3;
	if (joyX == 0)
	if (joyY == 0)
	if (joyZ == 0)
		reduce = 3;

	if (reduce==0)
		motor[mtrFL] = 0;
		motor[mtrFR] = 0;
		motor[mtrRL] = 0;
		motor[mtrRR] = 0;
		FR_X = RL_X = RR_X = FL_X = 0;
		FR_Y = RL_Y = RR_Y = FL_Y = 0;
		FR_Z = RL_Z = RR_Z = FL_Z = 0;
		FL_X = -joyX / reduce;
		FL_Y = joyY / reduce;
		FL_Z = joyZ / reduce;

	X=FL_X; Y=FL_Y; Z=FL_Z;

	RR_X =  FL_X;
	FR_X = -FL_X;
	RL_X = -FL_X;

	FR_Y = RL_Y = RR_Y = FL_Y;

	RR_Z = -FL_Z;
	FR_Z = -FL_Z;
	RL_Z =  FL_Z;

	if (1==1)
		motor[mtrFL] = FL = (FL_X + FL_Y + FL_Z);
		motor[mtrFR] = FR = (FR_X + FR_Y + FR_Z);
		motor[mtrRL] = RL = (RL_X + RL_Y + RL_Z);
		motor[mtrRR] = RR = (RR_X + RR_Y + RR_Z);

Our team is going to try and prototype a swerve drive this winter break (before kickoff) but in all likeliness we were going to do 6WD. Reliability is greater than all. If you can’t drive, you can’t play. In all honesty, your team’s resources will probably be better going toward a better arm or better autonomous than developing a crab drive. Mecanum has low traction which fit 2008’s game as there were basically rules against defense, next year’s game will/might include pushing matches.

On a purely strategic level: (i.e. if you have a robot with a “perfect” crab drive and “perfect” mecanum drive side by side and you’re deciding which to play in a match, in a fantasy scenario) A crab drive achieves omnidirectional motion while maintaining closer to 100% of motor force in the desired direction of movement, and with the benefit of traction in all directions to prevent easy pushing and spinning. A mecanum system achieves omnidirectional movement without module rotation at the expense of some motor efficiency (going straight forward only uses ~70% of motor force) and less traction / more vulnerability to being spun.

Basically, a perfect crab is almost always better than a perfect mecanum. That said, omnidirectional motion isn’t always required or optimal, and there are tradeoffs to using crab over a standard 6 wheel (mainly in turning, weight, etc) that make the decision nontrivial.

And that’s putting the building of said robots aside. Crab is very difficult to build for and even harder to program with. Mecanum is less challenging and if things go wrong you can theoretically just drop in 4 normal wheels.

Crab is tough to build, though there are now swerve modules available. Needs a customized frame and coding. Also note that there are two types: coaxial and non-coaxial, each of which has its own unique challenges.

Mecanum drive is simpler in the frame (KOP frame works), but you need to make sure the wheels are tuned right. I’m going to have to disagree with daltore on the diagonal, though–we never saw anything when we tested our set back in 2005. A MAJOR pro here is that if it doesn’t work, you grab 4 wheels from the parts box and slap them in, then remove the sideways code, and you have 4WD.

Mecanum with only one motor per side is impossible. Omnidrive (4-wheel) gives one motor per wheel, one wheel per side, or something of that sort.

Many teams use a 6WD with either a dropped center wheel or omnis on one end or the other. That’s the simplest, and the KOP frame is set up to handle it already.

At this point, though, you’re about out of time to prototype anything other than a 4WD or 6WD, unless you get an order in to AM immediately.

There is one other consideration, however:
We don’t know the game yet, and you’re choosing a drive to use for the game. Stop. Think about it. You could be investing hundreds of dollars in a system that won’t fit the game at all. Or something like happened this year, where mecanum wheels and omni wheels couldn’t be used.

If you go ahead and try any of these systems, do it as a prototype in the offseason (the month left of it, or the next one) to get the hang of it, then build it for the competition season following that when you actually know what you’re doing. Can you do it during the build season? Probably. Can you do much else? Probably not.

I know that when 330 tried their set of mecanums during build season, we already had a couple of years of small-scale testing under our belts, and a full-size backup that we could literally swap in a few minutes. (I’m talking VEX scale here–the EDUbot was great for that!) We had code, we had wheels made after Kickoff, we had the Kit frame rigged for mecanum pretty quickly, and we had a 6WD drop center on the competition frame. Last week of build, we had a decision meeting, did some final testing, and the mecanums lost to the 6WD drop center. If we ever try mecanums again, we’ll be almost ready to go. That’s why you prototype. But if you lock into a drive now, you might not be able to change when you realize that being able to dodge around opponents isn’t going to help you this year, or that you really want that extra maneuverability, or this, or that. Seriously, don’t lock in now.

Oh, and my two cents: I’ve personally never seen an FRC game where, in my opinion, a mecanum drive’s advantages outweighed its disadvantages compared to a 6 wheel system

Definitely Debatable.

You’re debating that he hasn’t seen one where it’s beneficial?

I think he’s debating my opinion, not whether or not I have my opinion.

2001 doesn’t count.

(By the way, my post’s wording SUCKS and was EXACTLY the opposite of what I meant, sorry. I meant 6wd > mecanum, not other way around.)

something to keep in mind for those responding specifically to the OP, team 2169 had crab drive on their 2009 robot.

I think it is important to wait for the game before making a decision between the two drive systems. I also think it would be wise to keep simpler alternatives on the table.

After analyzing the game and deciding on what role you want your robot to play you can list out what drive capabilities you need to best accomplish that role. This should make it much easier to determine what drive system you want to go with.

I saw at least a few swerve drives in 2009 that did not appear to contribute to the team’s strategy. I would make sure you have a reason before you expend the effort, weight and increased complexity to build a swerve drive.

The decision to build an omni-directional drive train… however you do it… doesn’t have to be based solely upon what is best for winning the game.

It should be based on what is best for your team.

Rarely have I ever seen a truly dominant robot dominate because it has an omni-direction drive system. In fact, given our experience with a mecanum system, the additional degree of freedom actually makes the robot slightly more difficult to drive and it takes longer for the driver to learn to use the ability productively… until then it just makes it more complex to drive.

However, if you have a dedicated, well-balanced team with solid machining and programming abilities and are looking for a challenge… especially if you haven’t built an omni-drive robot yet… then consider building one just because it is something cool and technically challenging that you have yet to do!

Omni-bots are really, really cool whatever method you use to achieve the goal.


My apologies then, 6WD is the way to go usually.

I’ll be honest, I have nothing quantitative to share with you, but…A really good 6 wheel skid is hard to be beat. It’s lighter than a swerve and if you look at the teams that do it really well, their performance really isn’t that much worse if worse at all from a good swerve. Keep the driver in mind too, different drivers prefer different systems. Skid steer requires basic code, successful swerves require much more complex code, especially if you want it to be intuitive.

I shudder at the thought of Mecanum with only 2 CIMs. You might as well disable trying to rotate while moving in any transverse direction. You also might as well disable the diagonal movements. The wheels simple eat up too much torque due to the 45-degree roller offset.

Simply put, either drive train gives a good driver very similar capabilities. Crab gives the driver an edge in finely tuned movements, yet Mecanum may give the driver more practice since it’s much simpler to build.

With Mecanum, square up on another robot before pushing it. Programming is relatively simple. The Toughbox Nano’s make a Mecanum drive train easily constructable since 4 nano’s with cantilevered Mecanum wheels should be able to support the entire weight of the robot without issue. Seriously, If AM redesigned the toughbox with a steel box extrusion like what the nano has, they would probably be strong enough for military-grade and/or volatile environment (think chernoble cleanup) robots.

With Crab, your driver needs to dictate the driving style, which then dictates how the 4 wheels are steered (2-2 sides, 2-2 front/back, or all together) as well as how the robot is programmed. This driver would definitely be more focused on the robot during a match and less focused on what’s going on around him/her.

I’ll be honest, I have nothing quantitative to share with you, but…A really good 6 wheel skid is hard to be beat. It’s lighter than a swerve and if you look at the teams that do it really well, their performance really isn’t that much worse if worse at all from a good swerve. Keep the driver in mind too, different drivers prefer different systems. Skid steer requires basic code, successful swerves require much more complex code, especially if you want it to be intuitive.

It’s all about how you use the drive train. A 6-wheel drive train has shortcomings when attempting maneuvers, especially in autonomous. For great examples of what I’m talking about, look at Wildstang’s 2007 and 2009 robots. Both autonomous routines used maneuvers with swerve that would have probably been much less accurate (statistically) than had the maneuvers been performed with skid – especially in 2009.

I’ll just give my real quick 2 cents because I am compiling a post which contains all of the information from my senior design project at Northeastern University.

My senior design project was the investigation of the most effective drive system one could use in FIRST, followed by the optimization of such a drive and then constructing a prototype. I went through a lot of decision making processes to determine what was most effective. When it came down to it, the argument was exactly what is being argued right now…swerve vs. 6wd. Some of the decisions I made to determine between the two were based on opinion, but this is inherent with this kind of decision. I ended up designing, analyzing, optimizing, building, assembling and testing a swerve system.

The argument between the two was settled for me based on the fact that I feel the only reason people widely consider 6wd more reliable is because they are simply done much more frequently than swerve/crab systems. Yes there are more moving parts in a swerve system, inherently making the system more prone to failure. However, with more evolution of swerve design the systems can become just as reliable as 6wd systems today. Which is why I chose to optimize that system. A new post will be up in a few days which contains my report (>100 pages) and my presentation (~40 detailed slides) which explains what I did and the findings I had.


I believe it should depend on the game. Personally, I dont much care for mecanum drive trains however they can be useful in some games. For example, in 2006 I cant remember the team number but their was a team that climbed onto the ramp and then using the mecanum drive would move all the way to one end of the ramp to allow room for their partners to get on the ramp as well.


When basing your decision, remember that they best option for your team may not be the “best” drive train. I know that for our team, in the end we generally choose to go with a 6-wheel bot, not because we lack the capacity to make a more complex holonomic or omnidirectional (I personally dislike mecanum, too little tourque) drive train, but because we know that we can throw our 6-wheeled drive train together in three days, and maintain the full six weeks for developing our manipulation and coding scheme. Part of engineering is not only trying to build the best, but also being pragmatic with time and resource management.

So in short, remember to not only look at the benefits of each drive, but also the costs (from a time and maintence perspective).