Programming Mecanum Wheels

I have tried searching CD and WPILib for a while now, and tried everything. How do you do mecanum wheel programming?

Hi! I’ve dug up a few mechanum links from wpi located here: and here:

I don’t know if they particularly relate to your team’s robot, but they will hopefully be useful! My team has done mechanum drivetrain for the two years I have been on the team, so let me know if you have any questions or need more explanation! :slight_smile:

**WPILib **

     * Drive method for Mecanum wheeled robots.
     * A method for driving with Mecanum wheeled robots. There are 4 wheels
     * on the robot, arranged so that the front and back wheels are toed in 45 degrees.
     * When looking at the wheels from the top, the roller axles should form an X across the robot.
     * This is designed to be directly driven by joystick axes.
     * @param x The speed that the robot should drive in the X direction. -1.0..1.0]
     * @param y The speed that the robot should drive in the Y direction.
     * This input is inverted to match the forward == -1.0 that joysticks produce. -1.0..1.0]
     * @param rotation The rate of rotation for the robot that is completely independent of
     * the translation. -1.0..1.0]
     * @param gyroAngle The current angle reading from the gyro.  Use this to implement field-oriented controls.
    public void mecanumDrive_Cartesian(double x, double y, double rotation, double gyroAngle) {
        if(!kMecanumCartesian_Reported) {
  , getNumMotors(), tInstances.kRobotDrive_MecanumCartesian);
            kMecanumCartesian_Reported = true;

I have no idea why this code is not working, any ideas, I have been stressing about it for the past two hours. :ahh:

        double magnitude = driveStick.getMagnitude();
        double direction = driveStick.getDirectionDegrees();
        double rotation = otherStick.getTwist();
        RobotDrive driveTrain = new RobotDrive(3,4,5,6);
        while (isEnabled() && isOperatorControl()) {
        	driveTrain.mecanumDrive_Polar(magnitude, direction, rotation);

This is located in teleopPeriodic() in

Any ideas?

You probably want to fetch the current values from your joystick inside the while(isEnabled && isOperatorControl()) loop. Otherwise you take the reading once and keep sending them over and over.