diff --git a/conf/airframes/booz2_a2.xml b/conf/airframes/booz2_a2.xml index 87801b1f9f..3d28538fbc 100644 --- a/conf/airframes/booz2_a2.xml +++ b/conf/airframes/booz2_a2.xml @@ -97,8 +97,8 @@
- - + +
diff --git a/conf/messages.xml b/conf/messages.xml index f8910b41de..7f50cec857 100644 --- a/conf/messages.xml +++ b/conf/messages.xml @@ -791,7 +791,7 @@ - + diff --git a/conf/settings/settings_booz2.xml b/conf/settings/settings_booz2.xml index 77551700d7..457d02cb96 100644 --- a/conf/settings/settings_booz2.xml +++ b/conf/settings/settings_booz2.xml @@ -37,7 +37,7 @@ - + diff --git a/sw/airborne/booz/booz2_fms_test_signal.c b/sw/airborne/booz/booz2_fms_test_signal.c index d68a6d9406..5de5a3b7f2 100644 --- a/sw/airborne/booz/booz2_fms_test_signal.c +++ b/sw/airborne/booz/booz2_fms_test_signal.c @@ -3,7 +3,7 @@ #include "booz2_ins.h" #include "booz_geometry_mixed.h" -#define BOOZ2_FMS_TEST_SIGNAL_DEFAULT_PERIOD 200; +#define BOOZ2_FMS_TEST_SIGNAL_DEFAULT_PERIOD 300; #define BOOZ2_FMS_TEST_SIGNAL_DEFAULT_AMPLITUDE 20; #define BOOZ2_FMS_TEST_SIGNAL_DEFAULT_AXE 0 diff --git a/sw/airborne/booz/booz2_guidance_v.c b/sw/airborne/booz/booz2_guidance_v.c index 4c4ab28d30..9c2753075b 100644 --- a/sw/airborne/booz/booz2_guidance_v.c +++ b/sw/airborne/booz/booz2_guidance_v.c @@ -36,6 +36,15 @@ int32_t booz2_guidance_v_ki; int32_t booz2_guidance_v_z_sum_err; + +#define Booz2GuidanceVSetRef(_pos, _speed, _accel) { \ + b2_gv_set_ref(_pos, _speed, _accel); \ + booz2_guidance_v_z_ref = _pos; \ + booz2_guidance_v_zd_ref = _speed; \ + booz2_guidance_v_zdd_ref = _accel; \ + } + + static inline void run_hover_loop(bool_t in_flight); @@ -60,7 +69,7 @@ void booz2_guidance_v_read_rc(void) { switch (booz2_guidance_v_mode) { case BOOZ2_GUIDANCE_V_MODE_DIRECT: booz2_guidance_v_z_sp = booz_ins_position.z; - b2_gv_set_ref(booz_ins_position.z, 0, 0); + Booz2GuidanceVSetRef(booz_ins_position.z, 0, 0); break; case BOOZ2_GUIDANCE_V_MODE_HOVER: if (booz_fms_on && booz_fms_input.v_mode >= BOOZ2_GUIDANCE_V_MODE_HOVER) @@ -84,6 +93,7 @@ void booz2_guidance_v_mode_changed(uint8_t new_mode) { case BOOZ2_GUIDANCE_V_MODE_HOVER: booz2_guidance_v_z_sum_err = 0; booz2_guidance_v_z_sp = booz_ins_position.z; + Booz2GuidanceVSetRef(booz_ins_position.z, 0, 0); break; } @@ -136,7 +146,7 @@ static inline void run_hover_loop(bool_t in_flight) { else booz2_guidance_v_z_sum_err = 0; - /* our nominal command : (g + zdd)/m */ + /* our nominal command : (g + zdd)*m */ // const int32_t inv_m = BOOZ_INT_OF_FLOAT(0.140, IACCEL_RES); const int32_t inv_m = b2_gv_adapt_X>>(B2_GV_ADAPT_X_FRAC - IACCEL_RES); booz2_guidance_v_ff_cmd = (BOOZ_INT_OF_FLOAT(9.81, IACCEL_RES) - booz2_guidance_v_zdd_ref) / inv_m; diff --git a/sw/airborne/booz/test/test_vg_ref.c b/sw/airborne/booz/test/test_vg_ref.c index 7a8108dc43..1a70a76188 100644 --- a/sw/airborne/booz/test/test_vg_ref.c +++ b/sw/airborne/booz/test/test_vg_ref.c @@ -48,7 +48,7 @@ void print_ref(int i) { int32_t get_sp (int i) { // return BOOZ_INT_OF_FLOAT(i>512 ? -50.0 : 0, IPOS_FRAC); - return BOOZ_INT_OF_FLOAT((i>512&&i<3072) ? 10.0 : 0, IPOS_FRAC); + return BOOZ_INT_OF_FLOAT((i>512&&i<3072) ? -5.0 : 0, IPOS_FRAC); }