Assistance requested to implement a steering PID on a differential drive rover

In rereading this second explanation, perhaps PID will work with that controller after all.

The second command controls the speeds of the 2 wheels to create a turn.
0 stops one wheel and turns the other at 100%, 90 is straight ahead with both wheels and 180 turns the other way. I tend not to reverse the motors as I do not need to pivot.

However, "turning behavior" must be proportional to the difference from 90, i.e. 92 should result in a very large turning radius.

Then, just offset the PID output as follows. Note: I don't understand your examples of the motor control commands.

// in loop() function ...

 mag_heading = wrap360(v[0] + yaw_offset); //yaw = v[0] and correct for magnetic North

// heading error and PID steering, "point_bearing" is the setpoint

 error = heading_error(point_bearing, mag_heading);  //wrap to +/- 180 degrees
 
 //error is positive if current_heading > bearing (compass direction)
 //if  (turn > 90) acts to reduce left motor speed, bear left

 int turn = 90 + (kp*error);  //may need to subtract kp*error and/or include Ki, Kd

 set_output(turn); //command the turn