Browse Source

mc_att_control: att rate integral fix

sbg
Anton Babushkin 11 years ago
parent
commit
d933d523eb
  1. 4
      src/modules/mc_att_control/mc_att_control_main.cpp

4
src/modules/mc_att_control/mc_att_control_main.cpp

@ -654,8 +654,9 @@ MulticopterAttitudeControl::control_attitude_rates(float dt) @@ -654,8 +654,9 @@ MulticopterAttitudeControl::control_attitude_rates(float dt)
_rates_prev = rates;
/* update integral only if not saturated on low limit */
if (_thrust_sp > 0.1f && _att_control.length() < _thrust_sp) {
if (_thrust_sp > 0.1f) {
for (int i = 0; i < 3; i++) {
if (fabsf(_att_control(i)) < _thrust_sp) {
float rate_i = _rates_int(i) + _params.rate_i(i) * rates_err(i) * dt;
if (isfinite(rate_i) && rate_i > -RATES_I_LIMIT && rate_i < RATES_I_LIMIT &&
@ -665,6 +666,7 @@ MulticopterAttitudeControl::control_attitude_rates(float dt) @@ -665,6 +666,7 @@ MulticopterAttitudeControl::control_attitude_rates(float dt)
}
}
}
}
void
MulticopterAttitudeControl::task_main_trampoline(int argc, char *argv[])

Loading…
Cancel
Save