MechanumDriveTrain

Program a mechanum style robot seamlessly

Mechanum Drive Train Documentation

Overview

The Mechanum Drive Train class provides omnidirectional movement control for robots equipped with mechanum wheels. It simplifies complex kinematics into intuitive X, Y, and rotation controls.

Method
Description

MechanumDriveTrain(controller, FL, FR, BL, BR)

Creates a mechanum drive system with specified motor IDs

drive(x, y, turn)

Controls robot movement with directional and rotational inputs

setBrake()

Enables brake mode on all motors for precise stopping

setCoast()

Enables coast mode on all motors for free-wheeling


Quick Start Example

#include <EchoLib.h>

MotorControllers motors;
MechanumDriveTrain drive(motors, 1, 2, 3, 4);

void setup() {
  motors.addMotor(1, 5, 6);   // Front Left
  motors.addMotor(2, 7, 8);   // Front Right
  motors.addMotor(3, 9, 10);  // Back Left
  motors.addMotor(4, 11, 12); // Back Right
}

void loop() {
  // Move forward
  drive.drive(0, 100, 0);
  delay(1000);
  
  // Strafe right
  drive.drive(100, 0, 0);
  delay(1000);
  
  // Rotate clockwise
  drive.drive(0, 0, 50);
  delay(1000);
}

Method Details

Constructor

MechanumDriveTrain(MotorControllers& controller, uint8_t FrontL, uint8_t FrontR, uint8_t BackL, uint8_t BackR)

Creates a mechanum drive system using the specified motor controller and motor IDs.

Parameters:

  • controller: Reference to the MotorControllers instance

  • FrontL: Motor ID for front-left wheel

  • FrontR: Motor ID for front-right wheel

  • BackL: Motor ID for back-left wheel

  • BackR: Motor ID for back-right wheel


Movement Control

void drive(int x, int y, int turn)

Controls robot movement with three independent parameters.

Parameters:

  • x: Strafe speed (-255 to 255). Positive = right, negative = left

  • y: Forward/backward speed (-255 to 255). Positive = forward, negative = backward

  • turn: Rotation speed (-255 to 255). Positive = clockwise, negative = counter-clockwise


Brake Control

void setBrake()

Enables brake mode on all four motors. Motors resist movement when stopped, providing precise positioning.

void setCoast()

Enables coast mode on all four motors. Motors spin freely when stopped, reducing power consumption but allowing drift.


Complete Example

This example demonstrates joystick-controlled mechanum drive with brake/coast switching.


Wheel Orientation

Wheel Types:

  • Front Left: Left-handed wheel (rollers angle forward-left)

  • Front Right: Right-handed wheel (rollers angle forward-right)

  • Back Left: Right-handed wheel (rollers angle backward-right)

  • Back Right: Left-handed wheel (rollers angle backward-left)


Movement Mechanics

Understanding how mechanum wheels create omnidirectional movement:

Forward/Backward: All wheels rotate in the same direction

Strafing: Diagonal wheel pairs rotate in opposite directions

Rotation: Left and right wheels rotate in opposite directions

Combined Movement: Vector addition of individual wheel forces


Mathematical Foundation

The mechanum drive kinematics are based on vector mathematics:

Front Left Motor = Y + X + Turn Front Right Motor = Y - X - Turn Back Left Motor = Y - X + Turn Back Right Motor = Y + X - Turn

Where:

  • Y: Forward/backward component

  • X: Left/right (strafe) component

  • Turn: Rotational component

This formula ensures force vectors from each wheel's angled rollers combine correctly to produce the desired robot movement.


Best Practices

Hardware Considerations

Wheel Quality: Use high-quality mechanum wheels with smooth rollers for optimal performance

Motor Matching: Ensure all four motors have similar specifications and performance characteristics

Weight Distribution: Maintain balanced weight distribution for predictable movement

Surface Contact: Ensure adequate wheel contact pressure for proper roller engagement


Mechanical Considerations

  • Ensure proper wheel alignment and mounting

  • Maintain adequate ground contact pressure

  • Regular maintenance of roller bearings and wheel assemblies


Troubleshooting

Movement Issues

Robot doesn't move straight: Check wheel alignment and motor calibration

Strafing doesn't work: Verify wheel orientation - rollers must form proper "X" pattern

Inconsistent movement: Ensure all motors have similar performance characteristics

Robot vibrates: Check wheel mounting and roller condition


Control Issues

Jerky movement: Implement acceleration ramping or reduce input sensitivity

Drift when stopped: Use brake mode or implement active position holding

Rotation while moving straight: Check motor calibration and wheel alignment

Weak strafing: Verify proper wheel pressure and roller contact with ground


Motor Issues

One wheel not responding: Check motor ID assignments and controller connections

Uneven power: Verify battery voltage and motor driver capacity

Overheating: Reduce maximum speeds or improve heat dissipation

Motor stalling: Check for mechanical obstructions and proper gear ratios


Conclusion

The MechanumDriveTrain class provides a powerful and flexible foundation for omnidirectional robot control. By abstracting complex mechanum wheel kinematics into simple x, y, and turn parameters, it enables rapid development of sophisticated robotic applications. Whether you're building autonomous vehicles, remote-controlled robots, or complex positioning systems, this class provides essential tools for precise omnidirectional movement control.

Last updated