Sorry I haven't cleaned this up yet, and thanks for your question. My intention is to make this more obvious.
GPG, when enabled, completely controls the response to RA error (but not the DEC error). So, RA Proportional Gain, RA Integral Gain and RA Minimum Pulse from that Control Tab are ignored when GPG is used (the DEC values are used, as GPG is not involved in DEC guiding). It turns out the RA Maximum pulse is used for RA and DEC. Maximum pulse is sort of a safeguard that wasn't implemented in the Klenske's GPG code , and so I kept it in place.
The GPG parameters themselves are a bit tricky. I did not modify them from their original form, and you can see how they're used in the code we got from Max Planck Institute / Edgar Klenske:
invent.kde.org/education/kstars/-/blob/m...cess_guider.cpp#L344
and I might add, I am very grateful for the use of that amazing code.
Here's a summary of the gory detail from that link:
Basically it blends the control error:
line 344:
control_signal_ = parameters.control_gain_ * input;
where "input" is the arcsecond guiding error in RA, and control_gain_ is that parameter in the GPG RA Guider Menu you showed
and combines it with a predicted error it's learned from its history
lines 363-364:
prediction_ = PredictGearError(prediction_point + time_step);
control_signal_ += parameters.prediction_gain_ * prediction_; // add the prediction
and then backs off a bit more if it hasn't had enough time to be confident in its predictions
lines 368-374:
if (get_last_point().timestamp < parameters.min_periods_for_inference_ * period_length) {
double percentage = get_last_point().timestamp / (parameters.min_periods_for_inference_ * period_length);
percentage = std::min(percentage, 1.0); // limit to 100 percent GP
hyst_percentage = 1.0 - percentage;
control_signal_ = percentage * control_signal_ + (1.0 - percentage) * hysteresis_control;
}