What the autopilot does is correct a heading route or nav route, or certain altitude based on a margin of error. If the percentage of error is high, it begins to oscillate, and if that margin of allowed error is high, it never corrects the oscillation but “dances” on the straight line without stabilizing. If the margin of error is low, it does everything in an abrupt way and is not corrected either. You have to find the perfect balance. Those error values are defined in ai.cfg:
The problem with stock aircrafts is that asobo has not wanted to complicate its life. they has taken a PID template and put them in all the planes, regardless of weight, moments of inertia, maximum speed. So in some it works, like in a vl-3 whose weight is very light and easy to correct, but if you copy it in a 737, things change, due to the tonnage.
With this plane it is simply to dedicate time to it and I did. However, if I make changes to the flight model, it may affect the autopilot. That is why it is important that you tell me in case I have to recalibrate.
Prepar3D defines them like this in SDK:
PID Controllers
PIDs are only used to aid in the handling of AI (computer) controlled aircraft. PID stands for Proportional-Derivative-Integral controller, and is a feedback controller that takes an error for a controlled state and outputs a correction. For example, on an airspeed controller, the error would be the desired airspeed minus the current airspeed. The output is then determined by the sum of three factors using the error and the P, I, and D constants. The “P” factor is simply a factor proportional to the error. The “I” factor is an accumulated factor scaled by the error. The “D” factor is a factor based on the rate of change of the error.
“P factor” = P * error
“Accumulated I factor” = “Accumulated I factor” + (I * error * deltaTime), in Calculus terms, this is simply an integral. The error must reverse its sign to drive this accumulated factor to 0. This is characterized as oscillations, but drives the error to zero.
“D factor” = D * error/deltaTime. As the error gets smaller, this drives the output to be asymptotic towards the desired value.