aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ecl/attitude_fw/ecl_roll_controller.cpp
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2013-10-24 18:34:22 +0200
committerThomas Gubler <thomasgubler@gmail.com>2013-10-24 18:34:22 +0200
commit01d8ca1fbaf579534c0faca264bd458d20997f13 (patch)
treedf6447fb35a343923981db0ccc9f0922738cbfd8 /src/lib/ecl/attitude_fw/ecl_roll_controller.cpp
parentbff3bf8d87a2496bf6f1857287200926a4b21e0a (diff)
parent1e89f30120f30f0cac9c4bdd7b81ee2da96bcc8f (diff)
downloadpx4-firmware-01d8ca1fbaf579534c0faca264bd458d20997f13.tar.gz
px4-firmware-01d8ca1fbaf579534c0faca264bd458d20997f13.tar.bz2
px4-firmware-01d8ca1fbaf579534c0faca264bd458d20997f13.zip
manual merge fw_integrator_fix_ouputlimit into fw_staging_ouputlimit
Diffstat (limited to 'src/lib/ecl/attitude_fw/ecl_roll_controller.cpp')
-rw-r--r--src/lib/ecl/attitude_fw/ecl_roll_controller.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/ecl/attitude_fw/ecl_roll_controller.cpp b/src/lib/ecl/attitude_fw/ecl_roll_controller.cpp
index 9e2007131..0772f88bc 100644
--- a/src/lib/ecl/attitude_fw/ecl_roll_controller.cpp
+++ b/src/lib/ecl/attitude_fw/ecl_roll_controller.cpp
@@ -132,12 +132,12 @@ float ECL_RollController::control_bodyrate(float pitch,
}
/* integrator limit */
- _integrator = math::constrain(_integrator, -_integrator_max, _integrator_max);
-// warnx("roll: _integrator: %.4f, _integrator_max: %.4f, airspeed %.4f, _k_i %.4f", (double)_integrator, (double)_integrator_max, (double)airspeed, (double)_k_i);
+ //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);
+ //warnx("roll: _integrator: %.4f, _integrator_max: %.4f", (double)_integrator, (double)_integrator_max);
/* Apply PI rate controller and store non-limited output */
- _last_output = (_rate_error * _k_p + _integrator * _k_i + _rate_setpoint * k_ff) * scaler * scaler; //scaler is proportional to 1/airspeed
-// warnx("roll: _last_output %.4f", (double)_last_output);
+ _last_output = (_rate_error * _k_p + integrator_constrained + _rate_setpoint * k_ff) * scaler * scaler; //scaler is proportional to 1/airspeed
return math::constrain(_last_output, -1.0f, 1.0f);
}