Mecanum Drive System Issues

Hello all,

First of all, thank you to everyone who has helped me in the past and thank you to those who will help me here!

My team (at my recommendation) opted to use mecanum wheels for our robot. This is all fine and dandy, especially since our track record from last year using them really is pretty good. This year, though, I’ve run into an issue that really perplex’s me. When we go to turn, the front wheels of the robot spin one way and the rear two wheels spin the other. (In case you don’t know, what should happen is that the two left wheels should spin one way and the two right wheels should spin the other.)

I am very confused because every time that I run through the math to check that the motors should be running properly, I get the corect output, but once I test it by driving the robot, it functions improperly. I am going to do some more testing to check the values to see that they line up with my calculations today, but I’ll probably still be very confused. If any one has any ideas and would like to help, I would be most greatful.

Sincerely,

Austin
Lead Programmer, Team 3324

Hello first off I am not the Programmer for our team but I drive the robot a lot (yes we are using Mecanum too) and after we set it up things weird. sort of like you just described. The problem was that the PWM outputs from the dig. sidecar were slightly messed up

Austin,

Put the robot up on blocks and tell us what the four wheels are doing when you give it each of the following commands: pure forward, reverse, strafe right, strafe left, rotate right, and rotate left.

That info should be sufficient to identify exactly what needs to be changed.

**

Yes, this is what we did to test our robot too

Well first off, there’s not really enough information to fully diagnose your problem, but we’re using holonomic drive this year (controlled the same way), so I’ve got a couple things that might cause a problem like that.

First off, are you using the RobotDrive class (Java) or .vi (LabVIEW) or…whatever the equivalent library in C++ is? That actually does work really well right out of the box for controlling mecanum drive. I was originally going to write our own code for the drive system, but it does save a lot of time to not reinvent the wheel (if it is a little less fun).

Second, make sure your jaguars are plugged in and instantiated correctly. We’ve had enough times throughout the years where “lfJaguar” actually turned out to be the back right one for this not to come to mind. Also, if you’re using the RobotDrive object, make sure the jags are in the correct places.

Lastly, check how you put in your joysticks. Earlier this year we had an interesting problem with the arcade drive mode for our bot before we realized the X axis was plugged into Y and Y was plugged into X.

Not sure if any of these will help, but good luck!

We are having the same problem as the OP…everything works except the rotation. when we try to rotate the robot, the back wheels spin forward and the front wheels spin backwards. any ideas?

Once again, I’d ask exactly how your code works. If you used the out-of-box code, there’s one set of problems you might have (motor polarity wrong, arguments passed in incorrectly/in the wrong order etc.). If you created your own control system, then it’s likely a problem with your calculations or logic. Not really enough information for us to diagnose what’s going on. Oh, and toss it up on blocks.

That would happen if you had the controls swapped between two diagonally opposite motors. For example, you could be controlling the left front motor with the right rear PWM signal, and vice versa. Make sure the wires match the programming.

with the robot on blocks:

full forward = all wheels forward
full reverse = all wheels reverse
strafe right = right side spins towards each other; left side spins away from each other
strafe left = left side spins towards each other; right side spins away from each other

Rotate = front 2 wheels spin same direction; back 2 wheels spin same direction

this is in labview

Here is the code we are using I have the begin in the upper left hand corner and the teleop is the rest of it. I have tried different combinations of the true/false constants to invert the motors and I can get the rotate to work when I change them to how (i think) they should be (one side inverted and the other not). But then the forward/reverse/diagonals/strafe don’t work.

I checked the wiring (polarities and PWM’s) and nothing was wrong there.





Prove it. :smiley:

Which PWM channel do you have going to each motor? I can’t be absolutely certain, but your code seems to have it this way:

PWM1: front left (inverted)
PWM2: front right (inverted)
PWM3: rear left (not inverted)
PWM4: rear right (not inverted)

It’s rather odd to have both front motors inverted and neither rear motor inverted. One typically sees only the right motors inverted, or occasionally only the left ones. The other common situation is for none of them to be inverted and have the compensation occur in the wiring.

It still looks to me like you have your front left and rear right motor controls swapped.

See attached drawing. Notice how the diagonally opposite wheels are always turning in the same direction as each other for forward, reverse, strafe left, and strafe right motion. But they go in opposite directions from one another for rotation.

Trace the wiring back from each front motor to make sure it isn’t being controlled by the diagonally opposite rear wheel command.

Also, are you using home-brew code or the WPI Holonomic Drive vi? Cartesian or Polar?

**





I got fed up and decided to go through every inversion possible (all 16 of em’) and on the 10th one it worked (yes I ran from robot main 10 times). The correct inversion is Rear Right and Front Right inverted and the left ones not inverted.

Yep, that’s what I said was the typical setup.

But that can’t be the only thing you changed, can it? The robot was reportedly driving forward fine before. If you now have different Motor Invert settings with the same wiring, some of the motors would be running the wrong direction when you tried driving straight.