For driving straight the most important thing is to have one PID loop for driving robot forward and another separate control loop for small heading corrections to keep the robot straight, which is exactly what @Doug Moyers code does.
That code could work great if you have perfectly balanced drivetrain and matched motors. However, that is very hard to achieve in the real life. One side will inevitably have more friction than the other. To handle that you will need to cap drivePower coming out of the forward PID loop about 10-15% below the max power that motors could accept.
The previous post doesn’t specify the value for DRIVE_MAX_PWR, which we would set to 85 in order to keep 393 motors in the linear region between 80 and 90 power units. To keep it symmetric we would also calculate the current position as an average between left and right encoders, and set the final power as:
set_drivePower( drivePower - rMod/2 , drivePower + rMod/2 );
Another improvement could be to maintain integral for the rDiff error and use it in calculation of rMod. Under normal conditions nonzero values for the accumulated integral would tell you if one side of the drivetrain had more friction losses than the other. Also, if robot’s load is unbalanced it could improve straightness and accuracy of the drive path if you carry capped value of the integral between the drive steps.