add PID-related items in mount config
rewrite AsibFM700ServoController methods according to new time point representation in LibSidServo
This commit is contained in:
@@ -126,6 +126,9 @@ Asibfm700Mount::error_t Asibfm700Mount::initMount()
|
||||
logInfo(" MountReqInterval: {}", to_msecs(hw_cfg.devConfig.MountReqInterval));
|
||||
logInfo(" EncoderReqInterval: {}", to_msecs(hw_cfg.devConfig.EncoderReqInterval));
|
||||
logInfo(" EncoderSpeedInterval: {}", to_msecs(hw_cfg.devConfig.EncoderSpeedInterval));
|
||||
logInfo(" PIDMaxDt: {}", to_msecs(hw_cfg.devConfig.PIDMaxDt));
|
||||
logInfo(" PIDRefreshDt: {}", to_msecs(hw_cfg.devConfig.PIDRefreshDt));
|
||||
logInfo(" PIDCycleDt: {}", to_msecs(hw_cfg.devConfig.PIDCycleDt));
|
||||
|
||||
logInfo(" XPIDC: [P: {}, I: {}, D: {}]", hw_cfg.devConfig.XPIDC.P, hw_cfg.devConfig.XPIDC.I,
|
||||
hw_cfg.devConfig.XPIDC.D);
|
||||
@@ -186,6 +189,44 @@ Asibfm700Mount::error_t Asibfm700Mount::initMount()
|
||||
mpars.brakingAccelX = 0.165806; // Sidereal defines HA-axis as Y-axis
|
||||
mpars.brakingAccelY = 0.219911; // Sidereal defines DEC-axis as X-axis
|
||||
}
|
||||
|
||||
auto max_dt_intvl = _mountConfig.getValue<std::chrono::milliseconds>("PIDMaxDt").value_or({});
|
||||
auto min_dt_intvl = _mountConfig.getValue<std::chrono::milliseconds>("PIDRefreshDt").value_or({});
|
||||
|
||||
// check for polling interval consistency
|
||||
auto intvl = mpars.slewingTelemetryInterval;
|
||||
if (intvl > max_dt_intvl) {
|
||||
mpars.slewingTelemetryInterval = max_dt_intvl;
|
||||
logWarn(
|
||||
" slewingTelemetryInterval user value ({} ms) is greater than allowed! Set it to maximal "
|
||||
"allowed one: {} ms",
|
||||
intvl.count(), max_dt_intvl.count());
|
||||
}
|
||||
if (intvl < min_dt_intvl) {
|
||||
mpars.slewingTelemetryInterval = min_dt_intvl;
|
||||
logWarn(
|
||||
" slewingTelemetryInterval user value ({} ms) is lesser than allowed! Set it to minimal allowed "
|
||||
"one: {} ms",
|
||||
intvl.count(), min_dt_intvl.count());
|
||||
}
|
||||
|
||||
intvl = mpars.trackingTelemetryInterval;
|
||||
if (intvl > max_dt_intvl) {
|
||||
mpars.trackingTelemetryInterval = max_dt_intvl;
|
||||
logWarn(
|
||||
" trackingTelemetryInterval user value ({} ms) is greater than allowed! Set it to maximal "
|
||||
"allowed one: {} ms",
|
||||
intvl.count(), max_dt_intvl.count());
|
||||
}
|
||||
if (intvl < min_dt_intvl) {
|
||||
mpars.trackingTelemetryInterval = min_dt_intvl;
|
||||
logWarn(
|
||||
" trackingTelemetryInterval user value ({} ms) is lesser than allowed! Set it to minimal "
|
||||
"allowed one: {} ms",
|
||||
intvl.count(), min_dt_intvl.count());
|
||||
}
|
||||
|
||||
|
||||
auto st_err = setSlewingParams(mpars);
|
||||
if (st_err) {
|
||||
errorLogging(" An error occured while setting slewing parameters: ", st_err);
|
||||
@@ -194,10 +235,14 @@ Asibfm700Mount::error_t Asibfm700Mount::initMount()
|
||||
logInfo(" Max DEC-axis speed: {} degs/s", mcc::MccAngle(mpars.slewRateY).degrees());
|
||||
logInfo(" HA-axis stop acceleration braking: {} degs/s^2", mcc::MccAngle(mpars.brakingAccelX).degrees());
|
||||
logInfo(" DEC-axis stop acceleration braking: {} degs/s^2", mcc::MccAngle(mpars.brakingAccelY).degrees());
|
||||
|
||||
logInfo(" Slewing telemetry polling interval: {} millisecs", mpars.slewingTelemetryInterval.count());
|
||||
}
|
||||
st_err = setTrackingParams(_mountConfig.movingModelParams());
|
||||
if (st_err) {
|
||||
errorLogging(" An error occured while setting tracking parameters: ", st_err);
|
||||
} else {
|
||||
logInfo(" Tracking telemetry polling interval: {} millisecs", mpars.trackingTelemetryInterval.count());
|
||||
}
|
||||
logInfo("Slewing and tracking parameters have been set successfully");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user