From 07a1dc6908e66f404cc21b6323be0d6291b74440 Mon Sep 17 00:00:00 2001 From: Felix Ruess Date: Tue, 3 Sep 2013 17:23:39 +0200 Subject: [PATCH] [rotorcraft] by default always reset attitude stab on mode change again To only reset (psi setpoint to current value, reset ref, reset integrators) the attitude stabilization if the previous mode was not using it, define NO_ATTITUDE_RESET_ON_MODE_CHANGE --- .../firmwares/rotorcraft/guidance/guidance_h.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/sw/airborne/firmwares/rotorcraft/guidance/guidance_h.c b/sw/airborne/firmwares/rotorcraft/guidance/guidance_h.c index dc247acc1f..e94ac41b18 100644 --- a/sw/airborne/firmwares/rotorcraft/guidance/guidance_h.c +++ b/sw/airborne/firmwares/rotorcraft/guidance/guidance_h.c @@ -139,32 +139,35 @@ void guidance_h_mode_changed(uint8_t new_mode) { stabilization_attitude_reset_care_free_heading(); case GUIDANCE_H_MODE_FORWARD: case GUIDANCE_H_MODE_ATTITUDE: +#if NO_ATTITUDE_RESET_ON_MODE_CHANGE /* reset attitude stabilization if previous mode was not using it */ if (guidance_h_mode == GUIDANCE_H_MODE_KILL || guidance_h_mode == GUIDANCE_H_MODE_RATE || - guidance_h_mode == GUIDANCE_H_MODE_RC_DIRECT) { + guidance_h_mode == GUIDANCE_H_MODE_RC_DIRECT) +#endif stabilization_attitude_enter(); - } break; case GUIDANCE_H_MODE_HOVER: guidance_h_hover_enter(); +#if NO_ATTITUDE_RESET_ON_MODE_CHANGE /* reset attitude stabilization if previous mode was not using it */ if (guidance_h_mode == GUIDANCE_H_MODE_KILL || guidance_h_mode == GUIDANCE_H_MODE_RATE || - guidance_h_mode == GUIDANCE_H_MODE_RC_DIRECT) { + guidance_h_mode == GUIDANCE_H_MODE_RC_DIRECT) stabilization_attitude_enter(); - } +#endif break; case GUIDANCE_H_MODE_NAV: guidance_h_nav_enter(); +#if NO_ATTITUDE_RESET_ON_MODE_CHANGE /* reset attitude stabilization if previous mode was not using it */ if (guidance_h_mode == GUIDANCE_H_MODE_KILL || guidance_h_mode == GUIDANCE_H_MODE_RATE || - guidance_h_mode == GUIDANCE_H_MODE_RC_DIRECT) { + guidance_h_mode == GUIDANCE_H_MODE_RC_DIRECT) stabilization_attitude_enter(); - } +#endif break; default: