mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-05 15:30:08 +08:00
flight_altitude moved to nav
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
<settings>
|
<settings>
|
||||||
<dl_settings>
|
<dl_settings>
|
||||||
<dl_settings NAME="flight params">
|
<dl_settings NAME="flight params">
|
||||||
<dl_setting MAX="2000" MIN="0" STEP="10" VAR="v_ctl_flight_altitude" shortname="altitude"/>
|
<dl_setting MAX="2000" MIN="0" STEP="10" VAR="flight_altitude" shortname="altitude"/>
|
||||||
<!-- <dl_setting MAX="2" MIN="0" STEP="1" VAR="light_mode"/> -->
|
<!-- <dl_setting MAX="2" MIN="0" STEP="1" VAR="light_mode"/> -->
|
||||||
<dl_setting MAX="10" MIN="-10" STEP="0.5" VAR="wind_east"/>
|
<dl_setting MAX="10" MIN="-10" STEP="0.5" VAR="wind_east"/>
|
||||||
<dl_setting MAX="10" MIN="-10" STEP="0.5" VAR="wind_north"/>
|
<dl_setting MAX="10" MIN="-10" STEP="0.5" VAR="wind_north"/>
|
||||||
|
|||||||
@@ -29,7 +29,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "fw_v_ctl.h"
|
#include "fw_v_ctl.h"
|
||||||
//#include "autopilot.h"
|
|
||||||
#include "estimator.h"
|
#include "estimator.h"
|
||||||
#include "nav.h"
|
#include "nav.h"
|
||||||
#include "airframe.h"
|
#include "airframe.h"
|
||||||
@@ -40,9 +39,6 @@ float v_ctl_altitude_pre_climb;
|
|||||||
float v_ctl_altitude_pgain;
|
float v_ctl_altitude_pgain;
|
||||||
float v_ctl_altitude_error;
|
float v_ctl_altitude_error;
|
||||||
|
|
||||||
/** Dynamically adjustable, reset to nav_altitude when it is changing */
|
|
||||||
float v_ctl_flight_altitude;
|
|
||||||
|
|
||||||
/* inner loop */
|
/* inner loop */
|
||||||
float v_ctl_climb_setpoint;
|
float v_ctl_climb_setpoint;
|
||||||
uint8_t v_ctl_climb_mode;
|
uint8_t v_ctl_climb_mode;
|
||||||
@@ -103,16 +99,7 @@ void v_ctl_init( void ) {
|
|||||||
* outer loop
|
* outer loop
|
||||||
* \brief Computes v_ctl_climb_setpoint and sets v_ctl_auto_throttle_submode
|
* \brief Computes v_ctl_climb_setpoint and sets v_ctl_auto_throttle_submode
|
||||||
*/
|
*/
|
||||||
static float last_nav_altitude;
|
|
||||||
void v_ctl_altitude_loop( void ) {
|
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_altitude_error = estimator_z - v_ctl_altitude_setpoint;
|
||||||
v_ctl_climb_setpoint = v_ctl_altitude_pgain * v_ctl_altitude_error
|
v_ctl_climb_setpoint = v_ctl_altitude_pgain * v_ctl_altitude_error
|
||||||
+ v_ctl_altitude_pre_climb;
|
+ v_ctl_altitude_pre_climb;
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
extern float v_ctl_altitude_setpoint;
|
extern float v_ctl_altitude_setpoint;
|
||||||
extern float v_ctl_altitude_pre_climb;
|
extern float v_ctl_altitude_pre_climb;
|
||||||
extern float v_ctl_altitude_pgain;
|
extern float v_ctl_altitude_pgain;
|
||||||
extern float v_ctl_flight_altitude;
|
|
||||||
|
|
||||||
/* inner loop */
|
/* inner loop */
|
||||||
extern float v_ctl_climb_setpoint;
|
extern float v_ctl_climb_setpoint;
|
||||||
|
|||||||
@@ -68,6 +68,10 @@ int16_t segment_x_1, segment_y_1, segment_x_2, segment_y_2;
|
|||||||
uint8_t horizontal_mode;
|
uint8_t horizontal_mode;
|
||||||
float circle_bank = 0;
|
float circle_bank = 0;
|
||||||
|
|
||||||
|
/** Dynamically adjustable, reset to nav_altitude when it is changing */
|
||||||
|
float flight_altitude;
|
||||||
|
|
||||||
|
|
||||||
#define PowerVoltage() (vsupply/10.)
|
#define PowerVoltage() (vsupply/10.)
|
||||||
#define RcRoll(travel) (fbw_state->channels[RADIO_ROLL]* (float)travel /(float)MAX_PPRZ)
|
#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)
|
if ( vertical_mode == VERTICAL_MODE_AUTO_CLIMB)
|
||||||
v_ctl_auto_throttle_submode = V_CTL_AUTO_THROTTLE_STANDARD;
|
v_ctl_auto_throttle_submode = V_CTL_AUTO_THROTTLE_STANDARD;
|
||||||
#endif
|
#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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -57,7 +57,7 @@ extern const uint8_t nb_waypoint;
|
|||||||
extern struct point waypoints[]; /** size == nb_waypoint + 1 */
|
extern struct point waypoints[]; /** size == nb_waypoint + 1 */
|
||||||
extern bool_t moved_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 uint16_t nav_desired_gaz;
|
||||||
extern float nav_pitch, rc_pitch;
|
extern float nav_pitch, rc_pitch;
|
||||||
|
|||||||
Reference in New Issue
Block a user