A simple debugging strategy you could try is swap the Jaguars’ pwms front and back. That will tell you if it’s programming or calibration of the Jags.
Encoders are the best way to make both sides match exactly, if you’ve got some programming help to get them working. Another way you could do it is with a gyro, it may be a little simpler, but it does have other issues. One advantage to the gyro is it will compensate for differing traction between the wheels (within reason).
Found it it’s just a joystick issue so I gave strafing its own joystick and its fine. Only problem is when going back it curves slightly. Pwm 2 is going slightly slower so I guess it’s time for the encoders.
So the picture you put in your first post doesn’t actually match the code you’re running right now?
When I read your description of what was happening, the first thing I thought was that the robot was trying to rotate a little whenever you told it to strafe. Since the picture showed the rotate input coming from a separate joystick, that didn’t make sense. Now that you say otherwise, it seems a likely possibility. When you’re pushing the joystick to the side, it’s easy to twist it a little without realizing it.