diff options
author | tnaegeli <naegelit@student.ethz.ch> | 2012-10-09 16:31:04 +0200 |
---|---|---|
committer | tnaegeli <naegelit@student.ethz.ch> | 2012-10-09 16:31:04 +0200 |
commit | 613e12fcac07a17e6b9d25b05f58c8a1b9587f5e (patch) | |
tree | b6ce6ef89c1f4bbef7ada6f32a3342bb727d4d61 /apps/multirotor_att_control/multirotor_rate_control.c | |
parent | f292b03772ddf9a0ae72615248c65959a110d8e2 (diff) | |
download | px4-firmware-613e12fcac07a17e6b9d25b05f58c8a1b9587f5e.tar.gz px4-firmware-613e12fcac07a17e6b9d25b05f58c8a1b9587f5e.tar.bz2 px4-firmware-613e12fcac07a17e6b9d25b05f58c8a1b9587f5e.zip |
working offboard
Diffstat (limited to 'apps/multirotor_att_control/multirotor_rate_control.c')
-rw-r--r-- | apps/multirotor_att_control/multirotor_rate_control.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/apps/multirotor_att_control/multirotor_rate_control.c b/apps/multirotor_att_control/multirotor_rate_control.c index 372b378d1..7532dffa2 100644 --- a/apps/multirotor_att_control/multirotor_rate_control.c +++ b/apps/multirotor_att_control/multirotor_rate_control.c @@ -144,6 +144,8 @@ static int parameters_update(const struct mc_rate_control_param_handles *h, stru void multirotor_control_rates(const struct vehicle_rates_setpoint_s *rate_sp, const float rates[], struct actuator_controls_s *actuators) { + static float roll_control_last=0; + static float pitch_control_last=0; static uint64_t last_run = 0; const float deltaT = (hrt_absolute_time() - last_run) / 1000000.0f; last_run = hrt_absolute_time(); @@ -172,10 +174,13 @@ void multirotor_control_rates(const struct vehicle_rates_setpoint_s *rate_sp, /* calculate current control outputs */ /* control pitch (forward) output */ - float pitch_control = p.attrate_p * deltaT * (rate_sp->pitch-rates[1]); + + float pitch_control = p.attrate_p * deltaT *(rate_sp->pitch-rates[1])-p.attrate_d*(pitch_control_last); + pitch_control_last=pitch_control; /* control roll (left/right) output */ - float roll_control = p.attrate_p * deltaT * (rate_sp->roll-rates[0] ); + float roll_control = p.attrate_p * deltaT * (rate_sp->roll-rates[0])-p.attrate_d*(roll_control_last); + roll_control_last=roll_control; /* control yaw rate */ float yaw_rate_control = p.yawrate_p * deltaT * (rate_sp->yaw-rates[2] ); |