Merge branch 'master' of github.com:paparazzi/paparazzi into stm_i2c

This commit is contained in:
Christophe De Wagter
2012-03-15 10:18:23 +01:00
87 changed files with 2255 additions and 3250 deletions
+1
View File
@@ -129,6 +129,7 @@
/sw/logalizer/ivy_example /sw/logalizer/ivy_example
/sw/logalizer/motor_bench /sw/logalizer/motor_bench
/sw/logalizer/tmclient /sw/logalizer/tmclient
/sw/logalizer/openlog2tlm
# /sw/simulator/ # /sw/simulator/
/sw/simulator/gaia /sw/simulator/gaia
+1
View File
@@ -1,2 +1,3 @@
We count on your for finding them We count on your for finding them
Please see the bug/issue tracker on https://github.com/paparazzi/paparazzi/issues
-100
View File
@@ -1,100 +0,0 @@
# Paparazzi $Id$
# Copyright (C) 2003-2010 The Paparazzi Team
#
# 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.
Intro
-----
Paparazzi is an attempt to develop a free software Unmanned (Air) Vehicle System.
As of today the system is being used successfuly by a number of hobyists, universities and companies all over the world, on vehicle of various size ( 100g to 25Kg ) and of various nature ( fixed wing, rotorcrafts, boats and surface vehicles).
Up to date informations are available from the wiki website
http://paparazzi.enac.fr
and from the mailing list (http://savannah.nongnu.org/mail/?group=paparazzi)
and the IRC channel (freenode, #paparazzi).
Directories quick and dirty description:
---------------------------------------
conf: the configuration directory (airframe, radio, ... descriptions).
data: where to put read-only data (e.g. maps, terrain elevation files, icons)
sw: software (onboard, ground station, simulation, ...)
var: products of compilation, cache for the map tiles, ...
debian: Debian packaging control files
Required Software
-----------------
Installation is described in the wiki (paparazzi.enac.fr/wiki/Installation).
Main requirements include
- OCaml (ocaml.org), xml-light library (http://tech.motion-twin.com/xmllight)
- gcc, GTK2, Glib2, libgnomecanvas, libxml2
- ARM7 micro-controller development environnment (gcc, loader, libc, binutils)
- ...
For Debian or Ubuntu users, required packages are available at
http://paparazzi.enac.fr/debian
- "paparazzi-dev" will provide everything needed to compile and run the ground segment and the simulator. If something is missing, please report it.
- "paparazzi-arm7" is required to compile the code for LPC21 based boards ( tiny, twog, booz, etc).
- "paparazzi-stm32" is needed for building code for STM32 based boards (lisa/L, lisa/M)
- "paparazzi-omap" is needed for building code for the optional Gumstix Overo module available on lisa/L
- "paparazzi-jsbsim" is needed for using jsbsim as flight dynamic model for the simulator.
Compilation and demo simulation
-------------------------------
1) type "make" in the top directory to compile all the libraries and tools.
2) "./paparazzi" to run the Paparazzi Center
3) Select the "Microjet" aircraft in the upper-left A/C
combo box. Select "sim" from upper-middle "target" combo box. Click
"Build". When the compilation is finished, select "Simulation" from
the upper-right session combo box and click "Execute".
4) In the GCS, wait about 10s for the aircraft to be in the "Holding
point" navigation block. Switch to the "Takeoff" block (lower-left
blue airway button in the strip). Takeoff with the green launch button.
Uploading of the embedded software
----------------------------------
1) Power the flight controller board while it is connected to the PC with
the USB cable.
2) From the Paparazzi center, select the "ap" target, and click "Upload".
Flight
-------------------------------------
1) From the Paparazzi Center, select the flight session and ... do
the same than in simulation !
+69
View File
@@ -0,0 +1,69 @@
Paparazzi UAS
=============
Paparazzi is an attempt to develop a free software Unmanned (Air) Vehicle System.
As of today the system is being used successfuly by a number of hobyists, universities and companies all over the world, on vehicle of various size ( 100g to 25Kg ) and of various nature ( fixed wing, rotorcrafts, boats and surface vehicles).
Up to date information is available in the wiki http://paparazzi.enac.fr
and from the mailing list [paparazzi-devel@nongnu.org] (http://savannah.nongnu.org/mail/?group=paparazzi)
and the IRC channel (freenode, #paparazzi).
Required Software
-----------------
Installation is described in the wiki (http://paparazzi.enac.fr/wiki/Installation).
For Ubuntu users, required packages are available in the [paparazzi-uav PPA] (https://launchpad.net/~paparazzi-uav/+archive/ppa),
Debian users can use http://paparazzi.enac.fr/debian
- **paparazzi-dev** is the meta-package that depends on everything needed to compile and run the ground segment and the simulator.
- **paparazzi-arm-multilib** ARM cross-compiling toolchain for LPC21 and STM32 based boards.
- **paparazzi-omap** toolchain for the optional Gumstix Overo module available on lisa/L.
- **paparazzi-jsbsim** is needed for using JSBSim as flight dynamic model for the simulator.
Directories quick and dirty description:
----------------------------------------
_conf_: the configuration directory (airframe, radio, ... descriptions).
_data_: where to put read-only data (e.g. maps, terrain elevation files, icons)
_doc_: documentation (diagrams, manual source files, ...)
_sw_: software (onboard, ground station, simulation, ...)
_var_: products of compilation, cache for the map tiles, ...
Compilation and demo simulation
-------------------------------
1. type "make" in the top directory to compile all the libraries and tools.
2. "./paparazzi" to run the Paparazzi Center
3. Select the "Microjet" aircraft in the upper-left A/C combo box.
Select "sim" from upper-middle "target" combo box. Click "Build".
When the compilation is finished, select "Simulation" from
the upper-right session combo box and click "Execute".
4. In the GCS, wait about 10s for the aircraft to be in the "Holding point" navigation block.
Switch to the "Takeoff" block (lower-left blue airway button in the strip).
Takeoff with the green launch button.
Uploading of the embedded software
----------------------------------
1. Power the flight controller board while it is connected to the PC with the USB cable.
2. From the Paparazzi center, select the "ap" target, and click "Upload".
Flight
------
1. From the Paparazzi Center, select the flight session and ... do the same than in simulation !
@@ -1,15 +1,15 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd"> <!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!-- <!--
YAPA + XSens + XBee Lisa + Aspirin v2 using SPI only
--> -->
<airframe name="Yapa v1"> <airframe name="LisaAspirin2">
<servos> <servos>
<servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/> <servo name="THROTTLE" no="2" min="1000" neutral="1000" max="2000"/>
<servo name="AILERON_LEFT" no="2" min="1000" neutral="1500" max="2000"/> <servo name="AILEVON_LEFT" no="1" min="1000" neutral="1500" max="2000"/>
<servo name="AILERON_RIGHT" no="6" min="2000" neutral="1500" max="1000"/> <servo name="AILEVON_RIGHT" no="0" min="2000" neutral="1500" max="1000"/>
<servo name="ELEVATOR" no="3" min="2000" neutral="1500" max="1000"/> <servo name="ELEVATOR" no="3" min="2000" neutral="1500" max="1000"/>
<servo name="RUDDER" no="4" min="1100" neutral="1500" max="1900"/> <servo name="RUDDER" no="4" min="1100" neutral="1500" max="1900"/>
</servos> </servos>
@@ -28,53 +28,58 @@
<set command="BRAKE" value="@YAW"/> <set command="BRAKE" value="@YAW"/>
</rc_commands> </rc_commands>
<section name="SERVO_MIXER_GAINS">
<define name="AILERON_RATE_UP" value="0.50f"/>
<define name="AILERON_RATE_DOWN" value="0.25f"/>
<define name="AILERON_RATE_UP_BRAKE" value="0.5f"/>
<define name="AILERON_RATE_DOWN_BRAKE" value="0.9f"/>
<define name="PITCH_GAIN" value="0.9f"/>
<define name="YAW_THRUST" value="0.0f"/>
<define name="BRAKE_AILEVON" value="-0.68f"/>
<define name="BRAKE_PITCH" value="0.0f"/>
<define name="MAX_BRAKE_RATE" value="150"/>
<define name="RATELIMIT(X,RATE)" value="( _rate_limited_value + Chop( (X) - _rate_limited_value, -(RATE), (RATE) )); \
int16_t _rate_limited_value = 0;"/>
</section>
<command_laws> <command_laws>
<!-- Brake Rate Limiter --> <set servo="AILEVON_LEFT" value="@ROLL + @PITCH"/>
<let var="brake_value" value="Chop(-@BRAKE, 0, MAX_PPRZ)"/> <set servo="AILEVON_RIGHT" value="@ROLL - @PITCH"/>
<!--<let var="brake_value" value="RATELIMIT( $brake_value , MAX_BRAKE_RATE )"/>
<let var="test; \
static int16_t _var_brake_value = 0; \
_var_brake_value += LIMIT(_var_brake_value_nofilt - _var_brake_value,-MAX_BRAKE_RATE,MAX_BRAKE_RATE); \
int verwaarloos_deze_warning_CDW" value="0"/>
-->
<!-- Differential Aileron Depending on Brake Value -->
<let var="aileron_up_rate" value="(AILERON_RATE_UP * (MAX_PPRZ - $brake_value)) + (AILERON_RATE_UP_BRAKE * $brake_value)"/>
<let var="aileron_down_rate" value="(AILERON_RATE_DOWN * (MAX_PPRZ - $brake_value)) + (AILERON_RATE_DOWN_BRAKE * $brake_value)"/>
<let var="aileron_up" value="(@ROLL * (((float)$aileron_up_rate) / ((float)MAX_PPRZ)))"/>
<let var="aileron_down" value="(@ROLL * (((float)$aileron_down_rate) / ((float)MAX_PPRZ)))"/>
<let var="leftturn" value="(@ROLL >= 0? 1 : 0)"/>
<let var="rightturn" value="(1 - $leftturn)"/>
<set servo="AILERON_LEFT" value="($aileron_up * $leftturn) + ($aileron_down * $rightturn) - $brake_value*(BRAKE_AILEVON)"/>
<set servo="AILERON_RIGHT" value="($aileron_up * $rightturn) + ($aileron_down * $leftturn) + $brake_value*(BRAKE_AILEVON)"/>
<!-- Differential Thurst -->
<set servo="THROTTLE" value="@THROTTLE"/> <set servo="THROTTLE" value="@THROTTLE"/>
<set servo="ELEVATOR" value="@PITCH"/>
<!-- Pitch with Brake-Trim Function -->
<set servo="ELEVATOR" value="-@PITCH * PITCH_GAIN + BRAKE_PITCH * $brake_value"/>
</command_laws> </command_laws>
<!-- Local magnetic field -->
<section name="AHRS" prefix="AHRS_" >
<define name="H_X" value="0.51562740288882" />
<define name="H_Y" value="-0.05707735220832" />
<define name="H_Z" value="0.85490967783446" />
</section>
<section name="IMU" prefix="IMU_">
<!-- Calibration Neutral -->
<define name="GYRO_P_NEUTRAL" value="0"/>
<define name="GYRO_Q_NEUTRAL" value="0"/>
<define name="GYRO_R_NEUTRAL" value="0"/>
<!-- SENS = 16.4 LSB/(deg/sec) * 57.6 deg/rad = 939.650 LSB/rad/sec / 12bit FRAC: 4096 / 939.65 -->
<define name="GYRO_P_SENS" value="4.359" integer="16"/>
<define name="GYRO_Q_SENS" value="4.359" integer="16"/>
<define name="GYRO_R_SENS" value="4.359" integer="16"/>
<define name="ACCEL_X_NEUTRAL" value="0"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="0"/>
<!-- SENS = 2048 LSB/g / 9.81 ms2/g = 208.766564729 LSB/ms2 / 10bit FRAC: 1024 / 208.7665 -->
<define name="ACCEL_X_SENS" value="9.81" integer="16"/>
<define name="ACCEL_Y_SENS" value="9.81" integer="16"/>
<define name="ACCEL_Z_SENS" value="9.81" integer="16"/>
<define name="MAG_X_NEUTRAL" value="0"/>
<define name="MAG_Y_NEUTRAL" value="0"/>
<define name="MAG_Z_NEUTRAL" value="0"/>
<define name="MAG_X_SENS" value="1" integer="16"/>
<define name="MAG_Y_SENS" value="1" integer="16"/>
<define name="MAG_Z_SENS" value="1" integer="16"/>
<define name="BODY_TO_IMU_PHI" value="0"/>
<define name="BODY_TO_IMU_THETA" value="0"/>
<define name="BODY_TO_IMU_PSI" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
</section>
<section name="AUTO1" prefix="AUTO1_"> <section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.7"/> <define name="MAX_ROLL" value="0.7"/>
<define name="MAX_PITCH" value="0.7"/> <define name="MAX_PITCH" value="0.7"/>
@@ -88,11 +93,6 @@
<define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/> <define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
</section> </section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
</section>
<section name="MISC"> <section name="MISC">
<define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/> <define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/> <define name="CARROT" value="5." unit="s"/>
@@ -177,40 +177,62 @@
<modules> <modules>
<load name="ins_xsens_MTiG_fixedwing.xml"> <!--
<configure name="XSENS_UART_NR" value="0"/>
</load>
<load name="light.xml"> <load name="light.xml">
<define name="LIGHT_LED_STROBE" value="3"/> <define name="LIGHT_LED_STROBE" value="2"/>
<define name="LIGHT_LED_NAV" value="2"/> <define name="LIGHT_LED_NAV" value="3"/>
<define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/> <define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/>
<define name="NAV_LIGHT_MODE_DEFAULT" value="4"/> <define name="NAV_LIGHT_MODE_DEFAULT" value="4"/>
</load> </load>
<!-- <load name="digital_cam_i2c.xml"/> --> <load name="digital_cam_i2c.xml"/> -->
<!-- <load name="ins_ppzuavimu.xml"/> -->
<load name="digital_cam.xml" >
<define name="DC_SHUTTER_LED" value="2"/>
</load>
<!-- <load name="ins_ppzuavimu.xml" /> -->
<!--
<load name="digital_cam.xml" >
<define name="DC_SHUTTER_LED" value="3"/>
</load>
-->
</modules> </modules>
<firmware name="fixedwing"> <firmware name="fixedwing">
<target name="ap" board="tiny_2.11"> <target name="ap" board="lisa_m_1.0">
<define name="STRONG_WIND"/> <define name="STRONG_WIND"/>
<define name="WIND_INFO"/> <define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/> <define name="WIND_INFO_RET"/>
<define name="LOITER_TRIM"/>
<define name="ALT_KALMAN"/> <configure name="PERIODIC_FREQUENCY" value="120"/>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="100"/>
<configure name="AHRS_CORRECT_FREQUENCY" value="100"/>
<define name="AHRS_TRIGGERED_ATTITUDE_LOOP" />
<configure name="AHRS_ALIGNER_LED" value="1"/>
<configure name="CPU_LED" value="1"/>
</target> </target>
<target name="sim" board="pc"/> <target name="sim" board="pc"/>
<define name="AGR_CLIMB"/>
<define name="LOITER_TRIM"/>
<define name="ALT_KALMAN"/>
<!-- Sensors -->
<!--
<subsystem name="ahrs" type="int_cmpl_quat">
<define name="AHRS_GRAVITY_UPDATE_COORDINATED_TURN" />
</subsystem>
-->
<subsystem name="imu" type="aspirin_v2.0"/>
<subsystem name="ahrs" type="float_dcm">
<!-- <define name="USE_MAGNETOMETER" /> -->
</subsystem>
<subsystem name="radio_control" type="ppm"/> <subsystem name="radio_control" type="ppm"/>
<!-- Communication --> <!-- Communication -->
<subsystem name="telemetry" type="xbee_api"> <subsystem name="telemetry" type="transparent">
<configure name="MODEM_BAUD" value="B57600"/> <configure name="MODEM_BAUD" value="B57600"/>
</subsystem> </subsystem>
@@ -218,9 +240,10 @@
<subsystem name="control"/> <subsystem name="control"/>
<!-- Sensors --> <!-- Sensors -->
<subsystem name="navigation"/> <subsystem name="navigation"/>
<subsystem name="gps" type="xsens"/> <subsystem name="gps" type="ublox_utm"/>
</firmware> </firmware>
</airframe> </airframe>
+274
View File
@@ -0,0 +1,274 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
YAPA + XSens + XBee
-->
<airframe name="Yapa v1">
<servos>
<servo name="THROTTLE" no="9" min="1000" neutral="1000" max="2000"/>
<servo name="AILERON_LEFT" no="8" min="1000" neutral="1500" max="2000"/>
<servo name="AILERON_RIGHT" no="7" min="2000" neutral="1500" max="1000"/>
<servo name="ELEVATOR" no="6" min="2000" neutral="1500" max="1000"/>
<servo name="RUDDER" no="5" min="1100" neutral="1500" max="1900"/>
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="BRAKE" failsafe_value="0"/> <!-- both elerons up as butterfly brake ? -->
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
<set command="BRAKE" value="@YAW"/>
</rc_commands>
<command_laws>
<set servo="AILERON_LEFT" value="@ROLL"/>
<set servo="AILERON_RIGHT" value="@ROLL"/>
<set servo="THROTTLE" value="@THROTTLE"/>
<set servo="ELEVATOR" value="@PITCH"/>
</command_laws>
<!-- Local magnetic field -->
<section name="AHRS" prefix="AHRS_" >
<define name="H_X" value="0.51562740288882" />
<define name="H_Y" value="-0.05707735220832" />
<define name="H_Z" value="0.85490967783446" />
</section>
<section name="IMU" prefix="IMU_">
<!-- Calibration Neutral -->
<define name="GYRO_P_NEUTRAL" value="0"/>
<define name="GYRO_Q_NEUTRAL" value="0"/>
<define name="GYRO_R_NEUTRAL" value="0"/>
<!-- SENS = 16.4 LSB/(deg/sec) * 57.6 deg/rad = 939.650 LSB/rad/sec / 12bit FRAC: 4096 / 939.65 -->
<define name="GYRO_P_SENS" value="4.359" integer="16"/>
<define name="GYRO_Q_SENS" value="4.359" integer="16"/>
<define name="GYRO_R_SENS" value="4.359" integer="16"/>
<define name="GYRO_P_Q" value="0."/>
<define name="GYRO_P_R" value="0"/>
<define name="GYRO_Q_P" value="0."/>
<define name="GYRO_Q_R" value="0."/>
<define name="GYRO_R_P" value="0."/>
<define name="GYRO_R_Q" value="0."/>
<define name="GYRO_P_SIGN" value="1"/>
<define name="GYRO_Q_SIGN" value="1"/>
<define name="GYRO_R_SIGN" value="1"/>
<define name="ACCEL_X_NEUTRAL" value="-40"/>
<define name="ACCEL_Y_NEUTRAL" value="-15"/>
<define name="ACCEL_Z_NEUTRAL" value="375"/>
<!-- SENS = 2048 LSB/g / 9.81 ms2/g = 208.766564729 LSB/ms2 / 10bit FRAC: 1024 / 208.7665 -->
<define name="ACCEL_X_SENS" value="9.81" integer="16"/>
<define name="ACCEL_Y_SENS" value="9.81" integer="16"/>
<define name="ACCEL_Z_SENS" value="9.81" integer="16"/>
<!--
<define name="ACCEL_X_SENS" value="4.905" integer="16"/>
<define name="ACCEL_Y_SENS" value="4.905" integer="16"/>
<define name="ACCEL_Z_SENS" value="4.905" integer="16"/>
-->
<define name="ACCEL_X_SIGN" value="1"/>
<define name="ACCEL_Y_SIGN" value="1"/>
<define name="ACCEL_Z_SIGN" value="1"/>
<define name="MAG_X_NEUTRAL" value="0"/>
<define name="MAG_Y_NEUTRAL" value="0"/>
<define name="MAG_Z_NEUTRAL" value="0"/>
<define name="MAG_X_SENS" value="1" integer="16"/>
<define name="MAG_Y_SENS" value="1" integer="16"/>
<define name="MAG_Z_SENS" value="1" integer="16"/>
<define name="MAG_X_SIGN" value="1"/>
<define name="MAG_Y_SIGN" value="1"/>
<define name="MAG_Z_SIGN" value="1"/>
<define name="BODY_TO_IMU_PHI" value="0"/>
<define name="BODY_TO_IMU_THETA" value="0"/>
<define name="BODY_TO_IMU_PSI" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.7"/>
<define name="MAX_PITCH" value="0.7"/>
</section>
<section name="BAT">
<define name="MilliAmpereOfAdc(adc)" value="((adc) - 505) * 124.0f"/>
<define name="LOW_BAT_LEVEL" value="10.5" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="10" unit="V"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="45" unit="deg"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.03"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.32"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.65"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.15" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.01"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
<define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.20000004768"/>
<define name="COURSE_DGAIN" value="0.3"/>
<define name="COURSE_PRE_BANK_CORRECTION" value="0.2"/>
<define name="ROLL_MAX_SETPOINT" value="0.75" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
<define name="PITCH_PGAIN" value="-12000."/>
<define name="PITCH_DGAIN" value="1.5"/>
<define name="ELEVATOR_OF_ROLL" value="1000."/>
<define name="ROLL_SLEW" value="1."/>
<define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
<define name="ROLL_RATE_GAIN" value="0."/>
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="20"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="10"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="1.00"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.3"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.25"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DEFAULT_THROTTLE" value="0.35" unit="%"/>
<define name="DEFAULT_ROLL" value="0.17" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.08" unit="rad"/>
<define name="HOME_RADIUS" value="DEFAULT_CIRCLE_RADIUS" unit="m"/>
<define name="KILL_MODE_DISTANCE" value="(MAX_DIST_FROM_HOME*1.5)"/>
<define name="DELAY_WITHOUT_GPS" value="3" unit="s"/>
</section>
<section name="DIGITAL_CAMERA" prefix="DC_">
<define name="AUTOSHOOT_QUARTERSEC_PERIOD" value="6" unit="quarter_second"/>
<define name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
</section>
<modules>
<!--
<load name="light.xml">
<define name="LIGHT_LED_STROBE" value="3"/>
<define name="LIGHT_LED_NAV" value="2"/>
<define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/>
<define name="NAV_LIGHT_MODE_DEFAULT" value="4"/>
</load>
-->
<!-- <load name="digital_cam_i2c.xml"/> -->
<!-- <load name="ins_ppzuavimu.xml" /> -->
<!--
<load name="digital_cam.xml" >
<define name="DC_SHUTTER_LED" value="3"/>
</load>
-->
</modules>
<firmware name="fixedwing">
<target name="ap" board="tiny_2.11">
<define name="STRONG_WIND"/>
<define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/>
<configure name="PERIODIC_FREQUENCY" value="120"/>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="100"/>
<configure name="AHRS_CORRECT_FREQUENCY" value="100"/>
<define name="AHRS_TRIGGERED_ATTITUDE_LOOP" />
<configure name="AHRS_ALIGNER_LED" value="3"/>
<configure name="CPU_LED" value="3"/>
</target>
<target name="sim" board="pc"/>
<define name="AGR_CLIMB"/>
<define name="LOITER_TRIM"/>
<define name="ALT_KALMAN"/>
<!-- Sensors -->
<!--
<subsystem name="ahrs" type="int_cmpl_quat">
<define name="AHRS_GRAVITY_UPDATE_COORDINATED_TURN" />
</subsystem>
<subsystem name="imu" type="aspirin_i2c"/>
-->
<subsystem name="imu" type="aspirin2_i2c"/>
<subsystem name="ahrs" type="float_dcm">
<!-- <define name="USE_MAGNETOMETER" /> -->
</subsystem>
<subsystem name="radio_control" type="ppm"/>
<!-- Communication -->
<subsystem name="telemetry" type="xbee_api">
<configure name="MODEM_BAUD" value="B9600"/>
</subsystem>
<!-- Actuators -->
<subsystem name="control"/>
<!-- Sensors -->
<subsystem name="navigation"/>
<subsystem name="gps" type="ublox_utm"/>
</firmware>
</airframe>
+3 -102
View File
@@ -14,10 +14,10 @@
<!--load name="infrared_i2c.xml"/--> <!--load name="infrared_i2c.xml"/-->
<!--load name="max3100.xml"/> <!--load name="max3100.xml"/>
<load name="gsm.xml"/--> <load name="gsm.xml"/-->
<load name="demo_module.xml"> <!--load name="demo_module.xml">
<define name="TEST" value="1"/> <define name="TEST" value="1"/>
<define name="TEST_FLAG"/> <define name="TEST_FLAG"/>
</load> </load-->
<!--load name="enose.xml"/--> <!--load name="enose.xml"/-->
<load name="light.xml"/> <load name="light.xml"/>
<load name="infrared_adc.xml"/> <load name="infrared_adc.xml"/>
@@ -33,7 +33,7 @@
<subsystem name="radio_control" type="ppm"/> <subsystem name="radio_control" type="ppm"/>
<subsystem name="telemetry" type="xbee_api"/> <subsystem name="telemetry" type="xbee_api"/>
<subsystem name="control" type="new"/> <subsystem name="control" type="adaptive"/>
<subsystem name="ahrs" type="infrared"/> <subsystem name="ahrs" type="infrared"/>
<subsystem name="gps" type="ublox"/> <subsystem name="gps" type="ublox"/>
<subsystem name="navigation"/> <subsystem name="navigation"/>
@@ -217,103 +217,4 @@
<define name="YAW_RESPONSE_FACTOR" value="1."/> <define name="YAW_RESPONSE_FACTOR" value="1."/>
</section> </section>
<!--
<makefile>
CONFIG = \"tiny_2_1_1.h\"
include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
FLASH_MODE=IAP
ap.CFLAGS += -DFBW -DAP -DBOARD_CONFIG=$(CONFIG) -DUSE_LED -DTIME_LED=1
ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c main_ap.c main.c
ap.CFLAGS += -DINTER_MCU
ap.srcs += inter_mcu.c
ap.srcs += commands.c
########## RC actuators + radio
ap.CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
ap.srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
ap.CFLAGS += -DRADIO_CONTROL
ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c
########## Modems
ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport -DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B57600
ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c xbee.c
#TRANSPARENT
#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DPPRZ_UART=Uart1 -DDATALINK=PPRZ -DUART1_BAUD=B9600
#ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c pprz_transport.c
########## ADC
ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2 -DUSE_ADC_3
ap.srcs += $(SRC_ARCH)/adc_hw.c
########## GPS
ap.CFLAGS += -DUSE_GPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400 -DGPS_USE_LATLONG
# -DGPS_LED=2
ap.srcs += gps_ubx.c gps.c latlong.c
########## IR sensors
ap.CFLAGS += -DUSE_INFRARED -DALT_KALMAN
ap.srcs += infrared.c estimator.c
########## Gyro
#ap.CFLAGS += -DUSE_GYRO -DADXRS150
#ap.srcs += gyro.c
########## Nav
ap.CFLAGS += -DNAV -DAGR_CLIMB -DPITCH_TRIM
ap.srcs += subsystems/nav.c fw_h_ctl_a.c fw_v_ctl_n.c
ap.srcs += subsystems/navigation/nav_survey_rectangle.c
ap.srcs += subsystems/navigation/nav_line.c
########## SPI Master use slave0
ap.CFLAGS += -DUSE_SPI -DSPI_MASTER -DUSE_SPI_SLAVE0
ap.srcs += spi.c $(SRC_ARCH)/spi_hw.c
########## Barometer (SPI)
#ap.CFLAGS += -DUSE_BARO_MS5534A
#ap.srcs += $(SRC_ARCH)/baro_MS5534A.c
########## I2C0
ap.CFLAGS += -DUSE_I2C0
ap.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
########## Lights
ap.CFLAGS += -DUSE_LIGHT
ap.srcs += light.c
########## Max3100
ap.CFLAGS += -DMAX3100_BAUD_RATE=MAX3100_B9600
ap.CFLAGS += -DGCS_NUMBER=\"+33640286530\"
ap.CFLAGS += -DUSE_MODULES
# Config for SITL simulation
#include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
sim.ARCHDIR = $(ARCHI)
sim.CFLAGS += -DSITL -DAP -DFBW -DRADIO_CONTROL -DINTER_MCU -DDOWNLINK -DDOWNLINK_TRANSPORT=IvyTransport -DUSE_INFRARED -DNAV -DUSE_LED -DWIND_INFO
sim.srcs = latlong.c radio_control.c downlink.c commands.c gps.c inter_mcu.c infrared.c fw_h_ctl_a.c fw_v_ctl_n.c subsystems/nav.c estimator.c sys_time.c main_fbw.c main_ap.c datalink.c $(SRC_ARCH)/ppm_hw.c $(SRC_ARCH)/sim_gps.c $(SRC_ARCH)/sim_ir.c $(SRC_ARCH)/sim_ap.c $(SRC_ARCH)/ivy_transport.c $(SRC_ARCH)/sim_adc_generic.c $(SRC_ARCH)/led_hw.c
sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DPITCH_TRIM -DALT_KALMAN
sim.srcs += subsystems/navigation/nav_line.c subsystems/navigation/nav_survey_rectangle.c
sim.CFLAGS += -DUSE_LIGHT
sim.srcs += light.c
sim.CFLAGS += -DUSE_I2C0
sim.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
sim.CFLAGS += -DUSE_MODULES
</makefile>
-->
</airframe> </airframe>
+15 -27
View File
@@ -1,11 +1,11 @@
<airframe name="Blender"> <airframe name="Blender">
<modules main_freq="512"> <modules main_freq="512">
<load name="booz_pwm.xml"> <!--load name="booz_pwm.xml">
<define name="USE_PWM1"/> <define name="USE_PWM1"/>
</load> </load>
<load name="booz_drop.xml"/> <load name="booz_drop.xml"/>
<load name="booz_cam.xml"/> <load name="booz_cam.xml"/-->
<!--load name="sonar_maxbotix_booz.xml"/--> <!--load name="sonar_maxbotix_booz.xml"/-->
</modules> </modules>
@@ -22,13 +22,13 @@
</target> </target>
<target name="sim" board="pc"> <target name="sim" board="pc">
<subsystem name="fdm" type="nps"/> <subsystem name="fdm" type="nps"/>
<!--define name="NPS_NO_SUPERVISION"/-->
</target> </target>
<subsystem name="radio_control" type="ppm"/> <subsystem name="radio_control" type="ppm"/>
<subsystem name="telemetry" type="transparent"/> <subsystem name="telemetry" type="transparent"/>
<subsystem name="actuators" type="asctec"/> <subsystem name="actuators" type="skiron">
<!--subsystem name="actuators" type="mkk"/--> <define name="SKIRON_I2C_SCL_TIME" value="25"/>
</subsystem>
<subsystem name="imu" type="b2_v1.1"/> <subsystem name="imu" type="b2_v1.1"/>
<subsystem name="gps" type="ublox"> <subsystem name="gps" type="ublox">
<configure name="GPS_BAUD" value="B57600"/> <configure name="GPS_BAUD" value="B57600"/>
@@ -48,17 +48,11 @@
</firmware> </firmware>
<servos min="0" neutral="0" max="0xff"> <servos min="0" neutral="0" max="0xff">
<servo name="PITCH" no="0" min="0" neutral="0" max="255"/>
<servo name="ROLL" no="1" min="0" neutral="0" max="255"/>
<servo name="YAW" no="2" min="0" neutral="0" max="255"/>
<servo name="THRUST" no="3" min="0" neutral="0" max="255"/>
</servos>
<!--servos min="0" neutral="0" max="0xff">
<servo name="FRONT" no="0" min="0" neutral="0" max="255"/> <servo name="FRONT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK" no="1" min="0" neutral="0" max="255"/> <servo name="BACK" no="2" min="0" neutral="0" max="255"/>
<servo name="RIGHT" no="2" min="0" neutral="0" max="255"/> <servo name="RIGHT" no="1" min="0" neutral="0" max="255"/>
<servo name="LEFT" no="3" min="0" neutral="0" max="255"/> <servo name="LEFT" no="3" min="0" neutral="0" max="255"/>
</servos--> </servos>
<commands> <commands>
<axis name="PITCH" failsafe_value="0"/> <axis name="PITCH" failsafe_value="0"/>
@@ -67,20 +61,15 @@
<axis name="THRUST" failsafe_value="0"/> <axis name="THRUST" failsafe_value="0"/>
</commands> </commands>
<!--section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_"> <section name="ACTUATORS_SKIRON" prefix="ACTUATORS_SKIRON_">
<define name="NB" value="4"/> <define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x56, 0x54, 0x58 }"/> <define name="IDX" value="{ SERVO_FRONT, SERVO_BACK, SERVO_RIGHT, SERVO_LEFT }"/>
</section--> </section>
<section name="SUPERVISION" prefix="SUPERVISION_"> <section name="SUPERVISION" prefix="SUPERVISION_">
<define name="TRIM_A" value="0"/> <define name="MIN_MOTOR" value="20"/>
<define name="TRIM_E" value="0"/> <define name="MAX_MOTOR" value="255"/>
<define name="TRIM_R" value="0"/> <define name="TRIM_A" value="6"/>
</section>
<!--section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="25"/>
<define name="MAX_MOTOR" value="243"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/> <define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/> <define name="TRIM_R" value="0"/>
<define name="NB_MOTOR" value="4"/> <define name="NB_MOTOR" value="4"/>
@@ -89,8 +78,7 @@
<define name="PITCH_COEF" value="{ 256, -256, 0, 0}"/> <define name="PITCH_COEF" value="{ 256, -256, 0, 0}"/>
<define name="YAW_COEF" value="{ -256, -256, 256, 256}"/> <define name="YAW_COEF" value="{ -256, -256, 256, 256}"/>
<define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/> <define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/>
</section--> </section>
<section name="IMU" prefix="IMU_"> <section name="IMU" prefix="IMU_">
+29 -64
View File
@@ -21,7 +21,6 @@
</target> </target>
<target name="sim" board="pc"> <target name="sim" board="pc">
<subsystem name="fdm" type="nps"/> <subsystem name="fdm" type="nps"/>
<!--define name="NPS_NO_SUPERVISION"/-->
</target> </target>
<subsystem name="radio_control" type="ppm"/> <subsystem name="radio_control" type="ppm"/>
@@ -30,17 +29,17 @@
<define name="SKIRON_I2C_SCL_TIME" value="25"/> <define name="SKIRON_I2C_SCL_TIME" value="25"/>
</subsystem> </subsystem>
<subsystem name="imu" type="navgo"/> <subsystem name="imu" type="navgo"/>
<subsystem name="gps" type="ublox"/> <subsystem name="gps" type="ublox">
<subsystem name="stabilization" type="euler"/> <configure name="GPS_BAUD" value="B57600"/>
<subsystem name="ahrs" type="int_cmpl_euler">
<define name="LOW_NOISE_THRESHOLD" value="50000"/>
</subsystem> </subsystem>
<subsystem name="stabilization" type="euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/>
<subsystem name="ins" type="hff"/> <subsystem name="ins" type="hff"/>
</firmware> </firmware>
<servos min="0" neutral="0" max="0xff"> <servos min="0" neutral="0" max="0xff">
<servo name="FRONT" no="2" min="0" neutral="0" max="255"/> <servo name="FRONT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK" no="0" min="0" neutral="0" max="255"/> <servo name="BACK" no="2" min="0" neutral="0" max="255"/>
<servo name="RIGHT" no="1" min="0" neutral="0" max="255"/> <servo name="RIGHT" no="1" min="0" neutral="0" max="255"/>
<servo name="LEFT" no="3" min="0" neutral="0" max="255"/> <servo name="LEFT" no="3" min="0" neutral="0" max="255"/>
</servos> </servos>
@@ -73,68 +72,34 @@
<section name="IMU" prefix="IMU_"> <section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="-126"/> <define name="GYRO_P_NEUTRAL" value="10"/>
<define name="GYRO_Q_NEUTRAL" value="-29"/> <define name="GYRO_Q_NEUTRAL" value="-32"/>
<define name="GYRO_R_NEUTRAL" value="-32"/> <define name="GYRO_R_NEUTRAL" value="11"/>
<!-- SENS ITG3200 1/14.375 (deg/s)/LSB, rate frac 12bit => 1/14.375 * pi / 180 * 2^12 --> <!-- SENS ITG3200 1/14.375 (deg/s)/LSB, rate frac 12bit => 1/14.375 * pi / 180 * 2^12 -->
<define name="GYRO_P_SENS" value="4.97312" integer="16"/> <define name="GYRO_P_SENS" value="4.97312" integer="16"/>
<define name="GYRO_Q_SENS" value="4.97312" integer="16"/> <define name="GYRO_Q_SENS" value="4.97312" integer="16"/>
<define name="GYRO_R_SENS" value="4.97312" integer="16"/> <define name="GYRO_R_SENS" value="4.97312" integer="16"/>
<define name="ACCEL_X_NEUTRAL" value="4"/> <define name="ACCEL_X_NEUTRAL" value="9"/>
<define name="ACCEL_Y_NEUTRAL" value="-17"/> <define name="ACCEL_Y_NEUTRAL" value="14"/>
<define name="ACCEL_Z_NEUTRAL" value="-22"/> <define name="ACCEL_Z_NEUTRAL" value="-16"/>
<!-- SENS ADXL345 16G 31.2 mg/LSB, accel frac 10bit => 31.2 * 2^10 / 1000 = 31.9488--> <!-- SENS ADXL345 16G 31.2 mg/LSB, accel frac 10bit => 31.2 * 2^10 / 1000 = 31.9488-->
<define name="ACCEL_X_SENS" value="38.2816633245" integer="16"/> <define name="ACCEL_X_SENS" value="38.5866088465" integer="16"/>
<define name="ACCEL_Y_SENS" value="38.7857058923" integer="16"/> <define name="ACCEL_Y_SENS" value="38.7212932023" integer="16"/>
<define name="ACCEL_Z_SENS" value="39.7459254023" integer="16"/> <define name="ACCEL_Z_SENS" value="39.403098907" integer="16"/>
<define name="MAG_X_NEUTRAL" value="85"/> <define name="MAG_X_NEUTRAL" value="80"/>
<define name="MAG_Y_NEUTRAL" value="97"/> <define name="MAG_Y_NEUTRAL" value="-271"/>
<define name="MAG_Z_NEUTRAL" value="-43"/> <define name="MAG_Z_NEUTRAL" value="112"/>
<define name="MAG_X_SENS" value="5.43371021972" integer="16"/> <define name="MAG_X_SENS" value="4.44131219218" integer="16"/>
<define name="MAG_Y_SENS" value="4.8961742578" integer="16"/> <define name="MAG_Y_SENS" value="4.56234629213" integer="16"/>
<define name="MAG_Z_SENS" value="5.31527656902" integer="16"/> <define name="MAG_Z_SENS" value="5.298653926" integer="16"/>
<define name="BODY_TO_IMU_PHI" value="RadOfDeg(0.)"/> <!-- -10 --> <define name="BODY_TO_IMU_PHI" value="RadOfDeg(0.)"/>
<define name="BODY_TO_IMU_THETA" value="RadOfDeg(0.)"/> <!-- -10 --> <define name="BODY_TO_IMU_THETA" value="RadOfDeg(0.)"/>
<define name="BODY_TO_IMU_PSI" value="RadOfDeg(0.)"/>
</section>
<section name="IMU_PROTO" prefix="IMU_PROTO_">
<define name="GYRO_P_NEUTRAL" value="-24"/>
<define name="GYRO_Q_NEUTRAL" value="-8"/>
<define name="GYRO_R_NEUTRAL" value="21"/>
<!-- SENS ITG3200 1/14.375 (deg/s)/LSB, rate frac 12bit => 1/14.375 * pi / 180 * 2^12 -->
<define name="GYRO_P_SENS" value="4.97312" integer="16"/>
<define name="GYRO_Q_SENS" value="4.97312" integer="16"/>
<define name="GYRO_R_SENS" value="4.97312" integer="16"/>
<define name="ACCEL_X_NEUTRAL" value="-9"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="-29"/>
<!-- SENS ADXL345 16G 31.2 mg/LSB, accel frac 10bit => 31.2 * 2^10 / 1000 = 31.9488-->
<define name="ACCEL_X_SENS" value="38.2683" integer="16"/>
<define name="ACCEL_Y_SENS" value="38.7108" integer="16"/>
<define name="ACCEL_Z_SENS" value="39.6583" integer="16"/>
<define name="MAG_X_NEUTRAL" value="55"/>
<define name="MAG_Y_NEUTRAL" value="54"/>
<define name="MAG_Z_NEUTRAL" value="92"/>
<define name="MAG_X_SENS" value="4.97044135787" integer="16"/>
<define name="MAG_Y_SENS" value="4.49687342915" integer="16"/>
<define name="MAG_Z_SENS" value="4.93138019221" integer="16"/>
<define name="BODY_TO_IMU_PHI" value="RadOfDeg(-10.)"/>
<define name="BODY_TO_IMU_THETA" value="RadOfDeg(-10.)"/>
<define name="BODY_TO_IMU_PSI" value="RadOfDeg(0.)"/> <define name="BODY_TO_IMU_PSI" value="RadOfDeg(0.)"/>
</section> </section>
@@ -149,7 +114,9 @@
</section> </section>
<section name="INS" prefix="INS_"> <section name="INS" prefix="INS_">
<define name="BARO_SENS" value="14" integer="16"/> <!-- datasheet 1.4 mm/LSB : 0.0014*2^8 = 0.3584 -->
<!-- calibration SENS = 1.156 :( -->
<define name="BARO_SENS" value="1.156" integer="16"/>
</section> </section>
@@ -220,8 +187,8 @@
<define name="REF_MAX_ZDD" value=" 0.8*9.81"/> <define name="REF_MAX_ZDD" value=" 0.8*9.81"/>
<define name="REF_MIN_ZD" value="-1.5"/> <define name="REF_MIN_ZD" value="-1.5"/>
<define name="REF_MAX_ZD" value=" 1.5"/> <define name="REF_MAX_ZD" value=" 1.5"/>
<define name="HOVER_KP" value="-500"/> <define name="HOVER_KP" value="-350"/>
<define name="HOVER_KD" value="-250"/> <define name="HOVER_KD" value="-160"/>
<define name="HOVER_KI" value="0"/> <define name="HOVER_KI" value="0"/>
<!-- SPEED_BFP_OF_REAL(1.5) / (MAX_PPRZ/2) --> <!-- SPEED_BFP_OF_REAL(1.5) / (MAX_PPRZ/2) -->
<define name="RC_CLIMB_COEF" value ="163"/> <define name="RC_CLIMB_COEF" value ="163"/>
@@ -268,11 +235,9 @@
<section name="MISC"> <section name="MISC">
<define name="BOOZ_ANALOG_BARO_THRESHOLD" value="800"/>
<define name="FACE_REINJ_1" value="1024"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="10."/> <define name="DEFAULT_CIRCLE_RADIUS" value="10."/>
<define name="BoozDropPwm(_v)" value="BoozSetPwm1Value(_v)"/> <define name="BoozDropPwm(_v)" value="BoozSetPwm1Value(_v)"/>
<define name="IMU_MAG_OFFSET" value="-9."/> <!--define name="IMU_MAG_OFFSET" value="-9."/-->
</section> </section>
<section name="GCS"> <section name="GCS">
@@ -1,200 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
YAPA + XSens + XBee
-->
<airframe name="Yapa v1">
<servos>
<servo name="THROTTLE" no="0" min="1100" neutral="1000" max="1900"/>
<servo name="RUDDER" no="2" min="1100" neutral="1500" max="1900"/>
<servo name="ELEVATOR" no="6" min="1000" neutral="1500" max="2000"/>
<servo name="CAM_TILT" no="7" min="700" neutral="1600" max="2500"/>
<servo name="CAM_PAN" no="3" min="800" neutral="1650" max="2500"/>
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="CAM_PAN" failsafe_value="0"/>
<axis name="CAM_TILT" failsafe_value="0"/>
</commands>
<ap_only_commands>
<copy command="CAM_PAN"/>
<copy command="CAM_TILT"/>
</ap_only_commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
</rc_commands>
<command_laws>
<set servo="CAM_PAN" value="@CAM_PAN"/>
<set servo="CAM_TILT" value="@CAM_TILT"/>
<!-- Differential Aileron Depending on Brake Value -->
<set servo="RUDDER" value="@ROLL"/>
<!-- Differential Thurst -->
<set servo="THROTTLE" value="@THROTTLE"/>
<!-- Pitch with Brake-Trim Function -->
<set servo="ELEVATOR" value="@PITCH"/>
</command_laws>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="rad"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="rad"/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.7"/>
<define name="MAX_PITCH" value="0.7"/>
</section>
<section name="PANTILT" prefix="CAM_">
<define name="PAN_MIN" value="-45"/>
<define name="PAN_NEUTRAL" value="33"/>
<define name="PAN_MAX" value="156"/>
<define name="PAN0" value="0"/>
<define name="TILT_MIN" value="-62"/>
<define name="TILT_NEUTRAL" value="47"/>
<define name="TILT_MAX" value="122"/>
<define name="TILT0" value="90"/>
<define name="MODE0" value="1"/>
</section>
<section name="BAT">
<define name="LOW_BAT_LEVEL" value="7" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="6.5" unit="V"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="6.0" unit="V"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<!-- <define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="45" unit="deg"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.03"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.32"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.65"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.15" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.01"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
<define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.20000004768"/>
<define name="COURSE_DGAIN" value="0.3"/>
<define name="COURSE_PRE_BANK_CORRECTION" value="0.2"/>
<define name="ROLL_MAX_SETPOINT" value="0.9" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
<define name="PITCH_PGAIN" value="-12000."/>
<define name="PITCH_DGAIN" value="0"/>
<define name="ELEVATOR_OF_ROLL" value="1000."/>
<define name="ROLL_ATTITUDE_GAIN" value="-11500"/>
<define name="ROLL_RATE_GAIN" value="-600."/>
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="20"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="10"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="1.00"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.3"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.25"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DEFAULT_THROTTLE" value="0.35" unit="%"/>
<define name="DEFAULT_ROLL" value="0.17" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.08" unit="rad"/>
<define name="HOME_RADIUS" value="DEFAULT_CIRCLE_RADIUS" unit="m"/>
<define name="KILL_MODE_DISTANCE" value="(MAX_DIST_FROM_HOME*1.5)"/>
<define name="DELAY_WITHOUT_GPS" value="3" unit="s"/>
</section>
<section name="DIGITAL_CAMERA" prefix="DC_">
<define name="AUTOSHOOT_QUARTERSEC_PERIOD" value="6" unit="quarter_second"/>
<define name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
</section>
<modules>
<load name="ins_chimu_spi.xml" >
<define name="CHIMU_BIG_ENDIAN" />
</load>
<load name="./TUDelft/campoint60Hz.xml" />
<load name="gps_ubx_ucenter.xml">
<define name="GPS_PORT_ID" value="GPS_PORT_UART2" />
</load>
</modules>
<firmware name="fixedwing">
<target name="ap" board="tiny_2.11">
<define name="STRONG_WIND"/>
<define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/>
<define name="LOITER_TRIM"/>
<define name="ALT_KALMAN"/>
<define name="POINT_CAM_PITCH_ROLL" />
</target>
<target name="sim" board="pc"/>
<subsystem name="radio_control" type="ppm"/>
<subsystem name="gps" type="ublox" />
<!-- Communication -->
<subsystem name="telemetry" type="xbee_api">
<configure name="MODEM_BAUD" value="B9600"/>
</subsystem>
<!-- Actuators -->
<subsystem name="control"/>
<!-- Sensors -->
<subsystem name="navigation"/>
<!-- <subsystem name="gps" type="ublox_lea5h"/> -->
<subsystem name="spi_slave_hs"/>
</firmware>
</airframe>
-274
View File
@@ -1,274 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="Microjet BR Tiny 1.1">
<!-- commands section -->
<servos>
<servo name="THROTTLE" no="0" min="1100" neutral="1100" max="1700"/>
<servo name="AILEVON_LEFT" no="1" min="2000" neutral="1500" max="1000"/>
<servo name="AILEVON_RIGHT" no="3" min="950" neutral="1450" max="1950"/>
<servo name="CAM_PAN" no="5" min="1950" neutral="1450" max="950"/>
<servo name="CAM_TILT" no="2" min="1000" neutral="1550" max="2000"/>
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="CAM_TILT" failsafe_value="0"/>
<axis name="CAM_PAN" failsafe_value="0"/>
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
<set command="CAM_PAN" value="@YAW"/>
<set command="CAM_TILT" value="@YAW"/>
</rc_commands>
<section name="MIXER">
<define name="AILEVON_AILERON_RATE" value="0.4"/>
<define name="AILEVON_ELEVATOR_RATE" value="0.7"/>
</section>
<command_laws>
<let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
<set servo="THROTTLE" value="@THROTTLE"/>
<set servo="AILEVON_LEFT" value="$elevator + $aileron"/>
<set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
<set servo="CAM_PAN" value="@CAM_PAN"/>
<set servo="CAM_TILT" value="@CAM_TILT"/>
</command_laws>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="1.1"/>
<define name="MAX_PITCH" value="0.6"/>
</section>
<section name="INFRARED" prefix="IR_">
<define name="ADC_IR1_NEUTRAL" value="501"/>
<define name="ADC_IR2_NEUTRAL" value="510"/>
<define name="ADC_TOP_NEUTRAL" value="520"/>
<define name="HORIZ_SENSOR_ALIGNED" value="1"/>
<define name="IR1_SIGN" value="-1"/>
<define name="IR2_SIGN" value="1"/>
<define name="TOP_SIGN" value="1"/>
<define name="LATERAL_CORRECTION" value="1."/>
<define name="LONGITUDINAL_CORRECTION" value="1."/>
<define name="VERTICAL_CORRECTION" value="1."/>
<define name="ROLL_NEUTRAL_DEFAULT" value="0.114591561258" unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0.0572957806289" unit="deg"/>
<define name="CORRECTION_UP" value="1."/>
<define name="CORRECTION_DOWN" value="1."/>
<define name="CORRECTION_LEFT" value="1."/>
<define name="CORRECTION_RIGHT" value="1."/>
</section>
<section name="GYRO" prefix="GYRO_">
<define name="ADC_ROLL_NEUTRAL" value="450"/>
<define name="DYNAMIC_RANGE" value="150" unit="deg/s"/>
<define name="ADXRS300_RESISTOR_BRIDGE" value="(3.3/(3.3+2.2))"/>
<define name="ADXRS300_SENSITIVITY" value="5" unit="mV/(deg/s)"/>
<define name="ROLL_SCALE" value="3.0*1000./1024./(GYRO_ADXRS300_SENSITIVITY*GYRO_ADXRS300_RESISTOR_BRIDGE)" unit="deg/s/adc_unit"/>
<define name="ROLL_DIRECTION" value="1."/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="25000"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="17." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<!-- <define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/> -->
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="45" unit="deg"/>
<define name="LIGHT_LED_1" value="3"/>
</section>
<section name="external leds">
<!-- ADC 4 -->
<define name="LED_4_BANK" value="0"/>
<define name="LED_4_PIN" value="22"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.101000003517"/>
<!-- outer loop saturation max m/s the alt tap can be-->
<define name="ALTITUDE_MAX_CLIMB" value="4"/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.333000004292"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.15"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.45"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="219.511993408"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.104999996722" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.00700000021607"/>
<define name="AUTO_THROTTLE_IGAIN" value="0."/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.12800000608"/>
<!-- auto pitch inner loop -->
<define name="AUTO_PITCH_PGAIN" value="-0.0399999991059"/>
<define name="AUTO_PITCH_IGAIN" value="0.019999999553"/>
<define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
<define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
<define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.54100000858"/>
<define name="ROLL_MAX_SETPOINT" value="0.916999995708" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.4" unit="radians"/>
<define name="ROLL_PGAIN" value="5000."/>
<define name="AILERON_OF_THROTTLE" value="0.0"/>
<define name="PITCH_PGAIN" value="-7330.82714844"/>
<define name="PITCH_DGAIN" value="1.7254999876"/>
<define name="ELEVATOR_OF_ROLL" value="1250."/>
<define name="ROLL_RATE_GAIN" value="-112.781997681"/>
<define name="ROLL_ATTITUDE_GAIN" value="-4957.62695312"/>
<!-- roll rate loop -->
<define name="ROLL_RATE_MODE_DEFAULT" value="1"/>
<define name="ROLL_RATE_SETPOINT_PGAIN" value="-10." unit="rad/s/rad"/>
<define name="ROLL_RATE_MAX_SETPOINT" value="10"/>
<define name="LO_THROTTLE_ROLL_RATE_PGAIN" value="3000."/>
<define name="HI_THROTTLE_ROLL_RATE_PGAIN" value="3000."/>
<define name="ROLL_RATE_IGAIN" value="0."/>
<define name="ROLL_RATE_DGAIN" value="0."/>
<define name="ROLL_RATE_SUM_NB_SAMPLES" value="64"/>
<define name="ROLL_SLEW" value="0.1"/>
<define name="SIMPLE_ROLL_PGAIN" value="-15000"/>
<define name="SIMPLE_ROLL_DGAIN" value="-3000"/>
</section>
<section name="NAV">
<define name="NAV_PITCH" value="0."/>
<define name="NAV_GLIDE_PITCH_TRIM" value="0."/>
<!-- <define name="NAV_GROUND_SPEED_PGAIN" value="-0.015"/> NOG niet in de nav.c file
<define name="NAV_FOLLOW_PGAIN" value="-0.05"/> -->
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="25"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="0.55"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.5"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.0"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.3"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
<define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
<define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
<define name="HOME_RADIUS" value="80" unit="m"/>
</section>
<section name="CAM" prefix="CAM_">
<define name="TILT_MAX" value="30" unit="deg"/>
<define name="TILT_NEUTRAL" value="0" unit="deg"/>
<define name="TILT_MIN" value="-30" unit="deg"/>
<define name="TILT0" value="0" unit="deg"/>
<define name="PAN_MAX" value="45" unit="deg"/>
<define name="PAN_NEUTRAL" value="0" unit="deg"/>
<define name="PAN_MIN" value="-45" unit="deg"/>
<define name="PAN0" value="0" unit="deg"/>
</section>
<!--moet nog in tuning-->
<section name="Takeoff" prefix="Takeoff_">
<define name="Height" value="30" unit="m"/>
<define name="Speed" value="15" unit="m/s"/>
<define name="MinSpeed" value="5" unit="m/s"/>
<define name="Distance" value="10" unit="m"/>
</section>
<section name="Landing" prefix="Landing_">
<define name="FinalHeight" value="30" unit="m"/>
<define name="AFHeight" value="10" unit="m"/>
<define name="FinalStageTime" value="10" unit="s"/>
</section>
<section name="SIMU">
<define name="YAW_RESPONSE_FACTOR" value="0.5"/> <!-- ?????????????????????????? -->
</section>
<modules>
<load name="light.xml">
<define name="LIGHT_LED_STROBE" value="3"/>
<define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/>
</load>
<load name="infrared_adc.xml"/>
</modules>
<firmware name="fixedwing">
<target name="sim" board="pc" >
<define name="STRONG_WIND" />
<define name="TUNE_AGRESSIVE_CLIMB" />
<define name="LOITER_TRIM" />
<define name="AGR_CLIMB" />
</target>
<target name="ap" board="tiny_1.1">
<define name="STRONG_WIND" />
<define name="LOITER_TRIM" />
<define name="ALT_KALMAN" />
<define name="AGR_CLIMB" />
<define name="TUNE_AGRESSIVE_CLIMB" />
</target>
<subsystem name="radio_control" type="ppm"/>
<!-- Communication -->
<subsystem name="telemetry" type="transparent">
<configure name="MODEM_BAUD" value="B57600"/>
</subsystem>
<!-- Sensors -->
<!-- <subsystem name="gyro" type="roll">
<configure name="ADC_GYRO_ROLL" value="ADC_3" />
</subsystem>
--> <subsystem name="ahrs" type="infrared"/>
<subsystem name="gps" type="ublox_utm"/>
<subsystem name="control" />
<subsystem name="navigation" type="extra"/>
</firmware>
<makefile location="after">
</makefile>
</airframe>
-307
View File
@@ -1,307 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="Microjet BR Tiny 1.1">
<!-- commands section -->
<servos>
<servo name="THROTTLE" no="0" min="1100" neutral="1100" max="1700"/>
<servo name="AILEVON_LEFT" no="1" min="2000" neutral="1500" max="1000"/>
<servo name="AILEVON_RIGHT" no="3" min="950" neutral="1450" max="1950"/>
<servo name="CAM_PAN" no="5" min="1950" neutral="1450" max="950"/>
<servo name="CAM_TILT" no="2" min="1000" neutral="1550" max="2000"/>
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="CAM_TILT" failsafe_value="0"/>
<axis name="CAM_PAN" failsafe_value="0"/>
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
<set command="CAM_PAN" value="@YAW"/>
<set command="CAM_TILT" value="@YAW"/>
</rc_commands>
<section name="MIXER">
<define name="AILEVON_AILERON_RATE" value="0.4"/>
<define name="AILEVON_ELEVATOR_RATE" value="0.7"/>
</section>
<command_laws>
<let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
<set servo="THROTTLE" value="@THROTTLE"/>
<set servo="AILEVON_LEFT" value="$elevator + $aileron"/>
<set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
<set servo="CAM_PAN" value="@CAM_PAN"/>
<set servo="CAM_TILT" value="@CAM_TILT"/>
</command_laws>
<!-- Local magnetic field -->
<section name="AHRS" prefix="AHRS_">
<define name="H_X" value="0.51562740288882"/>
<define name="H_Y" value="-0.05707735220832"/>
<define name="H_Z" value="0.85490967783446"/>
</section>
<section name="IMU" prefix="IMU_">
<!-- Calibration Neutral -->
<define name="GYRO_P_NEUTRAL" value="0"/>
<define name="GYRO_Q_NEUTRAL" value="0"/>
<define name="GYRO_R_NEUTRAL" value="0"/>
<!-- SENS = 14.375 LSB/(deg/sec) * 57.6 deg/rad = 828 LSB/rad/sec / 12bit FRAC: 4096 / 828 -->
<define name="GYRO_P_SENS" value="4.947" integer="16"/>
<define name="GYRO_Q_SENS" value="4.947" integer="16"/>
<define name="GYRO_R_SENS" value="4.947" integer="16"/>
<define name="GYRO_P_Q" value="0."/>
<define name="GYRO_P_R" value="0"/>
<define name="GYRO_Q_P" value="0."/>
<define name="GYRO_Q_R" value="0."/>
<define name="GYRO_R_P" value="0."/>
<define name="GYRO_R_Q" value="0."/>
<define name="GYRO_P_SIGN" value="-1"/>
<define name="GYRO_Q_SIGN" value="-1"/>
<define name="GYRO_R_SIGN" value="1"/>
<define name="ACCEL_X_NEUTRAL" value="-14"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="0"/>
<!-- SENS = 256 LSB/g @ 2.5V [X&Y: 265 LSB/g @ 3.3V] / 9.81 ms2/g = 26.095 LSB/ms2 / 10bit FRAC: 1024 / 26.095 for z and 1024 / 27.01 for X&Y -->
<define name="ACCEL_X_SENS" value="37.9" integer="16"/>
<define name="ACCEL_Y_SENS" value="37.9" integer="16"/>
<define name="ACCEL_Z_SENS" value="39.24" integer="16"/>
<define name="ACCEL_X_SIGN" value="-1"/>
<define name="ACCEL_Y_SIGN" value="-1"/>
<define name="ACCEL_Z_SIGN" value="1"/>
<define name="MAG_X_NEUTRAL" value="0"/>
<define name="MAG_Y_NEUTRAL" value="0"/>
<define name="MAG_Z_NEUTRAL" value="0"/>
<define name="MAG_X_SENS" value="1" integer="16"/>
<define name="MAG_Y_SENS" value="1" integer="16"/>
<define name="MAG_Z_SENS" value="1" integer="16"/>
<define name="MAG_X_SIGN" value="1"/>
<define name="MAG_Y_SIGN" value="1"/>
<define name="MAG_Z_SIGN" value="1"/>
<define name="BODY_TO_IMU_PHI" value="0"/>
<define name="BODY_TO_IMU_THETA" value="0"/>
<define name="BODY_TO_IMU_PSI" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="RadOfDeg(6.18794441223)" unit="rad"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="RadOfDeg(-6.87549352646)" unit="deg"/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="1.1"/>
<define name="MAX_PITCH" value="0.9"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="25000"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="17." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<!-- <define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/> -->
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="45" unit="deg"/>
<define name="LIGHT_LED_1" value="3"/>
</section>
<section name="external leds">
<!-- ADC 4 -->
<define name="LED_4_BANK" value="0"/>
<define name="LED_4_PIN" value="22"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.101000003517"/>
<!-- outer loop saturation max m/s the alt tap can be-->
<define name="ALTITUDE_MAX_CLIMB" value="4"/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.386999994516"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.35"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.45"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="219.511993408"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.104999996722" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="0."/>
<define name="AUTO_THROTTLE_IGAIN" value="0."/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.202000007033"/>
<!-- auto pitch inner loop -->
<define name="AUTO_PITCH_PGAIN" value="-0.0399999991059"/>
<define name="AUTO_PITCH_IGAIN" value="0.019999999553"/>
<define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
<define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
<define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.12900002003"/>
<define name="COURSE_DGAIN" value="0.556999993324"/>
<define name="ROLL_MAX_SETPOINT" value="0.916999995708" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.6" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.4" unit="radians"/>
<define name="ROLL_PGAIN" value="0."/>
<define name="AILERON_OF_THROTTLE" value="0.0"/>
<define name="PITCH_PGAIN" value="-8550.48925781"/>
<define name="PITCH_DGAIN" value="1.7254999876"/>
<define name="ELEVATOR_OF_ROLL" value="1250."/>
<define name="ROLL_RATE_GAIN" value="-625."/>
<define name="ROLL_ATTITUDE_GAIN" value="-4464.28613281"/>
<!-- roll rate loop -->
<define name="ROLL_RATE_MODE_DEFAULT" value="1"/>
<define name="ROLL_RATE_SETPOINT_PGAIN" value="-10." unit="rad/s/rad"/>
<define name="ROLL_RATE_MAX_SETPOINT" value="10"/>
<define name="LO_THROTTLE_ROLL_RATE_PGAIN" value="3000."/>
<define name="HI_THROTTLE_ROLL_RATE_PGAIN" value="3000."/>
<define name="ROLL_RATE_IGAIN" value="0."/>
<define name="ROLL_RATE_DGAIN" value="0."/>
<define name="ROLL_RATE_SUM_NB_SAMPLES" value="64"/>
<define name="ROLL_SLEW" value="0.1"/>
<define name="SIMPLE_ROLL_PGAIN" value="-15000"/>
<define name="SIMPLE_ROLL_DGAIN" value="-3000"/>
</section>
<section name="NAV">
<define name="NAV_PITCH" value="0."/>
<define name="NAV_GLIDE_PITCH_TRIM" value="0."/>
<!-- <define name="NAV_GROUND_SPEED_PGAIN" value="-0.015"/> NOG niet in de nav.c file
<define name="NAV_FOLLOW_PGAIN" value="-0.05"/> -->
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="25"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="0.550000011921"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.5"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0."/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.300000011921"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.800000011921"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1."/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
<define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
<define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
<define name="HOME_RADIUS" value="80" unit="m"/>
</section>
<section name="CAM" prefix="CAM_">
<define name="TILT_MAX" value="30" unit="deg"/>
<define name="TILT_NEUTRAL" value="0" unit="deg"/>
<define name="TILT_MIN" value="-30" unit="deg"/>
<define name="TILT0" value="0" unit="deg"/>
<define name="PAN_MAX" value="45" unit="deg"/>
<define name="PAN_NEUTRAL" value="0" unit="deg"/>
<define name="PAN_MIN" value="-45" unit="deg"/>
<define name="PAN0" value="0" unit="deg"/>
</section>
<!--moet nog in tuning-->
<section name="Takeoff" prefix="Takeoff_">
<define name="Height" value="30" unit="m"/>
<define name="Speed" value="15" unit="m/s"/>
<define name="MinSpeed" value="5" unit="m/s"/>
<define name="Distance" value="10" unit="m"/>
</section>
<section name="Landing" prefix="Landing_">
<define name="FinalHeight" value="30" unit="m"/>
<define name="AFHeight" value="10" unit="m"/>
<define name="FinalStageTime" value="10" unit="s"/>
</section>
<section name="SIMU">
<define name="YAW_RESPONSE_FACTOR" value="0.5"/> <!-- ?????????????????????????? -->
</section>
<modules>
<load name="light.xml">
<define name="LIGHT_LED_STROBE" value="3"/>
<define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/>
</load>
</modules>
<firmware name="fixedwing">
<target name="ap" board="tiny_1.1">
<configure name="FLASH_MODE" value="IAP"/>
<configure name="PERIODIC_FREQUENCY" value="120"/>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="100"/>
<configure name="AHRS_CORRECT_FREQUENCY" value="100"/>
<define name="AHRS_TRIGGERED_ATTITUDE_LOOP"/>
<configure name="AHRS_ALIGNER_LED" value="2"/>
<define name="STRONG_WIND"/>
<define name="LOITER_TRIM"/>
<define name="ALT_KALMAN"/>
<define name="AGR_CLIMB"/>
<define name="TUNE_AGRESSIVE_CLIMB"/>
</target>
<target name="sim" board="pc">
<define name="STRONG_WIND"/>
<define name="TUNE_AGRESSIVE_CLIMB"/>
<define name="LOITER_TRIM"/>
<define name="AGR_CLIMB"/>
</target>
<subsystem name="radio_control" type="ppm"/>
<!-- Communication -->
<subsystem name="telemetry" type="transparent">
<configure name="MODEM_BAUD" value="B57600"/>
</subsystem>
<!-- Sensors -->
<subsystem name="imu" type="ppzuav"/>
<subsystem name="ahrs" type="float_dcm"/>
<subsystem name="gps" type="ublox_utm"/>
<subsystem name="control"/>
<subsystem name="navigation"/>
</firmware>
</airframe>
-231
View File
@@ -1,231 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="Microjet CDW Tiny 1.1">
<!-- commands section -->
<servos>
<servo name="THROTTLE" no="0" min="1050" neutral="1050" max="1900"/>
<servo name="AILEVON_RIGHT" no="1" min="1850" neutral="1480" max="1100"/> <!-- 400 - 380 -->
<servo name="AILEVON_LEFT" no="2" min="1250" neutral="1580" max="1980"/> <!-- 300 - 400 -->
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
</rc_commands>
<section name="MIXER">
<define name="AILEVON_AILERON_RATE" value="0.75"/>
<define name="AILEVON_ELEVATOR_RATE" value="0.9"/>
</section>
<command_laws>
<let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
<set servo="THROTTLE" value="@THROTTLE"/>
<set servo="AILEVON_LEFT" value="$elevator + $aileron"/>
<set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
</command_laws>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.8"/>
<define name="MAX_PITCH" value="0.7"/>
</section>
<section name="IMU" prefix="IMU_">
<!-- MAX1168 ADC CHANNELS -->
<define name="GYRO_P_CHAN" value="0"/>
<define name="GYRO_Q_CHAN" value="1"/>
<define name="GYRO_R_CHAN" value="2"/>
<define name="ACCEL_X_CHAN" value="4"/>
<define name="ACCEL_Y_CHAN" value="3"/>
<define name="ACCEL_Z_CHAN" value="5"/>
<!-- Calibration Neutral -->
<define name="GYRO_P_NEUTRAL" value="21480"/>
<define name="GYRO_Q_NEUTRAL" value="21410"/>
<define name="GYRO_R_NEUTRAL" value="21940"/>
<!-- SENS = 2mV/deg/sec * 57.6 deg/rad = 114.59 mV/rad/sec * 16 LSB/mV = 1833.465 LSB/rad/sec / 12bit FRAC -->
<define name="GYRO_P_SENS" value="2.234" integer="16"/>
<define name="GYRO_Q_SENS" value="2.234" integer="16"/>
<define name="GYRO_R_SENS" value="2.234" integer="16"/>
<define name="GYRO_P_Q" value="0."/>
<define name="GYRO_P_R" value="(1.0f/75.0f)"/>
<define name="GYRO_Q_P" value="0."/>
<define name="GYRO_Q_R" value="0."/>
<define name="GYRO_R_P" value="0."/>
<define name="GYRO_R_Q" value="0."/>
<define name="GYRO_P_SIGN" value="1"/>
<define name="GYRO_Q_SIGN" value="-1"/>
<define name="GYRO_R_SIGN" value="-1"/>
<define name="ACCEL_X_NEUTRAL" value="26584"/>
<define name="ACCEL_Y_NEUTRAL" value="26660"/>
<define name="ACCEL_Z_NEUTRAL" value="26732"/>
<!-- 3.5G: SENS = 330mV/g / 9.81 ms2/g = 33.63 mV/ms2 * 16 LSB/mV = 538.22 LSB/ms2 / 10bit FRAC -->
<!-- 2G: SENS = 660mV/g / 9.81 ms2/g = 67.27 mV/ms2 * 16 LSB/mV = 1076 LSB/ms2 / 10bit FRAC -> 0.9372-->
<!-- 6G: SENS = 220mV/g / 9.81 ms2/g = 67.27 mV/ms2 * 16 LSB/mV = 358.8 LSB/ms2 / 10bit FRAC -> 2.853818182-->
<define name="ACCEL_X_SENS" value="2.85382" integer="10"/>
<define name="ACCEL_Y_SENS" value="2.85382" integer="10"/>
<define name="ACCEL_Z_SENS" value="2.85382" integer="10"/>
<define name="ACCEL_X_SIGN" value="1"/>
<define name="ACCEL_Y_SIGN" value="-1"/>
<define name="ACCEL_Z_SIGN" value="-1"/>
<define name="MAG_X_NEUTRAL" value="0"/>
<define name="MAG_Y_NEUTRAL" value="0"/>
<define name="MAG_Z_NEUTRAL" value="0"/>
<define name="MAG_X_SENS" value="1" integer="16"/>
<define name="MAG_Y_SENS" value="1" integer="16"/>
<define name="MAG_Z_SENS" value="1" integer="16"/>
<!-- <define name="MAG_45_HACK" value="1"/> -->
<define name="BODY_TO_IMU_PHI" value="0"/>
<define name="BODY_TO_IMU_THETA" value="0"/>
<define name="BODY_TO_IMU_PSI" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0."/>
<define name="PITCH_NEUTRAL_DEFAULT" value="-0.0570000000298"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="20000"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="14.5" unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="75."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="0." unit="deg"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.01"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="4."/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.33"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.60"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.1" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="0."/>
<define name="AUTO_THROTTLE_IGAIN" value="0."/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.1"/>
<define name="THROTTLE_SLEW_LIMITER" value="1" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.39999997616"/>
<define name="ROLL_MAX_SETPOINT" value="0.703999996185" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.4" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.4" unit="radians"/>
<define name="PITCH_PGAIN" value="-6000."/>
<define name="PITCH_DGAIN" value="0."/>
<define name="ELEVATOR_OF_ROLL" value="1200."/>
<define name="ROLL_ATTITUDE_GAIN" value="-6000."/>
<define name="ROLL_RATE_GAIN" value="-600."/>
<define name="ROLL_SLEW" value="0.02"/> <!-- Maximal roll angle change per 1/60 of second: 0.02 rad/loop * 180/pi * 60 loop/sec = 60 deg/sec -->
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="20"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="10"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="1.00"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.6"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.0"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.35"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
<define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
<define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
</section>
<firmware name="fixedwing">
<target name="ap" board="tiny_1.1">
<configure name="PERIODIC_FREQUENCY" value="960"/> <!-- IMU FREQ -->
<configure name="AHRS_PROPAGATE_FREQUENCY" value="120"/>
<configure name="AHRS_CORRECT_FREQUENCY" value="60"/>
<configure name="AHRS_ALIGNER_LED" value="1"/>
<configure name="CPU_LED" value="2"/>
</target>
<target name="sim" board="pc"/>
<define name="AGR_CLIMB"/>
<define name="LOITER_TRIM"/>
<define name="ALT_KALMAN"/>
<subsystem name="radio_control" type="ppm"/>
<!-- Communication -->
<subsystem name="telemetry" type="xbee_api">
<configure name="MODEM_BAUD" value="B57600"/>
</subsystem>
<subsystem name="control"/>
<!-- Sensors -->
<subsystem name="imu" type="booz"/>
<subsystem name="ahrs" type="float_dcm"/>
<subsystem name="gps" type="ublox_utm"/>
<subsystem name="navigation"/>
</firmware>
<firmware name="setup">
<target name="tunnel" board="tiny_1.1"/>
</firmware>
<modules>
<load name="light.xml">
<define name="LIGHT_LED_STROBE" value="2"/>
<define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/>
</load>
</modules>
</airframe>
-297
View File
@@ -1,297 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
Funjet Multiplex (http://www.multiplex-rc.de/), Jeti ECO 25
Tiny 2.11 board (http://paparazzi.enac.fr/wiki/index.php/Tiny_v2)
PerkinElmer TPS334 IR Sensors
Tilted infrared sensor (http://paparazzi.enac.fr/wiki/index.php/Image:Tiny_v2_1_Funjet.jpg)
XBee modem
Payload: Sensirion humidity/temp, VTI pressure/temp
K68, LEA 5
-->
<airframe name="MavLab50cm">
<!-- commands section -->
<servos>
<servo name="MOTOR" no="0" min="1000" neutral="1000" max="2000"/>
<servo name="AILEVON_LEFT" no="1" min="900" neutral="1500" max="2100"/>
<servo name="AILEVON_RIGHT" no="5" min="900" neutral="1500" max="2100"/>
<servo name="BOMB" no="3" min="1880" neutral="1880" max="1200"/>
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="BOMB" failsafe_value="0"/>
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
<set command="BOMB" value="@YAW"/>
</rc_commands>
<ap_only_commands>
<!--
<copy command="CAM_TILT"/>
<copy command="CAM_PAN"/>
-->
</ap_only_commands>
<command_laws>
<set servo="MOTOR" value="@THROTTLE"/>
<set servo="AILEVON_LEFT" value="(@ROLL*0.8f) - (@PITCH)"/>
<set servo="AILEVON_RIGHT" value="(@ROLL*0.8f) + (@PITCH)"/>
<set servo="BOMB" value="@BOMB"/>
</command_laws>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.85"/>
<define name="MAX_PITCH" value="0.6"/>
</section>
<section name="adc" prefix="ADC_CHANNEL_">
<define name="IR_TOP" value="ADC_0"/>
<define name="IR1" value="ADC_1"/>
<define name="IR2" value="ADC_2"/>
<define name="IR_NB_SAMPLES" value="16"/>
<define name="GYRO_ROLL" value="ADC_4"/>
<define name="GYRO_PITCH" value="ADC_5"/>
<define name="GYRO_NB_SAMPLES" value="16"/>
<define name="AIRSPEED" value="ADC_3"/>
<define name="AIRSPEED_NB_SAMPLES" value="32"/>
</section>
<section name="INFRARED" prefix="IR_">
<define name="ADC_IR1_NEUTRAL" value="500"/>
<define name="ADC_IR2_NEUTRAL" value="500"/>
<define name="ADC_TOP_NEUTRAL" value="490"/>
<define name="CORRECTION_UP" value="1."/>
<define name="CORRECTION_DOWN" value="1."/>
<define name="CORRECTION_LEFT" value="1."/>
<define name="CORRECTION_RIGHT" value="1."/>
<define name="LATERAL_CORRECTION" value="1."/>
<define name="LONGITUDINAL_CORRECTION" value="-1."/>
<define name="VERTICAL_CORRECTION" value="1.5"/>
<define name="HORIZ_SENSOR_TILTED" value="1"/>
<define name="IR1_SIGN" value="1"/>
<define name="IR2_SIGN" value="-1"/>
<define name="TOP_SIGN" value="1"/>
<define name="ROLL_NEUTRAL_DEFAULT" value="0." unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="18.9649028778" unit="deg"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="6.0" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="6.8" unit="V"/>
<define name="LOW_BAT_LEVEL" value="7.3" unit="V"/>
<define name="MAX_BAT_LEVEL" value="8.4" unit="V"/>
<define name="MilliAmpereOfAdc(adc)" value="((adc-508)*50)"/>
</section>
<section name="GYRO" prefix="GYRO_">
<define name="ADC_ROLL_NEUTRAL" value="382"/>
<define name="ADC_PITCH_NEUTRAL" value="400"/>
<define name="ADC_TEMP_NEUTRAL" value="0"/>
<define name="ADC_TEMP_SLOPE" value="0"/>
<define name="DYNAMIC_RANGE" value="500" unit="deg/s"/>
<define name="ROLL_SCALE" value="-2.0/1024.*GYRO_DYNAMIC_RANGE" unit="deg/s/adc_unit"/>
<define name="PITCH_SCALE" value="2.0/1024.*GYRO_DYNAMIC_RANGE" unit="deg/s/adc_unit"/>
<define name="ROLL_DIRECTION" value="-1."/>
<define name="PITCH_DIRECTION" value="1."/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="10." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<!--uncommant API protocol in makefile-->
<define name="XBEE_INIT" value="\"ATCHC\rATID3332\rATPL4\rATRN1\rATTT80\rATBD3\rATWR\r\""/>
<define name="NO_XBEE_API_INIT" value="TRUE"/> <!-- uncommant after programed-->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="70."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="5" unit="deg"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="7.6" unit="volt"/>
<!-- Vertical Outerloop
v_ctl_climb_setpoint = ALTITUDE_PGAIN * altitude_error + altitude_pre_climb;
BoundAbs(v_ctl_climb_setpoint, V_CTL_ALTITUDE_MAX_CLIMB);
-->
<!-- outer loop proportional gain: alt error 5 climb m/s -->
<define name="ALTITUDE_PGAIN" value="-0.0750000029802"/>
<!-- outer loop saturation: m/s-->
<define name="ALTITUDE_MAX_CLIMB" value="5.0"/>
<!-- auto throttle inner loop
float 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_igain * v_ctl_auto_throttle_sum_err
+ v_ctl_auto_throttle_dgain * d_err);
/* pitch pre-command */
float v_ctl_pitch_of_vz = (v_ctl_climb_setpoint + d_err * v_ctl_auto_throttle_pitch_of_vz_dgain)
* v_ctl_auto_throttle_pitch_of_vz_pgain;
-->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.40000000596"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.20"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.90"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500."/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-1000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0." unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.035000000149"/>
<define name="AUTO_THROTTLE_IGAIN" value="0."/>
<define name="AUTO_THROTTLE_DGAIN" value="0.0"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0."/>
<define name="THROTTLE_SLEW_LIMITER" value="1" unit="s"/>
<define name="AUTO_AIRSPEED_SETPOINT" value="10" unit="m/s"/>
<define name="AUTO_AIRSPEED_PITCH_PGAIN" value="0" unit="degree/(m/s)"/>
<define name="AUTO_AIRSPEED_THROTTLE_PGAIN" value="0" unit="%/(m/s)"/>
<define name="AUTO_AIRSPEED_THROTTLE_IGAIN" value="0"/>
<!-- auto pitch inner loop -->
<define name="AUTO_PITCH_PGAIN" value="0."/>
<define name="AUTO_PITCH_IGAIN" value="0."/>
<define name="AUTO_PITCH_MAX_PITCH" value="0"/>
<define name="AUTO_PITCH_MIN_PITCH" value="0"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.5"/> <!-- Heading outerloop: only P-gain -->
<define name="ROLL_MAX_SETPOINT" value="0.75" unit="radians"/> <!-- Max Angles -->
<define name="PITCH_MAX_SETPOINT" value="0.4" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.4" unit="radians"/>
<define name="PITCH_PGAIN" value="-7110.09179688"/> <!-- Pitch Angle PD control -->
<define name="PITCH_DGAIN" value="2."/>
<define name="ELEVATOR_OF_ROLL" value="1500."/> <!-- Feed forward ABS(roll) to elevator -->
<define name="ROLL_SLEW" value="0.30"/> <!-- Maximal roll angle change per 1/60 of second -->
<define name="ROLL_ATTITUDE_GAIN" value="-7000."/> <!-- Roll Angle PD control -->
<define name="ROLL_RATE_GAIN" value="-2752.29394531"/>
<!--
#ifdef H_CTL_ROLL_ATTITUDE_GAIN
inline static void h_ctl_roll_loop( void ) {
float err = estimator_phi - h_ctl_roll_setpoint;
float cmd = - h_ctl_roll_attitude_gain * err
- h_ctl_roll_rate_gain * estimator_p
+ v_ctl_throttle_setpoint * h_ctl_aileron_of_throttle;
h_ctl_aileron_setpoint = TRIM_PPRZ(cmd);
}
-->
</section>
<section name="NAV">
<define name="NAV_PITCH" value="0."/>
<define name="NAV_GLIDE_PITCH_TRIM" value="0."/>
<!-- <define name="NAV_GROUND_SPEED_PGAIN" value="0"/> -->
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="40"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="25"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="1.0"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.40"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.0"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.3"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
<define name="DEFAULT_THROTTLE" value="0.0" unit="%"/>
<define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
</section>
<section name="SIMU">
<define name="YAW_RESPONSE_FACTOR" value="0.5"/>
</section>
<makefile>
CONFIG = \"tiny_sense.h\"
include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
FLASH_MODE=IAP
ap.CFLAGS += -DFBW -DAP -DBOARD_CONFIG=$(CONFIG) -DUSE_LED -DTIME_LED=2
ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c main_ap.c main.c
ap.srcs += commands.c
ap.CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
ap.srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
ap.CFLAGS += -DRADIO_CONTROL
ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c
#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport -DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B57600
#ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c xbee.c
#TRANSPARENT
#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DPPRZ_UART=Uart1 -#DDATALINK=PPRZ -DUART1_BAUD=B9600
#ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c pprz_transport.c
# Maxstream API protocol
ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport -DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B9600
ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c xbee.c
ap.CFLAGS += -DINTER_MCU
ap.srcs += inter_mcu.c
ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2 -DUSE_ADC_3 -DUSE_ADC_4 -DUSE_ADC_5 -DUSE_GYRO -DIDG300
ap.srcs += $(SRC_ARCH)/adc_hw.c
ap.CFLAGS += -DUSE_GPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400 -DGPS_USE_LATLONG
ap.srcs += gps_ubx.c gps.c latlong.c
ap.CFLAGS += -DUSE_INFRARED -DALT_KALMAN -DWIND_INFO -DWIND_INFO_RET -DSTRONG_WIND
ap.srcs += infrared.c estimator.c gyro.c
ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
ap.srcs += subsystems/nav.c fw_h_ctl.c fw_v_ctl.c
ap.srcs += subsystems/navigation/nav_line.c subsystems/navigation/nav_survey_rectangle.c
#ap.srcs += baro_bmp.c $(SRC_ARCH)/i2c_hw.c i2c.c
#ap.CFLAGS += -DUSE_I2C0 -DUSE_BARO_BMP -DBARO_BMP_ACCEL
# Config for SITL simulation
include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
sim.srcs += subsystems/navigation/nav_line.c subsystems/navigation/nav_survey_rectangle.c
sim.srcs += joystick.c
sim.CFLAGS += -DUSE_JOYSTICK
</makefile>
</airframe>
-313
View File
@@ -1,313 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
Funjet Multiplex (http://www.multiplex-rc.de/), Jeti ECO 25
Tiny 2.11 board (http://paparazzi.enac.fr/wiki/index.php/Tiny_v2)
PerkinElmer TPS334 IR Sensors
Tilted infrared sensor (http://paparazzi.enac.fr/wiki/index.php/Image:Tiny_v2_1_Funjet.jpg)
XBee modem
Payload: Sensirion humidity/temp, VTI pressure/temp
K68, LEA 5
-->
<airframe name="MavLab50cm">
<!-- commands section -->
<servos>
<servo name="MOTOR" no="0" min="1000" neutral="1000" max="2000"/>
<!-- Left: 2ms is up -->
<servo name="AILEVON_LEFT" no="1" min="1100" neutral="1500" max="2900"/>
<!-- Right: 2ms is donw -->
<servo name="AILEVON_RIGHT" no="5" min="300" neutral="1200" max="1900"/>
<servo name="CAM_TILT" no="3" min="1500" neutral="2050" max="2050"/>
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="CAM_TILT" failsafe_value="0"/>
</commands>
<ap_only_commands>
<copy command="CAM_TILT"/>
</ap_only_commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
</rc_commands>
<command_laws>
<set servo="MOTOR" value="@THROTTLE"/>
<set servo="AILEVON_LEFT" value="(@ROLL*0.8f) + (@PITCH)"/>
<set servo="AILEVON_RIGHT" value="(@ROLL*0.8f) - (@PITCH)"/>
<set servo="CAM_TILT" value="@CAM_TILT"/>
</command_laws>
<section name="CAMERA" prefix="CAM_">
<define name="TILT0" value="0" unit="deg"/>
<define name="TILT_MIN" value="-30" unit="deg"/>
<define name="TILT_NEUTRAL" value="0" unit="deg"/>
<define name="TILT_MAX" value="30" unit="deg"/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.85"/>
<define name="MAX_PITCH" value="0.6"/>
</section>
<section name="adc" prefix="ADC_CHANNEL_">
<define name="IR_TOP" value="ADC_0"/>
<define name="IR1" value="ADC_1"/>
<define name="IR2" value="ADC_2"/>
<define name="IR_NB_SAMPLES" value="16"/>
<define name="GYRO_ROLL" value="ADC_4"/>
<define name="GYRO_PITCH" value="ADC_5"/>
<define name="GYRO_NB_SAMPLES" value="16"/>
<define name="AIRSPEED" value="ADC_3"/>
<define name="AIRSPEED_NB_SAMPLES" value="32"/>
</section>
<section name="INFRARED" prefix="IR_">
<define name="ADC_IR1_NEUTRAL" value="500"/>
<define name="ADC_IR2_NEUTRAL" value="500"/>
<define name="ADC_TOP_NEUTRAL" value="490"/>
<define name="CORRECTION_UP" value="1."/>
<define name="CORRECTION_DOWN" value="1."/>
<define name="CORRECTION_LEFT" value="1."/>
<define name="CORRECTION_RIGHT" value="1."/>
<define name="LATERAL_CORRECTION" value="1."/>
<define name="LONGITUDINAL_CORRECTION" value="-1."/>
<define name="VERTICAL_CORRECTION" value="1.5"/>
<define name="HORIZ_SENSOR_TILTED" value="1"/>
<define name="IR1_SIGN" value="1"/>
<define name="IR2_SIGN" value="-1"/>
<define name="TOP_SIGN" value="1"/>
<define name="ROLL_NEUTRAL_DEFAULT" value="0." unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="18.9649028778" unit="deg"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="6.0" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="6.8" unit="V"/>
<define name="LOW_BAT_LEVEL" value="7.3" unit="V"/>
<define name="MAX_BAT_LEVEL" value="8.4" unit="V"/>
<define name="MilliAmpereOfAdc(adc)" value="((adc-508)*50)"/>
</section>
<section name="GYRO" prefix="GYRO_">
<define name="ADC_ROLL_NEUTRAL" value="382"/>
<define name="ADC_PITCH_NEUTRAL" value="400"/>
<define name="ADC_TEMP_NEUTRAL" value="0"/>
<define name="ADC_TEMP_SLOPE" value="0"/>
<define name="DYNAMIC_RANGE" value="500" unit="deg/s"/>
<define name="ROLL_SCALE" value="-2.0/1024.*GYRO_DYNAMIC_RANGE" unit="deg/s/adc_unit"/>
<define name="PITCH_SCALE" value="2.0/1024.*GYRO_DYNAMIC_RANGE" unit="deg/s/adc_unit"/>
<define name="ROLL_DIRECTION" value="-1."/>
<define name="PITCH_DIRECTION" value="1."/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="10." unit="m/s"/>
<define name="CARROT" value="10." unit="s"/>
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<!--uncommant API protocol in makefile-->
<define name="XBEE_INIT" value="\"ATCHC\rATID3332\rATPL4\rATRN1\rATTT80\rATBD3\rATWR\r\""/>
<define name="NO_XBEE_API_INIT" value="TRUE"/> <!-- uncommant after programed-->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="70."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="5" unit="deg"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="7.6" unit="volt"/>
<!-- Vertical Outerloop
v_ctl_climb_setpoint = ALTITUDE_PGAIN * altitude_error + altitude_pre_climb;
BoundAbs(v_ctl_climb_setpoint, V_CTL_ALTITUDE_MAX_CLIMB);
-->
<!-- outer loop proportional gain: alt error 5 climb m/s -->
<define name="ALTITUDE_PGAIN" value="-0.0750000029802"/>
<!-- outer loop saturation: m/s-->
<define name="ALTITUDE_MAX_CLIMB" value="5.0"/>
<!-- auto throttle inner loop
float 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_igain * v_ctl_auto_throttle_sum_err
+ v_ctl_auto_throttle_dgain * d_err);
/* pitch pre-command */
float v_ctl_pitch_of_vz = (v_ctl_climb_setpoint + d_err * v_ctl_auto_throttle_pitch_of_vz_dgain)
* v_ctl_auto_throttle_pitch_of_vz_pgain;
-->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.40000000596"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.20"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.90"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500."/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-1000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0." unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.035000000149"/>
<define name="AUTO_THROTTLE_IGAIN" value="0."/>
<define name="AUTO_THROTTLE_DGAIN" value="0.0"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0."/>
<define name="THROTTLE_SLEW_LIMITER" value="1" unit="s"/>
<define name="AUTO_AIRSPEED_SETPOINT" value="10" unit="m/s"/>
<define name="AUTO_AIRSPEED_PITCH_PGAIN" value="0" unit="degree/(m/s)"/>
<define name="AUTO_AIRSPEED_THROTTLE_PGAIN" value="0" unit="%/(m/s)"/>
<define name="AUTO_AIRSPEED_THROTTLE_IGAIN" value="0"/>
<!-- auto pitch inner loop -->
<define name="AUTO_PITCH_PGAIN" value="0."/>
<define name="AUTO_PITCH_IGAIN" value="0."/>
<define name="AUTO_PITCH_MAX_PITCH" value="0"/>
<define name="AUTO_PITCH_MIN_PITCH" value="0"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.5"/> <!-- Heading outerloop: only P-gain -->
<define name="ROLL_MAX_SETPOINT" value="0.75" unit="radians"/> <!-- Max Angles -->
<define name="PITCH_MAX_SETPOINT" value="0.4" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.4" unit="radians"/>
<define name="PITCH_PGAIN" value="-7110.09179688"/> <!-- Pitch Angle PD control -->
<define name="PITCH_DGAIN" value="2."/>
<define name="ELEVATOR_OF_ROLL" value="1500."/> <!-- Feed forward ABS(roll) to elevator -->
<define name="ROLL_SLEW" value="0.30"/> <!-- Maximal roll angle change per 1/60 of second -->
<define name="ROLL_ATTITUDE_GAIN" value="-7000."/> <!-- Roll Angle PD control -->
<define name="ROLL_RATE_GAIN" value="-2752.29394531"/>
<!--
#ifdef H_CTL_ROLL_ATTITUDE_GAIN
inline static void h_ctl_roll_loop( void ) {
float err = estimator_phi - h_ctl_roll_setpoint;
float cmd = - h_ctl_roll_attitude_gain * err
- h_ctl_roll_rate_gain * estimator_p
+ v_ctl_throttle_setpoint * h_ctl_aileron_of_throttle;
h_ctl_aileron_setpoint = TRIM_PPRZ(cmd);
}
-->
</section>
<section name="NAV">
<define name="NAV_PITCH" value="0."/>
<define name="NAV_GLIDE_PITCH_TRIM" value="0."/>
<!-- <define name="NAV_GROUND_SPEED_PGAIN" value="0"/> -->
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="40"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="25"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="1.0"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.40"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.0"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.3"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
<define name="DEFAULT_THROTTLE" value="0.0" unit="%"/>
<define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
</section>
<section name="SIMU">
<define name="YAW_RESPONSE_FACTOR" value="0.5"/>
</section>
<makefile>
CONFIG = \"tiny_sense.h\"
include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
FLASH_MODE=IAP
ap.CFLAGS += -DFBW -DAP -DBOARD_CONFIG=$(CONFIG) -DUSE_LED -DTIME_LED=2
ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c main_ap.c main.c
ap.srcs += commands.c
ap.CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
ap.srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
ap.CFLAGS += -DRADIO_CONTROL
ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c
#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport -DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B57600
#ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c xbee.c
#TRANSPARENT
#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DPPRZ_UART=Uart1 -#DDATALINK=PPRZ -DUART1_BAUD=B9600
#ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c pprz_transport.c
# Maxstream API protocol
ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport -DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B9600
ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c xbee.c
ap.CFLAGS += -DINTER_MCU
ap.srcs += inter_mcu.c
ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2 -DUSE_ADC_3 -DUSE_ADC_4 -DUSE_ADC_5 -DUSE_GYRO -DIDG300
ap.srcs += $(SRC_ARCH)/adc_hw.c
ap.CFLAGS += -DUSE_GPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400 -DGPS_USE_LATLONG
ap.srcs += gps_ubx.c gps.c latlong.c
ap.CFLAGS += -DUSE_INFRARED -DALT_KALMAN -DWIND_INFO -DWIND_INFO_RET -DSTRONG_WIND
ap.srcs += infrared.c estimator.c gyro.c
ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
ap.srcs += subsystems/nav.c fw_h_ctl.c fw_v_ctl.c
ap.srcs += subsystems/navigation/nav_line.c subsystems/navigation/nav_survey_rectangle.c
ap.srcs += baro_bmp.c $(SRC_ARCH)/i2c_hw.c i2c.c
ap.CFLAGS += -DUSE_I2C0 -DUSE_BARO_BMP -DBARO_BMP_ACCEL
# camera control
ap.CFLAGS += -DCAM -DMOBILE_CAM -DPOINT_CAM -DPOINT_CAM_PITCH_ROLL
ap.srcs += cam.c point.c
# Config for SITL simulation
include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
sim.srcs += subsystems/navigation/nav_line.c subsystems/navigation/nav_survey_rectangle.c
sim.srcs += joystick.c
sim.CFLAGS += -DUSE_JOYSTICK
sim.CFLAGS += -DCAM -DMOBILE_CAM -DPOINT_CAM -DPOINT_CAM_PITCH_ROLL
# -DTEST_CAM
sim.srcs += cam.c point.c
sim.srcs += subsystems/navigation/bomb.c
</makefile>
</airframe>
-313
View File
@@ -1,313 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="Holiday 50 Delft Tiny 1.1">
<modules>
<load name="./TUDelft/opticflow.xml"/>
</modules>
<!-- commands section -->
<servos>
<servo name="THROTTLE" no="0" min="1100" neutral="1100" max="1900"/>
<servo name="AILERONS" no="2" min="1830" neutral="1480" max="1130"/> <!-- positive = right turn -->
<servo name="ELEVATOR" no="1" min="1100" neutral="1400" max="1900"/> <!-- positive = up -->
<servo name="CAM_TILT" no="3" min="1150" neutral="1500" max="1850"/>
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="CAM_TILT" failsafe_value="0"/>
<axis name="HATCH" failsafe_value="0"/>
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
</rc_commands>
<ap_only_commands>
<copy command="CAM_TILT"/>
</ap_only_commands>
<command_laws>
<set servo="THROTTLE" value="@THROTTLE"/>
<set servo="AILERONS" value="@ROLL"/>
<set servo="ELEVATOR" value="@PITCH"/>
<set servo="CAM_TILT" value="@CAM_TILT"/>
</command_laws>
<section name="CAMERA" prefix="CAM_">
<define name="TILT0" value="0" unit="deg"/>
<define name="TILT_MIN" value="-30" unit="deg"/>
<define name="TILT_NEUTRAL" value="0" unit="deg"/>
<define name="TILT_MAX" value="30" unit="deg"/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.7"/>
<define name="MAX_PITCH" value="0.7"/>
</section>
<section name="adc" prefix="ADC_CHANNEL_">
<define name="IR1" value="ADC_0"/>
<define name="IR2" value="ADC_1"/>
<define name="IR_TOP" value="ADC_2"/>
<define name="IR_NB_SAMPLES" value="16"/>
<define name="GYRO_ROLL" value="ADC_3"/>
<define name="GYRO_TEMP" value="ADC_4"/>
<define name="GYRO_NB_SAMPLES" value="16"/>
<define name="OPTICFLOW" value="ADC_5"/>
<define name="CURRENT" value="ADC_6"/> <!-- Current Measurement -->
</section>
<section name="INFRARED" prefix="IR_">
<define name="ADC_IR1_NEUTRAL" value="512"/>
<define name="ADC_IR2_NEUTRAL" value="512"/>
<define name="ADC_TOP_NEUTRAL" value="512"/>
<define name="HORIZ_SENSOR_TILTED" value="1"/>
<define name="IR2_SIGN" value="-1"/>
<define name="TOP_SIGN" value="1"/>
<define name="LATERAL_CORRECTION" value="0.7"/>
<define name="LONGITUDINAL_CORRECTION" value="-0.7"/>
<define name="VERTICAL_CORRECTION" value="1.3"/>
<define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
<define name="CORRECTION_UP" value="1.0"/>
<define name="CORRECTION_DOWN" value="1.0"/>
<define name="CORRECTION_LEFT" value="1.0"/>
<define name="CORRECTION_RIGHT" value="1.0"/>
</section>
<section name="AIRSPEED" prefix="AIRSPEED_">
<define name="BIAS" value="(168.0f)"/>
<define name="QUADRATIC_SCALE" value="1.2588f"/>
<define name="ZERO" value="0"/>
<define name="RESISTOR_BRIDGE" value="(3.3/(3.3+2.2))"/>
<define name="SCALE" value="1." unit="m/s/adc_unit"/>
</section>
<section name="GYRO" prefix="GYRO_">
<define name="ADC_ROLL_NEUTRAL" value="325"/>
<define name="ADC_TEMP_NEUTRAL" value="450"/>
<define name="ADC_TEMP_SLOPE" value="0"/>
<define name="DYNAMIC_RANGE" value="150" unit="deg/s"/>
<define name="ADXRS300_RESISTOR_BRIDGE" value="(3.3/(3.3+2.2))"/>
<define name="ADXRS300_SENSITIVITY" value="5" unit="mV/(deg/s)"/>
<define name="ROLL_SCALE" value="2.0*1000./1024./(GYRO_ADXRS300_SENSITIVITY*GYRO_ADXRS300_RESISTOR_BRIDGE)" unit="deg/s/adc_unit"/>
<define name="ROLL_DIRECTION" value="-1."/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="12000"/> <!-- 12Amp Full power on Ground -->
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
<define name="MilliAmpereOfAdc(adc)" value="((adc-508)*50)"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="70."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="5" unit="deg"/>
<define name="LIGHT_LED_1" value="3"/>
<!-- <define name="POWER_SWITCH_LED" value="2"/> -->
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- Vertical Outerloop
v_ctl_climb_setpoint = ALTITUDE_PGAIN * altitude_error + altitude_pre_climb;
BoundAbs(v_ctl_climb_setpoint, V_CTL_ALTITUDE_MAX_CLIMB);
-->
<!-- outer loop proportional gain: alt error 5 climb m/s -->
<define name="ALTITUDE_PGAIN" value="-0.04"/>
<!-- outer loop saturation: m/s-->
<define name="ALTITUDE_MAX_CLIMB" value="5.0"/>
<!-- auto throttle inner loop
float 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_igain * v_ctl_auto_throttle_sum_err
+ v_ctl_auto_throttle_dgain * d_err);
/* pitch pre-command */
float v_ctl_pitch_of_vz = (v_ctl_climb_setpoint + d_err * v_ctl_auto_throttle_pitch_of_vz_dgain)
* v_ctl_auto_throttle_pitch_of_vz_pgain;
-->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.319999992847"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.20"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.45"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-1000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.0" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.005"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.0"/>
<define name="AUTO_THROTTLE_DGAIN" value="0.0"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.56"/>
<define name="THROTTLE_SLEW_LIMITER" value="1" unit="s"/>
<define name="AUTO_GROUNDSPEED_SETPOINT" value="16" unit="m/s"/>
<define name="AUTO_GROUNDSPEED_PGAIN" value="0" unit="degree/(m/s)"/>
<define name="AUTO_GROUNDSPEED_IGAIN" value="0"/>
<define name="AUTO_AIRSPEED_SETPOINT" value="0" unit="%/(m/s)"/>
<define name="AUTO_AIRSPEED_PGAIN" value="0" unit="degree/(m/s)"/>
<define name="AUTO_AIRSPEED_IGAIN" value="0" unit="degree/(m/s)"/>
<define name="AUTO_PITCH_MAX_PITCH" value="0.4" unit="radians"/>
<define name="AUTO_PITCH_MIN_PITCH" value="-0.4" unit="radians"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.5"/> <!-- Heading outerloop: only P-gain -->
<define name="ROLL_MAX_SETPOINT" value="0.60" unit="radians"/> <!-- Max Angles -->
<define name="PITCH_MAX_SETPOINT" value="0.4" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.4" unit="radians"/>
<define name="PITCH_PGAIN" value="-5925.65087891"/> <!-- Pitch Angle PD control -->
<define name="PITCH_DGAIN" value="2.0"/>
<define name="ELEVATOR_OF_ROLL" value="2050"/> <!-- Feed forward ABS(roll) to elevator -->
<define name="ROLL_SLEW" value="0.10"/> <!-- Maximal roll angle change per 1/60 of second -->
<define name="ROLL_ATTITUDE_GAIN" value="-6000"/> <!-- Roll Angle PD control -->
<define name="ROLL_RATE_GAIN" value="-550"/>
<!--
#ifdef H_CTL_ROLL_ATTITUDE_GAIN
inline static void h_ctl_roll_loop( void ) {
float err = estimator_phi - h_ctl_roll_setpoint;
float cmd = - h_ctl_roll_attitude_gain * err
- h_ctl_roll_rate_gain * estimator_p
+ v_ctl_throttle_setpoint * h_ctl_aileron_of_throttle;
h_ctl_aileron_setpoint = TRIM_PPRZ(cmd);
}
-->
</section>
<section name="NAV">
<define name="NAV_PITCH" value="0."/>
<define name="NAV_GLIDE_PITCH_TRIM" value="-0.0"/>
<!-- <define name="NAV_GROUND_SPEED_PGAIN" value="0"/> -->
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="30"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="18"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="0.60"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.40"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.3"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
<define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
<define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
</section>
<section name="SIMU">
<define name="YAW_RESPONSE_FACTOR" value="0.5"/>
</section>
<makefile>
include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
FLASH_MODE=IAP
# main files (including the 60Hz timing)
ap.CFLAGS += -DFBW -DAP -DBOARD_CONFIG=\"tiny_1_1.h\" -DUSE_LED -DTIME_LED=1
ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c main_ap.c main.c
# Command allocation and Radio Mixers
ap.srcs += commands.c
# Actuators: tiny1.1 board has 4015_MAT servos
ap.CFLAGS += -DACTUATORS=\"servos_4015_MAT_hw.h\" -DSERVOS_4015_MAT
ap.srcs += $(SRC_ARCH)/servos_4015_MAT_hw.c actuators.c
# 35MHz Radio
ap.CFLAGS += -DRADIO_CONTROL
ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c
# Paparazzi protocol on UART0 at 57600
ap.CFLAGS += -DDOWNLINK -DUSE_UART0 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLINK_FBW_DEVICE=Uart0 -DDOWNLINK_AP_DEVICE=Uart0 -DPPRZ_UART=Uart0 -DDATALINK=PPRZ -DUART0_BAUD=B57600
ap.srcs += downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c pprz_transport.c
# communication from FBW and AP
ap.CFLAGS += -DINTER_MCU
ap.srcs += inter_mcu.c
ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2 -DUSE_ADC_3 -DUSE_ADC_4 -DUSE_ADC_5
ap.srcs += $(SRC_ARCH)/adc_hw.c
# USE_GPS on UART1
ap.CFLAGS += -DUSE_GPS -DUBX -DUSE_UART1 -DGPS_LINK=Uart1 -DUART1_BAUD=B38400
#ap.CFLAGS += -DGPS_CONFIGURE -DGPS_BAUD=38400
ap.srcs += gps_ubx.c gps.c latlong.c
ap.CFLAGS += -DUSE_INFRARED
ap.srcs += infrared.c estimator.c
ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
ap.srcs += subsystems/nav.c fw_h_ctl.c fw_v_ctl.c
ap.CFLAGS += -DTUNE_AGRESSIVE_CLIMB
ap.CFLAGS += -DUSE_GYRO -DADXRS150
ap.srcs += gyro.c
ap.CFLAGS += -DUSE_MODULES
ap.srcs += subsystems/navigation/nav_line.c subsystems/navigation/nav_survey_rectangle.c
ap.srcs += subsystems/navigation/traffic_info.c
# camera control
ap.CFLAGS += -DCAM -DMOBILE_CAM -DPOINT_CAM -DPOINT_CAM_PITCH_ROLL
# -DTEST_CAM
ap.srcs += cam.c point.c
# subsystems/navigation/traffic_info.c
ap.CFLAGS += -DWIND_INFO -DSTRONG_WIND
ap.srcs += subsystems/navigation/bomb.c
# Config for SITL simulation
include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
sim.CFLAGS += -DBOARD_CONFIG=\"tiny_1_1.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN -DWIND_INFO -DSTRONG_WIND
sim.srcs += subsystems/navigation/nav_survey_rectangle.c subsystems/navigation/nav_line.c
sim.CFLAGS += -DTUNE_AGRESSIVE_CLIMB
# subsystems/navigation/traffic_info.c
sim.CFLAGS += -DUSE_MODULES
sim.CFLAGS += -DCAM -DMOBILE_CAM -DPOINT_CAM -DPOINT_CAM_PITCH_ROLL
# -DTEST_CAM
sim.srcs += cam.c point.c
sim.srcs += subsystems/navigation/bomb.c
</makefile>
</airframe>
-244
View File
@@ -1,244 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
YAPA + XSens + XBee
-->
<airframe name="Yapa v1">
<servos>
<servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/>
<servo name="AILERON_LEFT" no="2" min="900" neutral="1500" max="2100"/>
<servo name="AILERON_RIGHT" no="6" min="900" neutral="1500" max="2100"/>
<servo name="ELEVATOR" no="7" min="1900" neutral="1500" max="1100"/>
<servo name="RUDDER" no="3" min="1100" neutral="1500" max="1900"/>
</servos>
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="YAW" failsafe_value="0"/>
<axis name="BRAKE" failsafe_value="9600"/> <!-- both elerons up as butterfly brake ? -->
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="YAW" value="@YAW"/>
<set command="PITCH" value="@PITCH"/>
<set command="BRAKE" value="@FLAPS"/>
</rc_commands>
<section name="SERVO_MIXER_GAINS">
<define name="AILERON_NEUTRAL" value="0.3f"/>
<define name="AILERON_RATE_UP" value="1.0f"/>
<define name="AILERON_RATE_DOWN" value="0.5f"/>
<define name="AILERON_RATE_UP_BRAKE" value="1.0f"/>
<define name="AILERON_RATE_DOWN_BRAKE" value="1.0f"/>
<define name="PITCH_GAIN" value="0.9f"/>
<define name="BRAKE_AILEVON" value="-0.7f"/>
<define name="BRAKE_PITCH" value="0.1f"/>
<define name="MAX_BRAKE_RATE" value="130"/>
<define name="RUDDER_OF_AILERON" value="0.3"/>
<define name="LIMIT(X,XL,XH)" value="( ((X)>(XH)) ? (XH) : ( ((X)>(XL)) ? (X) : (XL) ) )"/>
</section>
<command_laws>
<!-- Brake Rate Limiter -->
<let var="brake_value_nofilt" value="LIMIT(-@BRAKE, 0, MAX_PPRZ)"/>
<let var="test; \
static int16_t _var_brake_value = 0; \
_var_brake_value += LIMIT(_var_brake_value_nofilt - _var_brake_value,-MAX_BRAKE_RATE,MAX_BRAKE_RATE); \
int verwaarloos_deze_warning_CDW" value="0"/>
<!-- Differential Aileron Depending on Brake Value -->
<let var="aileron_up_rate" value="(AILERON_RATE_UP * (MAX_PPRZ - $brake_value)) + (AILERON_RATE_UP_BRAKE * $brake_value)"/>
<let var="aileron_down_rate" value="(AILERON_RATE_DOWN * (MAX_PPRZ - $brake_value)) + (AILERON_RATE_DOWN_BRAKE * $brake_value)"/>
<let var="aileron_up" value="(@ROLL * (((float)$aileron_up_rate) / ((float)MAX_PPRZ)))"/>
<let var="aileron_down" value="(@ROLL * (((float)$aileron_down_rate) / ((float)MAX_PPRZ)))"/>
<let var="leftturn" value="(@ROLL >= 0? 1 : 0)"/>
<let var="rightturn" value="(1 - $leftturn)"/>
<set servo="AILERON_LEFT" value="($aileron_up * $leftturn) + ($aileron_down * $rightturn) - $brake_value*(BRAKE_AILEVON) - (MAX_PPRZ * AILERON_NEUTRAL)"/>
<set servo="AILERON_RIGHT" value="($aileron_up * $rightturn) + ($aileron_down * $leftturn) + $brake_value*(BRAKE_AILEVON) + (MAX_PPRZ *AILERON_NEUTRAL)"/>
<set servo="RUDDER" value="@YAW + @ROLL * RUDDER_OF_AILERON"/>
<set servo="THROTTLE" value="@THROTTLE"/>
<!-- Pitch with Brake-Trim Function -->
<set servo="ELEVATOR" value="@PITCH * PITCH_GAIN - BRAKE_PITCH * $brake_value"/>
</command_laws>
<!-- Local magnetic field -->
<section name="AHRS" prefix="AHRS_">
<define name="H_X" value="0.51562740288882"/>
<define name="H_Y" value="-0.05707735220832"/>
<define name="H_Z" value="0.85490967783446"/>
</section>
<section name="XSENS">
<define name="GPS_IMU_LEVER_ARM_X" value="-0.285f"/>
<define name="GPS_IMU_LEVER_ARM_Y" value="0.0f"/>
<define name="GPS_IMU_LEVER_ARM_Z" value="0.0f"/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="RadOfDeg(75)"/>
<define name="MAX_PITCH" value="RadOfDeg(45)"/>
</section>
<section name="BAT">
<!-- <define name="MilliAmpereOfAdc(adc)" value="((adc) - 505) * 124.0f"/> -->
<define name="LOW_BAT_LEVEL" value="10.5" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="10" unit="V"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
</section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0.0" unit="rad"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="-0.075" unit="rad"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="14." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<!-- <define name="ALT_KALMAN_ENABLED" value="TRUE"/> -->
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="45" unit="deg"/>
<define name="COMMAND_ROLL_TRIM" value="-2300" />
<define name="COMMAND_PITCH_TRIM" value="1800" />
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.108000002801"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.312000006437"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.65"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.250999987125" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.00700000021607"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.0309999994934"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.171000003815"/>
<define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.16799998283"/>
<define name="COURSE_DGAIN" value="0.280999988317"/>
<define name="COURSE_PRE_BANK_CORRECTION" value="1.0039999485"/>
<define name="ROLL_MAX_SETPOINT" value="0.851999998093" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
<define name="PITCH_PGAIN" value="-15429.6865234"/>
<define name="PITCH_DGAIN" value="7.73400020599"/>
<define name="ELEVATOR_OF_ROLL" value="3007.81298828"/>
<define name="ROLL_SLEW" value="1."/>
<define name="ROLL_ATTITUDE_GAIN" value="-11718.75"/>
<define name="ROLL_RATE_GAIN" value="-820.312011719"/>
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="30"/>
<define name="BLEND_END" value="15"/>
<define name="CLIMB_THROTTLE" value="1."/>
<define name="CLIMB_PITCH" value="0.40000000596"/>
<define name="DESCENT_THROTTLE" value="0."/>
<define name="DESCENT_PITCH" value="-0.10000000149"/>
<define name="CLIMB_NAV_RATIO" value="0.800000011921"/>
<define name="DESCENT_NAV_RATIO" value="0.834999978542"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DEFAULT_THROTTLE" value="0.35" unit="%"/>
<define name="DEFAULT_ROLL" value="0.17" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.08" unit="rad"/>
<define name="HOME_RADIUS" value="DEFAULT_CIRCLE_RADIUS" unit="m"/>
<define name="KILL_MODE_DISTANCE" value="(MAX_DIST_FROM_HOME*1.5)"/>
<define name="DELAY_WITHOUT_GPS" value="3" unit="s"/>
</section>
<section name="DIGITAL_CAMERA" prefix="DC_">
<define name="AUTOSHOOT_QUARTERSEC_PERIOD" value="6" unit="quarter_second"/>
<define name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
</section>
<modules>
<!--
<load name="light.xml">
<define name="LIGHT_LED_STROBE" value="3"/>
<define name="LIGHT_LED_NAV" value="2"/>
<define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/>
<define name="NAV_LIGHT_MODE_DEFAULT" value="4"/>
</load>
-->
<!-- <load name="digital_cam_i2c.xml"/> -->
<!-- <load name="ins_ppzuavimu.xml"/> -->
<load name="digital_cam.xml">
<define name="DC_SHUTTER_LED" value="2"/>
</load>
</modules>
<firmware name="fixedwing">
<target name="ap" board="tiny_2.11" />
<target name="sim" board="pc"/>
<define name="STRONG_WIND"/>
<define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/>
<define name="LOITER_TRIM"/>
<define name="TUNE_AGRESSIVE_CLIMB"/>
<define name="AGR_CLIMB"/>
<subsystem name="radio_control" type="ppm"/>
<!-- Communication -->
<subsystem name="telemetry" type="xbee_api">
<configure name="MODEM_BAUD" value="B9600"/>
</subsystem>
<!-- Actuators -->
<subsystem name="control"/>
<!-- Sensors -->
<subsystem name="navigation"/>
<subsystem name="ins" type="xsens">
<configure name="XSENS_UART_NR" value="0" />
</subsystem>
</firmware>
</airframe>
-326
View File
@@ -1,326 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
Skywalker Fiberglass "GraySky" FPV 168 (http://www..com/)
YAPA v2 (http://paparazzi.enac.fr/wiki/Yapa#Yapa_v2)
With modified power routing
* Aspiring
* XBee 2.4Ghz
* uBlox LEA5H and Sarantel helix GPS antenna
Notes:
The two aileron servos are separately connected and have an additional spoileron function
-->
<airframe name="Graysky">
<!-- **************************** FIRMWARE ********************************* -->
<firmware name="fixedwing">
<target name="ap" board="tiny_2.11">
<configure name="PERIODIC_FREQUENCY" value="120"/>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="100"/>
<configure name="AHRS_CORRECT_FREQUENCY" value="100"/>
<define name="AHRS_TRIGGERED_ATTITUDE_LOOP"/>
<configure name="AHRS_ALIGNER_LED" value="3"/>
</target>
<target name="sim" board="pc"/>
<define name="LOITER_TRIM"/>
<define name="TUNE_AGRESSIVE_CLIMB"/>
<define name="AGR_CLIMB"/>
<define name="ALT_KALMAN"/>
<!-- Radio Control -->
<subsystem name="radio_control" type="ppm"/>
<!-- Communication -->
<subsystem name="telemetry" type="xbee_api">
<configure name="MODEM_BAUD" value="B9600"/>
</subsystem>
<!-- Actuators -->
<subsystem name="control"/>
<!-- Navigation -->
<subsystem name="navigation"/>
<!-- Sensors -->
<subsystem name="imu" type="aspirin_i2c"/>
<subsystem name="ahrs" type="float_dcm"/>
<subsystem name="gps" type="ublox"/>
</firmware>
<!-- **************************** MODULES ********************************** -->
<modules>
<!-- <load name="light.xml">
<define name="LIGHT_LED_STROBE" value="3"/>
<define name="LIGHT_LED_NAV" value="2"/>
<define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/>
<define name="NAV_LIGHT_MODE_DEFAULT" value="4"/>
</load>
-->
<!-- <load name="digital_cam_i2c.xml"/> -->
<!-- <load name="ins_ppzuavimu.xml"/> -->
<load name="digital_cam.xml">
<define name="DC_SHUTTER_LED" value="3"/>
</load>
</modules>
<!-- ***************************** SERVOS ********************************** -->
<servos>
<!-- Define here to which CONNECTOR NUMBER the servo is connected to, on the autopilot cicuit board -->
<servo name="THROTTLE" no="9" min="1000" neutral="1000" max="2000"/>
<servo name="AILERON_LEFT" no="4" min="1000" neutral="1500" max="2000"/>
<servo name="AILERON_RIGHT" no="8" min="1000" neutral="1500" max="2000"/>
<servo name="ELEVATOR" no="5" min="1900" neutral="1500" max="1100"/>
<servo name="RUDDER" no="1" min="1100" neutral="1500" max="1900"/>
</servos>
<!-- commands section -->
<commands>
<axis name="THROTTLE" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="YAW" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<!-- both ailerons up as braking spoilerons -->
<axis name="BRAKE" failsafe_value="9600"/>
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="YAW" value="@YAW"/>
<set command="PITCH" value="@PITCH"/>
<set command="BRAKE" value="@FLAPS"/>
</rc_commands>
<!-- To still be able to use rudder in autonomous fight YAW can come in handy while tuning -->
<!--
<auto_rc_commands>
<set command="YAW" value="@YAW"/>
<set command="GAIN1" value="@GAIN1"/>
<set command="CALIB" value="@CALIB"/>
</auto_rc_commands>
-->
<section name="SERVO_MIXER_GAINS">
<define name="AILERON_NEUTRAL" value="0.3f"/>
<define name="AILERON_RATE_UP" value="1.0f"/>
<define name="AILERON_RATE_DOWN" value="0.5f"/>
<define name="AILERON_RATE_UP_BRAKE" value="1.0f"/>
<define name="AILERON_RATE_DOWN_BRAKE" value="1.0f"/>
<define name="PITCH_GAIN" value="0.9f"/>
<define name="BRAKE_SPOILERON" value="-0.7f"/>
<define name="BRAKE_PITCH" value="0.1f"/>
<define name="MAX_BRAKE_RATE" value="130"/>
<define name="RUDDER_OF_AILERON" value="0.3"/>
<define name="LIMIT(X,XL,XH)" value="( ((X)>(XH)) ? (XH) : ( ((X)>(XL)) ? (X) : (XL) ) )"/>
</section>
<command_laws>
<!-- Brake Rate Limiter -->
<let var="brake_value_nofilt" value="LIMIT(-@BRAKE, 0, MAX_PPRZ)"/>
<let var="test; \
static int16_t _var_brake_value = 0; \
_var_brake_value += LIMIT(_var_brake_value_nofilt - _var_brake_value,-MAX_BRAKE_RATE,MAX_BRAKE_RATE); \
int verwaarloos_deze_warning_CDW" value="0"/>
<!-- Differential Aileron Depending on Brake Value -->
<let var="aileron_up_rate" value="(AILERON_RATE_UP * (MAX_PPRZ - $brake_value)) + (AILERON_RATE_UP_BRAKE * $brake_value)"/>
<let var="aileron_down_rate" value="(AILERON_RATE_DOWN * (MAX_PPRZ - $brake_value)) + (AILERON_RATE_DOWN_BRAKE * $brake_value)"/>
<let var="aileron_up" value="(@ROLL * (((float)$aileron_up_rate) / ((float)MAX_PPRZ)))"/>
<let var="aileron_down" value="(@ROLL * (((float)$aileron_down_rate) / ((float)MAX_PPRZ)))"/>
<let var="leftturn" value="(@ROLL >= 0? 1 : 0)"/>
<let var="rightturn" value="(1 - $leftturn)"/>
<set servo="AILERON_LEFT" value="($aileron_up * $leftturn) + ($aileron_down * $rightturn) - $brake_value*(BRAKE_SPOILERON) - (MAX_PPRZ * AILERON_NEUTRAL)"/>
<set servo="AILERON_RIGHT" value="($aileron_up * $rightturn) + ($aileron_down * $leftturn) + $brake_value*(BRAKE_SPOILERON) + (MAX_PPRZ *AILERON_NEUTRAL)"/>
<set servo="RUDDER" value="@YAW + @ROLL * RUDDER_OF_AILERON"/>
<set servo="THROTTLE" value="@THROTTLE"/>
<!-- Pitch with Brake-Trim Function -->
<set servo="ELEVATOR" value="@PITCH * PITCH_GAIN - BRAKE_PITCH * $brake_value"/>
</command_laws>
<!-- Local magnetic field -->
<section name="AHRS" prefix="AHRS_">
<define name="H_X" value="0.51562740288882"/>
<define name="H_Y" value="-0.05707735220832"/>
<define name="H_Z" value="0.85490967783446"/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="RadOfDeg(75)"/>
<define name="MAX_PITCH" value="RadOfDeg(45)"/>
</section>
<section name="BAT">
<!-- <define name="MilliAmpereOfAdc(adc)" value="((adc) - 505) * 124.0f"/> -->
<!-- Note that 3S lipo 3.1*3=9.3 most of the time the cutof for the motor part of the ESC -->
<define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="10" unit="V"/>
<define name="LOW_BAT_LEVEL" value="10.5" unit="V"/>
</section>
<section name="IMU" prefix="IMU_">
<!-- Calibration Neutral -->
<define name="GYRO_P_NEUTRAL" value="0"/>
<define name="GYRO_Q_NEUTRAL" value="0"/>
<define name="GYRO_R_NEUTRAL" value="0"/>
<!-- ITG3200: SENS = 14.375 LSB/(deg/sec) * 57.6 deg/rad = 828 LSB/rad/sec / 12bit FRAC: 4096 / 828 -->
<!-- IMU3000: SENS = 16.4 LSB/(deg/sec) * 57.6 deg/rad = 828 LSB/rad/sec / 12bit FRAC: 4096 / 828 -->
<define name="GYRO_P_SENS" value="4.336" integer="16"/>
<define name="GYRO_Q_SENS" value="4.336" integer="16"/>
<define name="GYRO_R_SENS" value="4.336" integer="16"/>
<define name="GYRO_P_Q" value="0."/>
<define name="GYRO_P_R" value="0"/>
<define name="GYRO_Q_P" value="0."/>
<define name="GYRO_Q_R" value="0."/>
<define name="GYRO_R_P" value="0."/>
<define name="GYRO_R_Q" value="0."/>
<define name="GYRO_P_SIGN" value="1"/>
<define name="GYRO_Q_SIGN" value="-1"/>
<define name="GYRO_R_SIGN" value="-1"/>
<define name="ACCEL_X_NEUTRAL" value="-12"/>
<define name="ACCEL_Y_NEUTRAL" value="+3"/>
<define name="ACCEL_Z_NEUTRAL" value="-30"/>
<!-- SENS = 256 LSB/g @ 2.5V [X&Y: 265 LSB/g @ 3.3V] / 9.81 ms2/g = 26.095 LSB/ms2 / 10bit FRAC: 1024 / 26.095 for z and 1024 / 27.01 for X&Y -->
<define name="ACCEL_X_SENS" value="37.9" integer="16"/>
<define name="ACCEL_Y_SENS" value="37.9" integer="16"/>
<define name="ACCEL_Z_SENS" value="39.24" integer="16"/>
<define name="ACCEL_X_SIGN" value="1"/>
<define name="ACCEL_Y_SIGN" value="-1"/>
<define name="ACCEL_Z_SIGN" value="-1"/>
<define name="MAG_X_NEUTRAL" value="0"/>
<define name="MAG_Y_NEUTRAL" value="0"/>
<define name="MAG_Z_NEUTRAL" value="0"/>
<define name="MAG_X_SENS" value="1" integer="16"/>
<define name="MAG_Y_SENS" value="1" integer="16"/>
<define name="MAG_Z_SENS" value="1" integer="16"/>
<define name="MAG_X_SIGN" value="1"/>
<define name="MAG_Y_SIGN" value="1"/>
<define name="MAG_Z_SIGN" value="1"/>
<define name="BODY_TO_IMU_PHI" value="0"/>
<define name="BODY_TO_IMU_THETA" value="0"/>
<define name="BODY_TO_IMU_PSI" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0." unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0." unit="deg"/>
</section>
<section name="MISC">
<define name="COMMAND_ROLL_TRIM" value="1" />
<define name="COMMAND_PITCH_TRIM" value="-1" />
<define name="NOMINAL_AIRSPEED" value="17." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<!-- The Glide definitions are used for calculating the touch down point during auto landing -->
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="45" unit="deg"/>
</section>
<!-- ******************* VERTICAL CONTROL ********************************** -->
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.108000002801"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.312000006437"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.65"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.250999987125" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.00700000021607"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.0309999994934"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.171000003815"/>
<define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
</section>
<!-- ******************* HORIZONTAL CONTROL ******************************** -->
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.16799998283"/>
<define name="COURSE_DGAIN" value="0.280999988317"/>
<define name="COURSE_PRE_BANK_CORRECTION" value="1.0039999485"/>
<define name="ROLL_MAX_SETPOINT" value="0.851999998093" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
<define name="PITCH_PGAIN" value="-15429.6865234"/>
<define name="PITCH_DGAIN" value="7.73400020599"/>
<define name="ELEVATOR_OF_ROLL" value="3007.81298828"/>
<define name="ROLL_SLEW" value="1."/>
<define name="ROLL_ATTITUDE_GAIN" value="-11718.75"/>
<define name="ROLL_RATE_GAIN" value="-820.312011719"/>
</section>
<!-- ***************************** AGGRESIVE ******************************* -->
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="30"/>
<define name="BLEND_END" value="15"/>
<define name="CLIMB_THROTTLE" value="1."/>
<define name="CLIMB_PITCH" value="0.40000000596"/>
<define name="DESCENT_THROTTLE" value="0."/>
<define name="DESCENT_PITCH" value="-0.10000000149"/>
<define name="CLIMB_NAV_RATIO" value="0.800000011921"/>
<define name="DESCENT_NAV_RATIO" value="0.834999978542"/>
</section>
<!-- ****************************** FAILSAFE ******************************* -->
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DEFAULT_THROTTLE" value="0.35" unit="%"/>
<define name="DEFAULT_ROLL" value="0.17" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.08" unit="rad"/>
<define name="HOME_RADIUS" value="DEFAULT_CIRCLE_RADIUS" unit="m"/>
<define name="KILL_MODE_DISTANCE" value="(MAX_DIST_FROM_HOME*1.5)"/>
<define name="DELAY_WITHOUT_GPS" value="3" unit="s"/>
</section>
<!-- ******************************* CAMERA ******************************** -->
<section name="DIGITAL_CAMERA" prefix="DC_">
<define name="AUTOSHOOT_QUARTERSEC_PERIOD" value="6" unit="quarter_second"/>
<define name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
</section>
</airframe>
+259
View File
@@ -0,0 +1,259 @@
<!-- this is a synerani vehicle equiped with Lisa/M and generic china pwm motor controllers -->
<airframe name="jt_lisam">
<servos>
<servo name="GAS" no="0" min="1100" neutral="1100" max="1900"/>
<servo name="CIC_LEFT" no="2" min="1900" neutral="1500" max="1100"/>
<servo name="CIC_RIGHT" no="3" min="1900" neutral="1500" max="1100"/>
<servo name="CIC_FRONT" no="1" min="1900" neutral="1500" max="1100"/>
<servo name="TAIL" no="4" min="1100" neutral="1500" max="1900"/>
<servo name="GYRO_GAIN" no="6" min="1100" neutral="1500" max="1900"/>
</servos>
<commands>
<axis name="THRUST" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
<axis name="YAW" failsafe_value="0"/>
</commands>
<section name="MIXER">
<define name="TCURVE" value="1"/>
<define name="SUPERVISION_SCALE" value="9600" />
</section>
<rc_commands>
<set command="THRUST" value="@THRUST * SUPERVISION_SCALE / MAX_PPRZ"/>
<set command="ROLL" value="@ROLL * SUPERVISION_SCALE / MAX_PPRZ"/>
<set command="PITCH" value="@PITCH * SUPERVISION_SCALE / MAX_PPRZ"/>
<set command="YAW" value="@YAW * SUPERVISION_SCALE / MAX_PPRZ"/>
</rc_commands>
<command_laws>
<let var="halfway" value="(@THRUST >= (3800) ? 1 : 0)"/>
<let var="thrust" value="@THRUST * MAX_PPRZ / SUPERVISION_SCALE" />
<let var="roll" value="@ROLL * MAX_PPRZ / SUPERVISION_SCALE" />
<let var="pitch" value="@PITCH * MAX_PPRZ / SUPERVISION_SCALE" />
<let var="yaw" value="@YAW * MAX_PPRZ / SUPERVISION_SCALE" />
<let var="collective" value="$thrust * 1.8 - (MAX_PPRZ * 0.9)" />
<set servo="GAS" value="(3800 * 1.6) + $halfway * ($thrust - 3800) + (1 - $halfway) * ($thrust - 3800) * 1.6" />
<set servo="CIC_LEFT" value="((-$pitch/2)+($roll*0.7))+($collective)"/>
<set servo="CIC_RIGHT" value="(($pitch/2)+($roll*0.7))-($collective)"/>
<set servo="CIC_FRONT" value="$pitch+($collective)"/>
<set servo="TAIL" value="$yaw"/>
<set servo="GYRO_GAIN" value="-MAX_PPRZ/2"/>
</command_laws>
<section name="AUTOPILOT">
<define name="MODE_MANUAL" value="AP_MODE_RC_DIRECT"/>
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_DIRECT"/>
<define name="MODE_AUTO2" value="AP_MODE_NAV"/>
</section>
<!--
AP_MODE_RATE_DIRECT AP_MODE_ATTITUDE_DIRECT AP_MODE_HOVER_DIRECT
AP_MODE_RATE_RC_CLIMB AP_MODE_ATTITUDE_RC_CLIMB
AP_MODE_ATTITUDE_CLIMB AP_MODE_HOVER_CLIMB
AP_MODE_RATE_Z_HOLD AP_MODE_ATTITUDE_Z_HOLD AP_MODE_HOVER_Z_HOLD
AP_MODE_NAV
-->
<section name="IMU" prefix="IMU_">
<!--
<define name="GYRO_P_CHAN" value="1"/>
<define name="GYRO_Q_CHAN" value="0"/>
<define name="GYRO_R_CHAN" value="2"/>
-->
<define name="GYRO_P_SIGN" value="1"/>
<define name="GYRO_Q_SIGN" value="1"/>
<define name="GYRO_R_SIGN" value="1"/>
<define name="GYRO_P_NEUTRAL" value="-31"/>
<define name="GYRO_Q_NEUTRAL" value="-48"/>
<define name="GYRO_R_NEUTRAL" value="-17"/>
<define name="GYRO_P_SENS" value="4.412" integer="16"/>
<define name="GYRO_Q_SENS" value="4.412" integer="16"/>
<define name="GYRO_R_SENS" value="4.412" integer="16"/>
<!--
<define name="ACCEL_X_CHAN" value="3"/>
<define name="ACCEL_Y_CHAN" value="5"/>
<define name="ACCEL_Z_CHAN" value="6"/>
-->
<define name="ACCEL_X_SIGN" value="1"/>
<define name="ACCEL_Y_SIGN" value="1"/>
<define name="ACCEL_Z_SIGN" value="1"/>
<define name="ACCEL_X_NEUTRAL" value="10"/>
<define name="ACCEL_Y_NEUTRAL" value="1"/>
<define name="ACCEL_Z_NEUTRAL" value="-3"/>
<define name="ACCEL_X_SENS" value="38.4436411998" integer="16"/>
<define name="ACCEL_Y_SENS" value="38.7116161958" integer="16"/>
<define name="ACCEL_Z_SENS" value="39.970909149" integer="16"/>
<!--
<define name="MAG_X_CHAN" value="4"/>
<define name="MAG_Y_CHAN" value="0"/>
<define name="MAG_Z_CHAN" value="2"/>
<define name="MAG_45_HACK" value="1"/>
-->
<define name="MAG_X_SIGN" value="1"/>
<define name="MAG_Y_SIGN" value=" 1"/>
<define name="MAG_Z_SIGN" value="1"/>
<define name="MAG_X_NEUTRAL" value="-56"/>
<define name="MAG_Y_NEUTRAL" value="-171"/>
<define name="MAG_Z_NEUTRAL" value="-100"/>
<define name="MAG_X_SENS" value="4.3833130016" integer="16"/>
<define name="MAG_Y_SENS" value="4.59820229976" integer="16"/>
<define name="MAG_Z_SENS" value="4.3085068988" integer="16"/>
<define name="BODY_TO_IMU_PHI" value="RadOfDeg( 0.)"/>
<define name="BODY_TO_IMU_THETA" value="RadOfDeg( 0.)"/>
<define name="BODY_TO_IMU_PSI" value="RadOfDeg( 0.)"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="12000"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
</section>
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
<define name="SP_MAX_P" value="10000"/>
<define name="SP_MAX_Q" value="10000"/>
<define name="SP_MAX_R" value="10000"/>
<define name="GAIN_P" value="-400"/>
<define name="GAIN_Q" value="-400"/>
<define name="GAIN_R" value="-350"/>
</section>
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
<!-- setpoints -->
<define name="SP_MAX_PHI" value="RadOfDeg(45.)"/>
<define name="SP_MAX_THETA" value="RadOfDeg(45.)"/>
<define name="SP_MAX_PSI" value="RadOfDeg(45.)"/>
<define name="SP_MAX_R" value="RadOfDeg(90.)"/>
<define name="SP_MAX_P" value="RadOfDeg(90.)"/>
<define name="DEADBAND_R" value="250"/>
<define name="DEADBAND_A" value="250"/>
<!-- reference -->
<define name="REF_OMEGA_R" value="RadOfDeg(600)"/>
<define name="REF_ZETA_R" value="0.90"/>
<define name="REF_MAX_R" value="RadOfDeg(400.)"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_Q" value="RadOfDeg(800)"/>
<define name="REF_ZETA_Q" value="0.90"/>
<define name="REF_MAX_Q" value="RadOfDeg(500.)"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_P" value="RadOfDeg(600)"/>
<define name="REF_ZETA_P" value="0.85"/>
<define name="REF_MAX_P" value="RadOfDeg(220.)"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(1800.)"/>
<!-- feedback -->
<define name="PSI_PGAIN" value="-750"/>
<define name="PSI_DGAIN" value="-370"/>
<define name="PSI_IGAIN" value="-100"/>
<define name="THETA_PGAIN" value="-800"/>
<define name="THETA_DGAIN" value="-240"/>
<define name="THETA_IGAIN" value="-100"/>
<define name="PHI_PGAIN" value="-4000"/>
<define name="PHI_DGAIN" value="-600"/>
<define name="PHI_IGAIN" value="-10"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value=" 300"/>
<define name="THETA_DDGAIN" value=" 300"/>
<define name="PSI_DDGAIN" value=" 300"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="3.3" integer="16"/>
</section>
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
<define name="MIN_ERR_Z" value="POS_BFP_OF_REAL(-10.)"/>
<define name="MAX_ERR_Z" value="POS_BFP_OF_REAL( 10.)"/>
<define name="MIN_ERR_ZD" value="SPEED_BFP_OF_REAL(-10.)"/>
<define name="MAX_ERR_ZD" value="SPEED_BFP_OF_REAL( 10.)"/>
<define name="MAX_SUM_ERR" value="2000000"/>
<define name="HOVER_KP" value="-150"/>
<define name="HOVER_KD" value="-80"/>
<define name="HOVER_KI" value="-20"/>
<!-- 1.5m/s for full stick : BOOZ_SPEED_I_OF_F(1.5) / (MAX_PPRZ/2) -->
<define name="RC_CLIMB_COEF" value ="163"/>
<!-- BOOZ_SPEED_I_OF_F(1.5) * 20% -->
<define name="RC_CLIMB_DEAD_BAND" value ="160000"/>
<define name="INV_M" value ="0.21"/>
</section>
<section name="AHRS" prefix="AHRS_">
<define name="PROPAGATE_FREQUENCY" value="512"/>
<define name="MAG_UPDATE_YAW_ONLY" value="1"/>
<!-- magnetic field for Santa cruz from http://www.ngdc.noaa.gov/geomagmodels/IGRFWMM.jsp -->
<define name="H_X" value=" 0.47577"/>
<define name="H_Y" value=" 0.11811"/>
<define name="H_Z" value=" 0.87161"/>
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="PGAIN" value="-100"/>
<define name="DGAIN" value="-100"/>
<define name="IGAIN" value="-0"/>
</section>
<section name="SIMULATOR" prefix="NPS_">
<define name="ACTUATOR_NAMES" value="{&quot;front_motor&quot;, &quot;back_motor&quot;, &quot;right_motor&quot;, &quot;left_motor&quot;}"/>
<define name="INITIAL_CONDITITONS" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
<section name="MISC">
<define name="FACE_REINJ_1" value="1024"/>
</section>
<!--
<modules main_freq="512">
<load name="vehicle_interface_overo_link.xml"/>
</modules>
-->
<firmware name="rotorcraft">
<target name="ap" board="lisa_m_1.0">
<!-- <define name="BOOZ_START_DELAY" value="1"/> -->
<subsystem name="radio_control" type="ppm"/>
<subsystem name="actuators" type="heli"/>
<subsystem name="telemetry" type="transparent"/>
<define name="SERVO_HZ" value="50"/>
<define name="SERVO_HZ_SECONDARY" value="50"/>
<define name="USE_SERVOS_7AND8"/>
<define name="ROTORCRAFT_COMMANDS_YAW_ALWAYS_ENABLED"/>
</target>
<!--
<target name="sim" board="pc">
<subsystem name="fdm" type="nps"/>
<subsystem name="radio_control" type="ppm"/>
<subsystem name="actuators" type="mkk"/>
</target>
-->
<subsystem name="imu" type="aspirin_v1.5"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="ahrs" type="int_cmpl_euler"/>
<subsystem name="stabilization" type="euler"/>
</firmware>
</airframe>
+250
View File
@@ -0,0 +1,250 @@
<!-- this is a quadrotor frame equiped with Lisa/M and MKK motor controllers -->
<airframe name="fraser">
<firmware name="rotorcraft">
<target name="ap" board="lisa_m_1.0">
<subsystem name="radio_control" type="spektrum"/>
<define name="RADIO_MODE" value="RADIO_AUX2"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<define name="RADIO_CONTROL_SPEKTRUM_SIGNS" value="\{1,1,-1,1,-1,-1,-1,1,1,1,1,1\}"/>
<define name="RADIO_CONTROL_SPEKTRUM_SECONDARY_PORT" value="UART5"/>
<define name="OVERRIDE_UART5_IRQ_HANDLER"/>
<!--define name="ACTUATORS_START_DELAY" value="2"/-->
<define name="USE_INS_NAV_INIT"/>
<configure name="AHRS_ALIGNER_LED" value="3"/>
</target>
<target name="sim" board="pc">
<subsystem name="fdm" type="nps"/>
<subsystem name="radio_control" type="ppm"/>
</target>
<subsystem name="telemetry" type="xbee_api"/>
<subsystem name="actuators" type="mkk"/>
<subsystem name="imu" type="aspirin_v1.5"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="euler"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<!--subsystem name="ahrs" type="float_cmpl">
<define name="AHRS_PROPAGATE_QUAT"/>
</subsystem-->
</firmware>
<firmware name="setup">
<target name="tunnel" board="lisa_m_1.0"/>
</firmware>
<firmware name="lisa_test_progs">
<target name="test_led" board="lisa_m_1.0"/>
<target name="test_sys_time" board="lisa_m_1.0"/>
<target name="test_uart" board="lisa_m_1.0"/>
<target name="test_servos" board="lisa_m_1.0"/>
<target name="test_telemetry" board="lisa_m_1.0"/>
<target name="test_baro" board="lisa_m_1.0"/>
<target name="test_rc_spektrum" board="lisa_m_1.0"/>
<target name="test_rc_ppm" board="lisa_m_1.0"/>
<target name="test_adc" board="lisa_m_1.0"/>
<target name="test_imu_b2" board="lisa_m_1.0"/>
<target name="test_imu_b2_2" board="lisa_m_1.0"/>
<target name="test_imu_aspirin" board="lisa_m_1.0"/>
<target name="test_ahrs" board="lisa_m_1.0"/>
<target name="test_hmc5843" board="lisa_m_1.0"/>
<target name="test_itg3200" board="lisa_m_1.0"/>
<target name="test_adxl345" board="lisa_m_1.0"/>
<target name="test_esc_mkk_simple" board="lisa_m_1.0"/>
<target name="test_esc_asctecv1_simple" board="lisa_m_1.0"/>
<target name="test_actuators_mkk" board="lisa_m_1.0"/>
<target name="test_actuators_asctecv1" board="lisa_m_1.0"/>
</firmware>
<modules main_freq="512">
<!--load name="sys_mon.xml"/-->
</modules>
<commands>
<axis name="PITCH" failsafe_value="0"/>
<axis name="ROLL" failsafe_value="0"/>
<axis name="YAW" failsafe_value="0"/>
<axis name="THRUST" failsafe_value="0"/>
</commands>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x54, 0x52, 0x56, 0x58 }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="2"/>
<define name="MAX_MOTOR" value="210"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<define name="NB_MOTOR" value="4"/>
<define name="SCALE" value="256"/>
<define name="ROLL_COEF" value="{ 0, 0, -256, 256 }"/>
<define name="PITCH_COEF" value="{ 256, -256, 0, 0 }"/>
<define name="YAW_COEF" value="{ -256, -256, 256, 256 }"/>
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="-33"/>
<define name="GYRO_Q_NEUTRAL" value="-10"/>
<define name="GYRO_R_NEUTRAL" value="-25"/>
<define name="GYRO_P_SENS" value="4.412" integer="16"/>
<define name="GYRO_Q_SENS" value="4.412" integer="16"/>
<define name="GYRO_R_SENS" value="4.412" integer="16"/>
<define name="GYRO_PQ_SENS" value="0.0" integer="16"/>
<define name="GYRO_PR_SENS" value="0.0" integer="16"/>
<define name="GYRO_QR_SENS" value="0.0" integer="16"/>
<define name="ACCEL_X_NEUTRAL" value="11"/>
<define name="ACCEL_Y_NEUTRAL" value="11"/>
<define name="ACCEL_Z_NEUTRAL" value="-25"/>
<define name="ACCEL_X_SENS" value="38.332217432" integer="16"/>
<define name="ACCEL_Y_SENS" value="37.7201584738" integer="16"/>
<define name="ACCEL_Z_SENS" value="39.2816836007" integer="16"/>
<define name="MAG_X_NEUTRAL" value="-98"/>
<define name="MAG_Y_NEUTRAL" value="-252"/>
<define name="MAG_Z_NEUTRAL" value="-122"/>
<define name="MAG_X_SENS" value="4.04659389111" integer="16"/>
<define name="MAG_Y_SENS" value="4.07651737489" integer="16"/>
<define name="MAG_Z_SENS" value="3.77693466173" integer="16"/>
<define name="MAG_XY_SENS" value="0.0" integer="16"/>
<define name="MAG_XZ_SENS" value="0.0" integer="16"/>
<define name="MAG_YZ_SENS" value="0.0" integer="16"/>
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
<define name="BODY_TO_IMU_PSI" value="RadOfDeg(-45.)" unit="deg"/>
</section>
<section name="AHRS" prefix="AHRS_">
<define name="PROPAGATE_FREQUENCY" value="512"/>
<define name="MAG_UPDATE_YAW_ONLY"/>
<define name="H_X" value="0.3770441"/>
<define name="H_Y" value="0.0193986"/>
<define name="H_Z" value="0.9259921"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="3.3" integer="16"/>
</section>
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
<!-- setpoints -->
<define name="SP_MAX_P" value="10000" />
<define name="SP_MAX_Q" value="10000" />
<define name="SP_MAX_R" value="10000" />
<define name="DEADBAND_P" value="0" />
<define name="DEADBAND_Q" value="0" />
<define name="DEADBAND_R" value="200" />
<define name="REF_TAU" value="4" />
<!-- feedback -->
<define name="GAIN_P" value="-400" />
<define name="GAIN_Q" value="-400" />
<define name="GAIN_R" value="-350" />
<define name="IGAIN_P" value="-75" />
<define name="IGAIN_Q" value="-75" />
<define name="IGAIN_R" value="-50" />
<!-- feedforward -->
<define name="DDGAIN_P" value="300" />
<define name="DDGAIN_Q" value="300" />
<define name="DDGAIN_R" value="300" />
</section>
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
<!-- setpoints -->
<define name="SP_MAX_PHI" value="RadOfDeg(45.)" unit="deg"/>
<define name="SP_MAX_THETA" value="RadOfDeg(45.)" unit="deg"/>
<define name="SP_MAX_PSI" value="RadOfDeg(45.)" unit="deg"/>
<define name="SP_MAX_P" value="RadOfDeg(180.)" unit="deg/s"/>
<define name="SP_MAX_Q" value="RadOfDeg(180.)" unit="deg/s"/>
<define name="SP_MAX_R" value="RadOfDeg(90.)" unit="deg/s"/>
<define name="DEADBAND_A" value="250"/>
<define name="DEADBAND_E" value="250"/>
<define name="DEADBAND_R" value="250"/>
<!-- reference -->
<define name="REF_OMEGA_P" value="RadOfDeg(800)" unit="deg/s"/>
<define name="REF_ZETA_P" value="0.85"/>
<define name="REF_MAX_P" value="RadOfDeg(400.)" unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_Q" value="RadOfDeg(800)" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.85"/>
<define name="REF_MAX_Q" value="RadOfDeg(400.)" unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_R" value="RadOfDeg(500)" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="RadOfDeg(180.)" unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(1800.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="-1000"/>
<define name="PHI_DGAIN" value="-400"/>
<define name="PHI_IGAIN" value="-200"/>
<define name="THETA_PGAIN" value="-1000"/>
<define name="THETA_DGAIN" value="-400"/>
<define name="THETA_IGAIN" value="-200"/>
<define name="PSI_PGAIN" value="-1000"/>
<define name="PSI_DGAIN" value="-400"/>
<define name="PSI_IGAIN" value="-10"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value=" 300"/>
<define name="THETA_DDGAIN" value=" 300"/>
<define name="PSI_DDGAIN" value=" 300"/>
</section>
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
<define name="MIN_ERR_Z" value="POS_BFP_OF_REAL(-10.)"/>
<define name="MAX_ERR_Z" value="POS_BFP_OF_REAL( 10.)"/>
<define name="MIN_ERR_ZD" value="SPEED_BFP_OF_REAL(-10.)"/>
<define name="MAX_ERR_ZD" value="SPEED_BFP_OF_REAL( 10.)"/>
<define name="MAX_SUM_ERR" value="2000000"/>
<define name="HOVER_KP" value="-150"/>
<define name="HOVER_KD" value="-80"/>
<define name="HOVER_KI" value="-20"/>
<!-- 1.5m/s for full stick : BOOZ_SPEED_I_OF_F(1.5) / (MAX_PPRZ/2) -->
<define name="RC_CLIMB_COEF" value ="163"/>
<!-- BOOZ_SPEED_I_OF_F(1.5) * 20% -->
<define name="RC_CLIMB_DEAD_BAND" value ="160000"/>
<!--define name="INV_M" value ="0.21"/-->
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="PGAIN" value="-100"/>
<define name="DGAIN" value="-100"/>
<define name="IGAIN" value="-0"/>
</section>
<section name="MISC">
<define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
</section>
<section name="SIMULATOR" prefix="NPS_">
<define name="ACTUATOR_NAMES" value="{&quot;front_motor&quot;, &quot;back_motor&quot;, &quot;right_motor&quot;, &quot;left_motor&quot;}"/>
<define name="INITIAL_CONDITITONS" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_aspirin.h&quot;"/>
</section>
<section name="AUTOPILOT">
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_Z_HOLD"/>
<define name="MODE_AUTO2" value="AP_MODE_HOVER_Z_HOLD"/>
</section>
<section name="BAT">
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
</section>
</airframe>
+1
View File
@@ -37,6 +37,7 @@
<firmware name="logger"> <firmware name="logger">
<target name="ap" board="tiny_2.11" > <target name="ap" board="tiny_2.11" >
<configure name="LOG_MSG_FMT" value="LOG_PPRZ"/>
<configure name="SPI_CHANNEL" value="1" /> <configure name="SPI_CHANNEL" value="1" />
<configure name="UART0_BAUD" value="B9600" /> <configure name="UART0_BAUD" value="B9600" />
<configure name="UART1_BAUD" value="B9600" /> <configure name="UART1_BAUD" value="B9600" />
+1
View File
@@ -190,6 +190,7 @@
</firmware> </firmware>
<modules> <modules>
<load name="openlog.xml"/>
<load name="infrared_adc.xml"/> <load name="infrared_adc.xml"/>
<load name="digital_cam_servo.xml"> <load name="digital_cam_servo.xml">
<define name="DC_SHUTTER_SERVO" value="COMMAND_SHUTTER" /> <define name="DC_SHUTTER_SERVO" value="COMMAND_SHUTTER" />
+7 -4
View File
@@ -34,10 +34,10 @@ ifeq ($(ARCH), lpc21)
ap.CFLAGS += -DUSE_LED ap.CFLAGS += -DUSE_LED
ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c $(SRC_FIRMWARE)/main_logger.c ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c $(SRC_FIRMWARE)/main_logger.c
#choose one # PPRZ message format is default
ap.CFLAGS += -DLOG_XBEE ifndef LOG_MSG_FMT
#ap.CFLAGS += -DLOG_PPRZ LOG_MSG_FMT = LOG_PPRZ
endif
#set the speed #set the speed
ap.CFLAGS += -DUSE_UART0 -DUART0_BAUD=$(UART0_BAUD) -DUSE_UART0_RX_ONLY ap.CFLAGS += -DUSE_UART0 -DUART0_BAUD=$(UART0_BAUD) -DUSE_UART0_RX_ONLY
@@ -50,6 +50,9 @@ ap.srcs += mcu.c
#set SPI interface for SD card (0 or 1) #set SPI interface for SD card (0 or 1)
ap.CFLAGS += -DHW_ENDPOINT_LPC2000_SPINUM=$(SPI_CHANNEL) ap.CFLAGS += -DHW_ENDPOINT_LPC2000_SPINUM=$(SPI_CHANNEL)
#message format pprz/xbee
ap.CFLAGS += -D$(LOG_MSG_FMT)
#LPC2148 USB hw module needs at least 18MHz PCLK #LPC2148 USB hw module needs at least 18MHz PCLK
ap.CFLAGS += -DUSE_USB_HIGH_PCLK ap.CFLAGS += -DUSE_USB_HIGH_PCLK
+6 -3
View File
@@ -145,9 +145,11 @@ else ifeq ($(BOARD), lisa_l)
ap.CFLAGS += -DUSE_I2C2 ap.CFLAGS += -DUSE_I2C2
else ifeq ($(BOARD), navgo) else ifeq ($(BOARD), navgo)
ap.CFLAGS += -DROTORCRAFT_BARO_LED=$(BARO_LED) ap.CFLAGS += -DROTORCRAFT_BARO_LED=$(BARO_LED)
ap.CFLAGS += -DUSE_I2C1 include $(CFG_ROTORCRAFT)/spi.makefile
ap.CFLAGS += -DADS1114_I2C_DEVICE=i2c1 ap.CFLAGS += -DUSE_SPI_SLAVE0
ap.srcs += peripherals/ads1114.c ap.CFLAGS += -DSPI_NO_UNSELECT_SLAVE
ap.CFLAGS += -DSPI_MASTER
ap.srcs += peripherals/mcp355x.c
endif endif
# #
@@ -195,6 +197,7 @@ endif
ap.srcs += $(SRC_FIRMWARE)/autopilot.c ap.srcs += $(SRC_FIRMWARE)/autopilot.c
ap.srcs += $(SRC_FIRMWARE)/stabilization.c ap.srcs += $(SRC_FIRMWARE)/stabilization.c
ap.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_none.c
ap.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_rate.c ap.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_rate.c
ap.CFLAGS += -DUSE_NAVIGATION ap.CFLAGS += -DUSE_NAVIGATION
@@ -1,9 +0,0 @@
# Hey Emacs, this is a -*- makefile -*-
# XSens Mti-G
# ap.CFLAGS += -DGPS
$(TARGET).srcs += $(SRC_SUBSYSTEMS)/gps.c
@@ -0,0 +1,79 @@
# Hey Emacs, this is a -*- makefile -*-
# XSens Mti-G
# <load name="ins_xsens_MTiG_fixedwing.xml">
# <configure name="XSENS_UART_NR" value="0"/>
# </load>
#########################################
## ATTITUDE
ifeq ($(TARGET), ap)
# <init fun="ins_init()"/>
# <periodic fun="ins_periodic_task()" freq="60"/>
# <event fun="InsEventCheckAndHandle(handle_ins_msg())"/>
# <makefile target="ap">
# <define name="AHRS_TYPE_H" value="\\\"modules/ins/ins_xsens.h\\\"" />
# <define name="INS_MODULE_H" value="\\\"modules/ins/ins_xsens.h\\\"" />
# <define name="USE_UART$(XSENS_UART_NR)"/>
# <define name="INS_LINK" value="Uart$(XSENS_UART_NR)"/>
# <define name="UART$(XSENS_UART_NR)_BAUD" value="B230400"/>
# <define name="USE_GPS_XSENS"/>
# <define name="USE_GPS_XSENS_RAW_DATA" />
# <define name="GPS_NB_CHANNELS" value="16" />
# <define name="XSENS_OUTPUT_MODE" value="0x1836" />
# <file name="ins_xsens.c"/>
# <define name="AHRS_TRIGGERED_ATTITUDE_LOOP" />
# </makefile>
# ImuEvent -> XSensEvent
ap.CFLAGS += -DUSE_AHRS
ap.CFLAGS += -DIMU_TYPE_H=\"modules/ins/ins_xsens.h\"
# AHRS Results
ap.CFLAGS += -DAHRS_TYPE_H=\"modules/ins/ins_xsens.h\"
ap.CFLAGS += -DINS_MODULE_H=\"modules/ins/ins_xsens.h\"
ap.CFLAGS += -DUSE_UART$(XSENS_UART_NR)
ap.CFLAGS += -DINS_LINK=Uart$(XSENS_UART_NR)
ap.CFLAGS += -DUART$(XSENS_UART_NR)_BAUD=B230400
ap.CFLAGS += -DUSE_GPS_XSENS
ap.CFLAGS += -DUSE_GPS_XSENS_RAW_DATA
ap.CFLAGS += -DGPS_NB_CHANNELS=16
ap.CFLAGS += -DXSENS_OUTPUT_MODE=0x1836
ap.srcs += $(SRC_MODULES)/ins/ins_xsens.c
ap.CFLAGS += -DAHRS_TRIGGERED_ATTITUDE_LOOP
endif
ifeq ($(TARGET), sim)
sim.CFLAGS += -DAHRS_TYPE_H=\"subsystems/ahrs/ahrs_sim.h\"
sim.CFLAGS += -DUSE_AHRS -DAHRS_UPDATE_FW_ESTIMATOR
sim.srcs += $(SRC_SUBSYSTEMS)/ahrs.c
sim.srcs += $(SRC_SUBSYSTEMS)/ahrs/ahrs_sim.c
endif
#########################################
## GPS
# ap.CFLAGS += -DGPS
$(TARGET).srcs += $(SRC_SUBSYSTEMS)/gps.c
sim.CFLAGS += -DUSE_GPS -DGPS_USE_LATLONG
sim.CFLAGS += -DGPS_TYPE_H=\"subsystems/gps/gps_sim.h\"
sim.srcs += $(SRC_SUBSYSTEMS)/gps/gps_sim.c
@@ -115,6 +115,8 @@ sim.srcs += $(SRC_FIRMWARE)/autopilot.c
sim.srcs += $(SRC_FIRMWARE)/stabilization.c sim.srcs += $(SRC_FIRMWARE)/stabilization.c
sim.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_rate.c sim.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_rate.c
sim.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_none.c
NUM_TYPE=integer NUM_TYPE=integer
#NUM_TYPE=float #NUM_TYPE=float
@@ -12,10 +12,12 @@ IMU_NAVGO_CFLAGS += -DUSE_I2C1 -DI2C1_SCLL=25 -DI2C1_SCLH=25
IMU_NAVGO_CFLAGS += -DITG3200_I2C_DEVICE=$(IMU_NAVGO_I2C_DEVICE) IMU_NAVGO_CFLAGS += -DITG3200_I2C_DEVICE=$(IMU_NAVGO_I2C_DEVICE)
IMU_NAVGO_CFLAGS += -DITG3200_I2C_ADDR=ITG3200_ADDR_ALT IMU_NAVGO_CFLAGS += -DITG3200_I2C_ADDR=ITG3200_ADDR_ALT
IMU_NAVGO_CFLAGS += -DITG3200_SMPLRT_DIV=1 IMU_NAVGO_CFLAGS += -DITG3200_SMPLRT_DIV=1
IMU_NAVGO_CFLAGS += -DITG3200_DLFP_CFG=5
IMU_NAVGO_SRCS += peripherals/itg3200.c IMU_NAVGO_SRCS += peripherals/itg3200.c
IMU_NAVGO_CFLAGS += -DADXL345_I2C_DEVICE=$(IMU_NAVGO_I2C_DEVICE) IMU_NAVGO_CFLAGS += -DADXL345_I2C_DEVICE=$(IMU_NAVGO_I2C_DEVICE)
IMU_NAVGO_CFLAGS += -DADXL345_I2C_ADDR=ADXL345_ADDR_ALT IMU_NAVGO_CFLAGS += -DADXL345_I2C_ADDR=ADXL345_ADDR_ALT
IMU_NAVGO_CFLAGS += -DADXL345_BW_RATE=0x8
IMU_NAVGO_SRCS += peripherals/adxl345.i2c.c IMU_NAVGO_SRCS += peripherals/adxl345.i2c.c
IMU_NAVGO_CFLAGS += -DHMC58XX_I2C_DEVICE=$(IMU_NAVGO_I2C_DEVICE) IMU_NAVGO_CFLAGS += -DHMC58XX_I2C_DEVICE=$(IMU_NAVGO_I2C_DEVICE)
+10
View File
@@ -99,5 +99,15 @@
settings="settings/tuning.xml settings/infrared.xml" settings="settings/tuning.xml settings/infrared.xml"
gui_color="red" gui_color="red"
/> />
<aircraft
name="LisaM_Heli"
ac_id="64"
airframe="airframes/example_heli_lisam.xml"
radio="radios/R6107SP_7ch.xml"
telemetry="telemetry/telemetry_booz2.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings=" settings/settings_booz2_ahrs_cmpl.xml settings/settings_booz2.xml"
gui_color="blue"
/>
</conf> </conf>
+3 -1
View File
@@ -941,7 +941,9 @@
<field name="snapshot_image_number" type="uint16"/> <field name="snapshot_image_number" type="uint16"/>
</message> </message>
<!--129 is free --> <message name="TIMESTAMP" id="129">
<field name="timestamp" type="uint32"/>
</message>
<message name="STAB_ATTITUDE_FLOAT" id="130"> <message name="STAB_ATTITUDE_FLOAT" id="130">
<field name="est_p" type="float" alt_unit="degres/s" alt_unit_coef="57.29578"/> <field name="est_p" type="float" alt_unit="degres/s" alt_unit_coef="57.29578"/>
-26
View File
@@ -1,26 +0,0 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="ins">
<!-- <depend conflict="ins" -->
<!-- <depend require="gps_xsens" -->
<header>
<file name="ins_module.h"/>
</header>
<init fun="ins_init()"/>
<periodic fun="ins_periodic_task()" freq="60"/>
<event fun="InsEventCheckAndHandle(handle_ins_msg())"/>
<makefile>
<define name="AHRS_TYPE_H" value="\\\"modules/ins/ins_xsens.h\\\"" />
<define name="INS_MODULE_H" value="\\\"modules/ins/ins_xsens.h\\\"" />
<define name="USE_UART$(XSENS_UART_NR)"/>
<define name="INS_LINK" value="Uart$(XSENS_UART_NR)"/>
<define name="UART$(XSENS_UART_NR)_BAUD" value="B230400"/>
<define name="USE_GPS_XSENS"/>
<define name="USE_GPS_XSENS_RAW_DATA" />
<define name="GPS_NB_CHANNELS" value="16" />
<define name="XSENS_OUTPUT_MODE" value="0x1836" />
<file name="ins_xsens.c"/>
<define name="AHRS_TRIGGERED_ATTITUDE_LOOP" />
</makefile>
</module>
+14
View File
@@ -0,0 +1,14 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="nav">
<header>
<file name="nav_catapult.h"/>
</header>
<init fun="nav_catapult_init()"/>
<!-- Run High Rate Lauch Detector -->
<periodic fun="nav_catapult_highrate_module()" autorun="TRUE"/>
<makefile>
<file name="nav_catapult.c"/>
</makefile>
</module>
+13
View File
@@ -0,0 +1,13 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="openlog">
<header>
<file name="openlog.h"/>
</header>
<init fun="init_openlog()"/>
<periodic fun="periodic_2Hz_openlog()" freq="2." autorun="TRUE"/>
<makefile>
<file name="openlog.c"/>
</makefile>
</module>
+53
View File
@@ -0,0 +1,53 @@
<?xml version="1.0"?>
<!-- $Id$
--
-- (c) 2003 Pascal Brisset, Antoine Drouin
--
-- 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.
-->
<!--
-- Attributes of root (Radio) tag :
-- name: name of RC
-- min: min width of a pulse to be considered as a data pulse
-- max: max width of a pulse to be considered as a data pulse
-- sync: min width of a pulse to be considered as a synchro pulse
-- min, max and sync are expressed in micro-seconds
-->
<!--
-- Attributes of channel tag :
-- ctl: name of the command on the transmitter - only for displaying
-- function: logical command
-- average: (boolean) channel filtered through several frames (for discrete commands)
-- min: minimum pulse length (micro-seconds)
-- max: maximum pulse length (micro-seconds)
-- neutral: neutral pulse length (micro-seconds)
Note: a command may be reversed by exchanging min and max values
-->
<!DOCTYPE radio SYSTEM "radio.dtd">
<radio name="FASST TX Module" data_min="700" data_max="2300" sync_min="4000" sync_max="15000" pulse_type="NEGATIVE">
<channel ctl="A" function="ROLL" min="1900" neutral="1500" max="1100" average="0"/> <!-- right stick left/right -->
<channel ctl="B" function="PITCH" min="1100" neutral="1500" max="1900" average="0"/> <!-- left stick up/down -->
<channel ctl="C" function="THROTTLE" min="1100" neutral="1100" max="1900" average="0"/> <!-- right stick up/down -->
<channel ctl="D" function="YAW" min="1100" neutral="1500" max="1900" average="0"/> <!-- left stick left/right--> <!--OPGELET MOET INDE CODE AANGEPAST WORDEN-->
<channel ctl="E" function="MODE" min="1100" neutral="1500" max="1900" average="0"/> <!-- left switch -->
<channel ctl="F" function="EXTRA1" min="1100" neutral="1500" max="1900" average="0"/> <!-- left switch -->
<channel ctl="G" function="FLAPS" min="1100" neutral="1500" max="1900" average="0"/> <!-- left switch -->
</radio>
+2
View File
@@ -42,6 +42,8 @@
<strip_button name="AS" value="1" group="speed_mode"/> <strip_button name="AS" value="1" group="speed_mode"/>
<strip_button name="GS" value="2" group="speed_mode"/> <strip_button name="GS" value="2" group="speed_mode"/>
</dl_setting> </dl_setting>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_min_cruise_throttle" shortname="min cruise thr" module="guidance/guidance_v" param="V_CTL_AUTO_THROTTLE_MIN_CRUISE_THROTTLE"/>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_max_cruise_throttle" shortname="max cruise thr" module="guidance/guidance_v" param="V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE"/>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_cruise_throttle" shortname="cruise throttle" module="guidance/guidance_v" handler="SetCruiseThrottle" param="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE"/> <dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_cruise_throttle" shortname="cruise throttle" module="guidance/guidance_v" handler="SetCruiseThrottle" param="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE"/>
<dl_setting MAX="0" MIN="-0.1" STEP="0.001" VAR="v_ctl_auto_pitch_pgain" shortname="pitch_p" param="V_CTL_AUTO_PITCH_PGAIN"/> <dl_setting MAX="0" MIN="-0.1" STEP="0.001" VAR="v_ctl_auto_pitch_pgain" shortname="pitch_p" param="V_CTL_AUTO_PITCH_PGAIN"/>
+6 -1
View File
@@ -57,7 +57,9 @@
</dl_settings> </dl_settings>
<dl_settings name="alt"> <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_setting MAX="0" MIN="-0.2" STEP="0.01" VAR="v_ctl_altitude_pgain" shortname="alt_pgain" param="V_CTL_ALTITUDE_PGAIN" module="guidance/guidance_v"/>
<dl_setting MAX="10" MIN="0.1" STEP="0.1" VAR="v_ctl_altitude_max_climb" shortname="max climb" param="V_CTL_ALTITUDE_MAX_CLIMB"/>
<dl_setting MAX="2" MIN="0.0" STEP="0.05" VAR="v_ctl_altitude_pre_climb_correction" shortname="pre climb cor" param="V_CTL_ALTITUDE_PRE_CLIMB_CORRECTION"/>
</dl_settings> </dl_settings>
<dl_settings name="auto_throttle"> <dl_settings name="auto_throttle">
@@ -67,6 +69,9 @@
<strip_button name="Dash" value="1"/> <strip_button name="Dash" value="1"/>
</dl_setting> </dl_setting>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_min_cruise_throttle" shortname="min cruise thr" module="guidance/guidance_v" param="V_CTL_AUTO_THROTTLE_MIN_CRUISE_THROTTLE"/>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_max_cruise_throttle" shortname="max cruise thr" module="guidance/guidance_v" param="V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE"/>
<dl_setting MAX="0.00" MIN="-0.05" STEP="0.005" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_pgain" param="V_CTL_AUTO_THROTTLE_PGAIN"/> <dl_setting MAX="0.00" MIN="-0.05" STEP="0.005" VAR="v_ctl_auto_throttle_pgain" shortname="throttle_pgain" param="V_CTL_AUTO_THROTTLE_PGAIN"/>
<dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_igain" shortname="throttle_igain" param="V_CTL_AUTO_THROTTLE_IGAIN"/> <dl_setting MAX="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_igain" shortname="throttle_igain" param="V_CTL_AUTO_THROTTLE_IGAIN"/>
-21
View File
@@ -1,21 +0,0 @@
#
# $Id$
# Copyright (C) 2003 Pascal Brisset Antoine Drouin
#
# 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.
#
+13 -13
View File
@@ -148,18 +148,6 @@
#define PERIODIC_SEND_SEGMENT(_chan) if (nav_in_segment) { DOWNLINK_SEND_SEGMENT(_chan, &nav_segment_x_1, &nav_segment_y_1, &nav_segment_x_2, &nav_segment_y_2); } #define PERIODIC_SEND_SEGMENT(_chan) if (nav_in_segment) { DOWNLINK_SEND_SEGMENT(_chan, &nav_segment_x_1, &nav_segment_y_1, &nav_segment_x_2, &nav_segment_y_2); }
#ifdef IMU_TYPE_H #ifdef IMU_TYPE_H
# include "subsystems/imu.h"
# define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) { DOWNLINK_SEND_IMU_ACCEL_RAW(_chan, &imu.accel_unscaled.x, &imu.accel_unscaled.y, &imu.accel_unscaled.z)}
# define PERIODIC_SEND_IMU_GYRO_RAW(_chan) { DOWNLINK_SEND_IMU_GYRO_RAW(_chan, &imu.gyro_unscaled.p, &imu.gyro_unscaled.q, &imu.gyro_unscaled.r)}
# define PERIODIC_SEND_IMU_MAG_RAW(_chan) { DOWNLINK_SEND_IMU_MAG_RAW(_chan, &imu.mag_unscaled.x, &imu.mag_unscaled.y, &imu.mag_unscaled.z)}
# define PERIODIC_SEND_IMU_ACCEL(_chan) { struct FloatVect3 accel_float; ACCELS_FLOAT_OF_BFP(accel_float, imu.accel); DOWNLINK_SEND_IMU_ACCEL(_chan, &accel_float.x, &accel_float.y, &accel_float.z)}
# define PERIODIC_SEND_IMU_GYRO(_chan) { struct FloatRates gyro_float; RATES_FLOAT_OF_BFP(gyro_float, imu.gyro); DOWNLINK_SEND_IMU_GYRO(_chan, &gyro_float.p, &gyro_float.q, &gyro_float.r)}
# ifdef USE_MAGNETOMETER
# define PERIODIC_SEND_IMU_MAG(_chan) { struct FloatVect3 mag_float; MAGS_FLOAT_OF_BFP(mag_float, imu.mag); DOWNLINK_SEND_IMU_MAG(_chan, &mag_float.x, &mag_float.y, &mag_float.z)}
# else
# define PERIODIC_SEND_IMU_MAG(_chan) {}
# endif
#else
# ifdef INS_MODULE_H # ifdef INS_MODULE_H
# include "modules/ins/ins_module.h" # include "modules/ins/ins_module.h"
# define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) {} # define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) {}
@@ -169,13 +157,25 @@
# define PERIODIC_SEND_IMU_ACCEL(_chan) { DOWNLINK_SEND_IMU_ACCEL(_chan, &ins_ax, &ins_ay, &ins_az)} # define PERIODIC_SEND_IMU_ACCEL(_chan) { DOWNLINK_SEND_IMU_ACCEL(_chan, &ins_ax, &ins_ay, &ins_az)}
# define PERIODIC_SEND_IMU_MAG(_chan) { DOWNLINK_SEND_IMU_MAG(_chan, &ins_mx, &ins_my, &ins_mz)} # define PERIODIC_SEND_IMU_MAG(_chan) { DOWNLINK_SEND_IMU_MAG(_chan, &ins_mx, &ins_my, &ins_mz)}
# else # else
# include "subsystems/imu.h"
# define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) { DOWNLINK_SEND_IMU_ACCEL_RAW(_chan, &imu.accel_unscaled.x, &imu.accel_unscaled.y, &imu.accel_unscaled.z)}
# define PERIODIC_SEND_IMU_GYRO_RAW(_chan) { DOWNLINK_SEND_IMU_GYRO_RAW(_chan, &imu.gyro_unscaled.p, &imu.gyro_unscaled.q, &imu.gyro_unscaled.r)}
# define PERIODIC_SEND_IMU_MAG_RAW(_chan) { DOWNLINK_SEND_IMU_MAG_RAW(_chan, &imu.mag_unscaled.x, &imu.mag_unscaled.y, &imu.mag_unscaled.z)}
# define PERIODIC_SEND_IMU_ACCEL(_chan) { struct FloatVect3 accel_float; ACCELS_FLOAT_OF_BFP(accel_float, imu.accel); DOWNLINK_SEND_IMU_ACCEL(_chan, &accel_float.x, &accel_float.y, &accel_float.z)}
# define PERIODIC_SEND_IMU_GYRO(_chan) { struct FloatRates gyro_float; RATES_FLOAT_OF_BFP(gyro_float, imu.gyro); DOWNLINK_SEND_IMU_GYRO(_chan, &gyro_float.p, &gyro_float.q, &gyro_float.r)}
# ifdef USE_MAGNETOMETER
# define PERIODIC_SEND_IMU_MAG(_chan) { struct FloatVect3 mag_float; MAGS_FLOAT_OF_BFP(mag_float, imu.mag); DOWNLINK_SEND_IMU_MAG(_chan, &mag_float.x, &mag_float.y, &mag_float.z)}
# else
# define PERIODIC_SEND_IMU_MAG(_chan) {}
# endif
# endif
#else
# define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) {} # define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) {}
# define PERIODIC_SEND_IMU_GYRO_RAW(_chan) {} # define PERIODIC_SEND_IMU_GYRO_RAW(_chan) {}
# define PERIODIC_SEND_IMU_MAG_RAW(_chan) {} # define PERIODIC_SEND_IMU_MAG_RAW(_chan) {}
# define PERIODIC_SEND_IMU_ACCEL(_chan) {} # define PERIODIC_SEND_IMU_ACCEL(_chan) {}
# define PERIODIC_SEND_IMU_GYRO(_chan) {} # define PERIODIC_SEND_IMU_GYRO(_chan) {}
# define PERIODIC_SEND_IMU_MAG(_chan) {} # define PERIODIC_SEND_IMU_MAG(_chan) {}
# endif
#endif #endif
#ifdef IMU_ANALOG #ifdef IMU_ANALOG
@@ -193,7 +193,9 @@ void SPI1_ISR(void) {
} }
if (bit_is_set(SSPMIS, RTMIS)) { /* Rx fifo is not empty and no receive took place in the last 32 bits period */ if (bit_is_set(SSPMIS, RTMIS)) { /* Rx fifo is not empty and no receive took place in the last 32 bits period */
#if !SPI_NO_UNSELECT_SLAVE
SpiUnselectCurrentSlave(); SpiUnselectCurrentSlave();
#endif
SpiReceive(); SpiReceive();
SpiDisableRti(); SpiDisableRti();
SpiClearRti(); /* clear interrupt */ SpiClearRti(); /* clear interrupt */
+20 -4
View File
@@ -13,6 +13,10 @@ static inline void i2c_reset_init(struct i2c_periph *p);
#define I2C_BUSY 0x20 #define I2C_BUSY 0x20
// If a hard reset cannot free up SDA, SCL lines abort. Previously stm32 would hang
// when lines stuck i.e. no pullups on I2C lines
#define I2C_MAX_RESET_FAIL_COUNT 20
#ifdef DEBUG_I2C #ifdef DEBUG_I2C
#define SPURIOUS_INTERRUPT(_periph, _status, _event) { while(1); } #define SPURIOUS_INTERRUPT(_periph, _status, _event) { while(1); }
#define OUT_OF_SYNC_STATE_MACHINE(_periph, _status, _event) { while(1); } #define OUT_OF_SYNC_STATE_MACHINE(_periph, _status, _event) { while(1); }
@@ -355,6 +359,7 @@ static inline void i2c_error(struct i2c_periph *p)
static inline void i2c_hard_reset(struct i2c_periph *p) static inline void i2c_hard_reset(struct i2c_periph *p)
{ {
uint8_t timeout_fails=0;
I2C_TypeDef *regs = (I2C_TypeDef *) p->reg_addr; I2C_TypeDef *regs = (I2C_TypeDef *) p->reg_addr;
I2C_DeInit(p->reg_addr); I2C_DeInit(p->reg_addr);
@@ -366,10 +371,13 @@ static inline void i2c_hard_reset(struct i2c_periph *p)
GPIO_SetBits(GPIOB, p->scl_pin | p->sda_pin); GPIO_SetBits(GPIOB, p->scl_pin | p->sda_pin);
GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_Init(GPIOB, &GPIO_InitStructure);
while(GPIO_ReadInputDataBit(GPIOB, p->sda_pin) == Bit_RESET) { while((GPIO_ReadInputDataBit(GPIOB, p->sda_pin) == Bit_RESET) && timeout_fails < I2C_MAX_RESET_FAIL_COUNT) {
// Raise SCL, wait until SCL is high (in case of clock stretching) // Raise SCL, wait until SCL is high (in case of clock stretching)
GPIO_SetBits(GPIOB, p->scl_pin); GPIO_SetBits(GPIOB, p->scl_pin);
while (GPIO_ReadInputDataBit(GPIOB, p->scl_pin) == Bit_RESET); while ((GPIO_ReadInputDataBit(GPIOB, p->scl_pin) == Bit_RESET) && timeout_fails < I2C_MAX_RESET_FAIL_COUNT) {
i2c_delay();
timeout_fails++;
}
i2c_delay(); i2c_delay();
// Lower SCL, wait // Lower SCL, wait
@@ -379,6 +387,7 @@ static inline void i2c_hard_reset(struct i2c_periph *p)
// Raise SCL, wait // Raise SCL, wait
GPIO_SetBits(GPIOB, p->scl_pin); GPIO_SetBits(GPIOB, p->scl_pin);
i2c_delay(); i2c_delay();
timeout_fails++;
} }
// Generate a start condition followed by a stop condition // Generate a start condition followed by a stop condition
@@ -391,10 +400,17 @@ static inline void i2c_hard_reset(struct i2c_periph *p)
// Raise both SCL and SDA and wait for SCL high (in case of clock stretching) // Raise both SCL and SDA and wait for SCL high (in case of clock stretching)
GPIO_SetBits(GPIOB, p->scl_pin | p->sda_pin); GPIO_SetBits(GPIOB, p->scl_pin | p->sda_pin);
while (GPIO_ReadInputDataBit(GPIOB, p->scl_pin) == Bit_RESET); while (GPIO_ReadInputDataBit(GPIOB, p->scl_pin) == Bit_RESET && timeout_fails < I2C_MAX_RESET_FAIL_COUNT) {
i2c_delay();
timeout_fails++;
}
// Wait for SDA to be high // Wait for SDA to be high
while (GPIO_ReadInputDataBit(GPIOB, p->sda_pin) != Bit_SET); while (GPIO_ReadInputDataBit(GPIOB, p->sda_pin) != Bit_SET && timeout_fails < I2C_MAX_RESET_FAIL_COUNT)
{
i2c_delay();
timeout_fails++;
}
// SCL and SDA should be high at this point, bus should be free // SCL and SDA should be high at this point, bus should be free
// Return the GPIO pins to the alternate function // Return the GPIO pins to the alternate function
+7
View File
@@ -82,7 +82,14 @@ void baro_periodic(void) {
void baro_board_send_config_abs(void) { void baro_board_send_config_abs(void) {
#ifndef BARO_LOW_GAIN
#pragma message "Using High LisaL Baro Gain: Do not use below 1000hPa"
baro_board_write_to_register(BARO_ABS_ADDR, 0x01, 0x86, 0x83); baro_board_write_to_register(BARO_ABS_ADDR, 0x01, 0x86, 0x83);
#else
#pragma message "Using Low LisaL Baro Gain, capable of measuring below 1000hPa or more"
//config register should be 0x84 in low countries, or 0x86 in normal countries
baro_board_write_to_register(BARO_ABS_ADDR, 0x01, 0x84, 0x83);
#endif
} }
void baro_board_send_config_diff(void) { void baro_board_send_config_diff(void) {
+12 -26
View File
@@ -27,57 +27,43 @@
#include "subsystems/sensors/baro.h" #include "subsystems/sensors/baro.h"
#include "led.h" #include "led.h"
#include "mcu_periph/spi.h"
/* Common Baro struct */ /* Common Baro struct */
struct Baro baro; struct Baro baro;
/* Number of values to compute an offset at startup */ /* Counter to init mcp355x at startup */
#define OFFSET_NBSAMPLES_AVRG 300 #define STARTUP_COUNTER 200
uint16_t offset_cnt; uint16_t startup_cnt;
#ifdef USE_BARO_AS_ALTIMETER
/* Weight for offset IIR filter */
#define OFFSET_FILTER 7
float baro_alt;
float baro_alt_offset;
#endif
void baro_init( void ) { void baro_init( void ) {
ads1114_init(); mcp355x_init();
SpiSelectSlave0(); // never unselect this slave (continious conversion mode)
baro.status = BS_UNINITIALIZED; baro.status = BS_UNINITIALIZED;
baro.absolute = 0; baro.absolute = 0;
baro.differential = 0; /* not handled on this board */ baro.differential = 0; /* not handled on this board */
#ifdef ROTORCRAFT_BARO_LED #ifdef ROTORCRAFT_BARO_LED
LED_OFF(ROTORCRAFT_BARO_LED); LED_OFF(ROTORCRAFT_BARO_LED);
#endif #endif
offset_cnt = OFFSET_NBSAMPLES_AVRG; startup_cnt = STARTUP_COUNTER;
#ifdef USE_BARO_AS_ALTIMETER
baro_alt = 0.;
baro_alt_offset = 0.;
#endif
} }
void baro_periodic( void ) { void baro_periodic( void ) {
if (baro.status == BS_UNINITIALIZED) { if (baro.status == BS_UNINITIALIZED) {
#ifdef USE_BARO_AS_ALTIMETER // Run some loops to get correct readings from the adc
// IIR filter to compute an initial offset --startup_cnt;
baro_alt_offset = (OFFSET_FILTER * baro_alt_offset + (float)baro.absolute) / (OFFSET_FILTER + 1);
#endif
// decrease init counter
--offset_cnt;
#ifdef ROTORCRAFT_BARO_LED #ifdef ROTORCRAFT_BARO_LED
LED_TOGGLE(ROTORCRAFT_BARO_LED); LED_TOGGLE(ROTORCRAFT_BARO_LED);
#endif #endif
if (offset_cnt == 0) { if (startup_cnt == 0) {
baro.status = BS_RUNNING; baro.status = BS_RUNNING;
#ifdef ROTORCRAFT_BARO_LED #ifdef ROTORCRAFT_BARO_LED
LED_ON(ROTORCRAFT_BARO_LED); LED_ON(ROTORCRAFT_BARO_LED);
#endif #endif
} }
} }
// Read the ADC // Read the ADC (at 50/4 Hz, conversion time is 68 ms)
ads1114_read(); RunOnceEvery(4,mcp355x_read());
} }
+5 -11
View File
@@ -31,22 +31,16 @@
#include "std.h" #include "std.h"
#include "peripherals/ads1114.h" #include "peripherals/mcp355x.h"
#ifdef USE_BARO_AS_ALTIMETER
extern float baro_alt;
extern float baro_alt_offset;
#define BaroAltHandler() { baro_alt = BARO_SENS*(baro_alt_offset - (float)baro.absolute); }
#endif
#define BARO_FILTER_GAIN 5 #define BARO_FILTER_GAIN 5
#define BaroEvent(_b_abs_handler, _b_diff_handler) { \ #define BaroEvent(_b_abs_handler, _b_diff_handler) { \
Ads1114Event(); \ mcp355x_event(); \
if (ads1114_data_available) { \ if (mcp355x_data_available) { \
baro.absolute = (baro.absolute + BARO_FILTER_GAIN*Ads1114GetValue()) / (BARO_FILTER_GAIN+1); \ baro.absolute = (baro.absolute + BARO_FILTER_GAIN*mcp355x_data) / (BARO_FILTER_GAIN+1); \
_b_abs_handler(); \ _b_abs_handler(); \
ads1114_data_available = FALSE; \ mcp355x_data_available = FALSE; \
} \ } \
} }
+2 -2
View File
@@ -103,7 +103,7 @@ void imu_navgo_event( void )
// If the itg3200 I2C transaction has succeeded: convert the data // If the itg3200 I2C transaction has succeeded: convert the data
itg3200_event(); itg3200_event();
if (itg3200_data_available) { if (itg3200_data_available) {
RATES_COPY(imu.gyro_unscaled, itg3200_data); RATES_ASSIGN(imu.gyro_unscaled, -itg3200_data.q, itg3200_data.p, itg3200_data.r);
itg3200_data_available = FALSE; itg3200_data_available = FALSE;
gyr_valid = TRUE; gyr_valid = TRUE;
} }
@@ -119,7 +119,7 @@ void imu_navgo_event( void )
// HMC58XX event task // HMC58XX event task
hmc58xx_event(); hmc58xx_event();
if (hmc58xx_data_available) { if (hmc58xx_data_available) {
VECT3_ASSIGN(imu.mag_unscaled, -hmc58xx_data.x, -hmc58xx_data.y, hmc58xx_data.z); VECT3_ASSIGN(imu.mag_unscaled, hmc58xx_data.x, hmc58xx_data.y, hmc58xx_data.z);
hmc58xx_data_available = FALSE; hmc58xx_data_available = FALSE;
mag_valid = TRUE; mag_valid = TRUE;
} }
+13 -10
View File
@@ -18,17 +18,17 @@
#define PCLK (CCLK / PBSD_VAL) #define PCLK (CCLK / PBSD_VAL)
/* Onboard LEDs */ /* Onboard LEDs */
#define LED_1_BANK 1 #define LED_1_BANK 0
#define LED_1_PIN 25 #define LED_1_PIN 22
#define LED_2_BANK 1 #define LED_2_BANK 1
#define LED_2_PIN 24 #define LED_2_PIN 28
#define LED_3_BANK 1 #define LED_3_BANK 1
#define LED_3_PIN 23 #define LED_3_PIN 29
#define LED_4_BANK 1 #define LED_4_BANK 1
#define LED_4_PIN 31 #define LED_4_PIN 30
/* PPM : rc rx on P0.28 ( CAP0.2 ) */ /* PPM : rc rx on P0.28 ( CAP0.2 ) */
#define PPM_PINSEL PINSEL1 #define PPM_PINSEL PINSEL1
@@ -45,19 +45,22 @@
/* battery */ /* battery */
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/ /* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
#ifndef ADC_CHANNEL_VSUPPLY #ifndef ADC_CHANNEL_VSUPPLY
#define ADC_CHANNEL_VSUPPLY AdcBank1(3) #define ADC_CHANNEL_VSUPPLY AdcBank0(2)
#ifndef USE_AD1 #ifndef USE_AD0
#define USE_AD1 #define USE_AD0
#endif #endif
#define USE_AD1_3 #define USE_AD0_2
#endif #endif
#define DefaultVoltageOfAdc(adc) (0.01837*adc) #define DefaultVoltageOfAdc(adc) (0.017889*adc)
/* SPI (SSP) */ /* SPI (SSP) */
#define SPI_SELECT_SLAVE0_PORT 0 #define SPI_SELECT_SLAVE0_PORT 0
#define SPI_SELECT_SLAVE0_PIN 20 #define SPI_SELECT_SLAVE0_PIN 20
//#define SPI_SELECT_SLAVE1_PORT 1
//#define SPI_SELECT_SLAVE1_PIN 19
#define SPI1_DRDY_PINSEL PINSEL1 #define SPI1_DRDY_PINSEL PINSEL1
#define SPI1_DRDY_PINSEL_BIT 0 #define SPI1_DRDY_PINSEL_BIT 0
#define SPI1_DRDY_PINSEL_VAL 1 #define SPI1_DRDY_PINSEL_VAL 1
@@ -42,6 +42,8 @@ float v_ctl_altitude_setpoint;
float v_ctl_altitude_pre_climb; 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;
float v_ctl_altitude_pre_climb_correction;
float v_ctl_altitude_max_climb;
/* inner loop */ /* inner loop */
float v_ctl_climb_setpoint; float v_ctl_climb_setpoint;
@@ -51,6 +53,8 @@ uint8_t v_ctl_auto_throttle_submode;
/* "auto throttle" inner loop parameters */ /* "auto throttle" inner loop parameters */
float v_ctl_auto_throttle_cruise_throttle; float v_ctl_auto_throttle_cruise_throttle;
float v_ctl_auto_throttle_nominal_cruise_throttle; float v_ctl_auto_throttle_nominal_cruise_throttle;
float v_ctl_auto_throttle_min_cruise_throttle;
float v_ctl_auto_throttle_max_cruise_throttle;
float v_ctl_auto_throttle_climb_throttle_increment; float v_ctl_auto_throttle_climb_throttle_increment;
float v_ctl_auto_throttle_pgain; float v_ctl_auto_throttle_pgain;
float v_ctl_auto_throttle_igain; float v_ctl_auto_throttle_igain;
@@ -105,6 +109,11 @@ float v_ctl_auto_groundspeed_sum_err;
#endif #endif
#ifndef V_CTL_ALTITUDE_PRE_CLIMB_CORRECTION
#define V_CTL_ALTITUDE_PRE_CLIMB_CORRECTION 1.0f
#endif
void v_ctl_init( void ) { void v_ctl_init( void ) {
/* mode */ /* mode */
v_ctl_mode = V_CTL_MODE_MANUAL; v_ctl_mode = V_CTL_MODE_MANUAL;
@@ -114,6 +123,8 @@ void v_ctl_init( void ) {
v_ctl_altitude_pre_climb = 0.; v_ctl_altitude_pre_climb = 0.;
v_ctl_altitude_pgain = V_CTL_ALTITUDE_PGAIN; v_ctl_altitude_pgain = V_CTL_ALTITUDE_PGAIN;
v_ctl_altitude_error = 0.; v_ctl_altitude_error = 0.;
v_ctl_altitude_pre_climb_correction = V_CTL_ALTITUDE_PRE_CLIMB_CORRECTION;
v_ctl_altitude_max_climb = V_CTL_ALTITUDE_MAX_CLIMB;
/* inner loops */ /* inner loops */
v_ctl_climb_setpoint = 0.; v_ctl_climb_setpoint = 0.;
@@ -122,6 +133,8 @@ void v_ctl_init( void ) {
/* "auto throttle" inner loop parameters */ /* "auto throttle" inner loop parameters */
v_ctl_auto_throttle_nominal_cruise_throttle = V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE; v_ctl_auto_throttle_nominal_cruise_throttle = V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE;
v_ctl_auto_throttle_min_cruise_throttle = V_CTL_AUTO_THROTTLE_MIN_CRUISE_THROTTLE;
v_ctl_auto_throttle_max_cruise_throttle = V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE;
v_ctl_auto_throttle_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_CLIMB_THROTTLE_INCREMENT; V_CTL_AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT;
@@ -195,8 +208,8 @@ void v_ctl_altitude_loop( void ) {
v_ctl_altitude_error = estimator_z - v_ctl_altitude_setpoint; v_ctl_altitude_error = estimator_z - v_ctl_altitude_setpoint;
v_ctl_climb_setpoint = altitude_pgain_boost * v_ctl_altitude_pgain * v_ctl_altitude_error v_ctl_climb_setpoint = altitude_pgain_boost * v_ctl_altitude_pgain * v_ctl_altitude_error
+ v_ctl_altitude_pre_climb; + v_ctl_altitude_pre_climb * v_ctl_altitude_pre_climb_correction;
BoundAbs(v_ctl_climb_setpoint, V_CTL_ALTITUDE_MAX_CLIMB); BoundAbs(v_ctl_climb_setpoint, v_ctl_altitude_max_climb);
#ifdef AGR_CLIMB #ifdef AGR_CLIMB
if ( v_ctl_climb_mode == V_CTL_CLIMB_MODE_AUTO_THROTTLE) { if ( v_ctl_climb_mode == V_CTL_CLIMB_MODE_AUTO_THROTTLE) {
@@ -336,7 +349,7 @@ inline static void v_ctl_climb_auto_throttle_loop(void) {
controlled_throttle = (err_airspeed + v_ctl_auto_airspeed_sum_err * v_ctl_auto_airspeed_igain) * v_ctl_auto_airspeed_pgain; controlled_throttle = (err_airspeed + v_ctl_auto_airspeed_sum_err * v_ctl_auto_airspeed_igain) * v_ctl_auto_airspeed_pgain;
// Done, set outputs // Done, set outputs
Bound(controlled_throttle, 0, V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE); Bound(controlled_throttle, 0, v_ctl_auto_throttle_max_cruise_throttle);
f_throttle = controlled_throttle; f_throttle = controlled_throttle;
nav_pitch = v_ctl_pitch_of_vz; nav_pitch = v_ctl_pitch_of_vz;
v_ctl_throttle_setpoint = TRIM_UPPRZ(f_throttle * MAX_PPRZ); v_ctl_throttle_setpoint = TRIM_UPPRZ(f_throttle * MAX_PPRZ);
@@ -47,6 +47,8 @@ extern float v_ctl_altitude_error;
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_altitude_pre_climb_correction;
extern float v_ctl_altitude_max_climb;
/* inner loop */ /* inner loop */
extern float v_ctl_climb_setpoint; extern float v_ctl_climb_setpoint;
@@ -61,6 +63,8 @@ extern uint8_t v_ctl_auto_throttle_submode;
/* "auto throttle" inner loop parameters */ /* "auto throttle" inner loop parameters */
extern float v_ctl_auto_throttle_nominal_cruise_throttle; extern float v_ctl_auto_throttle_nominal_cruise_throttle;
extern float v_ctl_auto_throttle_min_cruise_throttle;
extern float v_ctl_auto_throttle_max_cruise_throttle;
extern float v_ctl_auto_throttle_cruise_throttle; extern float v_ctl_auto_throttle_cruise_throttle;
extern float v_ctl_auto_throttle_climb_throttle_increment; extern float v_ctl_auto_throttle_climb_throttle_increment;
extern float v_ctl_auto_throttle_pgain; extern float v_ctl_auto_throttle_pgain;
@@ -115,7 +119,7 @@ extern void v_ctl_throttle_slew( void );
#define guidance_v_SetCruiseThrottle(_v) { \ #define guidance_v_SetCruiseThrottle(_v) { \
v_ctl_auto_throttle_cruise_throttle = (_v ? _v : v_ctl_auto_throttle_nominal_cruise_throttle); \ v_ctl_auto_throttle_cruise_throttle = (_v ? _v : v_ctl_auto_throttle_nominal_cruise_throttle); \
Bound(v_ctl_auto_throttle_cruise_throttle, V_CTL_AUTO_THROTTLE_MIN_CRUISE_THROTTLE, V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE); \ Bound(v_ctl_auto_throttle_cruise_throttle, v_ctl_auto_throttle_min_cruise_throttle, v_ctl_auto_throttle_max_cruise_throttle); \
} }
#define guidance_v_SetAutoThrottleIgain(_v) { \ #define guidance_v_SetAutoThrottleIgain(_v) { \
@@ -52,6 +52,8 @@ uint8_t v_ctl_auto_throttle_submode;
/* "auto throttle" inner loop parameters */ /* "auto throttle" inner loop parameters */
float v_ctl_auto_throttle_cruise_throttle; float v_ctl_auto_throttle_cruise_throttle;
float v_ctl_auto_throttle_nominal_cruise_throttle; float v_ctl_auto_throttle_nominal_cruise_throttle;
float v_ctl_auto_throttle_min_cruise_throttle;
float v_ctl_auto_throttle_max_cruise_throttle;
float v_ctl_auto_throttle_climb_throttle_increment; float v_ctl_auto_throttle_climb_throttle_increment;
float v_ctl_auto_throttle_pgain; float v_ctl_auto_throttle_pgain;
float v_ctl_auto_throttle_igain; float v_ctl_auto_throttle_igain;
@@ -128,6 +130,8 @@ void v_ctl_init( void ) {
/* "auto throttle" inner loop parameters */ /* "auto throttle" inner loop parameters */
v_ctl_auto_throttle_nominal_cruise_throttle = V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE; 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_cruise_throttle = v_ctl_auto_throttle_nominal_cruise_throttle;
v_ctl_auto_throttle_min_cruise_throttle = V_CTL_AUTO_THROTTLE_MIN_CRUISE_THROTTLE;
v_ctl_auto_throttle_max_cruise_throttle = V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE;
v_ctl_auto_throttle_climb_throttle_increment = V_CTL_AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT; 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_pgain = V_CTL_AUTO_THROTTLE_PGAIN;
v_ctl_auto_throttle_igain = V_CTL_AUTO_THROTTLE_IGAIN; v_ctl_auto_throttle_igain = V_CTL_AUTO_THROTTLE_IGAIN;
@@ -43,7 +43,9 @@
#endif #endif
#define Actuator(_x) actuators_pwm_values[_x] #define Actuator(_x) actuators_pwm_values[_x]
#ifndef ChopServo
#define ChopServo(x,a,b) Chop(x, a, b) #define ChopServo(x,a,b) Chop(x, a, b)
#endif
#define ActuatorsCommit actuators_pwm_commit #define ActuatorsCommit actuators_pwm_commit
int32_t actuators_pwm_values[ACTUATORS_PWM_NB]; int32_t actuators_pwm_values[ACTUATORS_PWM_NB];
@@ -123,6 +123,9 @@ void autopilot_set_mode(uint8_t new_autopilot_mode) {
autopilot_motors_on = FALSE; autopilot_motors_on = FALSE;
guidance_h_mode_changed(GUIDANCE_H_MODE_KILL); guidance_h_mode_changed(GUIDANCE_H_MODE_KILL);
break; break;
case AP_MODE_RC_DIRECT:
guidance_h_mode_changed(GUIDANCE_H_MODE_RC_DIRECT);
break;
case AP_MODE_RATE_DIRECT: case AP_MODE_RATE_DIRECT:
case AP_MODE_RATE_Z_HOLD: case AP_MODE_RATE_Z_HOLD:
guidance_h_mode_changed(GUIDANCE_H_MODE_RATE); guidance_h_mode_changed(GUIDANCE_H_MODE_RATE);
@@ -154,6 +157,7 @@ void autopilot_set_mode(uint8_t new_autopilot_mode) {
case AP_MODE_KILL: case AP_MODE_KILL:
guidance_v_mode_changed(GUIDANCE_V_MODE_KILL); guidance_v_mode_changed(GUIDANCE_V_MODE_KILL);
break; break;
case AP_MODE_RC_DIRECT:
case AP_MODE_RATE_DIRECT: case AP_MODE_RATE_DIRECT:
case AP_MODE_ATTITUDE_DIRECT: case AP_MODE_ATTITUDE_DIRECT:
case AP_MODE_HOVER_DIRECT: case AP_MODE_HOVER_DIRECT:

Some files were not shown because too many files have changed in this diff Show More