Merge remote-tracking branch 'paparazzi/master' into actuators

This commit is contained in:
Gautier Hattenberger
2012-10-22 15:57:49 +02:00
80 changed files with 2998 additions and 821 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
# ignore html dir for github pages
/doc/html
/doc/generated
*.so
*.[oa]
+1 -4
View File
@@ -1,9 +1,6 @@
[submodule "sw/ext/libopencm3"]
path = sw/ext/libopencm3
url = git://libopencm3.git.sourceforge.net/gitroot/libopencm3/libopencm3
[submodule "sw/ext/stm32loader"]
path = sw/ext/stm32loader
url = https://github.com/jsnyder/stm32loader.git
url = https://github.com/libopencm3/libopencm3.git
[submodule "sw/ext/luftboot"]
path = sw/ext/luftboot
url = https://github.com/paparazzi/luftboot.git
+2 -2
View File
@@ -51,7 +51,7 @@ PROJECT_LOGO = data/pictures/penguin_icon.png
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = doc/html
OUTPUT_DIRECTORY = doc/generated
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
@@ -828,7 +828,7 @@ GENERATE_HTML = YES
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
# put in front of it. If left blank `html' will be used as the default path.
HTML_OUTPUT = docs
HTML_OUTPUT =
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+1 -5
View File
@@ -210,10 +210,6 @@ upload_ms ms.upload: ms
#####
#####
doxygen:
mkdir -p dox
doxygen Doxyfile
run_sitl :
$(PAPARAZZI_HOME)/var/$(AIRCRAFT)/sim/simsitl
@@ -282,4 +278,4 @@ run_tests:
test: all replace_current_conf_xml run_tests restore_conf_xml
.PHONY: all print_build_version clean cleanspaces ab_clean dist_clean distclean dist_clean_irreversible doxygen run_sitl install uninstall test replace_current_conf_xml run_tests restore_conf_xml
.PHONY: all print_build_version clean cleanspaces ab_clean dist_clean distclean dist_clean_irreversible run_sitl install uninstall test replace_current_conf_xml run_tests restore_conf_xml
+2 -2
View File
@@ -51,7 +51,7 @@ ifneq ($(BOARD_SERIAL),)
OOCD_OPTIONS = -c "ft2232_serial $(BOARD_SERIAL)"
endif
LOADER= $(PAPARAZZI_SRC)/sw/ext/stm32loader/stm32loader.py
LOADER ?= $(PAPARAZZI_SRC)/sw/tools/stm32loader/stm32loader.py
ifndef $(TARGET).OOCD_INTERFACE
OOCD_INTERFACE = lisa-l
@@ -130,7 +130,7 @@ AFLAGS += -mcpu=$(MCU) -mthumb
endif
AFLAGS += -x assembler-with-cpp -Wa,-adhlns=$(OBJDIR)/$(<:.S=.lst),--g$(DEBUG)
LDFLAGS = -L../ext/libopencm3/lib/stm32/f1
LDFLAGS = -L../ext/libopencm3/lib
ifeq ("$(MULTILIB)","yes")
LDFLAGS += -T$(LDSCRIPT) -nostartfiles -O$(OPT) -mthumb -march=armv7 -mfix-cortex-m3-ldrd -msoft-float
else
+309
View File
@@ -0,0 +1,309 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
Lisa + Aspirin v2 using SPI only
-->
<airframe name="LisaAspirin2">
<servos>
<servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/>
<servo name="AILEVON_LEFT" no="1" min="1200" neutral="1500" max="1800"/>
<servo name="ELEVATOR" no="2" min="2000" neutral="1500" max="1000"/>
<servo name="RUDDER" no="3" min="1100" neutral="1500" max="1900"/>
<servo name="AILEVON_RIGHT" no="4" min="1800" neutral="1500" max="1200"/>
</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="FORCECRASH" failsafe_value="0"/>
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
<set command="YAW" value="@YAW"/>
<!-- <set command="FORCECRASH" value="@FLAPS"/> -->
</rc_commands>
<command_laws>
<set servo="AILEVON_LEFT" value="@ROLL"/>
<set servo="AILEVON_RIGHT" value="-@ROLL"/>
<set servo="THROTTLE" value="@THROTTLE"/>
<set servo="ELEVATOR" value="@PITCH"/>
<set servo="RUDDER" value="@YAW"/>
</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.0" unit="rad"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0.103000000119" unit="rad"/>
</section>
<section name="TRIM" prefix="COMMAND_">
<define name="ROLL_TRIM" value="0"/>
<define name="PITCH_TRIM" value="788."/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.8"/>
<define name="MAX_PITCH" value="0.8"/>
</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="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<define name="NAV_GLIDE_PITCH_TRIM" value="0."/>
</section>
<section name="CATAPULT" prefix="NAV_CATAPULT_" >
<define name="MOTOR_DELAY" value="45" />
<define name="HEADING_DELAY" value="(60*3)" />
<define name="ACCELERATION_THRESHOLD" value="1.75" />
<define name="INITIAL_PITCH" value="(15.0/57.0)" />
<define name="INITIAL_THROTTLE" value="1.0" />
</section>
<section name="GLS_APPROACH" prefix="APP_" >
<define name="ANGLE" value="5" />
<define name="INTERCEPT_AF_TOD" value="10" />
<define name="TARGET_SPEED" value="13" />
</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.104999996722"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="3."/>
<define name="ALTITUDE_PRE_CLIMB_CORRECTION" value="0.0960000008345"/>
<!--
<define name="AUTO_PITCH_PGAIN" value="-0.00"/>
<define name="AUTO_PITCH_IGAIN" value="-0.00"/>
-->
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.5"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.36700001359"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.626999974251"/>
<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.518000006676" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="0.00"/>
<define name="AUTO_THROTTLE_IGAIN" value="0."/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.307000011206"/>
<define name="THROTTLE_SLEW_LIMITER" value="1" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="1.16600000858"/>
<define name="COURSE_DGAIN" value="0.324999988079"/>
<define name="COURSE_PRE_BANK_CORRECTION" value="0.889999985695"/>
<define name="ROLL_MAX_SETPOINT" value="0.586000025272" 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="12587.4130859"/>
<define name="PITCH_DGAIN" value="1.5"/>
<define name="ELEVATOR_OF_ROLL" value="1273.88500977"/>
<define name="ROLL_SLEW" value="1."/>
<define name="ROLL_ATTITUDE_GAIN" value="7972.02783203"/>
<define name="ROLL_RATE_GAIN" value="500."/>
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="70"/>
<define name="BLEND_END" value="60"/>
<define name="CLIMB_THROTTLE" value="0.949999988079"/>
<define name="CLIMB_PITCH" value="0.352999985218"/>
<define name="DESCENT_THROTTLE" value="0."/>
<define name="DESCENT_PITCH" value="-0.252000004053"/>
<define name="CLIMB_NAV_RATIO" value="0.8"/>
<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="gps_ubx_ucenter.xml"/>
<!--
<load name="adc_generic.xml">
<configure name="ADC_CHANNEL_GENERIC1" value="0" />
<configure name="ADC_CHANNEL_GENERIC2" value="1" />
</load>
-->
<load name="light.xml">
<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="digital_cam.xml">
<define name="DC_SHUTTER_LED" value="3"/>
</load>
<load name="nav_catapult.xml"/>
</modules>
<firmware name="fixedwing">
<target name="ap" board="lisa_m_2.0">
<!-- this define is not available in paparazzi v4.1 -->
<!--define name="LISA_M_LONGITUDINAL_X"/-->
<configure name="SEPARATE_FBW" value="1"/>
<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"/>
<define name="LINK_MCU_LED" value="4"/>
<!-- split of ap/fbw specific subsystems for ap -->
<subsystem name="actuators" type="dummy"/>
<subsystem name="intermcu" type="uart">
<configure name="INTERMCU_PORT_NR" value="5"/>
</subsystem>
<subsystem name="control"/>
<subsystem name="navigation" type="extra"/>
</target>
<target name="fbw" board="lisa_m_2.0">
<configure name="SYS_TIME_LED" value="2"/>
<define name="RADIO_CONTROL_LED" value="4"/>
<define name="LINK_MCU_LED" value="3"/>
<define name="OUTBACK_CHALLENGE_DANGEROUS_RULE_RC_LOST_NO_AP" value="1"/>
<define name="OUTBACK_CHALLENGE_VERY_DANGEROUS_RULE_AP_CAN_FORCE_FAILSAFE" value="1"/>
<subsystem name="radio_control" type="ppm"/>
<!-- split of ap/fbw specific subsystems for fbw -->
<subsystem name="actuators" type="direct"/>
<subsystem name="intermcu" type="uart">
<configure name="INTERMCU_PORT_NR" value="2"/>
</subsystem>
</target>
<target name="sim" board="pc">
<subsystem name="radio_control" type="ppm"/>
<subsystem name="control"/>
<subsystem name="navigation" type="extra"/>
</target>
<configure name="FLASH_MODE" value="JTAG"/>
<configure name="NO_LUFTBOOT" value="1"/>
<define name="AGR_CLIMB"/>
<define name="LOITER_TRIM"/>
<define name="ALT_KALMAN"/>
<define name="TUNE_AGRESSIVE_CLIMB"/>
<define name="STRONG_WIND"/>
<define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/>
<define name="RADIO_CONTROL_AUTO1"/>
<!-- Communication -->
<subsystem name="telemetry" type="transparent">
<configure name="MODEM_BAUD" value="B9600"/>
<configure name="MODEM_PORT" value="UART2"/>
</subsystem>
<!-- Sensors -->
<subsystem name="imu" type="aspirin_v2.1"/>
<subsystem name="gps" type="ublox">
<configure name="GPS_PORT" value="UART1"/>
</subsystem>
<subsystem name="ahrs" type="float_dcm"/>
<subsystem name="ins" type="alt_float"/>
</firmware>
</airframe>
-248
View File
@@ -1,248 +0,0 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
Lisa + Aspirin v2 using SPI only
-->
<airframe name="LisaAspirin2">
<servos>
<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>
<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="AILEVON_LEFT" value="@ROLL + @PITCH"/>
<set servo="AILEVON_RIGHT" value="@ROLL - @PITCH"/>
<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="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"/>
</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_FREQUENCY" value="60" unit="Hz"/>
<define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_VSPEED" value="3."/>
<define name="GLIDE_PITCH" value="45" unit="deg"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="-0.03"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.32"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.65"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.15" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="-0.01"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
<define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.20000004768"/>
<define name="COURSE_DGAIN" value="0.3"/>
<define name="COURSE_PRE_BANK_CORRECTION" value="0.2"/>
<define name="ROLL_MAX_SETPOINT" value="0.75" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
<define name="PITCH_PGAIN" value="-12000."/>
<define name="PITCH_DGAIN" value="1.5"/>
<define name="ELEVATOR_OF_ROLL" value="1000."/>
<define name="ROLL_SLEW" value="1."/>
<define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
<define name="ROLL_RATE_GAIN" value="0."/>
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="20"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
<define name="BLEND_END" value="10"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
<define name="CLIMB_THROTTLE" value="1.00"/><!-- Gaz for Aggressive Climb -->
<define name="CLIMB_PITCH" value="0.3"/><!-- Pitch for Aggressive Climb -->
<define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for Aggressive Decent -->
<define name="DESCENT_PITCH" value="-0.25"/><!-- Pitch for Aggressive Decent -->
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
<define name="DESCENT_NAV_RATIO" value="1.0"/>
</section>
<section name="FAILSAFE" prefix="FAILSAFE_">
<define name="DEFAULT_THROTTLE" value="0.35" unit="%"/>
<define name="DEFAULT_ROLL" value="0.17" unit="rad"/>
<define name="DEFAULT_PITCH" value="0.08" unit="rad"/>
<define name="HOME_RADIUS" value="DEFAULT_CIRCLE_RADIUS" unit="m"/>
<define name="KILL_MODE_DISTANCE" value="(MAX_DIST_FROM_HOME*1.5)"/>
<define name="DELAY_WITHOUT_GPS" value="3" unit="s"/>
</section>
<section name="DIGITAL_CAMERA" prefix="DC_">
<define name="AUTOSHOOT_QUARTERSEC_PERIOD" value="6" unit="quarter_second"/>
<define name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
</section>
<modules>
<!--
<load name="light.xml">
<define name="LIGHT_LED_STROBE" value="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="3"/>
</load>
-->
</modules>
<firmware name="fixedwing">
<target name="ap" board="lisa_l_1.0">
<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="1"/>
</target>
<target name="sim" board="pc"/>
<define name="AGR_CLIMB"/>
<define name="LOITER_TRIM"/>
<!-- Sensors -->
<!--
<subsystem name="ahrs" type="int_cmpl_quat">
<define name="AHRS_GRAVITY_UPDATE_COORDINATED_TURN" />
</subsystem>
-->
<subsystem name="imu" type="aspirin_v2.1"/>
<subsystem name="ahrs" type="float_dcm">
<configure name="USE_MAGNETOMETER" value="0"/>
</subsystem>
<subsystem name="ins" type="alt_float"/>
<subsystem name="radio_control" type="ppm"/>
<!-- Communication -->
<subsystem name="telemetry" type="xbee_api">
<configure name="MODEM_BAUD" value="B57600"/>
</subsystem>
<!-- Actuators -->
<subsystem name="control"/>
<!-- Sensors -->
<subsystem name="navigation"/>
<subsystem name="gps" type="ublox"/>
</firmware>
</airframe>
+260
View File
@@ -0,0 +1,260 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="TwinStarXSens">
<servos>
<servo name="THROTTLE_LEFT" no="1" min="1100" neutral="1100" max="1900"/>
<servo name="THROTTLE_RIGHT" no="0" min="1100" neutral="1100" max="1900"/>
<servo name="AILERON_RIGHT" no="2" min="2300" neutral="1550" max="700"/>
<servo name="AILERON_LEFT" no="3" min="2300" neutral="1550" max="700"/>
<servo name="ELEVATOR" no="4" 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="0"/>
</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>
<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="130"/>
</section>
<command_laws>
<!-- Brake Rate Limiter -->
<let var="brake_value_nofilt" value="Chop(-@BRAKE, 0, MAX_PPRZ)"/>
<ratelimit var="brake_value" value="$brake_value_nofilt" rate_min="-MAX_BRAKE_RATE" rate_max="MAX_BRAKE_RATE" />
<!-- Differential Aileron Depending on Brake Value -->
<let var="aileron_up_rate" value="(AILERON_RATE_UP * (MAX_PPRZ - $brake_value)) + (AILERON_RATE_UP_BRAKE * $brake_value)"/>
<let var="aileron_down_rate" value="(AILERON_RATE_DOWN * (MAX_PPRZ - $brake_value)) + (AILERON_RATE_DOWN_BRAKE * $brake_value)"/>
<let var="aileron_up" value="((-@ROLL) * (((float)$aileron_up_rate) / ((float)MAX_PPRZ)))"/>
<let var="aileron_down" value="((-@ROLL) * (((float)$aileron_down_rate) / ((float)MAX_PPRZ)))"/>
<let var="leftturn" value="((-@ROLL) >= 0? 1 : 0)"/>
<let var="rightturn" value="(1 - $leftturn)"/>
<set servo="AILERON_LEFT" value="($aileron_up * $leftturn) + ($aileron_down * $rightturn) - $brake_value*(BRAKE_AILEVON)"/>
<set servo="AILERON_RIGHT" value="($aileron_up * $rightturn) + ($aileron_down * $leftturn) + $brake_value*(BRAKE_AILEVON)"/>
<!-- Differential Thurst -->
<set servo="THROTTLE_LEFT" value="@THROTTLE - @ROLL * (YAW_THRUST)"/>
<set servo="THROTTLE_RIGHT" value="@THROTTLE + @ROLL * (YAW_THRUST)"/>
<!-- Pitch with Brake-Trim Function -->
<set servo="ELEVATOR" value="-@PITCH * PITCH_GAIN + BRAKE_PITCH * $brake_value"/>
</command_laws>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.7"/>
<define name="MAX_PITCH" value="0.7"/>
</section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0"/>
</section>
<!-- 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.0f"/>
<define name="GPS_IMU_LEVER_ARM_Y" value="0.0f"/>
<define name="GPS_IMU_LEVER_ARM_Z" value="0.0f"/>
</section>
<section name="ADC" prefix="ADC_CHANNEL_">
<define name="CURRENT" value="AdcBank1(5)"/>
</section>
<section name="BAT">
<define name="VoltageOfAdc(adc)" value="(0.01688000f*(adc)+2)"/>
<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="FAILSAFE" prefix="FAILSAFE_">
<define name="DEFAULT_THROTTLE" value="0.45" 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="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="0.75"/>
<define name="COURSE_DGAIN" value="0.45"/>
<define name="COURSE_PRE_BANK_CORRECTION" value="0.935"/>
<define name="ROLL_MAX_SETPOINT" value="0.8" unit="radians"/>
<define name="PITCH_MAX_SETPOINT" value="0.4" unit="radians"/>
<define name="PITCH_MIN_SETPOINT" value="-0.275" unit="radians"/>
<define name="PITCH_PGAIN" value="11000"/>
<define name="PITCH_DGAIN" value="0."/>
<define name="ELEVATOR_OF_ROLL" value="1000."/>
<!-- roll rate loop -->
<define name="ROLL_ATTITUDE_GAIN" value="7000."/>
<define name="ROLL_RATE_GAIN" value="1100"/>
</section>
<section name="VERTICAL CONTROL" prefix="V_CTL_">
<!-- outer loop proportional gain -->
<define name="ALTITUDE_PGAIN" value="0.1"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="3.0"/>
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value=".38"/>
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.45"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.62"/>
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1000."/>
<define name="AUTO_THROTTLE_DASH_TRIM" value="-1500"/>
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.2" 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.175"/>
<define name="THROTTLE_SLEW_LIMITER" value="1" unit="s"/>
</section>
<section name="NAV">
<define name="AGR_CLIMB_PITCH" value="0."/> <!-- Needed For OSAMNav -->
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="CONTROL_FREQUENCY" value="60" unit="Hz"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="75."/>
<define name="GLIDE_AIRSPEED" value="10"/>
<define name="GLIDE_PITCH" value="45" unit="deg"/>
<define name="COMMAND_ROLL_TRIM" value="180"/>
<define name="COMMAND_PITCH_TRIM" value="-194."/>
</section>
<section name="DIGITAL_CAMERA" prefix="DC_">
<define name="AUTOSHOOT_QUARTERSEC_PERIOD" value="8" unit="quarter_second"/>
<define name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
</section>
<firmware name="fixedwing">
<target name="ap" board="classix">
<configure name="SYS_TIME_LED" value="2"/>
<define name="USE_LED_6" value="1"/>
<define name="LED_6_BANK" value="0"/>
<define name="LED_6_PIN" value="15"/>
<define name="USE_AD0"/>
<define name="USE_AD0_3"/>
<define name="ADC_6" value="AdcBank0\(3\)"/>
<subsystem name="control"/>
<subsystem name="navigation" type="extra"/>
</target>
<target name="fbw" board="classix">
<configure name="SYS_TIME_LED" value="2"/>
<define name="RADIO_CONTROL_LED" value="1"/>
<define name="USE_AD1_5" value="1"/>
<define name="USE_AD1" value="1"/>
<configure name="ACTUATORS" value="actuators_ppm"/>
<define name="ADC_CHANNEL_VSUPPLY" value="AdcBank0\(6\)"/>
<subsystem name="radio_control" type="ppm"/>
</target>
<target name="sim" board="pc">
<subsystem name="radio_control" type="ppm"/>
<subsystem name="control"/>
<subsystem name="navigation" type="extra"/>
</target>
<define name="DC_IMAGE_BUFFER" value="65000" />
<define name="STRONG_WIND"/>
<define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/>
<define name="LOITER_TRIM"/>
<define name="RADIO_CONTROL_AUTO1"/>
<subsystem name="telemetry" type="xbee_api">
<configure name="MODEM_PORT" value="UART0"/>
<configure name="MODEM_BAUD" value="B9600"/>
</subsystem>
<subsystem name="ins" type="xsens">
<configure name="XSENS_UART_NR" value="1"/>
</subsystem>
</firmware>
<modules>
<load name="digital_cam.xml">
<define name="DC_SHUTTER_LED" value="6"/>
</load>
<load name="adc_generic.xml">
<define name="ADC_GENERIC_NB_SAMPLES" value="32"/>
<configure name="ADC_CHANNEL_GENERIC1" value="ADC_6"/> <!-- e.g. current sensor -->
</load>
<load name="photogrammetry_calculator.xml" />
</modules>
<!-- --------------------------------------------------------------------------- -->
<section name="Photogrammetry" prefix="PHOTOGRAMMETRY_">
<!-- Camera Parameters -->
<define name="FOCAL_LENGTH" value="20" unit="mm"/>
<define name="SENSOR_WIDTH" value="24" unit="mm"/>
<define name="SENSOR_HEIGHT" value="13.5" unit="mm"/>
<define name="PIXELS_WIDTH" value="1280" unit=""/>
<!-- Flight Safety Parameters -->
<define name="HEIGHT_MIN" value="40" unit="m"/>
<define name="HEIGHT_MAX" value="300" unit="m"/>
<define name="RADIUS_MIN" value="70" unit="m"/>
</section>
</airframe>
-276
View File
@@ -1,276 +0,0 @@
<!-- this is an asctec frame equiped with Lisa/L#3 and asctec V2 controllers -->
<airframe name="booz2_a7">
<servos>
<servo name="FRONT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK" no="1" min="0" neutral="0" max="255"/>
<servo name="LEFT" no="2" min="0" neutral="0" max="255"/>
<servo name="RIGHT" no="3" min="0" neutral="0" max="255"/>
</servos>
<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>
<!-- for the sim -->
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="3"/>
<define name="MAX_MOTOR" value="200"/>
<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="32858"/>
<define name="GYRO_Q_NEUTRAL" value="33152"/>
<define name="GYRO_R_NEUTRAL" value="31779"/>
<define name="GYRO_P_SENS" value=" 1.101357422" integer="16"/>
<define name="GYRO_Q_SENS" value=" 1.122670898" integer="16"/>
<define name="GYRO_R_SENS" value=" 1.104890137" integer="16"/>
<define name="ACCEL_X_NEUTRAL" value="32899"/>
<define name="ACCEL_Y_NEUTRAL" value="33281"/>
<define name="ACCEL_Z_NEUTRAL" value="32569"/>
<define name="ACCEL_X_SENS" value="2.57702956051" integer="16"/>
<define name="ACCEL_Y_SENS" value="2.57835230627" integer="16"/>
<define name="ACCEL_Z_SENS" value="2.54311399868" integer="16"/>
<define name="MAG_X_NEUTRAL" value="58"/>
<define name="MAG_Y_NEUTRAL" value="92"/>
<define name="MAG_Z_NEUTRAL" value="-3"/>
<define name="MAG_X_SENS" value="4.70018395734" integer="16"/>
<define name="MAG_Y_SENS" value="4.884119848" integer="16"/>
<define name="MAG_Z_SENS" value="2.59926404993" 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="135." unit="deg"/>
</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_ATTITUDE_Z_HOLD"/>
</section>
<section name="BAT">
<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="45." unit="deg"/>
<define name="SP_MAX_THETA" value="45." unit="deg"/>
<define name="SP_MAX_R" value="90." unit="deg/s"/>
<define name="DEADBAND_R" value="250"/>
<!-- reference -->
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
<define name="REF_ZETA_P" value="0.85"/>
<define name="REF_MAX_P" value="300." unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(7000.)"/>
<define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.85"/>
<define name="REF_MAX_Q" value="300." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(7000.)"/>
<define name="REF_OMEGA_R" value="500" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="180." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(1800.)"/>
<!-- gaui props
<define name="PHI_PGAIN" value="900"/>
<define name="PHI_DGAIN" value="200"/>
<define name="PHI_IGAIN" value="200"/>
<define name="THETA_PGAIN" value="900"/>
<define name="THETA_DGAIN" value="200"/>
<define name="THETA_IGAIN" value="200"/>
<define name="PSI_PGAIN" value="900"/>
<define name="PSI_DGAIN" value="200"/>
<define name="PSI_IGAIN" value="10"/>
<define name="PHI_DDGAIN" value=" 200"/>
<define name="THETA_DDGAIN" value=" 200"/>
<define name="PSI_DDGAIN" value=" 200"/>
-->
<!-- feedback -->
<define name="PHI_PGAIN" value="2000"/>
<define name="PHI_DGAIN" value="400"/>
<define name="PHI_IGAIN" value="200"/>
<define name="THETA_PGAIN" value="2000"/>
<define name="THETA_DGAIN" value="400"/>
<define name="THETA_IGAIN" value="200"/>
<define name="PSI_PGAIN" value="2000"/>
<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="AHRS" prefix="AHRS_">
<define name="PROPAGATE_FREQUENCY" value="512"/>
<define name="H_X" value=" 0.51562740288882"/>
<define name="H_Y" value="-0.05707735220832"/>
<define name="H_Z" value=" 0.85490967783446"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="10." 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="500"/>
<define name="HOVER_KD" value="200"/>
<define name="HOVER_KI" value="0"/>
-->
<define name="HOVER_KP" value="150"/>
<define name="HOVER_KD" value="80"/>
<define name="HOVER_KI" value="0"/>
<!-- 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.2"/> -->
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="PGAIN" value="50"/>
<define name="DGAIN" value="100"/>
<define name="IGAIN" value="15"/>
<define name="NGAIN" value="0"/>
</section>
<section name="MISC">
<define name="FACE_REINJ_1" value="1024"/>
</section>
<section name="SIMULATOR" prefix="NPS_">
<define name="ACTUATOR_NAMES" value="{&quot;front_motor&quot;, &quot;back_motor&quot;, &quot;right_motor&quot;, &quot;left_motor&quot;}"/>
<define name="INITIAL_CONDITITONS" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
<modules main_freq="512">
<load name="i2c_abuse_test.xml"/>
</modules>
<firmware name="rotorcraft">
<!-- <define name="USE_PERSISTENT_SETTINGS"/> -->
<!-- <define name="USE_INS_NAV_INIT"/> -->
<define name="FAILSAFE_GROUND_DETECT"/>
<define name="USE_GPS_ACC4R"/>
<target name="ap" board="lisa_l_1.0">
<subsystem name="radio_control" type="ppm"/>
<subsystem name="actuators" type="asctec"/>
</target>
<target name="sim" board="pc">
<subsystem name="fdm" type="jsbsim"/>
<subsystem name="radio_control" type="ppm"/>
<subsystem name="actuators" type="mkk"/>
</target>
<subsystem name="telemetry" type="transparent"/>
<subsystem name="imu" type="b2_v1.1"/>
<subsystem name="gps" type="ublox">
<configure name="GPS_BAUD" value="B57600"/>
</subsystem>
<!--subsystem name="ahrs" type="int_cmpl_euler"/-->
<subsystem name="stabilization" type="euler"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<subsystem name="ins" type="hff"/>
</firmware>
<firmware name="lisa_test_progs">
<target name="test_led" board="lisa_l_1.0"/>
<target name="test_uart" board="lisa_l_1.0"/>
<target name="test_servos" board="lisa_l_1.0"/>
<target name="test_telemetry" board="lisa_l_1.0"/>
<target name="test_baro" board="lisa_l_1.0"/>
<target name="test_imu_b2" board="lisa_l_1.0"/>
<target name="test_imu_b2_2" board="lisa_l_1.0"/>
<target name="test_imu_aspirin" board="lisa_l_1.0"/>
<target name="test_rc_spektrum" board="lisa_l_1.0"/>
<target name="test_rc_ppm" board="lisa_l_1.0"/>
<target name="test_adc" board="lisa_l_1.0"/>
<target name="test_hmc5843" board="lisa_l_1.0"/>
<target name="test_itg3200" board="lisa_l_1.0"/>
<target name="test_adxl345" board="lisa_l_1.0"/>
<target name="test_esc_mkk_simple" board="lisa_l_1.0"/>
<target name="test_esc_asctecv1_simple" board="lisa_l_1.0"/>
<target name="test_actuators_mkk" board="lisa_l_1.0"/>
<target name="test_actuators_asctecv1" board="lisa_l_1.0"/>
<target name="tunnel_sw" board="lisa_l_1.0"/>
<target name="tunnel_hw" board="lisa_l_1.0"/>
</firmware>
<firmware name="lisa_passthrough">
<target name="overo_test_passthrough" board="lisa_l_1.0" >
<param name="HOST" value="A7"/>
<param name="USER" value=""/>
<param name="TARGET_DIR" value="~"/>
<param name="PERIODIC_FREQ" value="512"/>
</target>
<target name="stm_passthrough" board="lisa_l_1.0">
<subsystem name="radio_control" type="spektrum"/>
<subsystem name="imu" type="b2_v1.1"/>
</target>
</firmware>
</airframe>
@@ -1,5 +1,6 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="Yapa v1">
<servos>
@@ -81,15 +82,12 @@
<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"/>
<define name="ALTITUDE_PGAIN" value="0.03"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
@@ -100,7 +98,7 @@
<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_PGAIN" value="0.01"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
@@ -108,21 +106,21 @@
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.20000004768"/>
<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="ROLL_MAX_SETPOINT" value="0.9" unit="rad"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="rad"/>
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="rad"/>
<define name="PITCH_PGAIN" value="-12000."/>
<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."/>
<define name="ROLL_ATTITUDE_GAIN" value="11500"/>
<define name="ROLL_RATE_GAIN" value="600."/>
</section>
<section name="AGGRESSIVE" prefix="AGR_">
@@ -1,13 +1,14 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="Yapa v1">
<servos>
<servo name="THROTTLE" no="8" min="1000" neutral="1000" max="2000"/>
<servo name="AILERON_LEFT" no="9" min="1000" neutral="1500" max="2000"/>
<servo name="AILERON_RIGHT" no="4" min="2000" neutral="1500" max="1000"/>
<servo name="ELEVATOR" no="5" min="2000" neutral="1500" max="1000"/>
<servo name="RUDDER" no="3" min="1100" neutral="1500" max="1900"/>
<servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/>
<servo name="AILERON_LEFT" no="1" min="1000" neutral="1500" max="2000"/>
<servo name="AILERON_RIGHT" no="2" 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>
<commands>
@@ -109,7 +110,7 @@
<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="rad"/>
<define name="ROLL_MAX_SETPOINT" value="0.9" unit="rad"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="rad"/>
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="rad"/>
@@ -222,7 +222,7 @@
<firmware name="fixedwing">
<target name="ap" board="tiny_2.11">
<target name="ap" board="yapa_2.0">
<define name="STRONG_WIND"/>
<define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/>
@@ -1,95 +1,87 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
Tiny + XSens + XBee
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="1000" neutral="1500" max="2000"/>
<servo name="AILERON_RIGHT" no="6" min="2000" neutral="1500" max="1000"/>
<servo name="ELEVATOR" no="3" min="2000" neutral="1500" max="1000"/>
<servo name="RUDDER" no="4" min="1100" neutral="1500" max="1900"/>
<servo name="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="BRAKE" failsafe_value="0"/> <!-- both elerons up as butterfly brake ? -->
<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"/>
<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"/>
</section>
<command_laws>
<!-- Brake Rate Limiter -->
<let var="brake_value_nofilt" value="Chop(-@BRAKE, 0, MAX_PPRZ)"/>
<ratelimit var="brake_value" value="$brake_value_nofilt" rate_min="-MAX_BRAKE_RATE" rate_max="MAX_BRAKE_RATE" />
<set servo="CAM_PAN" value="@CAM_PAN"/>
<set servo="CAM_TILT" value="@CAM_TILT"/>
<!-- 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)"/>
<set servo="RUDDER" value="@ROLL"/>
<!-- Differential Thurst -->
<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>
<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="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 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="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
<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_FREQUENCY" value="60" unit="Hz"/>
<define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<!-- <define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
@@ -102,7 +94,7 @@
<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"/>
<define name="ALTITUDE_PGAIN" value="0.03"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
@@ -113,7 +105,7 @@
<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_PGAIN" value="0.01"/>
<define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
@@ -121,23 +113,21 @@
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="-1.20000004768"/>
<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="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="1.5"/>
<define name="PITCH_PGAIN" value="12000."/>
<define name="PITCH_DGAIN" value="0"/>
<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."/>
<define name="ROLL_ATTITUDE_GAIN" value="11500"/>
<define name="ROLL_RATE_GAIN" value="600."/>
</section>
<section name="AGGRESSIVE" prefix="AGR_">
@@ -168,33 +158,44 @@
<modules>
<load name="i2c_abuse_test.xml"/>
<load name="ins_chimu_spi.xml" >
<define name="CHIMU_BIG_ENDIAN" />
</load>
<load name="cam_point.xml" />
<load name="gps_ubx_ucenter.xml">
<define name="GPS_PORT_ID" value="GPS_PORT_UART2" />
</load>
</modules>
<firmware name="fixedwing">
<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 name="ap" board="tiny_2.11">
<define name="STRONG_WIND"/>
<define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/>
<define name="LOITER_TRIM"/>
</target>
<target name="sim" board="pc"/>
<!-- <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="B57600"/>
<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>
<subsystem name="spi_slave_hs"/>
</firmware>
</airframe>
+2 -2
View File
@@ -43,7 +43,7 @@
<define name="BRAKE_AILEVON" value="-0.7f"/>
<define name="BRAKE_PITCH" value="0.1f"/>
<define name="MAX_BRAKE_RATE" value="130"/>
<define name="MAX_BRAKE_RATE" value="80"/>
<define name="RUDDER_OF_AILERON" value="0.3"/>
@@ -207,7 +207,7 @@
<firmware name="fixedwing">
<target name="ap" board="tiny_2.11"/>
<target name="ap" board="yapa_2.0"/>
<target name="sim" board="pc"/>
<define name="STRONG_WIND"/>
View File
+317
View File
@@ -0,0 +1,317 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
Lisa + Aspirin v2 using SPI only
-->
<airframe name="LisaAspirin2">
<servos>
<servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/>
<servo name="AILEVON_LEFT" no="1" min="1200" neutral="1500" max="1800"/>
<servo name="ELEVATOR" no="2" min="2000" neutral="1500" max="1000"/>
<servo name="RUDDER" no="3" min="1100" neutral="1500" max="1900"/>
<servo name="AILEVON_RIGHT" no="4" min="1800" neutral="1500" max="1200"/>
</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="FORCECRASH" failsafe_value="0"/>
</commands>
<rc_commands>
<set command="THROTTLE" value="@THROTTLE"/>
<set command="ROLL" value="@ROLL"/>
<set command="PITCH" value="@PITCH"/>
<set command="YAW" value="@YAW"/>
<!-- <set command="FORCECRASH" value="@FLAPS"/> -->
</rc_commands>
<command_laws>
<set servo="AILEVON_LEFT" value="@ROLL"/>
<set servo="AILEVON_RIGHT" value="-@ROLL"/>
<set servo="THROTTLE" value="@THROTTLE"/>
<set servo="ELEVATOR" value="@PITCH"/>
<set servo="RUDDER" value="@YAW"/>
</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.0" unit="rad"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0.103000000119" unit="rad"/>
</section>
<section name="TRIM" prefix="COMMAND_">
<define name="ROLL_TRIM" value="0"/>
<define name="PITCH_TRIM" value="788."/>
</section>
<section name="AUTO1" prefix="AUTO1_">
<define name="MAX_ROLL" value="0.8"/>
<define name="MAX_PITCH" value="0.8"/>
</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="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
<define name="NAV_GLIDE_PITCH_TRIM" value="0."/>
</section>
<section name="CATAPULT" prefix="NAV_CATAPULT_" >
<define name="MOTOR_DELAY" value="45" />
<define name="HEADING_DELAY" value="(60*3)" />
<define name="ACCELERATION_THRESHOLD" value="1.75" />
<define name="INITIAL_PITCH" value="(15.0/57.0)" />
<define name="INITIAL_THROTTLE" value="1.0" />
</section>
<section name="GLS_APPROACH" prefix="APP_" >
<define name="ANGLE" value="5" />
<define name="INTERCEPT_AF_TOD" value="10" />
<define name="TARGET_SPEED" value="13" />
</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.104999996722"/>
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="3."/>
<define name="ALTITUDE_PRE_CLIMB_CORRECTION" value="0.0960000008345"/>
<!--
<define name="AUTO_PITCH_PGAIN" value="-0.00"/>
<define name="AUTO_PITCH_IGAIN" value="-0.00"/>
-->
<!-- auto throttle inner loop -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.5"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.36700001359"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.626999974251"/>
<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.518000006676" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="0.00"/>
<define name="AUTO_THROTTLE_IGAIN" value="0."/>
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.307000011206"/>
<define name="THROTTLE_SLEW_LIMITER" value="1" unit="s"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="1.16600000858"/>
<define name="COURSE_DGAIN" value="0.324999988079"/>
<define name="COURSE_PRE_BANK_CORRECTION" value="0.889999985695"/>
<define name="ROLL_MAX_SETPOINT" value="0.586000025272" 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="12587.4130859"/>
<define name="PITCH_DGAIN" value="1.5"/>
<define name="ELEVATOR_OF_ROLL" value="1273.88500977"/>
<define name="ROLL_SLEW" value="1."/>
<define name="ROLL_ATTITUDE_GAIN" value="7972.02783203"/>
<define name="ROLL_RATE_GAIN" value="500."/>
</section>
<section name="AGGRESSIVE" prefix="AGR_">
<define name="BLEND_START" value="70"/>
<define name="BLEND_END" value="60"/>
<define name="CLIMB_THROTTLE" value="0.949999988079"/>
<define name="CLIMB_PITCH" value="0.352999985218"/>
<define name="DESCENT_THROTTLE" value="0."/>
<define name="DESCENT_PITCH" value="-0.252000004053"/>
<define name="CLIMB_NAV_RATIO" value="0.8"/>
<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="gps_ubx_ucenter.xml"/>
<!--
<load name="adc_generic.xml">
<configure name="ADC_CHANNEL_GENERIC1" value="0" />
<configure name="ADC_CHANNEL_GENERIC2" value="1" />
</load>
-->
<load name="light.xml">
<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="digital_cam.xml">
<define name="DC_SHUTTER_LED" value="3"/>
</load>
<load name="nav_catapult.xml"/>
</modules>
<firmware name="fixedwing">
<target name="fbw" board="lisa_m_2.0">
<configure name="SYS_TIME_LED" value="2" />
<define name="RADIO_CONTROL_LED" value="4"/>
<configure name="FLASH_MODE" value="JTAG" />
<configure name="NO_LUFTBOOT" value="1" />
<!-- <configure name="BMP_PORT" value="/dev/ttyACM0" /> -->
<define name="OUTBACK_CHALLENGE_DANGEROUS_RULE_RC_LOST_NO_AP" value="1" />
<define name="OUTBACK_CHALLENGE_VERY_DANGEROUS_RULE_AP_CAN_FORCE_FAILSAFE" value="1" />
</target>
<subsystem name="radio_control" type="ppm"/>
<subsystem name="actuators" type="direct"/>
<subsystem name="intermcu" type="uart">
<configure name="INTERMCU_PORT_NR" value="2" />
</subsystem>
</firmware>
<firmware name="fixedwing">
<target name="ap" board="lisa_m_2.0">
<define name="LISA_M_LONGITUDINAL_X"/>
<configure name="SEPARATE_FBW" value="1"/>
<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="FLASH_MODE" value="JTAG" />
<configure name="NO_LUFTBOOT" value="1" />
<!-- <configure name="BMP_PORT" value="/dev/ttyACM0" /> -->
<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"/>
<define name="TUNE_AGRESSIVE_CLIMB"/>
<define name="STRONG_WIND"/>
<define name="WIND_INFO"/>
<define name="WIND_INFO_RET"/>
<define name="RADIO_CONTROL_AUTO1"/>
<subsystem name="imu" type="aspirin_v2.1"/>
<subsystem name="ahrs" type="float_dcm" />
<!-- Communication -->
<!-- <subsystem name="telemetry" type="xbee_api"> -->
<subsystem name="telemetry" type="transparent">
<configure name="MODEM_BAUD" value="B9600"/>
<configure name="MODEM_PORT" value="UART2"/>
</subsystem>
<!-- Actuators -->
<subsystem name="control"/>
<!-- Sensors -->
<subsystem name="navigation" type="extra"/>
<subsystem name="gps" type="ublox">
<configure name="GPS_PORT" value="UART1"/>
</subsystem>
<subsystem name="actuators" type="dummy"/>
<subsystem name="intermcu" type="uart">
<configure name="INTERMCU_PORT_NR" value="5" />
</subsystem>
</firmware>
<makefile>
</makefile>
</airframe>
+2 -2
View File
@@ -186,7 +186,7 @@ fbw.CFLAGS += -DDOWNLINK -DUSE_UART0 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLI
fbw.srcs += subsystems/datalink/downlink.c subsystems/datalink/pprz_transport.c $(SRC_ARCH)/mcu_periph/uart_arch.c
fbw.CFLAGS += -DINTER_MCU -DMCU_SPI_LINK -DUSE_SPI -DSPI_SLAVE
fbw.srcs += inter_mcu.c link_mcu.c spi.c $(SRC_ARCH)/spi_hw.c
fbw.srcs += inter_mcu.c link_mcu_spi.c spi.c $(SRC_ARCH)/spi_hw.c
fbw.CFLAGS += -DADC -DUSE_AD0
fbw.srcs += $(SRC_ARCH)/adc_hw.c
@@ -202,7 +202,7 @@ ap.CFLAGS += -DDOWNLINK -DUSE_UART0 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLIN
ap.srcs += subsystems/datalink/downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c subsystems/datalink/pprz_transport.c
ap.CFLAGS += -DINTER_MCU -DMCU_SPI_LINK -DUSE_SPI -DSPI_MASTER -DUSE_SPI_SLAVE0
ap.srcs += inter_mcu.c link_mcu.c spi.c $(SRC_ARCH)/spi_hw.c
ap.srcs += inter_mcu.c link_mcu_spi.c spi.c $(SRC_ARCH)/spi_hw.c
ap.CFLAGS += -DUSE_GPS -DUBX -DUSE_UART1 -DGPS_LINK=Uart1 -DUART1_BAUD=B38400
ap.srcs += gps_ubx.c gps.c latlong.c
+2 -2
View File
@@ -195,7 +195,7 @@ fbw.CFLAGS += -DDOWNLINK -DUSE_UART0 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLI
fbw.srcs += subsystems/datalink/downlink.c subsystems/datalink/pprz_transport.c $(SRC_ARCH)/mcu_periph/uart_arch.c
fbw.CFLAGS += -DINTER_MCU -DMCU_SPI_LINK -DUSE_SPI -DSPI_SLAVE
fbw.srcs += inter_mcu.c link_mcu.c spi.c $(SRC_ARCH)/spi_hw.c
fbw.srcs += inter_mcu.c link_mcu_spi.c spi.c $(SRC_ARCH)/spi_hw.c
fbw.CFLAGS += -DADC -DUSE_AD0
fbw.srcs += $(SRC_ARCH)/adc_hw.c
@@ -208,7 +208,7 @@ ap.CFLAGS += -DDOWNLINK -DUSE_UART0 -DDOWNLINK_TRANSPORT=PprzTransport -DDOWNLIN
ap.srcs += subsystems/datalink/downlink.c $(SRC_ARCH)/mcu_periph/uart_arch.c datalink.c subsystems/navigation/traffic_info.c subsystems/datalink/pprz_transport.c
ap.CFLAGS += -DINTER_MCU -DMCU_SPI_LINK -DUSE_SPI -DSPI_MASTER
ap.srcs += inter_mcu.c link_mcu.c spi.c $(SRC_ARCH)/spi_hw.c
ap.srcs += inter_mcu.c link_mcu_spi.c spi.c $(SRC_ARCH)/spi_hw.c
ap.CFLAGS += -DUSE_GPS -DUBX -DUSE_UART1 -DGPS_LINK=Uart1 -DUART1_BAUD=B38400
ap.srcs += gps_ubx.c gps.c latlong.c
+83
View File
@@ -0,0 +1,83 @@
#
# yapa_2.0.makefile
#
# http://paparazzi.enac.fr/wiki/YAPA/v2.0
#
ARCH=lpc21
BOARD=yapa
BOARD_VERSION=2.0
BOARD_CFG=\"boards/$(BOARD)_$(BOARD_VERSION).h\"
ifndef FLASH_MODE
FLASH_MODE = IAP
endif
LPC21ISP_BAUD = 38400
LPC21ISP_XTAL = 12000
#
# default LED configuration
#
ifndef RADIO_CONTROL_LED
RADIO_CONTROL_LED = none
endif
ifndef BARO_LED
BARO_LED = none
endif
ifndef AHRS_ALIGNER_LED
AHRS_ALIGNER_LED = none
endif
ifndef GPS_LED
GPS_LED = 2
endif
ifndef SYS_TIME_LED
SYS_TIME_LED = 1
endif
#
# default uart settings
#
ifndef GPS_PORT
GPS_PORT = UART0
endif
ifndef GPS_BAUD
GPS_BAUD = B38400
endif
ifndef MODEM_PORT
MODEM_PORT = UART1
endif
ifndef MODEM_BAUD
MODEM_BAUD = B57600
endif
ADC_IR_TOP = ADC_0
ADC_IR1 = ADC_1
ADC_IR2 = ADC_2
ADC_IR_NB_SAMPLES = 16
ADC_GYRO_NB_SAMPLES = 16
ADC_GENERIC_NB_SAMPLES = 16
#
# you can use different actuators by adding a configure option to your firmware section
# e.g. <configure name="ACTUATORS" value="actuators_ppm/>
#
ifndef ACTUATORS
ACTUATORS = actuators_4017
endif
# All targets on the TINY board run on the same processor achitecture
$(TARGET).ARCHDIR = $(ARCH)
@@ -1,4 +0,0 @@
# attitude estimation for fixedwings via dcm algorithm
$(error The attitude_dcm subsystem has been renamed, please replace <subsystem name="attitude" type="dcm"/> with <subsystem name="ahrs" type="dcm"/>)
@@ -1 +0,0 @@
$(error Attitude estimation via infrared has been implemented as an AHRS subsystem now. Please replace <subsystem name="attitude" type="infrared"/> with <subsystem name="ahrs" type="infrared"/> and add the module <load name="infrared_adc.xml"/> in your airframe file.)
@@ -1 +0,0 @@
$(error Attitude estimation via infrared has been implemented as an AHRS subsystem now. Please replace <subsystem name="attitude" type="infrared"/> with <subsystem name="ahrs" type="infrared"/> and add the module <load name="infrared_i2c.xml"/> in your airframe file.)
@@ -240,15 +240,16 @@ jsbsim.srcs += $(SRC_ARCH)/subsystems/settings_arch.c
#
ifeq ($(BOARD),classix)
fbw.CFLAGS += -DMCU_SPI_LINK -DUSE_SPI -DSPI_SLAVE
fbw.srcs += $(SRC_FIXEDWING)/link_mcu.c mcu_periph/spi.c $(SRC_ARCH)/mcu_periph/spi_arch.c
ap_srcs += $(SRC_FIRMWARE)/fbw_downlink.c
ap.CFLAGS += -DMCU_SPI_LINK -DUSE_SPI -DSPI_MASTER -DUSE_SPI_SLAVE0
ap.srcs += $(SRC_FIXEDWING)/link_mcu.c mcu_periph/spi.c $(SRC_ARCH)/mcu_periph/spi_arch.c
include $(CFG_FIXEDWING)/intermcu_spi.makefile
else
# Single MCU's run both
ap.CFLAGS += $(fbw_CFLAGS)
ap.srcs += $(fbw_srcs)
ifeq ($(SEPARATE_FBW),)
ap.CFLAGS += $(fbw_CFLAGS)
ap.srcs += $(fbw_srcs)
else
# avoid fbw_telemetry_mode error
ap_srcs += $(SRC_FIRMWARE)/fbw_downlink.c
endif
endif
#
@@ -1,3 +0,0 @@
# UBlox LEA 4P
$(error The gps_ublox_lea4p subsystem has been renamed, please replace <subsystem name="gps" type="ublox_lea4p"/> with <subsystem name="gps" type="ublox_utm"/> in your airframe file.)
@@ -1,4 +0,0 @@
# UBlox LEA 5H
$(error The gps_ublox_lea5h subsystem has been renamed, please replace <subsystem name="gps" type="ublox_lea5h"/> with <subsystem name="gps" type="ublox"/> in your airframe file.)
@@ -1 +0,0 @@
$(error The imu_booz subsystem has been removed, please replace <subsystem name="imu" type="booz"/> with e.g. <subsystem name="imu" type="yai"/> or "b2_v1.0", "b2_v1.1", "b2_v1.2" as appropriate.)
@@ -0,0 +1,11 @@
# Hey Emacs, this is a -*- makefile -*-
# InterMCU type SPI
fbw.CFLAGS += -DMCU_SPI_LINK -DUSE_SPI -DSPI_SLAVE
fbw.srcs += $(SRC_FIXEDWING)/link_mcu_spi.c mcu_periph/spi.c $(SRC_ARCH)/mcu_periph/spi_arch.c
ap_srcs += $(SRC_FIRMWARE)/fbw_downlink.c
ap.CFLAGS += -DMCU_SPI_LINK -DUSE_SPI -DSPI_MASTER -DUSE_SPI_SLAVE0
ap.srcs += $(SRC_FIXEDWING)/link_mcu_spi.c mcu_periph/spi.c $(SRC_ARCH)/mcu_periph/spi_arch.c
SEPARATE_FBW = 1
@@ -0,0 +1,29 @@
# Hey Emacs, this is a -*- makefile -*-
# InterMCU type UART
ifeq ($(TARGET),fbw)
ifeq ($(INTERMCU_PORT),none)
INTERMCU_PORT_NR = 2
endif
fbw.CFLAGS += -DINTERMCU_LINK=Uart$(INTERMCU_PORT_NR) -DUSE_UART$(INTERMCU_PORT_NR) -DUART$(INTERMCU_PORT_NR)_BAUD=B57600
else
ifeq ($(INTERMCU_PORT),none)
INTERMCU_PORT_NR = 5
endif
ap.CFLAGS += -DINTERMCU_LINK=Uart$(INTERMCU_PORT_NR) -DUSE_UART$(INTERMCU_PORT_NR) -DUART$(INTERMCU_PORT_NR)_BAUD=B57600
endif
ifneq ($(TARGET),sim)
$(TARGET).CFLAGS += -DINTER_MCU -DMCU_UART_LINK
$(TARGET).srcs += ./link_mcu_usart.c
endif
#############################
# CAN:
# fbw.srcs += ./link_mcu_can.c ./mcu_periph/can.c ./arch/stm32/mcu_periph/can_arch.c
# fbw.CFLAGS += -DINTER_MCU -DMCU_CAN_LINK
# $(TARGET).CFLAGS += -DCAN_SJW_TQ=CAN_SJW_1tq -DCAN_BS1_TQ=CAN_BS1_3tq -DCAN_BS2_TQ=CAN_BS2_4tq -DCAN_PRESCALER=12 -DUSE_CAN -DUSE_CAN1 -DUSE_USB_LP_CAN1_RX0_IRQ -DCAN_ERR_RESUME=DISABLE
@@ -0,0 +1 @@
# for classix and AP only boards
+3 -3
View File
@@ -77,7 +77,7 @@
<message name="BAT" id="12">
<field name="throttle" type="int16" unit="pprz"/>
<field name="voltage" type="uint8" unit="1e-1V" alt_unit="V" alt_unit_coef="0.1"/>
<field name="voltage" type="uint16" unit="1e-1V" alt_unit="V" alt_unit_coef="0.1"/>
<field name="amps" type="int16" unit="1e-2A" alt_unit="A" alt_unit_coef="0.01"/>
<field name="flight_time" type="uint16" unit="s"/>
<field name="kill_auto_throttle" type="uint8" unit="bool"/>
@@ -727,7 +727,7 @@
<field name="rc_status" type="uint8" values="OK|LOST|REALLY_LOST"/>
<field name="frame_rate" type="uint8" unit="Hz"/>
<field name="mode" type="uint8" values="MANUAL|AUTO|FAILSAFE"/>
<field name="vsupply" type="uint8" unit="decivolt"/>
<field name="vsupply" type="uint16" unit="decivolt"/>
<field name="current" type="int32" unit="mA"/>
</message>
@@ -1803,7 +1803,7 @@
<field name="ap_motors_on" type="uint8" values="MOTORS_OFF|MOTORS_ON"/>
<field name="ap_h_mode" type="uint8" values="KILL|RATE|ATTITUDE|HOVER|NAV"/>
<field name="ap_v_mode" type="uint8" values="KILL|RC_DIRECT|RC_CLIMB|CLIMB|HOVER|NAV"/>
<field name="vsupply" type="uint8" unit="decivolt"/>
<field name="vsupply" type="uint16" unit="decivolt"/>
<field name="cpu_time" type="uint16" unit="s"/>
</message>
+1 -1
View File
@@ -9,7 +9,7 @@
<file name="point.h"/>
</header>
<init fun="cam_init()"/>
<periodic fun="cam_periodic()" freq="10."/>
<periodic fun="cam_periodic()" />
<makefile>
<define name="CAM"/>
<define name="MOBILE_CAM"/>
+6 -9
View File
@@ -4,15 +4,6 @@
// Use (parts of) the following section in airframe file to change
<section name="DIGITAL_CAMERA" prefix="DC_">
<configure name="PUSH" value"LED_ON" />
<configure name="RELEASE" value"LED_OFF" />
<configure name="AUTOSHOOT_QUARTERSEC_PERIOD" value="6" unit="quarter_second"/>
<configure name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
</section>
# ap.CFLAGS += -DGPS_TRIGGERED_FUNCTION="dc_shoot_on_gps"
# ap.CFLAGS += -DDC_GPS_TRIGGER_START=1
# ap.CFLAGS += -DDC_GPS_TRIGGER_STOP=3
@@ -24,6 +15,12 @@
<description>Digital camera control (trigger using led)</description>
<define name="DC_SHOOT_ON_BUTTON_RELEASE" />
<define name="SENSOR_SYNC_SEND" value="1" />
<define name="DC_PUSH" value="LED_ON" />
<define name="DC_RELEASE" value="LED_OFF" />
<define name="DC_AUTOSHOOT_QUARTERSEC_PERIOD" value="6" description="quarter_second"/>
<define name="DC_AUTOSHOOT_METER_GRID" value="50" description="grid in meters"/>
</doc>
<header>
Executable → Regular
View File
+6 -6
View File
@@ -27,8 +27,8 @@
<dl_settings name="climb_accel">
<dl_setting MAX="2.0" MIN="0" STEP="0.01" VAR="v_ctl_altitude_pgain" shortname="alt_pgain" module="guidance/energy_ctrl" param="V_CTL_ALTITUDE_PGAIN"/>
<dl_setting MAX="1.0" MIN="0" STEP="0.01" VAR="v_ctl_airspeed_pgain" shortname="speed_pgain" param="V_CTL_AIRSPEED_PGAIN"/>
<dl_setting MAX="10.0" MIN="-10" STEP="0.5" VAR="v_ctl_max_climb" shortname="max_climb" />
<dl_setting MAX="2.0" MIN="-2" STEP="0.05" VAR="v_ctl_max_acceleration" shortname="max_acc_g" />
<dl_setting MAX="10.0" MIN="-10" STEP="0.5" VAR="v_ctl_max_climb" shortname="max_climb" param="V_CTL_MAX_CLIMB"/>
<dl_setting MAX="2.0" MIN="-2" STEP="0.05" VAR="v_ctl_max_acceleration" shortname="max_acc_g" param="V_CTL_MAX_ACCELERATION"/>
</dl_settings>
<dl_settings name="energy_loop">
@@ -46,10 +46,10 @@
<dl_setting MAX="0.1" MIN="0" STEP="0.001" VAR="v_ctl_auto_pitch_of_airspeed_igain" shortname="I_pitch_air" />
<dl_setting MAX="5." MIN="0" STEP="0.01" VAR="v_ctl_auto_pitch_of_airspeed_dgain" shortname="D_pitch_air" />
<dl_setting MAX="1." MIN="0" STEP="0.01" VAR="v_ctl_energy_total_pgain" shortname="P_en_tot"/>
<dl_setting MAX="1." MIN="0" STEP="0.01" VAR="v_ctl_energy_total_igain" shortname="I_en_tot"/>
<dl_setting MAX="1." MIN="0" STEP="0.01" VAR="v_ctl_energy_diff_pgain" shortname="P_en_dis"/>
<dl_setting MAX="1." MIN="0" STEP="0.01" VAR="v_ctl_energy_diff_igain" shortname="I_en_dis"/>
<dl_setting MAX="1." MIN="0" STEP="0.01" VAR="v_ctl_energy_total_pgain" shortname="P_en_tot" param="V_CTL_ENERGY_TOT_PGAIN"/>
<dl_setting MAX="1." MIN="0" STEP="0.01" VAR="v_ctl_energy_total_igain" shortname="I_en_tot" param="V_CTL_ENERGY_TOT_IGAIN"/>
<dl_setting MAX="1." MIN="0" STEP="0.01" VAR="v_ctl_energy_diff_pgain" shortname="P_en_dis" param="V_CTL_ENERGY_DIFF_PGAIN"/>
<dl_setting MAX="1." MIN="0" STEP="0.01" VAR="v_ctl_energy_diff_igain" shortname="I_en_dis" param="V_CTL_ENERGY_DIFF_IGAIN"/>
</dl_settings>
+41
View File
@@ -165,6 +165,47 @@
settings=" settings/test_fixedwing_actuators.xml"
gui_color="blue"
/>
<!-- Special Combinnations -->
<aircraft
name="DualBoard_AP_FBW"
ac_id="31"
airframe="airframes/CDW/DualBoardApFbw.xml"
radio="radios/R6107SP_7ch.xml"
telemetry="telemetry/default_fixedwing_imu.xml"
flight_plan="flight_plans/versatile.xml"
settings=" settings/fixedwing_basic.xml settings/control/ctl_basic.xml"
gui_color="blue"
/>
<aircraft
name="Yapa2_XSens"
ac_id="32"
airframe="airframes/CDW/yapa_xsens.xml"
radio="radios/R6107SP_7ch.xml"
telemetry="telemetry/default_fixedwing_imu_9k6.xml"
flight_plan="flight_plans/versatile.xml"
settings=" settings/fixedwing_basic.xml settings/control/ctl_basic.xml settings/estimation/ins_neutrals.xml settings/control/tune_agr_climb.xml settings/modules/dc.xml"
gui_color="blue"
/>
<aircraft
name="Classix_XSens"
ac_id="33"
airframe="airframes/CDW/classix.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_fixedwing_imu_9k6.xml"
flight_plan="flight_plans/versatile.xml"
settings=" settings/fixedwing_basic.xml settings/control/ctl_basic.xml settings/modules/photogrammetry_calculator.xml settings/modules/dc.xml"
gui_color="blue"
/>
<aircraft
name="tiny2_chimu_spi"
ac_id="22"
airframe="airframes/CDW/tiny2_chimu_spi_pt.xml"
radio="radios/R6107SP_7ch.xml"
telemetry="telemetry/default_fixedwing_imu_9k6.xml"
flight_plan="flight_plans/versatile.xml"
settings=" settings/fixedwing_basic.xml settings/control/ctl_basic.xml settings/estimation/ins_neutrals.xml settings/modules/cam.xml"
gui_color="blue"
/>
<!-- Hardware test Lisa/L -->
<aircraft
name="LisaLv11_Booz2v12_RC"
+1 -1
View File
@@ -1,6 +1,6 @@
#!/bin/sh
DEF_VER=v4.1_unstable
DEF_VER=v4.9_devel
# First try git describe (if running on a git repo),
# then use default version from above (for release tarballs).
@@ -56,7 +56,7 @@ static inline void uart_set_baudrate(struct uart_periph* p, uint32_t baud) {
((uartRegs_t *)(p->reg_addr))->fcr = UART_FIFO_8;
}
void uart_periph_set_baudrate(struct uart_periph* p, uint32_t baud) {
void uart_periph_set_baudrate(struct uart_periph* p, uint32_t baud, bool_t hw_flow_control __attribute__ ((unused))) {
uart_disable_interrupts(p);
uart_set_baudrate(p, baud);
uart_enable_interrupts(p);
+1 -1
View File
@@ -32,7 +32,7 @@
#include "fms/fms_serial_port.h"
void uart_periph_set_baudrate(struct uart_periph* p, uint16_t baud) {
void uart_periph_set_baudrate(struct uart_periph* p, uint16_t baud, bool_t hw_flow_control __attribute__ ((unused))) {
struct FmsSerialPort* fmssp;
// close serial port if already open
if (p->reg_addr != NULL) {
+40 -62
View File
@@ -96,7 +96,7 @@
void adc1_2_isr(void);
uint8_t adc_new_data_trigger;
volatile uint8_t adc_new_data_trigger;
/* Static functions */
@@ -312,80 +312,62 @@ static inline void adc_init_single(uint32_t adc,
}
/* Configure ADC */
//adc_reset(adc);
/* XXX: This register fiddeling code should be moved to libopencm3! */
/* Explicitly setting most registers, reset/default values are correct for most */
/* Set CR1 register. */
{
uint32_t tmpreg = ADC_CR1(adc);
/* Clear DUALMOD and SCAN. */
tmpreg &= ~(ADC_CR1_DUALMOD_MASK | ADC_CR1_SCAN);
/* Set correct DUALMOD and SCAN. */
tmpreg |= ADC_CR1_DUALMOD_IND | ADC_CR1_SCAN;
ADC_CR1(adc) = tmpreg;
}
/* Clear AWDEN */
adc_disable_analog_watchdog_regular(adc);
/* Clear JAWDEN */
adc_disable_analog_watchdog_injected(adc);
/* Clear DISCEN */
adc_disable_discontinuous_mode_regular(adc);
/* Clear JDISCEN */
adc_disable_discontinuous_mode_injected(adc);
/* Clear JAUTO */
adc_disable_automatic_injected_group_conversion(adc);
/* Set SCAN */
adc_enable_scan_mode(adc);
/* Enable ADC<X> JEOC interrupt (Set JEOCIE) */
adc_enable_eoc_interrupt_injected(adc);
/* Clear AWDIE */
adc_disable_awd_interrupt(adc);
/* Clear EOCIE */
adc_disable_eoc_interrupt(adc);
/* Set CR2 register. */
{
uint32_t tmpreg = ADC_CR2(adc);
/* Clear CONT, ALIGN and EXTSEL. */
tmpreg &= ~(ADC_CR2_CONT | ADC_CR2_ALIGN | ADC_CR2_EXTSEL_MASK);
/* Set correct CONT, ALIGN and EXTSEL. */
tmpreg |= ADC_CR2_EXTSEL_SWSTART;
ADC_CR2(adc) = tmpreg;
}
/* Set SQR1 register. */
{
uint32_t tmpreg = ADC_SQR1(adc);
/* Clear regular channel sequence length. */
tmpreg &= ~(0xF); //~(ADC_SQR1_L_MSK);
/* Set regular channel sequence length. */
tmpreg |= 0;
ADC_SQR1(adc) = tmpreg;
}
/* Set JSQR1 injected sequence length. */
{
uint32_t tmpreg = ADC_JSQR(adc);
/* Clear injected channel sequence length. */
tmpreg &= ~(0x2 << 20); //~(ADC_JSQR_JL_MSK);
/* Set injected channel sequence length. */
tmpreg |= (num_channels << ADC_JSQR_JL_LSB);
ADC_JSQR(adc) = tmpreg;
}
/* Clear TSVREFE */
adc_disable_temperature_sensor(adc);
/* Clear EXTTRIG */
adc_disable_external_trigger_regular(adc);
/* Clear ALIGN */
adc_set_right_aligned(adc);
/* Clear DMA */
adc_disable_dma(adc);
/* Clear CONT */
adc_set_single_conversion_mode(adc);
rank = 0;
if (chan1) {
adc_set_conversion_time(adc, adc_channel_map[0], ADC_SMPR1_SMP_41DOT5CYC);
channels[rank] = adc_channel_map[0];
adc_set_sample_time(adc, adc_channel_map[0], ADC_SMPR1_SMP_41DOT5CYC);
channels[rank] = adc_channel_map[0];
rank++;
}
if (chan2) {
adc_set_conversion_time(adc, adc_channel_map[1], ADC_SMPR1_SMP_41DOT5CYC);
channels[rank] = adc_channel_map[1];
adc_set_sample_time(adc, adc_channel_map[1], ADC_SMPR1_SMP_41DOT5CYC);
channels[rank] = adc_channel_map[1];
rank++;
}
if (chan3) {
adc_set_conversion_time(adc, adc_channel_map[2], ADC_SMPR1_SMP_41DOT5CYC);
channels[rank] = adc_channel_map[2];
adc_set_sample_time(adc, adc_channel_map[2], ADC_SMPR1_SMP_41DOT5CYC);
channels[rank] = adc_channel_map[2];
rank++;
}
if (chan4) {
adc_set_conversion_time(adc, adc_channel_map[3], ADC_SMPR1_SMP_41DOT5CYC);
channels[rank] = adc_channel_map[3];
adc_set_sample_time(adc, adc_channel_map[3], ADC_SMPR1_SMP_41DOT5CYC);
channels[rank] = adc_channel_map[3];
}
adc_set_injected_sequence(adc, num_channels, channels);
@@ -398,15 +380,11 @@ static inline void adc_init_single(uint32_t adc,
adc_enable_external_trigger_injected(adc, ADC_CR2_JEXTSEL_TIM2_TRGO);
#endif
/* Enable ADC<X> JEOC interrupt */
adc_enable_jeoc_interrupt(adc);
/* Enable ADC<X> */
adc_on(adc);
adc_power_on(adc);
/* Enable ADC<X> reset calibaration register */
adc_reset_calibration(adc);
/* Check the end of ADC<X> reset calibration */
while ((ADC_CR2(adc) & ADC_CR2_RSTCAL) != 0);
/* Start ADC<X> calibaration */
+25 -7
View File
@@ -29,15 +29,22 @@
#include <libopencm3/stm32/f1/gpio.h>
#include "std.h"
void uart_periph_set_baudrate(struct uart_periph* p, uint32_t baud) {
void uart_periph_set_baudrate(struct uart_periph* p, uint32_t baud, bool_t hw_flow_control) {
/* Configure USART */
usart_set_baudrate((u32)p->reg_addr, baud);
usart_set_databits((u32)p->reg_addr, 8);
usart_set_stopbits((u32)p->reg_addr, USART_STOPBITS_1);
usart_set_parity((u32)p->reg_addr, USART_PARITY_NONE);
usart_set_flow_control((u32)p->reg_addr, USART_FLOWCONTROL_NONE);
usart_set_mode((u32)p->reg_addr, USART_MODE_TX_RX);
if (hw_flow_control) {
usart_set_flow_control((u32)p->reg_addr, USART_FLOWCONTROL_RTS_CTS);
}
else {
usart_set_flow_control((u32)p->reg_addr, USART_FLOWCONTROL_NONE);
}
/* Enable USART1 Receive interrupts */
USART_CR1((u32)p->reg_addr) |= USART_CR1_RXNEIE;
@@ -126,8 +133,19 @@ void uart1_init( void ) {
gpio_set_mode(GPIO_BANK_USART1_RX, GPIO_MODE_INPUT,
GPIO_CNF_INPUT_FLOAT, GPIO_USART1_RX);
/* Configure USART */
uart_periph_set_baudrate(&uart1, UART1_BAUD);
#if UART1_HW_FLOW_CONTROL
#warning "USING UART1 FLOW CONTROL. Make sure to pull down CTS if you are not connecting any flow-control-capable hardware."
gpio_set_mode(GPIO_BANK_USART1_RTS, GPIO_MODE_OUTPUT_50_MHZ,
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO_USART1_RTS);
gpio_set_mode(GPIO_BANK_USART1_CTS, GPIO_MODE_INPUT,
GPIO_CNF_INPUT_FLOAT, GPIO_USART1_CTS);
/* Configure USART1, enable hardware flow control*/
uart_periph_set_baudrate(&uart1, UART1_BAUD, TRUE);
#else
/* Configure USART1, no flow control */
uart_periph_set_baudrate(&uart1, UART1_BAUD, FALSE);
#endif
}
void usart1_isr(void) { usart_isr(&uart1); }
@@ -155,7 +173,7 @@ void uart2_init( void ) {
GPIO_CNF_INPUT_FLOAT, GPIO_USART2_RX);
/* Configure USART */
uart_periph_set_baudrate(&uart2, UART2_BAUD);
uart_periph_set_baudrate(&uart2, UART2_BAUD, FALSE);
}
void usart2_isr(void) { usart_isr(&uart2); }
@@ -185,7 +203,7 @@ void uart3_init( void ) {
GPIO_CNF_INPUT_FLOAT, GPIO_USART3_PR_RX);
/* Configure USART */
uart_periph_set_baudrate(&uart3, UART3_BAUD);
uart_periph_set_baudrate(&uart3, UART3_BAUD, FALSE);
}
void usart3_isr(void) { usart_isr(&uart3); }
@@ -214,7 +232,7 @@ void uart5_init( void ) {
GPIO_CNF_INPUT_FLOAT, GPIO_UART5_RX);
/* Configure USART */
uart_periph_set_baudrate(&uart5, UART5_BAUD);
uart_periph_set_baudrate(&uart5, UART5_BAUD, FALSE);
}
void uart5_isr(void) { usart_isr(&uart5); }
+6
View File
@@ -0,0 +1,6 @@
#include "boards/tiny_2.1.h"
// ADC / 1023 * 3.3V * (10k + 1k5) / 1k5
#undef DefaultVoltageOfAdc
#define DefaultVoltageOfAdc(adc) (0.0247311828*adc)
+1 -1
View File
@@ -71,7 +71,7 @@ extern uint8_t lateral_mode;
#define THROTTLE_THRESHOLD_TAKEOFF (pprz_t)(MAX_PPRZ * 0.9)
extern uint8_t vsupply;
extern uint16_t vsupply;
extern float energy;
extern bool_t launch;
@@ -20,34 +20,45 @@
*/
/**
* @file firmwares/fixedwing/guidance/guidance_v.c
* Vertical control using total energy control for fixed wing vehicles.
* @file firmwares/fixedwing/guidance/energy_ctrl.c
* Total Energy (speed + height) control for fixed wing vehicles.
*
* Energy:
* @f{eqnarray*}{
* E &=& mgh + \frac{1}{2}mV^2 \\
* \frac{\dot{E}}{V} &=& \left(\gamma + \frac{\dot{V}}{g}\right) W
* @f}
*
* Equilibrium:
* @f[
* \frac{\dot{V}}{g} = \frac{\mbox{Thrust}}{W} - \frac{\mbox{Drag}}{W} - \sin(\gamma)
* @f]
* with:
* @f[
* \frac{\mbox{Drag}}{\mbox{Weight}} = \left(\frac{C_l}{C_d}\right)^{-1}
* @f]
*
* - glide angle: @f$\dot{V}=0, T=0 \rightarrow \gamma = \frac{C_d}{C_l}@f$
* - level flight: @f$\dot{V}=0, \gamma=0 \rightarrow \frac{W}{T} = \frac{C_l}{C_d}@f$
*
* Strategy:
* - thrust = path + acceleration[g] (total energy)
* - pitch = path - acceleration[g] (energy balance)
*
* Pseudo-Control Unit = dimensionless acceleration [g]
*
* - pitch <-> pseudocontrol: sin(Theta) steers Vdot in [g]
* - throttle <-> pseudocontrol: motor characteristic as function of V x throttle steeds VDot
*
* @dot
* digraph total_energy_control {
* node [shape=record];
* b [label="attitude loop" URL="\ref attitude_loop"];
* c [label="climb loop" URL="\ref v_ctl_climb_loop"];
* b -> c [ arrowhead="open", style="dashed" ];
* }
* @enddot
*
=================================================
Energy:
------
E = mgh + 1/2mV^2
Edot / V = (gamma + Vdot/g) * W
equilibrium
Vdot / g = Thrust/W - Drag/W - sin(gamma)
with: Drag/Weight = (Cl/Cd)^-1
-glide angle: Vdot = 0, T=0 ==> gamma = Cd/Cl
-level flight: Vdot = 0, gamma=0 ==> W/T = Cl/Cd
=================================================
Strategy: thrust = path + acceleration[g] (total energy)
pitch = path - acceleration[g] (energy balance)
Pseudo-Control Unit = dimensionless acceleration [g]
- pitch <-> pseudocontrol: sin(Theta) steers Vdot in [g]
- throttle <-> pseudocontrol: motor characteristic as function of V x throttle steeds VDot
*/
#pragma message "CAUTION! Using TOTAL ENERGY CONTROLLER: Experimental!"
@@ -170,7 +181,14 @@ void v_ctl_init( void ) {
/* outer loop */
v_ctl_altitude_setpoint = 0.;
#ifdef V_CTL_ALTITUDE_PGAIN
v_ctl_altitude_pgain = V_CTL_ALTITUDE_PGAIN;
#endif
#ifdef V_CTL_AIRSPEED_PGAIN
v_ctl_airspeed_pgain = V_CTL_AIRSPEED_PGAIN;
#endif
v_ctl_auto_airspeed_setpoint = NOMINAL_AIRSPEED;
/* inner loops */
@@ -178,8 +196,23 @@ void v_ctl_init( void ) {
/* "auto throttle" inner loop parameters */
v_ctl_auto_throttle_nominal_cruise_throttle = V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE;
#ifdef V_CTL_AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT
v_ctl_auto_throttle_climb_throttle_increment = V_CTL_AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT;
v_ctl_auto_throttle_pitch_of_vz_pgain = V_CTL_AUTO_THROTTLE_PITCH_OF_VZ_PGAIN;
#endif
#ifdef V_CTL_AUTO_THROTTLE_OF_AIRSPEED_PGAIN
v_ctl_auto_throttle_of_airspeed_pgain = V_CTL_AUTO_THROTTLE_OF_AIRSPEED_PGAIN;
v_ctl_auto_throttle_of_airspeed_igain = V_CTL_AUTO_THROTTLE_OF_AIRSPEED_IGAIN;
#endif
#ifdef V_CTL_ENERGY_TOT_PGAIN
v_ctl_energy_total_pgain = V_CTL_ENERGY_TOT_PGAIN;
v_ctl_energy_total_igain = V_CTL_ENERGY_TOT_IGAIN;
v_ctl_energy_diff_pgain = V_CTL_ENERGY_DIFF_PGAIN;
v_ctl_energy_diff_igain = V_CTL_ENERGY_DIFF_IGAIN;
#endif
v_ctl_throttle_setpoint = 0;
}
+5 -5
View File
@@ -38,7 +38,7 @@
#include "mcu.h"
#include "mcu_periph/sys_time.h"
#include "link_mcu.h"
#include "link_mcu_spi.h"
// Sensors
#if USE_GPS
@@ -130,7 +130,7 @@ uint16_t autopilot_flight_time = 0;
/** Supply voltage in deciVolt.
* This the ap copy of the measurement from fbw
*/
uint8_t vsupply;
uint16_t vsupply;
/** Supply current in milliAmpere.
* This the ap copy of the measurement from fbw
@@ -188,7 +188,7 @@ void init_ap( void ) {
stateInit();
/************* Links initialization ***************/
#if defined MCU_SPI_LINK
#if defined MCU_SPI_LINK || defined MCU_UART_LINK
link_mcu_init();
#endif
#if USE_AUDIO_TELEMETRY
@@ -533,7 +533,7 @@ void attitude_loop( void ) {
ap_state->commands[COMMAND_PITCH] = h_ctl_elevator_setpoint;
#if defined MCU_SPI_LINK
#if defined MCU_SPI_LINK || defined MCU_UART_LINK
link_mcu_send();
#elif defined INTER_MCU && defined SINGLE_MCU
/**Directly set the flag indicating to FBW that shared buffer is available*/
@@ -639,7 +639,7 @@ void event_task_ap( void ) {
DatalinkEvent();
#ifdef MCU_SPI_LINK
#if defined MCU_SPI_LINK || defined MCU_UART_LINK
link_mcu_event_task();
#endif
+36 -2
View File
@@ -46,7 +46,11 @@
#include "mcu_periph/i2c.h"
#ifdef MCU_SPI_LINK
#include "link_mcu.h"
#include "link_mcu_spi.h"
#endif
#ifdef MCU_UART_LINK
#include "link_mcu_usart.h"
#endif
uint8_t fbw_mode;
@@ -125,7 +129,7 @@ void event_task_fbw( void) {
i2c_event();
#ifdef INTER_MCU
#ifdef MCU_SPI_LINK
#if defined MCU_SPI_LINK | defined MCU_UART_LINK
link_mcu_event_task();
#endif /* MCU_SPI_LINK */
@@ -135,9 +139,11 @@ void event_task_fbw( void) {
inter_mcu_event_task();
command_roll_trim = ap_state->command_roll_trim;
command_pitch_trim = ap_state->command_pitch_trim;
#ifndef OUTBACK_CHALLENGE_DANGEROUS_RULE_RC_LOST_NO_AP
if (ap_ok && fbw_mode == FBW_MODE_FAILSAFE) {
fbw_mode = FBW_MODE_AUTO;
}
#endif
if (fbw_mode == FBW_MODE_AUTO) {
SetCommands(ap_state->commands);
}
@@ -154,6 +160,17 @@ void event_task_fbw( void) {
#endif /**Else the buffer is filled even if the last receive was not correct */
}
#if OUTBACK_CHALLENGE_VERY_DANGEROUS_RULE_AP_CAN_FORCE_FAILSAFE
#warning DANGER DANGER DANGER DANGER: Outback Challenge Rule FORCE-CRASH-RULE: DANGER DANGER: AP is now capable to FORCE your FBW in failsafe mode EVEN IF RC IS NOT LOST: Consider the consequences.
int crash = 0;
if (commands[COMMAND_FORCECRASH] >= 8000)
{
set_failsafe_mode();
crash = 1;
}
#endif
#ifdef ACTUATORS
if (fbw_new_actuators > 0)
{
@@ -170,6 +187,13 @@ void event_task_fbw( void) {
SetActuatorsFromCommands(trimmed_commands);
fbw_new_actuators = 0;
#if OUTBACK_CHALLENGE_VERY_DANGEROUS_RULE_AP_CAN_FORCE_FAILSAFE
if (crash == 1)
{
for (;;) {}
}
#endif
}
#endif
@@ -192,7 +216,12 @@ void periodic_task_fbw( void ) {
#ifdef RADIO_CONTROL
radio_control_periodic_task();
if (fbw_mode == FBW_MODE_MANUAL && radio_control.status == RC_REALLY_LOST) {
#ifdef OUTBACK_CHALLENGE_DANGEROUS_RULE_RC_LOST_NO_AP
#warning WARNING DANGER: OUTBACK_CHALLENGE RULE RC_LOST_NO_AP defined. If you loose RC you will NOT go to automatically go to AUTO2 Anymore!!
set_failsafe_mode();
#else
fbw_mode = FBW_MODE_AUTO;
#endif
}
#endif
@@ -204,6 +233,11 @@ void periodic_task_fbw( void ) {
}
#endif
#ifdef MCU_UART_LINK
inter_mcu_fill_fbw_state();
link_mcu_periodic_task();
#endif
#ifdef DOWNLINK
fbw_downlink_periodic_task();
#endif
+1 -1
View File
@@ -30,7 +30,7 @@ static struct ap_state _ap_state;
struct fbw_state* fbw_state = &_fbw_state;
struct ap_state* ap_state = &_ap_state;
#else /* SINGLE_MCU */
#include "link_mcu.h"
#include "link_mcu_spi.h"
struct fbw_state* fbw_state = &link_mcu_from_fbw_msg.payload.from_fbw;
struct ap_state* ap_state = &link_mcu_from_ap_msg.payload.from_ap;
#endif /* ! SINGLE_MCU */
+2 -2
View File
@@ -58,8 +58,8 @@ struct fbw_state {
#endif
uint8_t status;
uint8_t nb_err;
uint8_t vsupply; /* 1e-1 V */
int32_t current; /* milliAmps */
uint16_t vsupply; ///< 1e-1 V
int32_t current; ///< milliAmps
};
struct ap_state {
@@ -22,7 +22,7 @@
*
*/
#include "link_mcu.h"
#include "link_mcu_spi.h"
#include "mcu_periph/spi.h"
struct link_mcu_msg link_mcu_from_ap_msg;

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