I think you are using the gyro the wrong way for the cartesian form:
mecanumDrive_Cartesian(x speed, y speed, rotation
rate, gyro angle)
Use gyro for "field oriented driving"
see:
https://wpilib.screenstepslive.com/s...-mecanum-drive
The polar form may be more appropriate here:
mecanumDrive_Polar(driveSpeed, angle, rotation rate)
Use the Gyro for the angle: use -gyro.getAngle() to go straight (0 degrees) and use zero for rotation rate.