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);
}