I am working with the simulation and I have an auto routine which drives forward a distance, stops, rotates 180 degrees, then drives back the way it came. The rotation is to the left 180 degrees with the same power level on each wheel, negative on left positive on right, which causes our robot to rotate left. Now with the same power on each motor the robot should rotate pretty much around the center point of the robot, with little translation in any direction (which the real robot does). One would expect the encoder counts of each wheel to change a similar amount, left down and right up.
However, in simulation the encoder counts of each wheel are not similar as one would expect. The right encoder reports twice the counts of the left motor. This results in a position translation in the Y direction because the rotation is in effect not around the center but more around the left wheel. If one observes the test, the real robot drives forward, stops, rotates 180 degrees, then drives back over the same path. These two paths should be very close to the same. But in the sim, the path driven back is translated upwards in the Y direction, so the path back is offset from the path out.
The question is why, with equal power but opposite sign on the motors, do the l/r encoder counts returned by DifferentialDrivetrainSim show dissimilar changes, 50% off?