diff --git a/sw/airborne/firmwares/rotorcraft/guidance/guidance_h_ref.h b/sw/airborne/firmwares/rotorcraft/guidance/guidance_h_ref.h index 357f14fe85..b70c12d7cf 100644 --- a/sw/airborne/firmwares/rotorcraft/guidance/guidance_h_ref.h +++ b/sw/airborne/firmwares/rotorcraft/guidance/guidance_h_ref.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008-2009 ENAC + * Copyright (C) 2008-2013 The Paparazzi Team * * This file is part of paparazzi. * @@ -19,7 +19,7 @@ * Boston, MA 02111-1307, USA. */ -/** @file firmware/rotorcraft/guidance/guidance_h_ref.h +/** @file firmwares/rotorcraft/guidance/guidance_h_ref.h * Reference generation for horizontal guidance. * */ @@ -36,41 +36,50 @@ #define B2_GH_FREQ_FRAC 9 #define B2_GH_FREQ (1<= b2_gh_max_accel_ref.y) { b2_gh_accel_ref.y = b2_gh_max_accel_ref.y; } - + /* Saturate speed and adjust acceleration accordingly */ if (b2_gh_speed_ref.x <= -b2_gh_max_speed_ref.x) { b2_gh_speed_ref.x = -b2_gh_max_speed_ref.x; @@ -201,22 +212,22 @@ static inline void b2_gh_update_ref_from_speed_sp(struct Int32Vect2 speed_sp) { /* Compute route reference before saturation */ // use metric precision or values are too large - INT32_ATAN2(route_ref,-speed_sp.y,-speed_sp.x); + INT32_ATAN2(route_ref, -speed_sp.y, -speed_sp.x); /* Compute North and East route components */ PPRZ_ITRIG_SIN(s_route_ref, route_ref); PPRZ_ITRIG_COS(c_route_ref, route_ref); - c_route_ref=abs(c_route_ref); - s_route_ref=abs(s_route_ref); - - /* Compute maximum acceleration*/ - b2_gh_max_accel_ref.x= INT_MULT_RSHIFT((int32_t)B2_GH_MAX_ACCEL,c_route_ref,INT32_TRIG_FRAC); - b2_gh_max_accel_ref.y= INT_MULT_RSHIFT((int32_t)B2_GH_MAX_ACCEL,s_route_ref,INT32_TRIG_FRAC); - /* Compute maximum speed*/ - b2_gh_max_speed_ref.x= INT_MULT_RSHIFT((int32_t)B2_GH_MAX_SPEED,c_route_ref,INT32_TRIG_FRAC); - b2_gh_max_speed_ref.y= INT_MULT_RSHIFT((int32_t)B2_GH_MAX_SPEED,s_route_ref,INT32_TRIG_FRAC); + c_route_ref = abs(c_route_ref); + s_route_ref = abs(s_route_ref); + + /* Compute maximum acceleration*/ + b2_gh_max_accel_ref.x = INT_MULT_RSHIFT((int32_t)B2_GH_MAX_ACCEL, c_route_ref, INT32_TRIG_FRAC); + b2_gh_max_accel_ref.y = INT_MULT_RSHIFT((int32_t)B2_GH_MAX_ACCEL, s_route_ref, INT32_TRIG_FRAC); + /* Compute maximum speed*/ + b2_gh_max_speed_ref.x = INT_MULT_RSHIFT((int32_t)B2_GH_MAX_SPEED, c_route_ref, INT32_TRIG_FRAC); + b2_gh_max_speed_ref.y = INT_MULT_RSHIFT((int32_t)B2_GH_MAX_SPEED, s_route_ref, INT32_TRIG_FRAC); /* restore b2_gh_speed_ref range (Q14.17) */ - INT32_VECT2_LSHIFT(b2_gh_max_speed_ref, b2_gh_max_speed_ref,B2_GH_SPEED_REF_FRAC - B2_GH_MAX_SPEED_REF_FRAC); - + INT32_VECT2_LSHIFT(b2_gh_max_speed_ref, b2_gh_max_speed_ref, (B2_GH_SPEED_REF_FRAC - B2_GH_MAX_SPEED_REF_FRAC)); + /* Saturate accelerations */ if (b2_gh_accel_ref.x <= -b2_gh_max_accel_ref.x) { b2_gh_accel_ref.x = -b2_gh_max_accel_ref.x; @@ -232,7 +243,7 @@ static inline void b2_gh_update_ref_from_speed_sp(struct Int32Vect2 speed_sp) { } /* Saturate speed and adjust acceleration accordingly */ - if (b2_gh_speed_ref.x <= -b2_gh_max_speed_ref.x) { + if (b2_gh_speed_ref.x <= -b2_gh_max_speed_ref.x) { b2_gh_speed_ref.x = -b2_gh_max_speed_ref.x; if (b2_gh_accel_ref.x < 0) b2_gh_accel_ref.x = 0;