mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-26 04:53:33 +08:00
fw multiply integrator gain in loop
This commit is contained in:
@@ -181,12 +181,12 @@ float ECL_PitchController::control_bodyrate(const struct ECL_ControlData &ctl_da
|
|||||||
id = math::min(id, 0.0f);
|
id = math::min(id, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
_integrator += id;
|
_integrator += id * _k_i;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* integrator limit */
|
/* integrator limit */
|
||||||
//xxx: until start detection is available: integral part in control signal is limited here
|
//xxx: until start detection is available: integral part in control signal is limited here
|
||||||
float integrator_constrained = math::constrain(_integrator * _k_i, -_integrator_max, _integrator_max);
|
float integrator_constrained = math::constrain(_integrator, -_integrator_max, _integrator_max);
|
||||||
|
|
||||||
/* Apply PI rate controller and store non-limited output */
|
/* Apply PI rate controller and store non-limited output */
|
||||||
_last_output = _bodyrate_setpoint * _k_ff * ctl_data.scaler +
|
_last_output = _bodyrate_setpoint * _k_ff * ctl_data.scaler +
|
||||||
|
|||||||
@@ -128,12 +128,12 @@ float ECL_RollController::control_bodyrate(const struct ECL_ControlData &ctl_dat
|
|||||||
id = math::min(id, 0.0f);
|
id = math::min(id, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
_integrator += id;
|
_integrator += id * _k_i;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* integrator limit */
|
/* integrator limit */
|
||||||
//xxx: until start detection is available: integral part in control signal is limited here
|
//xxx: until start detection is available: integral part in control signal is limited here
|
||||||
float integrator_constrained = math::constrain(_integrator * _k_i, -_integrator_max, _integrator_max);
|
float integrator_constrained = math::constrain(_integrator, -_integrator_max, _integrator_max);
|
||||||
//warnx("roll: _integrator: %.4f, _integrator_max: %.4f", (double)_integrator, (double)_integrator_max);
|
//warnx("roll: _integrator: %.4f, _integrator_max: %.4f", (double)_integrator, (double)_integrator_max);
|
||||||
|
|
||||||
/* Apply PI rate controller and store non-limited output */
|
/* Apply PI rate controller and store non-limited output */
|
||||||
|
|||||||
@@ -100,12 +100,12 @@ float ECL_WheelController::control_bodyrate(const struct ECL_ControlData &ctl_da
|
|||||||
id = math::min(id, 0.0f);
|
id = math::min(id, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
_integrator += id;
|
_integrator += id * _k_i;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* integrator limit */
|
/* integrator limit */
|
||||||
//xxx: until start detection is available: integral part in control signal is limited here
|
//xxx: until start detection is available: integral part in control signal is limited here
|
||||||
float integrator_constrained = math::constrain(_integrator * _k_i, -_integrator_max, _integrator_max);
|
float integrator_constrained = math::constrain(_integrator, -_integrator_max, _integrator_max);
|
||||||
|
|
||||||
/* Apply PI rate controller and store non-limited output */
|
/* Apply PI rate controller and store non-limited output */
|
||||||
_last_output = _rate_setpoint * _k_ff * ctl_data.groundspeed_scaler +
|
_last_output = _rate_setpoint * _k_ff * ctl_data.groundspeed_scaler +
|
||||||
|
|||||||
@@ -217,12 +217,12 @@ float ECL_YawController::control_bodyrate_impl(const struct ECL_ControlData &ctl
|
|||||||
id = math::min(id, 0.0f);
|
id = math::min(id, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
_integrator += id;
|
_integrator += id * _k_i;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* integrator limit */
|
/* integrator limit */
|
||||||
//xxx: until start detection is available: integral part in control signal is limited here
|
//xxx: until start detection is available: integral part in control signal is limited here
|
||||||
float integrator_constrained = math::constrain(_integrator * _k_i, -_integrator_max, _integrator_max);
|
float integrator_constrained = math::constrain(_integrator, -_integrator_max, _integrator_max);
|
||||||
|
|
||||||
/* Apply PI rate controller and store non-limited output */
|
/* Apply PI rate controller and store non-limited output */
|
||||||
_last_output = (_bodyrate_setpoint * _k_ff + _rate_error * _k_p + integrator_constrained) * ctl_data.scaler *
|
_last_output = (_bodyrate_setpoint * _k_ff + _rate_error * _k_p + integrator_constrained) * ctl_data.scaler *
|
||||||
|
|||||||
Reference in New Issue
Block a user