How to make X-Drives Not Slip

So. Being an “amazing” builder (I’m actually a programmer) I built a fully functional snailbot with flip out arms. It sucks… really well! It is definitely an early-season build, but It could probably cheese a tournament in the beginning. So once It was done, I noticed a bit of slippage, and It didn’t bother me in driving though. But then came the programming. I slapped some PID on that Boi and of course, There was still a bit of slippage. I thought by making the initial power at the beginning of a drive function weaker would be the solution to all my problems, but alas. nope. I was considering using a gyro to make things straighter, but I would rather, you know, build a drive that moves in a straight line. I considered using traction wheels to make the drive slip less in the beginning, but then the X-Drive wouldn’t work as well. The only solution, is to build the X-Drive, correctly. I would like to not use sensors or 4 PID loops at once to make the robot do the basic function of moving. I used the 45 degree gussets to make the angles. The X-Drive I built is most similar to 210Y’s snailbot. How can I make the angles of all the wheels be exactly the same (Or at least really close)?

TL;DR : Basically my X-Drive isn’t driving straight because of slippage caused by my bad building

Can you show an image of your x-drive?

1 Like

Post a picture of the bot for more high resolution advice.

Get one of these (not an affiliate link), learn how to use it so your frame is straight.

Don’t cantilever the wheels,

As few linkages between the motor and the wheels.

VEX Omni wheels don’t always run true. They’re supposed to but they sometimes have manufacturing defects, so check them for runout. I don’t have a great way to suggest doing this without a dial indicator but you can prop the robot up on something so it doesn’t move, floor the motor and watch the wheel for wobble.

Slop, or backlash you can feel by rotating the wheel manually. If the wheel turns more than a few degrees before you feel the motor start to resist movement going from one direction to another then you have some backlash.

VEX stuff is not precision, it will have some runout, some backlash, etc. There is 0.007" of play in every connection made with VEX parts, so every bolt can shift your design by that much. So yes, try to build a better bot, but also accept that your code will have to handle some of these variables.

It gets deep fast, but adding ways of measuring the movement other than PID (think gyro and accelerometer) and doing some kind of sensor fusion or kalman filter is an answer.

Manual tuning helps too. Know your bot tends to drift right? Compensate for it in code.



So that’s it in all its beauty, of course now theres a lot more on it

Are you testing this on carpet?

Nope, Its on the vex foam tiles now

The design seems alright, but I would square up some of it.


1 Like

Have you checked to see if the wheels freespin for 20-25 seconds with the motors off? Generally speaking the main culprit for an X-drive that doesn’t go straight is due to one side (or pod) have slightly more friction than another side. Try to make them all freespin roughly the same amount (or at least within the 20-25 second mark).


Any suggestions to doing that? Maybe adding standoffs closer to the wheels?

Ok! Yeah that’s in a nutshell whats happening I think

Humm… It could be accomplished by just screwing down the bolts on the 45 gusset with a very small amount of removable threadlock but when you do that you have to align the c-chan both parallel and at a real 45 angle, I would probably 3D print a jig to be bolted on during alignment, and removed before comp. but that’s kind of like killing a mouse with a nuke. It’s my style but probably not the best advice unless you are setup for that.

The problem is your wheels are not the same distance apart. In addition to that, as Cody said, vex parts are not perfect. Use Robosource shoulder screws when they come out and lexan gussets and you can reach really low slop.

1 Like

You might be able to create custom gussets you could even just do it with a drill if you don’t have a CNC or laser cutter :slight_smile:

Ethan brings up a good point, are you using spacers of the exact same size on all the wheels? Ideally you’d partially use the shaft itself as a standoff as sorts by making it the exactly (or close to exactly) the correct length.

The reason isn’t the spacing on the axle, it’s just that vex gussets don’t create a rational horizontal distance. He is constraining his x drive with his supporting c channels which have a rational horizontal distance between holes; each hole is in 0.5” increments. So because of that, if he tried to connect the remaining gussets and add a c channel across, it wouldn’t fit unless he forces it or drills holes somewhere

Ah yes, I forgot about that. I always start in CAD and the wheels get positioned first. Humm.

Yeah I see it in the picture now. Ooph.

It’s best seen in cad but I don’t have my computer with me rn. But it’s one of the reason why people make custom lexan gussets to compensate for this (the other main reason is that it gives more contact points and places to screw things in)
Here’s an example:
(Ignore the phasing through metal I was lazy lul)


Ethan, you’re talking about this right:

Never underestimate the value of a long level. You can use it as a straight edge, but if you flip the robot on the side you can see very small quantities of drift.

And while I agree with Cody on CAD first,but because of the square holes / round screws there is a chance for build slop lots of build slop, trust me, I’ve had lots of cases of “Cody Design Fails” that are because of builder ineptness.

@RandamRobotics you are close, get a small square and check the angles.

Nice frame!


The red and green lines which represent the horizontal and vertical distances between the wheels (not to scale) aren’t equal. The vertical distance is irrational because of the way the vex gussets are made and the horizontal distance is rational because it’s constrained by the c channel

1 Like