[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [4899] Test for a new vertical control
From: |
Gautier Hattenberger |
Subject: |
[paparazzi-commits] [4899] Test for a new vertical control |
Date: |
Tue, 04 May 2010 08:38:59 +0000 |
Revision: 4899
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4899
Author: gautier
Date: 2010-05-04 08:38:58 +0000 (Tue, 04 May 2010)
Log Message:
-----------
Test for a new vertical control
Added Paths:
-----------
paparazzi3/trunk/conf/settings/fw_ctl_n.xml
paparazzi3/trunk/sw/airborne/fw_v_ctl_n.c
paparazzi3/trunk/sw/airborne/fw_v_ctl_n.h
Added: paparazzi3/trunk/conf/settings/fw_ctl_n.xml
===================================================================
--- paparazzi3/trunk/conf/settings/fw_ctl_n.xml (rev 0)
+++ paparazzi3/trunk/conf/settings/fw_ctl_n.xml 2010-05-04 08:38:58 UTC (rev
4899)
@@ -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>
Added: paparazzi3/trunk/sw/airborne/fw_v_ctl_n.c
===================================================================
--- paparazzi3/trunk/sw/airborne/fw_v_ctl_n.c (rev 0)
+++ paparazzi3/trunk/sw/airborne/fw_v_ctl_n.c 2010-05-04 08:38:58 UTC (rev
4899)
@@ -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;
+}
+
Added: paparazzi3/trunk/sw/airborne/fw_v_ctl_n.h
===================================================================
--- paparazzi3/trunk/sw/airborne/fw_v_ctl_n.h (rev 0)
+++ paparazzi3/trunk/sw/airborne/fw_v_ctl_n.h 2010-05-04 08:38:58 UTC (rev
4899)
@@ -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 */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4899] Test for a new vertical control,
Gautier Hattenberger <=