mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-31 03:57:45 +08:00
Merge branch 'master' of github.com:paparazzi/paparazzi into stm_i2c
This commit is contained in:
@@ -129,6 +129,7 @@
|
||||
/sw/logalizer/ivy_example
|
||||
/sw/logalizer/motor_bench
|
||||
/sw/logalizer/tmclient
|
||||
/sw/logalizer/openlog2tlm
|
||||
|
||||
# /sw/simulator/
|
||||
/sw/simulator/gaia
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
We count on your for finding them
|
||||
|
||||
Please see the bug/issue tracker on https://github.com/paparazzi/paparazzi/issues
|
||||
@@ -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 !
|
||||
@@ -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">
|
||||
|
||||
<!--
|
||||
YAPA + XSens + XBee
|
||||
Lisa + Aspirin v2 using SPI only
|
||||
-->
|
||||
|
||||
<airframe name="Yapa v1">
|
||||
<airframe name="LisaAspirin2">
|
||||
|
||||
<servos>
|
||||
<servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="AILERON_LEFT" no="2" min="1000" neutral="1500" max="2000"/>
|
||||
<servo name="AILERON_RIGHT" no="6" min="2000" neutral="1500" max="1000"/>
|
||||
<servo name="THROTTLE" no="2" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="AILEVON_LEFT" no="1" min="1000" neutral="1500" max="2000"/>
|
||||
<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="RUDDER" no="4" min="1100" neutral="1500" max="1900"/>
|
||||
</servos>
|
||||
@@ -28,53 +28,58 @@
|
||||
<set command="BRAKE" value="@YAW"/>
|
||||
</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>
|
||||
<!-- Brake Rate Limiter -->
|
||||
<let var="brake_value" value="Chop(-@BRAKE, 0, MAX_PPRZ)"/>
|
||||
<!--<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="AILEVON_LEFT" value="@ROLL + @PITCH"/>
|
||||
<set servo="AILEVON_RIGHT" value="@ROLL - @PITCH"/>
|
||||
<set servo="THROTTLE" value="@THROTTLE"/>
|
||||
|
||||
<!-- Pitch with Brake-Trim Function -->
|
||||
<set servo="ELEVATOR" value="-@PITCH * PITCH_GAIN + BRAKE_PITCH * $brake_value"/>
|
||||
<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="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_">
|
||||
<define name="MAX_ROLL" value="0.7"/>
|
||||
<define name="MAX_PITCH" value="0.7"/>
|
||||
@@ -88,11 +93,6 @@
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
|
||||
</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="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
|
||||
<define name="CARROT" value="5." unit="s"/>
|
||||
@@ -177,40 +177,62 @@
|
||||
|
||||
|
||||
<modules>
|
||||
<load name="ins_xsens_MTiG_fixedwing.xml">
|
||||
<configure name="XSENS_UART_NR" value="0"/>
|
||||
</load>
|
||||
|
||||
<!--
|
||||
<load name="light.xml">
|
||||
<define name="LIGHT_LED_STROBE" value="3"/>
|
||||
<define name="LIGHT_LED_NAV" value="2"/>
|
||||
<define name="LIGHT_LED_STROBE" value="2"/>
|
||||
<define name="LIGHT_LED_NAV" value="3"/>
|
||||
<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>
|
||||
<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">
|
||||
<target name="ap" board="lisa_m_1.0">
|
||||
<define name="STRONG_WIND"/>
|
||||
<define name="WIND_INFO"/>
|
||||
<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 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"/>
|
||||
|
||||
<!-- Communication -->
|
||||
<subsystem name="telemetry" type="xbee_api">
|
||||
<subsystem name="telemetry" type="transparent">
|
||||
<configure name="MODEM_BAUD" value="B57600"/>
|
||||
</subsystem>
|
||||
|
||||
@@ -218,9 +240,10 @@
|
||||
<subsystem name="control"/>
|
||||
<!-- Sensors -->
|
||||
<subsystem name="navigation"/>
|
||||
<subsystem name="gps" type="xsens"/>
|
||||
<subsystem name="gps" type="ublox_utm"/>
|
||||
|
||||
|
||||
</firmware>
|
||||
|
||||
|
||||
</airframe>
|
||||
@@ -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=""ATPL2\rATRN5\rATTT80\r""/>
|
||||
<!-- <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>
|
||||
@@ -14,10 +14,10 @@
|
||||
<!--load name="infrared_i2c.xml"/-->
|
||||
<!--load name="max3100.xml"/>
|
||||
<load name="gsm.xml"/-->
|
||||
<load name="demo_module.xml">
|
||||
<!--load name="demo_module.xml">
|
||||
<define name="TEST" value="1"/>
|
||||
<define name="TEST_FLAG"/>
|
||||
</load>
|
||||
</load-->
|
||||
<!--load name="enose.xml"/-->
|
||||
<load name="light.xml"/>
|
||||
<load name="infrared_adc.xml"/>
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
<subsystem name="radio_control" type="ppm"/>
|
||||
<subsystem name="telemetry" type="xbee_api"/>
|
||||
<subsystem name="control" type="new"/>
|
||||
<subsystem name="control" type="adaptive"/>
|
||||
<subsystem name="ahrs" type="infrared"/>
|
||||
<subsystem name="gps" type="ublox"/>
|
||||
<subsystem name="navigation"/>
|
||||
@@ -217,103 +217,4 @@
|
||||
<define name="YAW_RESPONSE_FACTOR" value="1."/>
|
||||
</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>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<airframe name="Blender">
|
||||
|
||||
<modules main_freq="512">
|
||||
<load name="booz_pwm.xml">
|
||||
<!--load name="booz_pwm.xml">
|
||||
<define name="USE_PWM1"/>
|
||||
</load>
|
||||
<load name="booz_drop.xml"/>
|
||||
<load name="booz_cam.xml"/>
|
||||
<load name="booz_cam.xml"/-->
|
||||
<!--load name="sonar_maxbotix_booz.xml"/-->
|
||||
</modules>
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
</target>
|
||||
<target name="sim" board="pc">
|
||||
<subsystem name="fdm" type="nps"/>
|
||||
<!--define name="NPS_NO_SUPERVISION"/-->
|
||||
</target>
|
||||
|
||||
<subsystem name="radio_control" type="ppm"/>
|
||||
<subsystem name="telemetry" type="transparent"/>
|
||||
<subsystem name="actuators" type="asctec"/>
|
||||
<!--subsystem name="actuators" type="mkk"/-->
|
||||
<subsystem name="actuators" type="skiron">
|
||||
<define name="SKIRON_I2C_SCL_TIME" value="25"/>
|
||||
</subsystem>
|
||||
<subsystem name="imu" type="b2_v1.1"/>
|
||||
<subsystem name="gps" type="ublox">
|
||||
<configure name="GPS_BAUD" value="B57600"/>
|
||||
@@ -48,17 +48,11 @@
|
||||
</firmware>
|
||||
|
||||
<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="BACK" no="1" min="0" neutral="0" max="255"/>
|
||||
<servo name="RIGHT" no="2" 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="LEFT" no="3" min="0" neutral="0" max="255"/>
|
||||
</servos-->
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
@@ -67,20 +61,15 @@
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<!--section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<section name="ACTUATORS_SKIRON" prefix="ACTUATORS_SKIRON_">
|
||||
<define name="NB" value="4"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x56, 0x54, 0x58 }"/>
|
||||
</section-->
|
||||
<define name="IDX" value="{ SERVO_FRONT, SERVO_BACK, SERVO_RIGHT, SERVO_LEFT }"/>
|
||||
</section>
|
||||
|
||||
<section name="SUPERVISION" prefix="SUPERVISION_">
|
||||
<define name="TRIM_A" value="0"/>
|
||||
<define name="TRIM_E" value="0"/>
|
||||
<define name="TRIM_R" value="0"/>
|
||||
</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="MIN_MOTOR" value="20"/>
|
||||
<define name="MAX_MOTOR" value="255"/>
|
||||
<define name="TRIM_A" value="6"/>
|
||||
<define name="TRIM_E" value="0"/>
|
||||
<define name="TRIM_R" value="0"/>
|
||||
<define name="NB_MOTOR" value="4"/>
|
||||
@@ -89,8 +78,7 @@
|
||||
<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>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
</target>
|
||||
<target name="sim" board="pc">
|
||||
<subsystem name="fdm" type="nps"/>
|
||||
<!--define name="NPS_NO_SUPERVISION"/-->
|
||||
</target>
|
||||
|
||||
<subsystem name="radio_control" type="ppm"/>
|
||||
@@ -30,17 +29,17 @@
|
||||
<define name="SKIRON_I2C_SCL_TIME" value="25"/>
|
||||
</subsystem>
|
||||
<subsystem name="imu" type="navgo"/>
|
||||
<subsystem name="gps" type="ublox"/>
|
||||
<subsystem name="stabilization" type="euler"/>
|
||||
<subsystem name="ahrs" type="int_cmpl_euler">
|
||||
<define name="LOW_NOISE_THRESHOLD" value="50000"/>
|
||||
<subsystem name="gps" type="ublox">
|
||||
<configure name="GPS_BAUD" value="B57600"/>
|
||||
</subsystem>
|
||||
<subsystem name="stabilization" type="euler"/>
|
||||
<subsystem name="ahrs" type="int_cmpl_euler"/>
|
||||
<subsystem name="ins" type="hff"/>
|
||||
</firmware>
|
||||
|
||||
<servos min="0" neutral="0" max="0xff">
|
||||
<servo name="FRONT" no="2" min="0" neutral="0" max="255"/>
|
||||
<servo name="BACK" no="0" min="0" neutral="0" max="255"/>
|
||||
<servo name="FRONT" 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="LEFT" no="3" min="0" neutral="0" max="255"/>
|
||||
</servos>
|
||||
@@ -73,68 +72,34 @@
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
<define name="GYRO_P_NEUTRAL" value="-126"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="-29"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="-32"/>
|
||||
<define name="GYRO_P_NEUTRAL" value="10"/>
|
||||
<define name="GYRO_Q_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 -->
|
||||
<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="4"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="-17"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-22"/>
|
||||
<define name="ACCEL_X_NEUTRAL" value="9"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="14"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-16"/>
|
||||
|
||||
<!-- 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_Y_SENS" value="38.7857058923" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="39.7459254023" integer="16"/>
|
||||
<define name="ACCEL_X_SENS" value="38.5866088465" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="38.7212932023" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="39.403098907" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="85"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="97"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="-43"/>
|
||||
<define name="MAG_X_NEUTRAL" value="80"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-271"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="112"/>
|
||||
|
||||
<define name="MAG_X_SENS" value="5.43371021972" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="4.8961742578" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="5.31527656902" integer="16"/>
|
||||
<define name="MAG_X_SENS" value="4.44131219218" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="4.56234629213" 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_THETA" value="RadOfDeg(0.)"/> <!-- -10 -->
|
||||
<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_PHI" value="RadOfDeg(0.)"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="RadOfDeg(0.)"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="RadOfDeg(0.)"/>
|
||||
|
||||
</section>
|
||||
@@ -149,7 +114,9 @@
|
||||
</section>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
@@ -220,8 +187,8 @@
|
||||
<define name="REF_MAX_ZDD" value=" 0.8*9.81"/>
|
||||
<define name="REF_MIN_ZD" value="-1.5"/>
|
||||
<define name="REF_MAX_ZD" value=" 1.5"/>
|
||||
<define name="HOVER_KP" value="-500"/>
|
||||
<define name="HOVER_KD" value="-250"/>
|
||||
<define name="HOVER_KP" value="-350"/>
|
||||
<define name="HOVER_KD" value="-160"/>
|
||||
<define name="HOVER_KI" value="0"/>
|
||||
<!-- SPEED_BFP_OF_REAL(1.5) / (MAX_PPRZ/2) -->
|
||||
<define name="RC_CLIMB_COEF" value ="163"/>
|
||||
@@ -268,11 +235,9 @@
|
||||
|
||||
|
||||
<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="BoozDropPwm(_v)" value="BoozSetPwm1Value(_v)"/>
|
||||
<define name="IMU_MAG_OFFSET" value="-9."/>
|
||||
<!--define name="IMU_MAG_OFFSET" value="-9."/-->
|
||||
</section>
|
||||
|
||||
<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=""ATPL2\rATRN5\rATTT80\r""/>
|
||||
<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>
|
||||
@@ -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=""ATPL2\rATRN5\rATTT80\r""/> -->
|
||||
<!-- <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>
|
||||
@@ -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=""ATPL2\rATRN5\rATTT80\r""/> -->
|
||||
<!-- <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>
|
||||
@@ -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=""ATPL2\rATRN5\rATTT80\r""/>
|
||||
<!-- <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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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=""ATPL2\rATRN5\rATTT80\r""/>
|
||||
<!-- <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>
|
||||
@@ -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=""ATPL2\rATRN5\rATTT80\r""/>
|
||||
<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>
|
||||
@@ -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="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||
<define name="INITIAL_CONDITITONS" value=""reset00""/>
|
||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
||||
</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>
|
||||
@@ -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=""ATPL2\rATRN5\rATTT80\r""/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||
<define name="INITIAL_CONDITITONS" value=""reset00""/>
|
||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_aspirin.h""/>
|
||||
</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>
|
||||
@@ -37,6 +37,7 @@
|
||||
|
||||
<firmware name="logger">
|
||||
<target name="ap" board="tiny_2.11" >
|
||||
<configure name="LOG_MSG_FMT" value="LOG_PPRZ"/>
|
||||
<configure name="SPI_CHANNEL" value="1" />
|
||||
<configure name="UART0_BAUD" value="B9600" />
|
||||
<configure name="UART1_BAUD" value="B9600" />
|
||||
|
||||
@@ -190,6 +190,7 @@
|
||||
</firmware>
|
||||
|
||||
<modules>
|
||||
<load name="openlog.xml"/>
|
||||
<load name="infrared_adc.xml"/>
|
||||
<load name="digital_cam_servo.xml">
|
||||
<define name="DC_SHUTTER_SERVO" value="COMMAND_SHUTTER" />
|
||||
|
||||
@@ -34,10 +34,10 @@ ifeq ($(ARCH), lpc21)
|
||||
ap.CFLAGS += -DUSE_LED
|
||||
ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c $(SRC_FIRMWARE)/main_logger.c
|
||||
|
||||
#choose one
|
||||
ap.CFLAGS += -DLOG_XBEE
|
||||
#ap.CFLAGS += -DLOG_PPRZ
|
||||
|
||||
# PPRZ message format is default
|
||||
ifndef LOG_MSG_FMT
|
||||
LOG_MSG_FMT = LOG_PPRZ
|
||||
endif
|
||||
|
||||
#set the speed
|
||||
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)
|
||||
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
|
||||
ap.CFLAGS += -DUSE_USB_HIGH_PCLK
|
||||
|
||||
|
||||
@@ -145,9 +145,11 @@ else ifeq ($(BOARD), lisa_l)
|
||||
ap.CFLAGS += -DUSE_I2C2
|
||||
else ifeq ($(BOARD), navgo)
|
||||
ap.CFLAGS += -DROTORCRAFT_BARO_LED=$(BARO_LED)
|
||||
ap.CFLAGS += -DUSE_I2C1
|
||||
ap.CFLAGS += -DADS1114_I2C_DEVICE=i2c1
|
||||
ap.srcs += peripherals/ads1114.c
|
||||
include $(CFG_ROTORCRAFT)/spi.makefile
|
||||
ap.CFLAGS += -DUSE_SPI_SLAVE0
|
||||
ap.CFLAGS += -DSPI_NO_UNSELECT_SLAVE
|
||||
ap.CFLAGS += -DSPI_MASTER
|
||||
ap.srcs += peripherals/mcp355x.c
|
||||
endif
|
||||
|
||||
#
|
||||
@@ -195,6 +197,7 @@ endif
|
||||
ap.srcs += $(SRC_FIRMWARE)/autopilot.c
|
||||
|
||||
ap.srcs += $(SRC_FIRMWARE)/stabilization.c
|
||||
ap.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_none.c
|
||||
ap.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_rate.c
|
||||
|
||||
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/stabilization_rate.c
|
||||
sim.srcs += $(SRC_FIRMWARE)/stabilization/stabilization_none.c
|
||||
|
||||
|
||||
NUM_TYPE=integer
|
||||
#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_ADDR=ITG3200_ADDR_ALT
|
||||
IMU_NAVGO_CFLAGS += -DITG3200_SMPLRT_DIV=1
|
||||
IMU_NAVGO_CFLAGS += -DITG3200_DLFP_CFG=5
|
||||
IMU_NAVGO_SRCS += peripherals/itg3200.c
|
||||
|
||||
IMU_NAVGO_CFLAGS += -DADXL345_I2C_DEVICE=$(IMU_NAVGO_I2C_DEVICE)
|
||||
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_CFLAGS += -DHMC58XX_I2C_DEVICE=$(IMU_NAVGO_I2C_DEVICE)
|
||||
|
||||
@@ -99,5 +99,15 @@
|
||||
settings="settings/tuning.xml settings/infrared.xml"
|
||||
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>
|
||||
|
||||
+3
-1
@@ -941,7 +941,9 @@
|
||||
<field name="snapshot_image_number" type="uint16"/>
|
||||
</message>
|
||||
|
||||
<!--129 is free -->
|
||||
<message name="TIMESTAMP" id="129">
|
||||
<field name="timestamp" type="uint32"/>
|
||||
</message>
|
||||
|
||||
<message name="STAB_ATTITUDE_FLOAT" id="130">
|
||||
<field name="est_p" type="float" alt_unit="degres/s" alt_unit_coef="57.29578"/>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Executable
+13
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -42,6 +42,8 @@
|
||||
<strip_button name="AS" value="1" group="speed_mode"/>
|
||||
<strip_button name="GS" value="2" group="speed_mode"/>
|
||||
</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="0" MIN="-0.1" STEP="0.001" VAR="v_ctl_auto_pitch_pgain" shortname="pitch_p" param="V_CTL_AUTO_PITCH_PGAIN"/>
|
||||
|
||||
@@ -57,7 +57,9 @@
|
||||
</dl_settings>
|
||||
|
||||
<dl_settings name="alt">
|
||||
<dl_setting MAX="0" MIN="-0.2" STEP="0.01" VAR="v_ctl_altitude_pgain" shortname="alt_pgain" param="V_CTL_ALTITUDE_PGAIN"/>
|
||||
<dl_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 name="auto_throttle">
|
||||
@@ -67,6 +69,9 @@
|
||||
<strip_button name="Dash" value="1"/>
|
||||
</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="1" MIN="0.0" STEP="0.05" VAR="v_ctl_auto_throttle_igain" shortname="throttle_igain" param="V_CTL_AUTO_THROTTLE_IGAIN"/>
|
||||
|
||||
@@ -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
@@ -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); }
|
||||
|
||||
#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
|
||||
# include "modules/ins/ins_module.h"
|
||||
# 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_MAG(_chan) { DOWNLINK_SEND_IMU_MAG(_chan, &ins_mx, &ins_my, &ins_mz)}
|
||||
# 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_GYRO_RAW(_chan) {}
|
||||
# define PERIODIC_SEND_IMU_MAG_RAW(_chan) {}
|
||||
# define PERIODIC_SEND_IMU_ACCEL(_chan) {}
|
||||
# define PERIODIC_SEND_IMU_GYRO(_chan) {}
|
||||
# define PERIODIC_SEND_IMU_MAG(_chan) {}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#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 !SPI_NO_UNSELECT_SLAVE
|
||||
SpiUnselectCurrentSlave();
|
||||
#endif
|
||||
SpiReceive();
|
||||
SpiDisableRti();
|
||||
SpiClearRti(); /* clear interrupt */
|
||||
|
||||
@@ -13,6 +13,10 @@ static inline void i2c_reset_init(struct i2c_periph *p);
|
||||
|
||||
#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
|
||||
#define SPURIOUS_INTERRUPT(_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)
|
||||
{
|
||||
uint8_t timeout_fails=0;
|
||||
I2C_TypeDef *regs = (I2C_TypeDef *) 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_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)
|
||||
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();
|
||||
|
||||
// Lower SCL, wait
|
||||
@@ -379,6 +387,7 @@ static inline void i2c_hard_reset(struct i2c_periph *p)
|
||||
// Raise SCL, wait
|
||||
GPIO_SetBits(GPIOB, p->scl_pin);
|
||||
i2c_delay();
|
||||
timeout_fails++;
|
||||
}
|
||||
|
||||
// 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)
|
||||
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
|
||||
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
|
||||
// Return the GPIO pins to the alternate function
|
||||
|
||||
@@ -82,7 +82,14 @@ void baro_periodic(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);
|
||||
#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) {
|
||||
|
||||
@@ -27,57 +27,43 @@
|
||||
|
||||
#include "subsystems/sensors/baro.h"
|
||||
#include "led.h"
|
||||
#include "mcu_periph/spi.h"
|
||||
|
||||
/* Common Baro struct */
|
||||
struct Baro baro;
|
||||
|
||||
/* Number of values to compute an offset at startup */
|
||||
#define OFFSET_NBSAMPLES_AVRG 300
|
||||
uint16_t offset_cnt;
|
||||
|
||||
#ifdef USE_BARO_AS_ALTIMETER
|
||||
/* Weight for offset IIR filter */
|
||||
#define OFFSET_FILTER 7
|
||||
|
||||
float baro_alt;
|
||||
float baro_alt_offset;
|
||||
#endif
|
||||
/* Counter to init mcp355x at startup */
|
||||
#define STARTUP_COUNTER 200
|
||||
uint16_t startup_cnt;
|
||||
|
||||
void baro_init( void ) {
|
||||
ads1114_init();
|
||||
mcp355x_init();
|
||||
SpiSelectSlave0(); // never unselect this slave (continious conversion mode)
|
||||
baro.status = BS_UNINITIALIZED;
|
||||
baro.absolute = 0;
|
||||
baro.differential = 0; /* not handled on this board */
|
||||
#ifdef ROTORCRAFT_BARO_LED
|
||||
LED_OFF(ROTORCRAFT_BARO_LED);
|
||||
#endif
|
||||
offset_cnt = OFFSET_NBSAMPLES_AVRG;
|
||||
#ifdef USE_BARO_AS_ALTIMETER
|
||||
baro_alt = 0.;
|
||||
baro_alt_offset = 0.;
|
||||
#endif
|
||||
startup_cnt = STARTUP_COUNTER;
|
||||
}
|
||||
|
||||
void baro_periodic( void ) {
|
||||
|
||||
if (baro.status == BS_UNINITIALIZED) {
|
||||
#ifdef USE_BARO_AS_ALTIMETER
|
||||
// IIR filter to compute an initial offset
|
||||
baro_alt_offset = (OFFSET_FILTER * baro_alt_offset + (float)baro.absolute) / (OFFSET_FILTER + 1);
|
||||
#endif
|
||||
// decrease init counter
|
||||
--offset_cnt;
|
||||
// Run some loops to get correct readings from the adc
|
||||
--startup_cnt;
|
||||
#ifdef ROTORCRAFT_BARO_LED
|
||||
LED_TOGGLE(ROTORCRAFT_BARO_LED);
|
||||
#endif
|
||||
if (offset_cnt == 0) {
|
||||
if (startup_cnt == 0) {
|
||||
baro.status = BS_RUNNING;
|
||||
#ifdef ROTORCRAFT_BARO_LED
|
||||
LED_ON(ROTORCRAFT_BARO_LED);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
// Read the ADC
|
||||
ads1114_read();
|
||||
// Read the ADC (at 50/4 Hz, conversion time is 68 ms)
|
||||
RunOnceEvery(4,mcp355x_read());
|
||||
}
|
||||
|
||||
|
||||
@@ -31,22 +31,16 @@
|
||||
|
||||
|
||||
#include "std.h"
|
||||
#include "peripherals/ads1114.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
|
||||
#include "peripherals/mcp355x.h"
|
||||
|
||||
#define BARO_FILTER_GAIN 5
|
||||
|
||||
#define BaroEvent(_b_abs_handler, _b_diff_handler) { \
|
||||
Ads1114Event(); \
|
||||
if (ads1114_data_available) { \
|
||||
baro.absolute = (baro.absolute + BARO_FILTER_GAIN*Ads1114GetValue()) / (BARO_FILTER_GAIN+1); \
|
||||
mcp355x_event(); \
|
||||
if (mcp355x_data_available) { \
|
||||
baro.absolute = (baro.absolute + BARO_FILTER_GAIN*mcp355x_data) / (BARO_FILTER_GAIN+1); \
|
||||
_b_abs_handler(); \
|
||||
ads1114_data_available = FALSE; \
|
||||
mcp355x_data_available = FALSE; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ void imu_navgo_event( void )
|
||||
// If the itg3200 I2C transaction has succeeded: convert the data
|
||||
itg3200_event();
|
||||
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;
|
||||
gyr_valid = TRUE;
|
||||
}
|
||||
@@ -119,7 +119,7 @@ void imu_navgo_event( void )
|
||||
// HMC58XX event task
|
||||
hmc58xx_event();
|
||||
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;
|
||||
mag_valid = TRUE;
|
||||
}
|
||||
|
||||
@@ -18,17 +18,17 @@
|
||||
#define PCLK (CCLK / PBSD_VAL)
|
||||
|
||||
/* Onboard LEDs */
|
||||
#define LED_1_BANK 1
|
||||
#define LED_1_PIN 25
|
||||
#define LED_1_BANK 0
|
||||
#define LED_1_PIN 22
|
||||
|
||||
#define LED_2_BANK 1
|
||||
#define LED_2_PIN 24
|
||||
#define LED_2_PIN 28
|
||||
|
||||
#define LED_3_BANK 1
|
||||
#define LED_3_PIN 23
|
||||
#define LED_3_PIN 29
|
||||
|
||||
#define LED_4_BANK 1
|
||||
#define LED_4_PIN 31
|
||||
#define LED_4_PIN 30
|
||||
|
||||
/* PPM : rc rx on P0.28 ( CAP0.2 ) */
|
||||
#define PPM_PINSEL PINSEL1
|
||||
@@ -45,19 +45,22 @@
|
||||
/* battery */
|
||||
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
|
||||
#ifndef ADC_CHANNEL_VSUPPLY
|
||||
#define ADC_CHANNEL_VSUPPLY AdcBank1(3)
|
||||
#ifndef USE_AD1
|
||||
#define USE_AD1
|
||||
#define ADC_CHANNEL_VSUPPLY AdcBank0(2)
|
||||
#ifndef USE_AD0
|
||||
#define USE_AD0
|
||||
#endif
|
||||
#define USE_AD1_3
|
||||
#define USE_AD0_2
|
||||
#endif
|
||||
|
||||
#define DefaultVoltageOfAdc(adc) (0.01837*adc)
|
||||
#define DefaultVoltageOfAdc(adc) (0.017889*adc)
|
||||
|
||||
/* SPI (SSP) */
|
||||
#define SPI_SELECT_SLAVE0_PORT 0
|
||||
#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_BIT 0
|
||||
#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_pgain;
|
||||
float v_ctl_altitude_error;
|
||||
float v_ctl_altitude_pre_climb_correction;
|
||||
float v_ctl_altitude_max_climb;
|
||||
|
||||
/* inner loop */
|
||||
float v_ctl_climb_setpoint;
|
||||
@@ -51,6 +53,8 @@ uint8_t v_ctl_auto_throttle_submode;
|
||||
/* "auto throttle" inner loop parameters */
|
||||
float v_ctl_auto_throttle_cruise_throttle;
|
||||
float v_ctl_auto_throttle_nominal_cruise_throttle;
|
||||
float v_ctl_auto_throttle_min_cruise_throttle;
|
||||
float v_ctl_auto_throttle_max_cruise_throttle;
|
||||
float v_ctl_auto_throttle_climb_throttle_increment;
|
||||
float v_ctl_auto_throttle_pgain;
|
||||
float v_ctl_auto_throttle_igain;
|
||||
@@ -105,6 +109,11 @@ float v_ctl_auto_groundspeed_sum_err;
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef V_CTL_ALTITUDE_PRE_CLIMB_CORRECTION
|
||||
#define V_CTL_ALTITUDE_PRE_CLIMB_CORRECTION 1.0f
|
||||
#endif
|
||||
|
||||
|
||||
void v_ctl_init( void ) {
|
||||
/* mode */
|
||||
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_pgain = V_CTL_ALTITUDE_PGAIN;
|
||||
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 */
|
||||
v_ctl_climb_setpoint = 0.;
|
||||
@@ -122,6 +133,8 @@ void v_ctl_init( void ) {
|
||||
|
||||
/* "auto throttle" inner loop parameters */
|
||||
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_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_climb_setpoint = altitude_pgain_boost * v_ctl_altitude_pgain * v_ctl_altitude_error
|
||||
+ v_ctl_altitude_pre_climb;
|
||||
BoundAbs(v_ctl_climb_setpoint, V_CTL_ALTITUDE_MAX_CLIMB);
|
||||
+ v_ctl_altitude_pre_climb * v_ctl_altitude_pre_climb_correction;
|
||||
BoundAbs(v_ctl_climb_setpoint, v_ctl_altitude_max_climb);
|
||||
|
||||
#ifdef AGR_CLIMB
|
||||
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;
|
||||
|
||||
// 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;
|
||||
nav_pitch = v_ctl_pitch_of_vz;
|
||||
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_pre_climb;
|
||||
extern float v_ctl_altitude_pgain;
|
||||
extern float v_ctl_altitude_pre_climb_correction;
|
||||
extern float v_ctl_altitude_max_climb;
|
||||
|
||||
/* inner loop */
|
||||
extern float v_ctl_climb_setpoint;
|
||||
@@ -61,6 +63,8 @@ extern uint8_t v_ctl_auto_throttle_submode;
|
||||
|
||||
/* "auto throttle" inner loop parameters */
|
||||
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_climb_throttle_increment;
|
||||
extern float v_ctl_auto_throttle_pgain;
|
||||
@@ -115,7 +119,7 @@ extern void v_ctl_throttle_slew( void );
|
||||
|
||||
#define guidance_v_SetCruiseThrottle(_v) { \
|
||||
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) { \
|
||||
|
||||
@@ -52,6 +52,8 @@ uint8_t v_ctl_auto_throttle_submode;
|
||||
/* "auto throttle" inner loop parameters */
|
||||
float v_ctl_auto_throttle_cruise_throttle;
|
||||
float v_ctl_auto_throttle_nominal_cruise_throttle;
|
||||
float v_ctl_auto_throttle_min_cruise_throttle;
|
||||
float v_ctl_auto_throttle_max_cruise_throttle;
|
||||
float v_ctl_auto_throttle_climb_throttle_increment;
|
||||
float v_ctl_auto_throttle_pgain;
|
||||
float v_ctl_auto_throttle_igain;
|
||||
@@ -128,6 +130,8 @@ void v_ctl_init( void ) {
|
||||
/* "auto throttle" inner loop parameters */
|
||||
v_ctl_auto_throttle_nominal_cruise_throttle = V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE;
|
||||
v_ctl_auto_throttle_cruise_throttle = v_ctl_auto_throttle_nominal_cruise_throttle;
|
||||
v_ctl_auto_throttle_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_pgain = V_CTL_AUTO_THROTTLE_PGAIN;
|
||||
v_ctl_auto_throttle_igain = V_CTL_AUTO_THROTTLE_IGAIN;
|
||||
|
||||
@@ -43,7 +43,9 @@
|
||||
#endif
|
||||
|
||||
#define Actuator(_x) actuators_pwm_values[_x]
|
||||
#ifndef ChopServo
|
||||
#define ChopServo(x,a,b) Chop(x, a, b)
|
||||
#endif
|
||||
#define ActuatorsCommit actuators_pwm_commit
|
||||
|
||||
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;
|
||||
guidance_h_mode_changed(GUIDANCE_H_MODE_KILL);
|
||||
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_Z_HOLD:
|
||||
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:
|
||||
guidance_v_mode_changed(GUIDANCE_V_MODE_KILL);
|
||||
break;
|
||||
case AP_MODE_RC_DIRECT:
|
||||
case AP_MODE_RATE_DIRECT:
|
||||
case AP_MODE_ATTITUDE_DIRECT:
|
||||
case AP_MODE_HOVER_DIRECT:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user