aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJulian Oes <julian@oes.ch>2013-06-19 12:01:22 +0200
committerJulian Oes <julian@oes.ch>2013-06-19 12:01:22 +0200
commitc1049483a82857bebb012607578add9492446321 (patch)
tree6c5121070c64bb04417fa1bbc6cadf8c2d36bd55 /src
parentd6c15b16792f3f087a0d934677615949c9e12688 (diff)
downloadpx4-firmware-c1049483a82857bebb012607578add9492446321.tar.gz
px4-firmware-c1049483a82857bebb012607578add9492446321.tar.bz2
px4-firmware-c1049483a82857bebb012607578add9492446321.zip
Added integral reset for rate controller
Diffstat (limited to 'src')
-rw-r--r--src/modules/multirotor_att_control/multirotor_rate_control.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/modules/multirotor_att_control/multirotor_rate_control.c b/src/modules/multirotor_att_control/multirotor_rate_control.c
index e37ede3e0..a0266e1b3 100644
--- a/src/modules/multirotor_att_control/multirotor_rate_control.c
+++ b/src/modules/multirotor_att_control/multirotor_rate_control.c
@@ -199,6 +199,12 @@ void multirotor_control_rates(const struct vehicle_rates_setpoint_s *rate_sp,
pid_set_parameters(&roll_rate_controller, p.attrate_p, p.attrate_i, p.attrate_d, 1.0f, 1.0f, 0.2f);
}
+ /* reset integral if on ground */
+ if (rate_sp->thrust < 0.01f) {
+ pid_reset_integral(&pitch_rate_controller);
+ pid_reset_integral(&roll_rate_controller);
+ }
+
/* control pitch (forward) output */
float pitch_control = pid_calculate(&pitch_rate_controller, rate_sp->pitch ,
rates[1], rates_acc[1], deltaT, &control_debug->pitch_rate_p, &control_debug->pitch_rate_i, &control_debug->pitch_rate_d);