diff --git a/conf/settings/tuning.xml b/conf/settings/tuning.xml index 5b51b717b6..3116c3f80d 100644 --- a/conf/settings/tuning.xml +++ b/conf/settings/tuning.xml @@ -5,7 +5,7 @@ - + diff --git a/sw/airborne/fw_v_ctl.c b/sw/airborne/fw_v_ctl.c index d2670d485e..b2b9f4f020 100644 --- a/sw/airborne/fw_v_ctl.c +++ b/sw/airborne/fw_v_ctl.c @@ -29,7 +29,6 @@ */ #include "fw_v_ctl.h" -//#include "autopilot.h" #include "estimator.h" #include "nav.h" #include "airframe.h" @@ -40,9 +39,6 @@ float v_ctl_altitude_pre_climb; float v_ctl_altitude_pgain; float v_ctl_altitude_error; -/** Dynamically adjustable, reset to nav_altitude when it is changing */ -float v_ctl_flight_altitude; - /* inner loop */ float v_ctl_climb_setpoint; uint8_t v_ctl_climb_mode; @@ -103,16 +99,7 @@ void v_ctl_init( void ) { * outer loop * \brief Computes v_ctl_climb_setpoint and sets v_ctl_auto_throttle_submode */ -static float last_nav_altitude; void v_ctl_altitude_loop( void ) { - //mmmm LOOKATME : should that be in nav ??? - if (nav_altitude != last_nav_altitude) { - v_ctl_flight_altitude = nav_altitude; - last_nav_altitude = nav_altitude; - } - - v_ctl_altitude_setpoint = v_ctl_flight_altitude + altitude_shift; - v_ctl_altitude_error = estimator_z - v_ctl_altitude_setpoint; v_ctl_climb_setpoint = v_ctl_altitude_pgain * v_ctl_altitude_error + v_ctl_altitude_pre_climb; diff --git a/sw/airborne/fw_v_ctl.h b/sw/airborne/fw_v_ctl.h index c83af2f04b..04af6ed841 100644 --- a/sw/airborne/fw_v_ctl.h +++ b/sw/airborne/fw_v_ctl.h @@ -38,7 +38,6 @@ extern float v_ctl_altitude_setpoint; extern float v_ctl_altitude_pre_climb; extern float v_ctl_altitude_pgain; -extern float v_ctl_flight_altitude; /* inner loop */ extern float v_ctl_climb_setpoint; diff --git a/sw/airborne/nav.c b/sw/airborne/nav.c index 9ddfe5a802..f434150879 100644 --- a/sw/airborne/nav.c +++ b/sw/airborne/nav.c @@ -68,6 +68,10 @@ int16_t segment_x_1, segment_y_1, segment_x_2, segment_y_2; uint8_t horizontal_mode; float circle_bank = 0; +/** Dynamically adjustable, reset to nav_altitude when it is changing */ +float flight_altitude; + + #define PowerVoltage() (vsupply/10.) #define RcRoll(travel) (fbw_state->channels[RADIO_ROLL]* (float)travel /(float)MAX_PPRZ) @@ -479,6 +483,13 @@ void nav_update(void) { if ( vertical_mode == VERTICAL_MODE_AUTO_CLIMB) v_ctl_auto_throttle_submode = V_CTL_AUTO_THROTTLE_STANDARD; #endif + + static float last_nav_altitude; + if (fabs(nav_altitude - last_nav_altitude) > 1.) { + flight_altitude = nav_altitude; + last_nav_altitude = nav_altitude; + } + v_ctl_altitude_setpoint = flight_altitude + altitude_shift; } diff --git a/sw/airborne/nav.h b/sw/airborne/nav.h index 082bfff5be..36aef3a7a3 100644 --- a/sw/airborne/nav.h +++ b/sw/airborne/nav.h @@ -57,7 +57,7 @@ extern const uint8_t nb_waypoint; extern struct point waypoints[]; /** size == nb_waypoint + 1 */ extern bool_t moved_waypoints[]; /** size == nb_waypoint + 1 */ -extern float desired_x, desired_y, altitude_shift, nav_altitude; +extern float desired_x, desired_y, altitude_shift, nav_altitude, flight_altitude; extern uint16_t nav_desired_gaz; extern float nav_pitch, rc_pitch;