You can use the ArcadeDrive method that takes raw values for the speed/turn inputs. This is the signature:
Code:
void RobotDrive::ArcadeDrive(float moveValue, float rotateValue, bool squaredInputs = true);
So instead of doing something like this
Code:
myDrive.ArcadeDrive(myJoystick);
You could do something like
Code:
float orientation = 1;
if(goingBackwards)
orientation = -1;
myDrive.ArcadeDrive(myJoystick.GetY() * orientation, myJoystick.GetX());
You shouldn't have to reverse the motors with that.
EDIT: You shouldn't have to reverse the X axis actually. Kind of counter intuitive, but thats the way it works out. A left hand turn is a left hand turn looking forward and backward. You just want to change your direction. (moveValue)