mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-25 14:35:51 +08:00
Test for a new vertical control
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
<!DOCTYPE settings SYSTEM "settings.dtd">
|
||||
|
||||
<!-- A conf to use to tune a new A/C -->
|
||||
|
||||
<settings>
|
||||
<dl_settings>
|
||||
<dl_settings NAME="control">
|
||||
|
||||
<dl_settings NAME="attitude">
|
||||
<dl_setting MAX="0" MIN="-15000" STEP="250" VAR="h_ctl_roll_attitude_gain" shortname="roll_pgain" param="H_CTL_ROLL_ATTITUDE_GAIN" module="fw_h_ctl"/>
|
||||
<dl_setting MAX="0" MIN="-15000" STEP="250" VAR="h_ctl_roll_rate_gain" shortname="roll_dgain" param="H_CTL_ROLL_RATE_GAIN"/>
|
||||
<dl_setting MAX="0" MIN="-55000" STEP="250" VAR="h_ctl_pitch_pgain" shortname="pitch_pgain" param="H_CTL_PITCH_PGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-55000" STEP="250" VAR="h_ctl_pitch_dgain" shortname="pitch_dgain" param="H_CTL_PITCH_DGAIN"/>
|
||||
<dl_setting MAX="1." MIN="0." STEP="0.01" VAR="h_ctl_pitch_of_roll" shortname="pitch_of_roll" param="H_CTL_PITCH_OF_ROLL" module="fw_h_ctl_a"/>
|
||||
<dl_setting MAX="5000" MIN="0" STEP="100" VAR="h_ctl_aileron_of_throttle" shortname="aileron_of_throttle"/>
|
||||
|
||||
<dl_setting MAX="60" MIN="0" STEP="1" VAR="h_ctl_roll_max_setpoint" shortname="max_roll" param="H_CTL_ROLL_MAX_SETPOINT" unit="rad" alt_unit="deg" alt_unit_coef="0.0174533"/>
|
||||
</dl_settings>
|
||||
|
||||
<dl_settings name="alt">
|
||||
<dl_setting MAX="0" MIN="-0.2" STEP="0.01" VAR="v_ctl_altitude_pgain" shortname="alt_pgain" param="V_CTL_ALTITUDE_PGAIN"/>
|
||||
</dl_settings>
|
||||
|
||||
<dl_settings name="climb">
|
||||
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_cruise_throttle" shortname="cruise throttle" module="fw_v_ctl" handler="SetCruiseThrottle" param="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE"/>
|
||||
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.01" VAR="v_ctl_auto_pitch_pgain" shortname="pitch_p" param="V_CTL_AUTO_PITCH_PGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.01" VAR="v_ctl_auto_pitch_igain" shortname="pitch_i" param="V_CTL_AUTO_PITCH_IGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.01" VAR="v_ctl_auto_pitch_dgain" shortname="pitch_d" param="V_CTL_AUTO_PITCH_DGAIN" module="fw_v_ctl_n"/>
|
||||
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.01" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_p" param="V_CTL_AUTO_THROTTLE_PGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.01" VAR="v_ctl_auto_throttle_igain" shortname="throttle_i" param="V_CTL_AUTO_THROTTLE_IGAIN"/>
|
||||
<dl_setting MAX="0" MIN="-0.1" STEP="0.01" VAR="v_ctl_auto_throttle_dgain" shortname="throttle_d" param="V_CTL_AUTO_THROTTLE_DGAIN"/>
|
||||
|
||||
<dl_setting MAX="0" MIN="-1." STEP="0.01" VAR="v_ctl_pitch_dash_trim" shortname="dash trim" param="V_CTL_PITCH_DASH_TRIM"/>
|
||||
<dl_setting MIN="0" MAX="1." STEP="0.01" VAR="v_ctl_pitch_loiter_trim" shortname="loiter trim" param="V_CTL_PITCH_LOITER_TRIM"/>
|
||||
|
||||
<dl_setting MAX="1" MIN="0" STEP="0.01" VAR="v_ctl_auto_throttle_climb_throttle_increment" shortname="throttle_incr" param="V_CTL_AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT"/>
|
||||
<dl_setting MAX="1" MIN="0" STEP="0.01" VAR="v_ctl_auto_throttle_pitch_of_vz_pgain" shortname="pitch_of_vz" param="V_CTL_AUTO_THROTTLE_PITCH_OF_VZ_PGAIN"/>
|
||||
</dl_settings>
|
||||
|
||||
<dl_settings name="nav">
|
||||
<dl_setting MAX="-0.1" MIN="-3" STEP="0.05" VAR="h_ctl_course_pgain" shortname="course pgain" param="H_CTL_COURSE_PGAIN"/>
|
||||
<dl_setting MAX="2" MIN="0" STEP="0.1" VAR="h_ctl_course_dgain" shortname="course dgain"/>
|
||||
<dl_setting MAX="2" MIN="0.1" STEP="0.05" VAR="h_ctl_course_pre_bank_correction" shortname="pre bank cor"/>
|
||||
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="nav_glide_pitch_trim" shortname="glide pitch trim" param="NAV_GLIDE_PITCH_TRIM"/>
|
||||
<dl_setting MAX="1" MIN="0.02" STEP="0.01" VAR="h_ctl_roll_slew" shortname="roll slew"/>
|
||||
<dl_setting MAX="500" MIN="-500" STEP="5" VAR="nav_radius"/>
|
||||
<dl_setting MAX="359" MIN="0" STEP="5" VAR="nav_course"/>
|
||||
<dl_setting MAX="2" MIN="1" STEP="1" VAR="nav_mode"/>
|
||||
<dl_setting MAX="5" MIN="-5" STEP="0.5" VAR="nav_climb"/>
|
||||
<dl_setting MAX="15" MIN="-15" STEP="1" VAR="fp_pitch"/>
|
||||
<dl_setting MAX="50" MIN="-50" STEP="5" VAR="nav_shift" module="nav" handler="IncreaseShift" shortname="inc. shift"/>
|
||||
<dl_setting MAX="50" MIN="5" STEP="0.5" VAR="nav_ground_speed_setpoint" shortname="ground speed"/>
|
||||
<dl_setting MAX="0." MIN="-0.2" STEP="0.01" VAR="nav_ground_speed_pgain" shortname="ground speed pgain"/>
|
||||
<dl_setting MAX="500" MIN="50" STEP="5" VAR="nav_survey_shift"/>
|
||||
<dl_setting MAX="0.3" MIN="0" STEP="0.01" VAR="cte_igain"/>
|
||||
<dl_setting MAX="20" MIN="0" STEP="1" VAR="cte_max"/>
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</settings>
|
||||
@@ -0,0 +1,292 @@
|
||||
/*
|
||||
* $Id: $
|
||||
*
|
||||
* Copyright (C) 2010 ENAC
|
||||
*
|
||||
* This file is part of paparazzi.
|
||||
*
|
||||
* paparazzi is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* paparazzi is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with paparazzi; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file v_ctl_ctl_n
|
||||
* \brief Vertical control for fixed wing vehicles.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "fw_v_ctl.h"
|
||||
#include "fw_v_ctl_n.h"
|
||||
#include "estimator.h"
|
||||
#include "nav.h"
|
||||
#include "airframe.h"
|
||||
#include "autopilot.h"
|
||||
|
||||
/* mode */
|
||||
uint8_t v_ctl_mode;
|
||||
|
||||
/* outer loop */
|
||||
float v_ctl_altitude_setpoint;
|
||||
float v_ctl_altitude_pre_climb;
|
||||
float v_ctl_altitude_pgain;
|
||||
float v_ctl_altitude_error;
|
||||
|
||||
/* inner loop */
|
||||
float v_ctl_climb_setpoint;
|
||||
uint8_t v_ctl_climb_mode;
|
||||
uint8_t v_ctl_auto_throttle_submode;
|
||||
|
||||
/* "auto throttle" inner loop parameters */
|
||||
float v_ctl_auto_throttle_cruise_throttle;
|
||||
float v_ctl_auto_throttle_nominal_cruise_throttle;
|
||||
float v_ctl_auto_throttle_climb_throttle_increment;
|
||||
float v_ctl_auto_throttle_pgain;
|
||||
float v_ctl_auto_throttle_igain;
|
||||
float v_ctl_auto_throttle_dgain;
|
||||
float v_ctl_auto_throttle_sum_err;
|
||||
#define V_CTL_AUTO_THROTTLE_MAX_SUM_ERR 150
|
||||
float v_ctl_auto_throttle_pitch_of_vz_pgain;
|
||||
float v_ctl_auto_throttle_pitch_of_vz_dgain;
|
||||
|
||||
#ifndef V_CTL_AUTO_THROTTLE_PITCH_OF_VZ_DGAIN
|
||||
#define V_CTL_AUTO_THROTTLE_PITCH_OF_VZ_DGAIN 0.
|
||||
#endif
|
||||
|
||||
/* "auto pitch" inner loop parameters */
|
||||
float v_ctl_auto_pitch_pgain;
|
||||
float v_ctl_auto_pitch_dgain;
|
||||
float v_ctl_auto_pitch_igain;
|
||||
float v_ctl_auto_pitch_sum_err;
|
||||
#define V_CTL_AUTO_PITCH_MAX_SUM_ERR 100
|
||||
|
||||
float controlled_throttle;
|
||||
pprz_t v_ctl_throttle_setpoint;
|
||||
pprz_t v_ctl_throttle_slewed;
|
||||
|
||||
// Set higher than 2*V_CTL_ALTITUDE_MAX_CLIMB to disable
|
||||
#define V_CTL_AUTO_CLIMB_LIMIT 0.5/4.0 // m/s/s
|
||||
|
||||
uint8_t v_ctl_speed_mode;
|
||||
|
||||
#ifdef USE_AIRSPEED
|
||||
float v_ctl_auto_airspeed_setpoint;
|
||||
float v_ctl_auto_airspeed_controlled;
|
||||
float v_ctl_auto_airspeed_pgain;
|
||||
float v_ctl_auto_airspeed_igain;
|
||||
float v_ctl_auto_airspeed_sum_err;
|
||||
float v_ctl_auto_groundspeed_setpoint;
|
||||
float v_ctl_auto_groundspeed_pgain;
|
||||
float v_ctl_auto_groundspeed_igain;
|
||||
float v_ctl_auto_groundspeed_sum_err;
|
||||
#define V_CTL_AUTO_AIRSPEED_MAX_SUM_ERR 200
|
||||
#define V_CTL_AUTO_GROUNDSPEED_MAX_SUM_ERR 100
|
||||
#endif
|
||||
|
||||
|
||||
void v_ctl_init( void ) {
|
||||
/* mode */
|
||||
v_ctl_mode = V_CTL_MODE_MANUAL;
|
||||
v_ctl_speed_mode = V_CTL_SPEED_THROTTLE;
|
||||
|
||||
/* outer loop */
|
||||
v_ctl_altitude_setpoint = 0.;
|
||||
v_ctl_altitude_pre_climb = 0.;
|
||||
v_ctl_altitude_pgain = V_CTL_ALTITUDE_PGAIN;
|
||||
v_ctl_altitude_error = 0.;
|
||||
|
||||
/* inner loops */
|
||||
v_ctl_climb_setpoint = 0.;
|
||||
v_ctl_climb_mode = V_CTL_CLIMB_MODE_AUTO_THROTTLE;
|
||||
v_ctl_auto_throttle_submode = V_CTL_AUTO_THROTTLE_STANDARD;
|
||||
|
||||
/* "auto throttle" inner loop parameters */
|
||||
v_ctl_auto_throttle_nominal_cruise_throttle = V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE;
|
||||
v_ctl_auto_throttle_cruise_throttle = v_ctl_auto_throttle_nominal_cruise_throttle;
|
||||
v_ctl_auto_throttle_climb_throttle_increment = V_CTL_AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT;
|
||||
v_ctl_auto_throttle_pgain = V_CTL_AUTO_THROTTLE_PGAIN;
|
||||
v_ctl_auto_throttle_igain = V_CTL_AUTO_THROTTLE_IGAIN;
|
||||
v_ctl_auto_throttle_dgain = 0.;
|
||||
v_ctl_auto_throttle_sum_err = 0.;
|
||||
v_ctl_auto_throttle_pitch_of_vz_pgain = V_CTL_AUTO_THROTTLE_PITCH_OF_VZ_PGAIN;
|
||||
v_ctl_auto_throttle_pitch_of_vz_dgain = V_CTL_AUTO_THROTTLE_PITCH_OF_VZ_DGAIN;
|
||||
|
||||
/* "auto pitch" inner loop parameters */
|
||||
v_ctl_auto_pitch_pgain = V_CTL_AUTO_PITCH_PGAIN;
|
||||
v_ctl_auto_pitch_dgain = V_CTL_AUTO_PITCH_DGAIN;
|
||||
v_ctl_auto_pitch_igain = V_CTL_AUTO_PITCH_IGAIN;
|
||||
v_ctl_auto_pitch_sum_err = 0.;
|
||||
|
||||
#ifdef USE_AIRSPEED
|
||||
v_ctl_auto_airspeed_setpoint = V_CTL_AUTO_AIRSPEED_SETPOINT;
|
||||
v_ctl_auto_airspeed_controlled = V_CTL_AUTO_AIRSPEED_SETPOINT;
|
||||
v_ctl_auto_airspeed_pgain = V_CTL_AUTO_AIRSPEED_PGAIN;
|
||||
v_ctl_auto_airspeed_igain = V_CTL_AUTO_AIRSPEED_IGAIN;
|
||||
v_ctl_auto_airspeed_sum_err = 0.;
|
||||
|
||||
v_ctl_auto_groundspeed_setpoint = V_CTL_AUTO_GROUNDSPEED_SETPOINT;
|
||||
v_ctl_auto_groundspeed_pgain = V_CTL_AUTO_GROUNDSPEED_PGAIN;
|
||||
v_ctl_auto_groundspeed_igain = V_CTL_AUTO_GROUNDSPEED_IGAIN;
|
||||
v_ctl_auto_groundspeed_sum_err = 0.;
|
||||
#endif
|
||||
|
||||
controlled_throttle = 0.;
|
||||
v_ctl_throttle_setpoint = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* outer loop
|
||||
* \brief Computes v_ctl_climb_setpoint and sets v_ctl_auto_throttle_submode
|
||||
*/
|
||||
|
||||
// Don't use lead controller unless you know what you're doing
|
||||
#define LEAD_CTRL_TAU 0.8
|
||||
#define LEAD_CTRL_A 1.
|
||||
#define LEAD_CTRL_Te (1./60.)
|
||||
|
||||
void v_ctl_altitude_loop( void ) {
|
||||
static float v_ctl_climb_setpoint_last = 0.;
|
||||
//static float last_lead_input = 0.;
|
||||
|
||||
// Altitude error
|
||||
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;
|
||||
|
||||
// Lead controller
|
||||
//v_ctl_climb_setpoint = ((LEAD_CTRL_TAU*LEAD_CTRL_A + LEAD_CTRL_Te)*climb_sp + LEAD_CTRL_TAU*(v_ctl_climb_setpoint - LEAD_CTRL_A*last_lead_input)) / (LEAD_CTRL_TAU + LEAD_CTRL_Te);
|
||||
//last_lead_input = pitch_sp;
|
||||
|
||||
// Limit rate of change of climb setpoint
|
||||
float diff_climb = v_ctl_climb_setpoint - v_ctl_climb_setpoint_last;
|
||||
BoundAbs(diff_climb, V_CTL_AUTO_CLIMB_LIMIT);
|
||||
v_ctl_climb_setpoint = v_ctl_climb_setpoint_last + diff_climb;
|
||||
|
||||
// Limit climb setpoint
|
||||
BoundAbs(v_ctl_climb_setpoint, V_CTL_ALTITUDE_MAX_CLIMB);
|
||||
v_ctl_climb_setpoint_last = v_ctl_climb_setpoint;
|
||||
}
|
||||
|
||||
static inline void v_ctl_set_pitch ( void ) {
|
||||
static float last_err = 0.;
|
||||
|
||||
// Compute errors
|
||||
float err = estimator_z_dot - v_ctl_climb_setpoint;
|
||||
float d_err = err - last_err;
|
||||
last_err = err;
|
||||
|
||||
v_ctl_auto_pitch_sum_err += err*(1./60.);
|
||||
BoundAbs(v_ctl_auto_pitch_sum_err, V_CTL_AUTO_PITCH_MAX_SUM_ERR);
|
||||
|
||||
// PI loop + feedforward ctl
|
||||
nav_pitch = nav_pitch
|
||||
+ v_ctl_auto_throttle_pitch_of_vz_pgain * v_ctl_climb_setpoint
|
||||
+ v_ctl_auto_pitch_pgain * err
|
||||
+ v_ctl_auto_pitch_dgain * d_err
|
||||
+ v_ctl_auto_pitch_igain * v_ctl_auto_pitch_sum_err;
|
||||
|
||||
}
|
||||
|
||||
static inline void v_ctl_set_throttle( void ) {
|
||||
static float last_err = 0.;
|
||||
|
||||
// Compute errors
|
||||
float err = estimator_z_dot - v_ctl_climb_setpoint;
|
||||
float d_err = err - last_err;
|
||||
last_err = err;
|
||||
|
||||
v_ctl_auto_throttle_sum_err += err*(1./60.);
|
||||
BoundAbs(v_ctl_auto_throttle_sum_err, V_CTL_AUTO_THROTTLE_MAX_SUM_ERR);
|
||||
|
||||
// PID loop + feedforward ctl
|
||||
controlled_throttle = v_ctl_auto_throttle_cruise_throttle
|
||||
+ v_ctl_auto_throttle_climb_throttle_increment * v_ctl_climb_setpoint
|
||||
+ v_ctl_auto_throttle_pgain * err
|
||||
+ v_ctl_auto_throttle_dgain * d_err
|
||||
+ v_ctl_auto_throttle_igain * v_ctl_auto_throttle_sum_err;
|
||||
|
||||
}
|
||||
|
||||
#ifdef USE_AIRSPEED
|
||||
static inline void v_ctl_set_airspeed( void ) {
|
||||
// Bound airspeed setpoint
|
||||
Bound(v_ctl_auto_airspeed_setpoint, V_CTL_AIRSPEED_MIN, V_CTL_AIRSPEED_MAX);
|
||||
|
||||
// Airspeed control loop (input: airspeed controlled, output: throttle controlled)
|
||||
float err_airspeed = v_ctl_auto_airspeed_setpoint - estimator_airspeed;
|
||||
v_ctl_auto_airspeed_sum_err += err_airspeed;
|
||||
BoundAbs(v_ctl_auto_airspeed_sum_err, V_CTL_AUTO_AIRSPEED_MAX_SUM_ERR);
|
||||
controlled_throttle = v_ctl_auto_throttle_cruise_throttle
|
||||
+ v_ctl_auto_airspeed_pgain * err_airspeed
|
||||
+ v_ctl_auto_airspeed_igain * v_ctl_auto_airspeed_sum_err;
|
||||
|
||||
}
|
||||
|
||||
static inline void v_ctl_set_groundspeed( void ) {
|
||||
// Ground speed control loop (input: groundspeed error, output: airspeed controlled)
|
||||
float err_groundspeed = v_ctl_auto_groundspeed_setpoint - estimator_hspeed_mod;
|
||||
v_ctl_auto_groundspeed_sum_err += err_groundspeed;
|
||||
BoundAbs(v_ctl_auto_groundspeed_sum_err, V_CTL_AUTO_GROUNDSPEED_MAX_SUM_ERR);
|
||||
v_ctl_auto_airspeed_setpoint = err_groundspeed * v_ctl_auto_groundspeed_pgain + v_ctl_auto_groundspeed_sum_err * v_ctl_auto_groundspeed_igain;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
void v_ctl_climb_loop ( void ) {
|
||||
|
||||
// Set pitch
|
||||
v_ctl_set_pitch();
|
||||
Bound(nav_pitch, V_CTL_AUTO_PITCH_MIN_PITCH, V_CTL_AUTO_PITCH_MAX_PITCH);
|
||||
|
||||
// Set throttle
|
||||
switch (v_ctl_speed_mode) {
|
||||
case V_CTL_SPEED_THROTTLE:
|
||||
v_ctl_set_throttle();
|
||||
break;
|
||||
#ifdef USE_AIRSPEED
|
||||
case V_CTL_SPEED_AIRSPEED:
|
||||
v_ctl_set_airspeed();
|
||||
break;
|
||||
case V_CTL_SPEED_GROUNDSPEED:
|
||||
v_ctl_set_groundspeed();
|
||||
v_ctl_set_airspeed();
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
controlled_throttle = v_ctl_auto_throttle_cruise_throttle; // ???
|
||||
break;
|
||||
}
|
||||
|
||||
// Set Throttle output
|
||||
float f_throttle = controlled_throttle;
|
||||
v_ctl_throttle_setpoint = TRIM_UPPRZ(f_throttle * MAX_PPRZ);
|
||||
|
||||
}
|
||||
|
||||
#ifdef V_CTL_THROTTLE_SLEW_LIMITER
|
||||
#define V_CTL_THROTTLE_SLEW (1./CONTROL_RATE/(V_CTL_THROTTLE_SLEW_LIMITER))
|
||||
#endif
|
||||
|
||||
#ifndef V_CTL_THROTTLE_SLEW
|
||||
#define V_CTL_THROTTLE_SLEW 1.
|
||||
#endif
|
||||
/** \brief Computes slewed throttle from throttle setpoint
|
||||
called at 20Hz
|
||||
*/
|
||||
void v_ctl_throttle_slew( void ) {
|
||||
pprz_t diff_throttle = v_ctl_throttle_setpoint - v_ctl_throttle_slewed;
|
||||
BoundAbs(diff_throttle, TRIM_PPRZ(V_CTL_THROTTLE_SLEW*MAX_PPRZ));
|
||||
v_ctl_throttle_slewed += diff_throttle;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* $Id: $
|
||||
*
|
||||
* Copyright (C) 2010 ENAC
|
||||
*
|
||||
* This file is part of paparazzi.
|
||||
*
|
||||
* paparazzi is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* paparazzi is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with paparazzi; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* fixed wing vertical control
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef FW_V_CTL_N_H
|
||||
#define FW_V_CTL_N_H
|
||||
|
||||
#define V_CTL_SPEED_THROTTLE 0
|
||||
#define V_CTL_SPEED_AIRSPEED 1
|
||||
#define V_CTL_SPEED_GROUNDSPEED 2
|
||||
|
||||
extern float v_ctl_auto_pitch_dgain;
|
||||
|
||||
extern uint8_t v_ctl_speed_mode;
|
||||
|
||||
#ifdef PITCH_TRIM
|
||||
extern float v_ctl_pitch_loiter_trim;
|
||||
extern float v_ctl_pitch_dash_trim;
|
||||
#endif
|
||||
|
||||
#endif /* FW_V_CTL_N_H */
|
||||
Reference in New Issue
Block a user