Other than trial and error, is there any way to calibrate a differential steering vehicle to go straight? With differences in motor speed and wheel circumferences, it's unlikely that both motors should be driven at the same PWM value, so how have you coped with arriving at the "fudge factor"?
You cope with it by monitoring it - using a slot encoder (preferably quadrature, but not absolutely necessary) for each motor.
Mount the encoder wheel as close to the motor as possible (that is, as "close" to the output shaft as possible - best is directly on the motor's shaft, but if you have to choose the next output gear, that could be ok too).
Monitor the pulses from each encoder - their length should match. If one is "faster" (shorter) than the other, slow that side down (or speed up the other side) until they match again. Monitoring the pulses should be done via interrupt handlers for best results.