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

Conflicts:
	conf/firmwares/subsystems/fixedwing/autopilot.makefile
	sw/airborne/boards/ardrone/navdata.c
	sw/airborne/boards/lisa_m/baro_ms5611_i2c.c
	sw/airborne/boards/lisa_m/baro_ms5611_spi.c
	sw/airborne/firmwares/fixedwing/ap_downlink.h
	sw/airborne/firmwares/fixedwing/main_ap.c
	sw/airborne/firmwares/rotorcraft/telemetry.h
	sw/airborne/mcu_periph/i2c.c
	sw/airborne/subsystems/ahrs/ahrs_float_cmpl.c
	sw/airborne/subsystems/ahrs/ahrs_float_lkf.c
	sw/airborne/subsystems/datalink/downlink.h
	sw/tools/gen_periodic.ml
This commit is contained in:
Gautier Hattenberger
2013-09-25 11:28:43 +02:00
426 changed files with 17860 additions and 5575 deletions
+1
View File
@@ -40,6 +40,7 @@
# /conf/
/conf/conf.xml
/conf/conf.xml.20*
/conf/conf_personal.xml.20*
/conf/control_panel.xml
/conf/%gconf.xml
/conf/maps_data/*
+13 -4
View File
@@ -31,7 +31,7 @@ PAPARAZZI_SRC=$(shell pwd)
empty=
space=$(empty) $(empty)
ifneq ($(findstring $(space),$(PAPARAZZI_SRC)),)
$(error No fucking spaces allowed in the current directory name)
$(error No spaces allowed in the current directory name)
endif
ifeq ($(PAPARAZZI_HOME),)
PAPARAZZI_HOME=$(PAPARAZZI_SRC)
@@ -113,7 +113,7 @@ update_google_version:
conf: conf/conf.xml conf/control_panel.xml conf/maps.xml
conf/%.xml :conf/%.xml.example
conf/%.xml :conf/%_example.xml
[ -L $@ ] || [ -f $@ ] || cp $< $@
@@ -248,6 +248,15 @@ paparazzi:
chmod a+x $@
#
# doxygen html documentation
#
dox:
$(Q)PAPARAZZI_HOME=$(PAPARAZZI_HOME) sw/tools/doxygen_gen/gen_modules_doc.py -pv
@echo "Generationg doxygen html documentation in doc/generated/html"
$(Q)( cat Doxyfile ; echo "PROJECT_NUMBER=$(./paparazzi_version)"; echo "QUIET=YES") | doxygen -
@echo "Done. Open doc/generated/html/index.html in your browser to view it."
#
# Cleaning
#
@@ -285,7 +294,7 @@ ab_clean:
replace_current_conf_xml:
test conf/conf.xml && mv conf/conf.xml conf/conf.xml.backup.$(BUILD_DATETIME)
cp conf/tests_conf.xml conf/conf.xml
cp conf/conf_tests.xml conf/conf.xml
restore_conf_xml:
test conf/conf.xml.backup.$(BUILD_DATETIME) && mv conf/conf.xml.backup.$(BUILD_DATETIME) conf/conf.xml
@@ -296,7 +305,7 @@ run_tests:
test: all replace_current_conf_xml run_tests restore_conf_xml
.PHONY: all print_build_version update_google_version ground_segment ground_segment.opt \
.PHONY: all print_build_version update_google_version dox ground_segment ground_segment.opt \
subdirs $(SUBDIRS) conf ext libpprz multimon cockpit cockpit.opt tmtc tmtc.opt tools\
static sim_static lpctools commands \
clean cleanspaces ab_clean dist_clean distclean dist_clean_irreversible \
+12 -3
View File
@@ -64,10 +64,19 @@ Q=@
#
ifeq ($(MAKECMDGOALS),all_ac_h)
-include $(MAKEFILE_AC)
ifdef PERIODIC_FREQUENCY
# telemetry and module periodic frequency default to PERIODIC_FREQUENCY
TELEMETRY_FREQUENCY ?= $(PERIODIC_FREQUENCY)
DEFAULT_MODULES_FREQUENCY = $(PERIODIC_FREQUENCY)
else
$(warning Info: PERIODIC_FREQUENCY not configured, defaulting to 60Hz for modules and telemetry)
TELEMETRY_FREQUENCY ?= 60
DEFAULT_MODULES_FREQUENCY = 60
endif
endif
# telemetry periodic frequency defaults to 60Hz
TELEMETRY_FREQUENCY ?= 60
init:
@[ -d $(PAPARAZZI_HOME) ] || (echo "Copying config example in your $(PAPARAZZI_HOME) directory"; mkdir -p $(PAPARAZZI_HOME); cp -a conf $(PAPARAZZI_HOME); cp -a data $(PAPARAZZI_HOME); mkdir -p $(PAPARAZZI_HOME)/var/maps; mkdir -p $(PAPARAZZI_HOME)/var/include)
@@ -147,7 +156,7 @@ $(MODULES_H) : $(CONF)/$(AIRFRAME_XML) $(TOOLS)/gen_modules.out $(CONF)/modules/
$(Q)test -d $(AC_GENERATED) || mkdir -p $(AC_GENERATED)
@echo GENERATE $@
$(eval $@_TMP := $(shell $(MKTEMP)))
$(Q)$(TOOLS)/gen_modules.out $(SETTINGS_MODULES) $< > $($@_TMP)
$(Q)$(TOOLS)/gen_modules.out $(SETTINGS_MODULES) $(DEFAULT_MODULES_FREQUENCY) $< > $($@_TMP)
$(Q)mv $($@_TMP) $@
$(Q)chmod a+r $@
-1
View File
@@ -21,7 +21,6 @@ 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.
+23 -20
View File
@@ -78,43 +78,46 @@ elf: $(OBJDIR)/$(TARGET).elf
# Program the device and start it.
load upload program: $(OBJDIR)/$(TARGET).elf
# If it is not the SDK version, then kill program.elf
ifneq ($(BOARD_TYPE), sdk)
-echo "killall -9 program.elf" | telnet $(HOST)
endif
# Kill the application
-echo "killall -9 $(TARGET).elf" | telnet $(HOST)
# Upload the modules and start the application
# Make the target dir and edit the config
-{ \
echo "mkdir -p $(TARGET_DIR)"; \
echo "mkdir -p $(TARGET_DIR)"; \
echo "if grep -q \"start_paparazzi *= \" /data/config.ini; then sed -i 's/\(start_paparazzi *= *\).*/\\\1$(ARDRONE2_START_PAPARAZZI)/g' /data/config.ini; else echo \"start_paparazzi = $(ARDRONE2_START_PAPARAZZI)\" >> /data/config.ini; fi"; \
echo "if grep -q \"wifi_mode *= \" /data/config.ini; then sed -i 's/\(wifi_mode *= *\).*/\\\1$(ARDRONE2_WIFI_MODE)/g' /data/config.ini; else echo \"wifi_mode = $(ARDRONE2_WIFI_MODE)\" >> /data/config.ini; fi"; \
echo "if grep -q \"ssid_single_player *= \" /data/config.ini; then sed -i 's/\(ssid_single_player *= *\).*/\\\1$(ARDRONE2_SSID)/g' /data/config.ini; else echo \"ssid_single_player = $(ARDRONE2_SSID)\" >> /data/config.ini; fi"; \
echo "if grep -q \"static_ip_address_base *= \" /data/config.ini; then sed -i 's/\(static_ip_address_base *= *\).*/\\\1$(ARDRONE2_IP_ADDRESS_BASE)/g' /data/config.ini; else echo \"static_ip_address_base = $(ARDRONE2_IP_ADDRESS_BASE)\" >> /data/config.ini; fi"; \
echo "if grep -q \"static_ip_address_probe *= \" /data/config.ini; then sed -i 's/\(static_ip_address_probe *= *\).*/\\\1$(ARDRONE2_IP_ADDRESS_PROBE)/g' /data/config.ini; else echo \"static_ip_address_probe = $(ARDRONE2_IP_ADDRESS_PROBE)\" >> /data/config.ini; fi"; \
} | telnet $(HOST)
# Upload the drivers and new application
{ \
echo "binary"; \
echo "put $(PAPARAZZI_SRC)/sw/ext/ardrone2_drivers/cdc-acm.ko /$(SUB_DIR)/cdc-acm.ko"; \
echo "put $(PAPARAZZI_SRC)/sw/ext/ardrone2_drivers/usbserial.ko /$(SUB_DIR)/usbserial.ko"; \
echo "put $(PAPARAZZI_SRC)/sw/ext/ardrone2_drivers/pl2303.ko /$(SUB_DIR)/pl2303.ko"; \
echo "put $(PAPARAZZI_SRC)/sw/ext/ardrone2_drivers/ftdi-sio.ko /$(SUB_DIR)/ftdi-sio.ko"; \
echo "put $(PAPARAZZI_SRC)/sw/ext/ardrone2_drivers/cp210x.ko /$(SUB_DIR)/cp210x.ko"; \
echo "put $(PAPARAZZI_SRC)/sw/ext/ardrone2_drivers/check_update.sh check_update.sh"; \
echo "put $(PAPARAZZI_SRC)/sw/ext/ardrone2_drivers/wifi_setup.sh wifi_setup.sh"; \
echo "put $(OBJDIR)/$(TARGET).elf /$(SUB_DIR)/$(TARGET).elf"; \
echo "quit"; \
} | ftp -n $(HOST)
# Upload the modules and start the application
-{ \
echo "cd $(TARGET_DIR)"; \
echo "insmod cdc-acm.ko"; \
echo "insmod usbserial.ko"; \
echo "insmod cp210x.ko"; \
echo "insmod pl2303.ko"; \
echo "insmod ftdi-sio.ko"; \
echo "chmod 777 $(TARGET).elf"; \
echo "./$(TARGET).elf > /dev/null 2>&1 &"; \
-{ \
echo "mv /data/video/check_update.sh /bin/"; \
echo "mv /data/video/wifi_setup.sh /bin/"; \
echo "chmod 777 /bin/check_update.sh" \
echo "chmod 777 /bin/wifi_setup.sh" \
echo "insmod $(TARGET_DIR)/cdc-acm.ko"; \
echo "chmod 777 $(TARGET_DIR)/$(TARGET).elf"; \
echo "$(TARGET_DIR)/$(TARGET).elf > /dev/null 2>&1 &"; \
} | telnet $(HOST)
ifeq ($(ARDRONE2_REBOOT),1)
-{ \
echo "reboot"; \
} | telnet $(HOST)
endif
# Link: create ELF output file from object files.
.SECONDARY : $(OBJDIR)/$(TARGET).elf
+227
View File
@@ -0,0 +1,227 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!-- this is an Asctec frame equipped with Lisa/L v0.9 and Asctec V2 controllers -->
<airframe name="asctec_cdw">
<!-- ************************* FIRMWARE ************************* -->
<firmware name="rotorcraft">
<target name="ap" board="lisa_l_1.0">
<configure name="MODEM_PORT" value="UART3"/>
<configure name="GPS_PORT" value="UART2"/>
<!-- <define name="ACTUATORS_START_DELAY" value="1"/> -->
<subsystem name="radio_control" type="ppm"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="asctec_v2"/>
<subsystem name="telemetry" type="xbee_api"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAPS"/>
<define name="USE_KILL_SWITCH_FOR_MOTOR_ARMING" value="1"/>
<define name="USE_I2C_ACTUATORS_REBOOT_HACK"/>
</target>
<target name="nps" board="pc">
<subsystem name="fdm" type="jsbsim"/>
<subsystem name="radio_control" type="ppm"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="mkk"/>
</target>
<subsystem name="imu" type="aspirin_v2.1"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<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.1"/>
<target name="test_servos" board="lisa_l_1.1"/>
<target name="test_telemetry" board="lisa_l_1.1"/>
<target name="test_baro" board="lisa_l_1.1"/>
<target name="test_imu_b2" board="lisa_l_1.1"/>
<target name="test_imu_b2_2" board="lisa_l_1.1"/>
<target name="test_imu_aspirin" board="lisa_l_1.1"/>
<target name="test_rc_spektrum" board="lisa_l_1.1"/>
<target name="test_rc_ppm" board="lisa_l_1.1"/>
<target name="test_adc" board="lisa_l_1.1"/>
<target name="test_hmc5843" board="lisa_l_1.1"/>
<target name="test_itg3200" board="lisa_l_1.1"/>
<target name="test_adxl345" board="lisa_l_1.1"/>
<target name="test_esc_mkk_simple" board="lisa_l_1.1"/>
<target name="test_esc_asctecv1_simple" board="lisa_l_1.1"/>
<!--target name="test_actuators_mkk" board="lisa_l_1.1"/>
<target name="test_actuators_asctecv1" board="lisa_l_1.1"/-->
</firmware>
<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>
<!-- ************************* MODULES ************************* -->
<modules main_freq="512">
<!-- <load name="high_speed_logger_spi_link.xml"/> -->
<load name="imu_quality_assessment.xml"/>
<load name="gps_ubx_ucenter.xml" />
</modules>
<!-- ************************* ACTUATORS ************************* -->
<servos driver="Asctec_v2">
<servo name="FRONT" no="0" min="0" neutral="3" max="200"/>
<servo name="BACK" no="1" min="0" neutral="3" max="200"/>
<servo name="LEFT" no="2" min="0" neutral="3" max="200"/>
<servo name="RIGHT" no="3" min="0" neutral="3" max="200"/>
</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>
<section name="MIXING" prefix="MOTOR_MIXING_">
<define name="TRIM_ROLL" value="0"/>
<define name="TRIM_PITCH" value="0"/>
<define name="TRIM_YAW" value="0"/>
<define name="NB_MOTOR" value="4"/>
<define name="SCALE" value="256"/>
<!-- Driver expects: Front - Back - Left - Right -->
<define name="ROLL_COEF" value="{ 256, -256, 256, -256 }"/>
<define name="PITCH_COEF" value="{ 256, -256, -256, 256 }"/>
<define name="YAW_COEF" value="{ 256, 256, -256, -256 }"/>
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<!-- ************************* SENSORS ************************* -->
<section name="IMU" prefix="IMU_">
<define name="ACCEL_X_NEUTRAL" value="0"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="200"/>
<define name="ACCEL_X_SENS" value="9.810" integer="16"/>
<define name="ACCEL_Y_SENS" value="9.810" integer="16"/>
<define name="ACCEL_Z_SENS" value="9.810" 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="180." unit="deg"/>
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
<define name="BODY_TO_IMU_PSI" value="90." unit="deg"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="10." integer="16"/>
</section>
<!-- ************************* GAINS ************************* -->
<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.)"/>
<!-- feedback -->
<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"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value=" 200"/>
<define name="THETA_DDGAIN" value=" 200"/>
<define name="PSI_DDGAIN" value=" 200"/>
</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="100"/>
<!-- 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="NOMINAL_HOVER_THROTTLE" value="0.4"/>
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="PGAIN" value="100"/>
<define name="DGAIN" value="100"/>
<define name="IGAIN" value="0"/>
</section>
<!-- ************************* MISC ************************* -->
<!-- for the sim target -->
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<section name="MAGNETICS" prefix="AHRS_H_">
<define name="X" value="0.4"/>
<define name="Y" value="0"/>
<define name="Z" value="0.9"/>
</section>
<section name="BAT">
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
</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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
</airframe>
+22
View File
@@ -0,0 +1,22 @@
<conf>
<aircraft
name="Asctec"
ac_id="150"
airframe="airframes/CDW/asctec_cdw.xml"
radio="radios/R6107SP_7ch.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings=" settings/rotorcraft_basic.xml settings/control/stabilization_att_int.xml settings/modules/config_asctec_v2.xml settings/modules/imu_quality_assessment.xml"
gui_color="white"
/>
<aircraft
name="TriCopter"
ac_id="1"
airframe="airframes/CDW/tricopter_cdw.xml"
radio="radios/R6107SP_7ch.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings=" settings/rotorcraft_basic.xml settings/control/stabilization_att_int.xml settings/modules/config_mkk_v2.xml settings/modules/imu_quality_assessment.xml"
gui_color="blue"
/>
</conf>
+216
View File
@@ -0,0 +1,216 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!--
Tricopter Frame, MKK2 BLDC x3 + Servo x1, Lisa-m-2.
http://www.robbe.de/roxxy-bl-outrunner-2827-34.html
Technische Daten
Abmessungen: Ø 28 x 29 mm
Freie Wellenlänge: 12.5 mm
Gewicht ca.: 57 g
Laststrom (5min/120°C): 9 A
Umdrehung / Volt: 760 Umin/V
Max.Wirkungsgrad: 76 %
Laststrom max. (60 Sek.): 10 A
Zellenzahl: 6-10 NC/NiMH
Leistung: 110 W
Wellendurchmesser: 3.17 mm
Spannung: 7-12 Volt
LiPo/LiIo-Zellen: 2-3
-->
<airframe name="TriCopter_CDW">
<!-- ************************* FIRMWARE ************************* -->
<firmware name="rotorcraft">
<target name="ap" board="lisa_m_2.0">
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAPS"/>
<define name="USE_KILL_SWITCH_FOR_MOTOR_ARMING" value="1"/>
</target>
<target name="nps" board="pc">
<subsystem name="fdm" type="jsbsim"/>
</target>
<subsystem name="radio_control" type="ppm"/>
<subsystem name="telemetry" type="xbee_api"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="mkk_v2"/>
<subsystem name="actuators" type="pwm">
<define name="USE_PWM0"/>
</subsystem>
<subsystem name="imu" type="aspirin_v2.1"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/>
<subsystem name="ins" type="hff"/>
</firmware>
<section name="AUTOPILOT">
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_RC_CLIMB"/>
<define name="MODE_AUTO2" value="AP_MODE_ATTITUDE_Z_HOLD"/>
</section>
<!-- ************************* MODULES ************************* -->
<modules>
<load name="configure_actuators_mkk_v2.xml"/>
<load name="imu_quality_assessment.xml"/>
</modules>
<!-- ************************* ACTUATORS ************************* -->
<section name="ACTUATORS_MKK_V2" prefix="ACTUATORS_MKK_V2_">
<define name="NB" value="3"/>
<define name="ADDR" value="{ 0x52, 0x56, 0x54 }"/>
<define name="DEVICE" value="i2c1"/>
</section>
<servos driver="Mkk_v2">
<servo name="FRONTRIGHT" no="0" min="0" neutral="30" max="2047"/>
<servo name="FRONTLEFT" no="1" min="0" neutral="30" max="2047"/>
<servo name="BACK" no="2" min="0" neutral="30" max="2047"/>
</servos>
<servos driver="Pwm">
<servo name="TAIL" no="0" min="1000" neutral="1500" max="2000"/>
</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>
<section name="MIXING" prefix="MOTOR_MIXING_">
<define name="TRIM_ROLL" value="0"/>
<define name="TRIM_PITCH" value="0"/>
<define name="TRIM_YAW" value="0"/>
<define name="NB_MOTOR" value="3"/>
<define name="SCALE" value="2048"/>
<define name="ROLL_COEF" value="{ 2048, -2048, 0}"/>
<define name="PITCH_COEF" value="{ 1024, 1024, -2048}"/>
<define name="YAW_COEF" value="{ 0, 0, 0}"/>
<define name="THRUST_COEF" value="{ 2048, 2048, 2048}"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONTRIGHT" value="motor_mixing.commands[SERVO_FRONTRIGHT]"/>
<set servo="FRONTLEFT" value="motor_mixing.commands[SERVO_FRONTLEFT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="TAIL" value="@YAW"/>
</command_laws>
<!-- ************************* SENSORS ************************* -->
<section name="IMU" prefix="IMU_">
<define name="MAG_X_NEUTRAL" value="-152"/>
<define name="MAG_Y_NEUTRAL" value="-51"/>
<define name="MAG_Z_NEUTRAL" value="10"/>
<define name="MAG_X_SENS" value="4.04042714046" integer="16"/>
<define name="MAG_Y_SENS" value="3.95350991963" integer="16"/>
<define name="MAG_Z_SENS" value="3.83055079257" 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="-90." unit="deg"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="15." integer="16"/>
</section>
<!-- ************************* GAINS ************************* -->
<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="360." unit="deg/s"/>
<define name="DEADBAND_R" value="200"/>
<!-- reference -->
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
<define name="REF_ZETA_P" value="0.9"/>
<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.9"/>
<define name="REF_MAX_Q" value="300." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(7000.)"/>
<define name="REF_OMEGA_R" value="1200" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="600." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(7000.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="400"/>
<define name="PHI_DGAIN" value="410"/>
<define name="PHI_IGAIN" value="0"/>
<define name="THETA_PGAIN" value="400"/>
<define name="THETA_DGAIN" value="410"/>
<define name="THETA_IGAIN" value="114"/>
<define name="PSI_PGAIN" value="900"/>
<define name="PSI_DGAIN" value="1328"/>
<define name="PSI_IGAIN" value="0"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value=" 100"/>
<define name="THETA_DDGAIN" value=" 100"/>
<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="500"/>
<define name="HOVER_KD" value="200"/>
<define name="HOVER_KI" value="100"/>
<!-- 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"/>
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="PGAIN" value="100"/>
<define name="DGAIN" value="100"/>
<define name="IGAIN" value="0"/>
</section>
<!-- ************************* MISC ************************* -->
<section name="BAT">
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
</section>
<section name="FMS">
</section>
<section name="MISC">
<define name="XBEE_INIT" value="&quot;ATID3332\r&quot;"/>
<define name="FACE_REINJ_1" value="1024"/>
<define name="VoltageOfAdc(adc)" value="(0.00528*adc)"/>
</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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
</airframe>
+219
View File
@@ -0,0 +1,219 @@
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
<airframe name="Quark">
<modules>
<load name="gps_ubx_ucenter.xml"/>
</modules>
<firmware name="fixedwing">
<define name="USE_I2C0"/>
<define name="USE_I2C1"/>
<!--define name="AGR_CLIMB"/-->
<define name="ALT_KALMAN"/>
<define name="USE_AIRSPEED"/>
<!--define name="LOITER_TRIM"/-->
<!--define name="PITCH_TRIM"/-->
<configure name="PERIODIC_FREQUENCY" value="125"/>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="125"/>
<define name="CONTROL_FREQUENCY" value="125"/>
<target name="sim" board="pc"/>
<target name="ap" board="umarim_lite_2.0"/>
<subsystem name="radio_control" type="datalink"/>
<!-- Communication -->
<subsystem name="telemetry" type="transparent"/>
<!-- Actuators are automatically chosen according to board-->
<subsystem name="imu" type="umarim"/>
<subsystem name="ahrs" type="float_dcm"/>
<subsystem name="ins" type="alt_float"/>
<subsystem name="control" type="new"/>
<subsystem name="navigation"/>
<!-- Sensors -->
<subsystem name="gps" type="ublox"/>
</firmware>
<!-- commands section -->
<servos>
<servo name="MOTOR" no="2" min="1040" neutral="1040" max="2000"/>
<servo name="AILEVON_LEFT" no="0" min="1900" neutral="1394" max="1100"/>
<servo name="AILEVON_RIGHT" no="1" min="1100" neutral="1369" max="1900"/>
</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>
<command_laws>
<let var="aileron" value="@ROLL"/>
<let var="elevator" value="@PITCH"/>
<set servo="MOTOR" 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.85"/>
<define name="MAX_PITCH" value="0.6"/>
</section>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_SIGN" value="1"/>
<define name="GYRO_Q_SIGN" value="-1"/>
<define name="GYRO_R_SIGN" value="-1"/>
<!-- Calibration Neutral -->
<define name="GYRO_P_NEUTRAL" value="0"/>
<define name="GYRO_Q_NEUTRAL" value="0"/>
<define name="GYRO_R_NEUTRAL" value="0"/>
<!-- 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_SIGN" value="1"/>
<define name="ACCEL_Y_SIGN" value="-1"/>
<define name="ACCEL_Z_SIGN" value="-1"/>
<define name="ACCEL_X_NEUTRAL" value="-13"/>
<define name="ACCEL_Y_NEUTRAL" value="-14"/>
<define name="ACCEL_Z_NEUTRAL" value="-34"/>
<define name="ACCEL_X_SENS" value="38.8302353809" integer="16"/>
<define name="ACCEL_Y_SENS" value="38.6959597569" integer="16"/>
<define name="ACCEL_Z_SENS" value="39.2279525433" 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="UMARIM IMU" prefix="UMARIM_">
<define name="ACCEL_RANGE" value="ADXL345_RANGE_8G"/>
<define name="GYRO_LOWPASS" value="ITG3200_DLPF_20HZ"/>
<define name="GYRO_SMPLRT_DIV" value="7"/> <!-- 125 Hz -->
</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="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/>
<define name="MAX_BAT_LEVEL" value="8.0" unit="V"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="6.3" unit="V"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="TRIGGER_DELAY" value="1."/>
<define name="DEFAULT_CIRCLE_RADIUS" value="50."/>
<define name="UNLOCKED_HOME_MODE" value="TRUE"/>
</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.15"/> <!-- -0.024 -->
<!-- outer loop saturation -->
<define name="ALTITUDE_MAX_CLIMB" value="3." unit="m/s"/>
<!-- Cruise throttle + limits -->
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.5"/>
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
<define name="AUTO_PITCH_MAX_PITCH" value="20." unit="deg"/>
<define name="AUTO_PITCH_MIN_PITCH" value="-20." unit="deg"/>
<!-- Climb loop (throttle) -->
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.1" unit="%/(m/s)"/>
<define name="AUTO_THROTTLE_PGAIN" value="0.004"/> <!-- -0.005 -->
<define name="AUTO_THROTTLE_DGAIN" value="0.01"/> <!-- 0.005 -->
<define name="AUTO_THROTTLE_IGAIN" value="0.004"/> <!-- 0.005 -->
<!-- Climb loop (pitch) -->
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.02"/>
<define name="AUTO_PITCH_PGAIN" value="0.038"/> <!-- -0.03 -->
<define name="AUTO_PITCH_DGAIN" value="0.036"/> <!-- -0.03 -->
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
<!-- airspeed control -->
<define name="AUTO_AIRSPEED_SETPOINT" value="16."/>
<define name="AUTO_AIRSPEED_THROTTLE_PGAIN" value="0.1"/>
<define name="AUTO_AIRSPEED_THROTTLE_DGAIN" value="0.12"/>
<define name="AUTO_AIRSPEED_THROTTLE_IGAIN" value="0.0"/>
<define name="AUTO_AIRSPEED_PITCH_PGAIN" value="0.06"/>
<define name="AUTO_AIRSPEED_PITCH_DGAIN" value="0.0"/>
<define name="AUTO_AIRSPEED_PITCH_IGAIN" value="0.042"/>
<define name="AIRSPEED_MAX" value="30" unit="m/s"/>
<define name="AIRSPEED_MIN" value="10" unit="m/s"/>
<!-- groundspeed control -->
<define name="AUTO_GROUNDSPEED_SETPOINT" value="15" unit="m/s"/>
<define name="AUTO_GROUNDSPEED_PGAIN" value="1."/>
<define name="AUTO_GROUNDSPEED_IGAIN" value="0."/>
<!-- pitch trim --> <!-- 5 deg -->
<define name="PITCH_LOITER_TRIM" value="0." unit="deg"/>
<define name="PITCH_DASH_TRIM" value="0." unit="deg"/>
<define name="THROTTLE_SLEW" value="0.1"/>
</section>
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
<define name="COURSE_PGAIN" value="0.7"/>
<define name="ROLL_MAX_SETPOINT" value="0.8" unit="rad"/>
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="rad"/>
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="rad"/>
<define name="ROLL_ATTITUDE_GAIN" value="3800."/>
<define name="ROLL_RATE_GAIN" value="500."/>
<define name="ROLL_IGAIN" value="150."/>
<define name="ROLL_KFFA" value="0"/>
<define name="ROLL_KFFD" value="0"/>
<define name="PITCH_PGAIN" value="10000."/>
<define name="PITCH_DGAIN" value="100."/>
<define name="PITCH_IGAIN" value="250."/>
<define name="PITCH_KFFA" value="0."/>
<define name="PITCH_KFFD" value="0."/>
<define name="PITCH_OF_ROLL" value="0.0" unit="deg"/>
<define name="AILERON_OF_THROTTLE" value="0.0"/>
<!--define name="ELEVATOR_OF_ROLL" value="1400"/-->
</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="100" unit="m"/>
</section>
<section name="SIMU">
<!--define name="ROLL_RESPONSE_FACTOR" value="10"/>
<define name="MAX_ROLL_DOT" value="20" unit="rad/s"/-->
</section>
</airframe>
+1 -1
View File
@@ -260,7 +260,7 @@
<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;reset_enac&quot;"/-->
<!--define name="JSBSIM_INIT" value="&quot;reset_enac&quot;"/-->
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
+1 -1
View File
@@ -228,7 +228,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -0,0 +1,18 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Magneto calibration -->
<define name="MAG_X_NEUTRAL" value="99"/>
<define name="MAG_Y_NEUTRAL" value="59"/>
<define name="MAG_Z_NEUTRAL" value="-65"/>
<define name="MAG_X_SENS" value="14.8494072406" integer="16"/>
<define name="MAG_Y_SENS" value="14.4187929352" integer="16"/>
<define name="MAG_Z_SENS" value="15.4390790318" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,20 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Magneto calibration (done) -->
<define name="MAG_X_NEUTRAL" value="8"/>
<define name="MAG_Y_NEUTRAL" value="22"/>
<define name="MAG_Z_NEUTRAL" value="-182"/>
<define name="MAG_X_SENS" value="15.6093106965" integer="16"/>
<define name="MAG_Y_SENS" value="13.7479252753" integer="16"/>
<define name="MAG_Z_SENS" value="16.7383397999" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,23 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Accelero (done) -->
<define name="ACCEL_X_NEUTRAL" value="2048"/>
<define name="ACCEL_Y_NEUTRAL" value="2076"/>
<define name="ACCEL_Z_NEUTRAL" value="2048"/>
<!-- Magneto calibration (done) -->
<define name="MAG_X_NEUTRAL" value="8"/>
<define name="MAG_Y_NEUTRAL" value="-7"/>
<define name="MAG_Z_NEUTRAL" value="-227"/>
<define name="MAG_X_SENS" value="15.5234215153" integer="16"/>
<define name="MAG_Y_SENS" value="14.2647577704" integer="16"/>
<define name="MAG_Z_SENS" value="14.9418031715" integer="16"/>
<!-- Magneto current calibration -->
<define name= "MAG_X_CURRENT_COEF" value="0.00202964254187"/>
<define name= "MAG_Y_CURRENT_COEF" value="-0.000446794092786"/>
<define name= "MAG_Z_CURRENT_COEF" value="-0.000974773119924"/>
</section>
</airframe>
@@ -0,0 +1,23 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Accelero (done) -->
<define name="ACCEL_X_NEUTRAL" value="2068"/>
<define name="ACCEL_Y_NEUTRAL" value="2068"/>
<define name="ACCEL_Z_NEUTRAL" value="2048"/>
<!-- Magneto calibration (done) -->
<define name="MAG_X_NEUTRAL" value="71"/>
<define name="MAG_Y_NEUTRAL" value="-1"/>
<define name="MAG_Z_NEUTRAL" value="-166"/>
<define name="MAG_X_SENS" value="13.9587052153" integer="16"/>
<define name="MAG_Y_SENS" value="17.2130452079" integer="16"/>
<define name="MAG_Z_SENS" value="16.2785989428" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,23 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Accelero (done) -->
<define name="ACCEL_X_NEUTRAL" value="2048"/>
<define name="ACCEL_Y_NEUTRAL" value="2056"/>
<define name="ACCEL_Z_NEUTRAL" value="2048"/>
<!-- Magneto calibration (done) -->
<define name="MAG_X_NEUTRAL" value="-59"/>
<define name="MAG_Y_NEUTRAL" value="-11"/>
<define name="MAG_Z_NEUTRAL" value="-246"/>
<define name="MAG_X_SENS" value="15.6071828304" integer="16"/>
<define name="MAG_Y_SENS" value="14.9363172663" integer="16"/>
<define name="MAG_Z_SENS" value="15.9964364143" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,18 @@
<!-- ARDrone calibration file (Finished calibration) -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Magneto calibration -->
<define name="MAG_X_NEUTRAL" value="18"/>
<define name="MAG_Y_NEUTRAL" value="7"/>
<define name="MAG_Z_NEUTRAL" value="-190"/>
<define name="MAG_X_SENS" value="17.5832018436" integer="16"/>
<define name="MAG_Y_SENS" value="16.9906378261" integer="16"/>
<define name="MAG_Z_SENS" value="18.4485786615" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,18 @@
<!-- ARDrone calibration file (done) -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Magneto calibration -->
<define name="MAG_X_NEUTRAL" value="0"/>
<define name="MAG_Y_NEUTRAL" value="0"/>
<define name="MAG_Z_NEUTRAL" value="-190"/>
<define name="MAG_X_SENS" value="16.0204597092" integer="16"/>
<define name="MAG_Y_SENS" value="15.5973173468" integer="16"/>
<define name="MAG_Z_SENS" value="17.1460428729" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,18 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Magneto calibration -->
<define name="MAG_X_NEUTRAL" value="33"/>
<define name="MAG_Y_NEUTRAL" value="44"/>
<define name="MAG_Z_NEUTRAL" value="-264"/>
<define name="MAG_X_SENS" value="19.1984157982" integer="16"/>
<define name="MAG_Y_SENS" value="18.7031225235" integer="16"/>
<define name="MAG_Z_SENS" value="19.0380688485" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,23 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Accelero (done) -->
<define name="ACCEL_X_NEUTRAL" value="2056"/>
<define name="ACCEL_Y_NEUTRAL" value="2052"/>
<define name="ACCEL_Z_NEUTRAL" value="2048"/>
<!-- Magneto calibration -->
<define name="MAG_X_NEUTRAL" value="33"/>
<define name="MAG_Y_NEUTRAL" value="44"/>
<define name="MAG_Z_NEUTRAL" value="-264"/>
<define name="MAG_X_SENS" value="19.1984157982" integer="16"/>
<define name="MAG_Y_SENS" value="18.7031225235" integer="16"/>
<define name="MAG_Z_SENS" value="19.0380688485" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,23 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Accelero (done) -->
<define name="ACCEL_X_NEUTRAL" value="2052"/>
<define name="ACCEL_Y_NEUTRAL" value="2052"/>
<define name="ACCEL_Z_NEUTRAL" value="2048"/>
<!-- Magneto calibration (done) -->
<define name="MAG_X_NEUTRAL" value="17"/>
<define name="MAG_Y_NEUTRAL" value="-31"/>
<define name="MAG_Z_NEUTRAL" value="-195"/>
<define name="MAG_X_SENS" value="15.2127658227" integer="16"/>
<define name="MAG_Y_SENS" value="16.1444639915" integer="16"/>
<define name="MAG_Z_SENS" value="16.5058009114" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,24 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Accelero (done) -->
<define name="ACCEL_X_NEUTRAL" value="2040"/>
<define name="ACCEL_Y_NEUTRAL" value="2044"/>
<define name="ACCEL_Z_NEUTRAL" value="2048"/>
<!-- Magneto calibration -->
<define name="MAG_X_NEUTRAL" value="-14"/>
<define name="MAG_Y_NEUTRAL" value="-15"/>
<define name="MAG_Z_NEUTRAL" value="-202"/>
<define name="MAG_X_SENS" value="15.71361627" integer="16"/>
<define name="MAG_Y_SENS" value="15.7480197906" integer="16"/>
<define name="MAG_Z_SENS" value="16.1966392929" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,23 @@
<!-- ARDrone calibration file -->
<airframe>
<section name="IMU" prefix="IMU_">
<!-- Accelero (done) -->
<define name="ACCEL_X_NEUTRAL" value="2048"/>
<define name="ACCEL_Y_NEUTRAL" value="2052"/>
<define name="ACCEL_Z_NEUTRAL" value="2048"/>
<!-- Magneto calibration (done) -->
<define name="MAG_X_NEUTRAL" value="5"/>
<define name="MAG_Y_NEUTRAL" value="-13"/>
<define name="MAG_Z_NEUTRAL" value="-161"/>
<define name="MAG_X_SENS" value="15.4856734848" integer="16"/>
<define name="MAG_Y_SENS" value="15.6311803268" integer="16"/>
<define name="MAG_Z_SENS" value="17.1897525095" integer="16"/>
<!-- Magneto current calibration -->
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
</section>
</airframe>
@@ -0,0 +1,206 @@
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
<airframe name="ardrone2_raw">
<firmware name="rotorcraft">
<!-- Main autopilot target -->
<target name="ap" board="ardrone2_raw">
<define name="USE_INS_NAV_INIT"/>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="200"/>
<define name="AHRS_PROPAGATE_FREQUENCY" value="200"/>
<define name="INS_PROPAGATE_FREQUENCY" value="200"/>
<define name="USE_BAROMETER"/>
<define name="AUTOPILOT_DISABLE_AHRS_KILL"/>
<define name="LINK_HOST" value="\\\"192.168.2.255\\\""/>
<configure name="HOST" value="192.168.2.$(AC_ID)"/>
<configure name="ARDRONE2_START_PAPARAZZI" value="1"/>
<configure name="ARDRONE2_WIFI_MODE" value="2"/>
<configure name="ARDRONE2_SSID" value="tudelft_swarmhub"/>
<configure name="ARDRONE2_IP_ADDRESS_BASE" value="192.168.2."/>
<configure name="ARDRONE2_IP_ADDRESS_PROBE" value="$(AC_ID)"/>
</target>
<!-- Subsystem section -->
<subsystem name="telemetry" type="udp"/>
<subsystem name="radio_control" type="datalink"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="ardrone2"/>
<subsystem name="imu" type="ardrone2"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_quat"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins" type="extended"/>
</firmware>
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
<load name="flight_time.xml"/>
<load name="TUDelft/imav2013.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="3000"/>
</commands>
<servos driver="Default">
<servo name="TOP_LEFT" no="0" min="0" neutral="1" max="500"/>
<servo name="TOP_RIGHT" no="1" min="0" neutral="1" max="500"/>
<servo name="BOTTOM_LEFT" no="3" min="0" neutral="1" max="500"/>
<servo name="BOTTOM_RIGHT" no="2" min="0" neutral="1" max="500"/>
</servos>
<section name="MIXING" prefix="MOTOR_MIXING_">
<define name="TRIM_ROLL" value="0"/>
<define name="TRIM_PITCH" value="0"/>
<define name="TRIM_YAW" value="0"/>
<define name="NB_MOTOR" value="4"/>
<define name="SCALE" value="255"/>
<!-- Time cross layout (X), as documented in paparazzi -->
<define name="ROLL_COEF" value="{ 256, -256, -256, 256 }"/>
<define name="PITCH_COEF" value="{ 256, 256, -256, -256 }"/>
<define name="YAW_COEF" value="{ -256, 256, -256, 256 }"/>
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="TOP_LEFT" value="motor_mixing.commands[SERVO_TOP_LEFT]"/>
<set servo="TOP_RIGHT" value="motor_mixing.commands[SERVO_TOP_RIGHT]"/>
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[SERVO_BOTTOM_LEFT]"/>
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[SERVO_BOTTOM_RIGHT]"/>
</command_laws>
<include href="conf/airframes/TUDelft/IMAV2013/ARDrone/$AC_ID_calib.xml"/>
<section name="IMU" prefix="IMU_">
<!-- Body to IMU is no difference -->
<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="0." unit="deg"/>
</section>
<!-- local magnetic field, calculated for: 52°3'56", 4°31'24" -->
<!-- http://paparazzi.enac.fr/wiki/Subsystem/ahrs#Local_Magnetic_Field -->
<section name="AHRS" prefix="AHRS_">
<define name="H_X" value="0.513081"/>
<define name="H_Y" value="-0.00242783"/>
<define name="H_Z" value="0.858336"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="22.4" 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="20"/>
<define name="DEADBAND_Q" value="20"/>
<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="45" unit="deg"/>
<define name="SP_MAX_THETA" value="45" unit="deg"/>
<define name="SP_MAX_R" value="600" unit="deg/s"/>
<define name="DEADBAND_A" value="0"/>
<define name="DEADBAND_E" value="0"/>
<define name="DEADBAND_R" value="250"/>
<!-- reference -->
<define name="REF_OMEGA_P" value="900" unit="deg/s"/>
<define name="REF_ZETA_P" value="0.9"/>
<define name="REF_MAX_P" value="600." unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_Q" value="900" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.9"/>
<define name="REF_MAX_Q" value="600." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_R" value="600" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.9"/>
<define name="REF_MAX_R" value="400." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(4000.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="592"/>
<define name="PHI_DGAIN" value="303"/>
<define name="PHI_IGAIN" value="0"/>
<define name="THETA_PGAIN" value="606"/>
<define name="THETA_DGAIN" value="303"/>
<define name="THETA_IGAIN" value="0"/>
<define name="PSI_PGAIN" value="529"/>
<define name="PSI_DGAIN" value="353"/>
<define name="PSI_IGAIN" value="0"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value="0"/>
<define name="THETA_DDGAIN" value="0"/>
<define name="PSI_DDGAIN" value="52"/>
</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="283"/>
<define name="HOVER_KD" value="82"/>
<define name="HOVER_KI" value="13"/>
<!-- 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="NOMINAL_HOVER_THROTTLE" value="0.655"/>
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="MAX_BANK" value="30" unit="deg"/>
<define name="PGAIN" value="79"/>
<define name="DGAIN" value="100"/>
<define name="IGAIN" value="60"/>
</section>
<section name="AUTOPILOT">
<define name="MODE_STARTUP" value="AP_MODE_NAV"/>
<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_NAV"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="8700"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="9.35" unit="V"/>
<define name="LOW_BAT_LEVEL" value="9.45" unit="V"/>
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
</section>
</airframe>
@@ -0,0 +1,223 @@
<!-- this is a quadrocopter frame equiped with Lisa/S 0.1 and generic china pwm motor controllers -->
<!--
Applicable configuration:
airframe="airframes/examples/quadrotor_lisa_s.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml"
-->
<airframe name="quadrotor_lisa_s">
<servos driver="Pwm">
<servo name="RIGHT" no="5" min="1000" neutral="1150" max="1830"/>
<servo name="BACK" no="0" min="1000" neutral="1150" max="1830"/>
<servo name="LEFT" no="1" min="1000" neutral="1150" max="1830"/>
<servo name="FRONT" no="4" min="1000" neutral="1150" max="1830"/>
</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>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[0]"/>
<set servo="BACK" value="motor_mixing.commands[1]"/>
<set servo="LEFT" value="motor_mixing.commands[2]"/>
<set servo="RIGHT" value="motor_mixing.commands[3]"/>
</command_laws>
<section name="MIXING" prefix="MOTOR_MIXING_">
<define name="TRIM_ROLL" value="0"/>
<define name="TRIM_PITCH" value="0"/>
<define name="TRIM_YAW" 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="BODY_TO_IMU_PHI" value="182." unit="deg"/>
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
<define name="ACCEL_X_NEUTRAL" value="0"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="0"/>
<!-- MAGNETO CALIBRATION DELFT -->
<define name="MAG_X_NEUTRAL" value="-157"/>
<define name="MAG_Y_NEUTRAL" value="-379"/>
<define name="MAG_Z_NEUTRAL" value="130"/>
<define name="MAG_X_SENS" value="3.65789837026" integer="16"/>
<define name="MAG_Y_SENS" value="3.85373116155" integer="16"/>
<define name="MAG_Z_SENS" value="4.28038049955" integer="16"/>
<!-- MAGNETO CURRENT CALIBRATION -->
<define name="MAG_X_CURRENT_COEF" value="0.0103422023767"/>
<define name="MAG_Y_CURRENT_COEF" value="0.0084568317783"/>
<define name="MAG_Z_CURRENT_COEF" value="-0.01935617335"/>
</section>
<section name="AUTOPILOT">
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_DIRECT"/>
<define name="MODE_AUTO2" value="AP_MODE_ATTITUDE_Z_HOLD"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="3.0" unit="V"/>
</section>
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
<define name="SP_MAX_P" value="15000"/>
<define name="SP_MAX_Q" value="15000"/>
<define name="SP_MAX_R" value="15000"/>
<define name="GAIN_P" value="400"/>
<define name="GAIN_Q" value="400"/>
<define name="GAIN_R" value="418"/>
<define name="IGAIN_P" value="301"/>
<define name="IGAIN_Q" value="302"/>
<define name="IGAIN_R" value="303"/>
</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_PSI" value="45." unit="deg"/>
<define name="SP_MAX_R" value="90." unit="deg/s"/>
<define name="SP_MAX_P" value="90." unit="deg/s"/>
<define name="DEADBAND_R" value="250"/>
<define name="DEADBAND_A" value="250"/>
<!-- reference -->
<define name="REF_OMEGA_P" value="1500" unit="deg/s"/>
<define name="REF_ZETA_P" value="0.85"/>
<define name="REF_MAX_P" value="400." unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_Q" value="1500" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.85"/>
<define name="REF_MAX_Q" value="400." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
<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(1000.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="180"/>
<define name="PHI_DGAIN" value="140"/>
<define name="PHI_IGAIN" value="80"/>
<define name="THETA_PGAIN" value="180"/>
<define name="THETA_DGAIN" value="140"/>
<define name="THETA_IGAIN" value="80"/>
<define name="PSI_PGAIN" value="500"/>
<define name="PSI_DGAIN" value="200"/>
<define name="PSI_IGAIN" value="10"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value="0"/>
<define name="THETA_DDGAIN" value="0"/>
<define name="PSI_DDGAIN" value="0"/>
<define name="PHI_AGAIN" value="0"/>
<define name="THETA_AGAIN" value="0"/>
<define name="PSI_AGAIN" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="22.4" 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="531"/>
<define name="HOVER_KD" value="356"/>
<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="NOMINAL_HOVER_THROTTLE" value="0.669"/>
</section>
<section name="AHRS" prefix="AHRS_">
<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="50"/>
<define name="DGAIN" value="50"/>
<define name="IGAIN" 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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
</modules>
<firmware name="rotorcraft">
<target name="ap" board="lisa_s_0.1">
<subsystem name="radio_control" type="superbitrf_rc">
<define name="RADIO_TRANSMITTER_ID" value="2008496626"/> <!-- TUDelft Dx6i: TX 4 -->
<define name="RADIO_TRANSMITTER_CHAN" value="6"/>
<define name="RADIO_TRANSMITTER_PROTOCOL" value="0x01"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
<configure name="LISA_S_BARO" value="BARO_MS5611_SPI"/>
</target>
<target name="nps" board="pc">
<subsystem name="fdm" type="jsbsim"/>
<subsystem name="radio_control" type="ppm"/>
</target>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="pwm">
<define name="SERVO_HZ" value="400"/>
<define name="USE_SERVOS_1AND2"/>
</subsystem>
<subsystem name="telemetry" type="superbitrf"/>
<subsystem name="imu" type="lisa_s_v0.1"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_quat"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
</firmware>
</airframe>
+232
View File
@@ -0,0 +1,232 @@
<conf>
<aircraft
name="Ardrone2_raw_181"
ac_id="181"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_182"
ac_id="182"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_183"
ac_id="183"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_184"
ac_id="184"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_185"
ac_id="185"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_186"
ac_id="186"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_187"
ac_id="187"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_188"
ac_id="188"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_189"
ac_id="189"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_190"
ac_id="190"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_191"
ac_id="191"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_192"
ac_id="192"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_193"
ac_id="193"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_194"
ac_id="194"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_195"
ac_id="195"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft_vision.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="Ardrone2_raw_196"
ac_id="196"
airframe="airframes/TUDelft/IMAV2013/ardrone2_raw.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_ardrone.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_rate.xml settings/control/stabilization_att_int.xml settings/modules/flight_time.xml"
gui_color="red"
/>
<aircraft
name="ChouChou_LisaS"
ac_id="135"
airframe="airframes/TUDelft/IMAV2013/chouchou_lisa_s.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings=" settings/rotorcraft_basic.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml settings/control/rotorcraft_guidance.xml"
gui_color="blue"
/>
<aircraft
name="MavRick_LisaS"
ac_id="131"
airframe="airframes/TUDelft/IMAV2013/mavrick_lisa_s.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_fixedwing_imu.xml"
flight_plan="flight_plans/basic.xml"
settings=" settings/fixedwing_basic.xml settings/control/ctl_basic.xml settings/estimation/ins_neutrals.xml"
gui_color="white"
/>
<aircraft
name="MicroQuadTurnigy"
ac_id="136"
airframe="airframes/TUDelft/quadrotor_lisa_m_2_pwm_hbk_ppm.xml"
radio="radios/R6107SP_7ch.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/TUDelft/IMAV2013_rotorcraft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/modules/imu_quality_assessment.xml"
gui_color="blue"
/>
<aircraft
name="Quadrotor_LisaS"
ac_id="132"
airframe="airframes/examples/quadrotor_lisa_s.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml"
gui_color="blue"
/>
<aircraft
name="Walkera_GeniusV1"
ac_id="134"
airframe="airframes/TUDelft/IMAV2013/walkera_genius_v1.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml"
gui_color="orange"
/>
<aircraft
name="Walkera_V120D02S"
ac_id="133"
airframe="airframes/TUDelft/IMAV2013/walkera_V120D02S.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml"
gui_color="green"
/>
<aircraft
name="MicroQuadTurnigy"
ac_id="136"
airframe="airframes/TUDelft/quadrotor_lisa_m_2_pwm_hbk_ppm.xml"
radio="radios/R6107SP_7ch.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/TUDelft/rotorcraft_basic_delft.xml"
settings=" settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/modules/imu_quality_assessment.xml"
gui_color="blue"
/>
</conf>
@@ -0,0 +1,181 @@
<!-- this is a tiny MavRick fixedwing frame equiped with Lisa/S 0.1 -->
<!--
Applicable configuration:
airframe="airframes/TUDelft/IMAV2013/mavrick_lisa_s.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_fixedwing.xml"
flight_plan="flight_plans/fixedwing_basic.xml"
settings="settings/fixedwing_basic.xml"
-->
<airframe name="MavRick_LisaS">
<firmware name="fixedwing">
<define name="AGR_CLIMB" />
<target name="ap" board="lisa_s_0.1"/>
<subsystem name="radio_control" type="superbitrf_rc">
<define name="RADIO_TRANSMITTER_ID" value="2008496626"/> <!-- TUDelft Dx6i: TX 4 -->
<define name="RADIO_TRANSMITTER_CHAN" value="6"/>
<define name="RADIO_TRANSMITTER_PROTOCOL" value="0x01"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAP"/>
</subsystem>
<!-- Communication -->
<subsystem name="telemetry" type="superbitrf"/>
<!-- Actuators are automatically chosen according to board-->
<subsystem name="imu" type="lisa_s_v0.1"/>
<subsystem name="ahrs" type="float_dcm"/>
<define name="LISA_S_UPSIDE_DOWN"/>
<subsystem name="control"/>
<subsystem name="navigation"/>
<!-- Sensors -->
<subsystem name="gps" type="ublox"/>
<subsystem name="ins" type="alt_float"/>
<subsystem name="actuators" type="pwm_double"/>
</firmware>
<modules>
<load name="gps_ubx_ucenter.xml"/>
</modules>
<!-- commands section -->
<servos driver="Pwm">
<servo name="MOTOR" no="2" min="1040" neutral="1040" max="2000"/>
</servos>
<servos driver="Pwm_double">
<servo name="AILEVON_LEFT" no="0" min="1200" neutral="1500" max="1800"/>
<servo name="AILEVON_RIGHT" no="1" 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"/>
</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.75"/>
</section>
<command_laws>
<let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
<set servo="MOTOR" 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.85"/>
<define name="MAX_PITCH" value="0.6"/>
</section>
<section name="IMU" prefix="IMU_">
<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="0." unit="deg"/>
<define name="ACCEL_X_NEUTRAL" value="0"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="0"/>
<!-- From delft MAVLab -->
<define name="MAG_X_NEUTRAL" value="847"/>
<define name="MAG_Y_NEUTRAL" value="-415"/>
<define name="MAG_Z_NEUTRAL" value="-264"/>
<define name="MAG_X_SENS" value="2.43585513661" integer="16"/>
<define name="MAG_Y_SENS" value="3.71461295002" integer="16"/>
<define name="MAG_Z_SENS" value="3.4639003008" integer="16"/>
</section>
<section name="INS" prefix="INS_">
<define name="ROLL_NEUTRAL_DEFAULT" value="0.048" unit="rad"/>
<define name="PITCH_NEUTRAL_DEFAULT" value="0." unit="rad"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/>
<define name="CATASTROPHIC_BAT_LEVEL" value="3.2" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="3.3" unit="V"/>
<define name="LOW_BAT_LEVEL" value="3.4" unit="V"/>
<define name="MAX_BAT_LEVEL" value="3.7" unit="V"/>
</section>
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
</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.0"/>
<define name="COURSE_DGAIN" value="0.3"/>
<define name="ROLL_MAX_SETPOINT" value="0.6" 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_DGAIN" value="1.5"/>
<define name="ELEVATOR_OF_ROLL" value="1250"/>
<define name="ROLL_ATTITUDE_GAIN" value="7500"/>
<define name="ROLL_RATE_GAIN" value="1500"/>
</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="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="100" unit="m"/>
</section>
</airframe>
@@ -0,0 +1,241 @@
<!-- this is a quadrocopter frame equiped with Lisa/S 0.1 and generic china pwm motor controllers -->
<!--
Applicable configuration:
airframe="airframes/examples/quadrotor_lisa_s.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml"
-->
<airframe name="quadrotor_lisa_s">
<servos driver="Pwm">
<servo name="LEFT" no="4" min="1000" neutral="1100" max="1900"/>
<servo name="FRONT" no="5" min="1000" neutral="1100" max="1900"/>
<servo name="RIGHT" no="1" min="1000" neutral="1100" max="1900"/>
<servo name="BACK" no="0" min="1000" neutral="1100" max="1900"/>
</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="1000"/>
</commands>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[0]"/>
<set servo="BACK" value="motor_mixing.commands[1]"/>
<set servo="LEFT" value="motor_mixing.commands[2]"/>
<set servo="RIGHT" value="motor_mixing.commands[3]"/>
</command_laws>
<section name="MIXING" prefix="MOTOR_MIXING_">
<define name="TRIM_ROLL" value="0"/>
<define name="TRIM_PITCH" value="0"/>
<define name="TRIM_YAW" 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="BODY_TO_IMU_PHI" value="184." unit="deg"/>
<define name="BODY_TO_IMU_THETA" value="3." unit="deg"/>
<define name="BODY_TO_IMU_PSI" value="-90." unit="deg"/>
<define name="ACCEL_X_NEUTRAL" value="0"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="0"/>
<!-- MAGNETO CALIBRATION DELFT -->
<define name="MAG_X_NEUTRAL" value="302"/>
<define name="MAG_Y_NEUTRAL" value="-69"/>
<define name="MAG_Z_NEUTRAL" value="100"/>
<define name="MAG_X_SENS" value="4.12281780645" integer="16"/>
<define name="MAG_Y_SENS" value="4.2491445745" integer="16"/>
<define name="MAG_Z_SENS" value="4.44132606171" integer="16"/>
<!-- MAGNETO CURRENT CALIBRATION -->
<define name= "MAG_X_CURRENT_COEF" value="0.0103422023767"/>
<define name= "MAG_Y_CURRENT_COEF" value="0.0084568317783"/>
<define name= "MAG_Z_CURRENT_COEF" value="-0.01935617335"/>
</section>
<section name="AUTOPILOT">
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_DIRECT"/>
<define name="MODE_AUTO2" value="AP_MODE_ATTITUDE_DIRECT"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="3.0" unit="V"/>
</section>
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
<define name="SP_MAX_P" value="15000"/>
<define name="SP_MAX_Q" value="15000"/>
<define name="SP_MAX_R" value="15000"/>
<define name="GAIN_P" value="400"/>
<define name="GAIN_Q" value="400"/>
<define name="GAIN_R" value="418"/>
<define name="IGAIN_P" value="301"/>
<define name="IGAIN_Q" value="302"/>
<define name="IGAIN_R" value="303"/>
</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_PSI" value="45." unit="deg"/>
<define name="SP_MAX_R" value="90." unit="deg/s"/>
<define name="SP_MAX_P" value="90." unit="deg/s"/>
<define name="DEADBAND_R" value="250"/>
<define name="DEADBAND_A" 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="400." unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.85"/>
<define name="REF_MAX_Q" value="400." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_R" value="500" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="90." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(900.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="399"/>
<define name="PHI_DGAIN" value="183"/>
<define name="PHI_IGAIN" value="474"/>
<define name="THETA_PGAIN" value="399"/>
<define name="THETA_DGAIN" value="162"/>
<define name="THETA_IGAIN" value="474"/>
<define name="PSI_PGAIN" value="500"/>
<define name="PSI_DGAIN" value="300"/>
<define name="PSI_IGAIN" value="10"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value="0"/>
<define name="THETA_DDGAIN" value="0"/>
<define name="PSI_DDGAIN" value=" 300"/>
<define name="PHI_AGAIN" value="0"/>
<define name="THETA_AGAIN" value="0"/>
<define name="PSI_AGAIN" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="22.4" 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="400"/>
<define name="HOVER_KD" value="350"/>
<define name="HOVER_KI" value="144"/>
<!-- 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="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value="0.9"/>
</section>
<section name="AHRS" prefix="AHRS_">
<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="50"/>
<define name="DGAIN" value="50"/>
<define name="IGAIN" 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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
</modules>
<firmware name="rotorcraft">
<target name="ap" board="lisa_s_0.1">
<subsystem name="radio_control" type="superbitrf_rc">
<define name="RADIO_TRANSMITTER_ID" value="2008496626"/> <!-- 425044546 -->
<define name="RADIO_TRANSMITTER_CHAN" value="6"/> <!-- 9 -->
<define name="RADIO_TRANSMITTER_PROTOCOL" value="0x01"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAP"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
<configure name="LISA_S_BARO" value="BARO_MS5611_SPI"/>
</target>
<target name="nps" board="pc">
<subsystem name="fdm" type="jsbsim"/>
<subsystem name="radio_control" type="ppm"/>
</target>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="pwm">
<define name="SERVO_HZ" value="400"/>
<define name="USE_SERVOS_1AND2"/>
</subsystem>
<subsystem name="telemetry" type="superbitrf"/>
<subsystem name="imu" type="lisa_s_v0.1"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_quat"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
</firmware>
<firmware name="lisa_test_progs">
<target name="test_led" board="lisa_s_0.1">
<configure name="SYS_TIME_LED" value="none"/>
</target>
<target name="test_uart" board="lisa_s_0.1"/>
<target name="test_servos" board="lisa_s_0.1"/>
<target name="test_telemetry" board="lisa_s_0.1"/>
<target name="test_imu_aspirin" board="lisa_s_0.1"/>
<target name="test_rc_spektrum" board="lisa_s_0.1"/>
<target name="test_baro" board="lisa_s_0.1"/>
<target name="test_imu_b2" board="lisa_s_0.1"/>
<target name="test_can" board="lisa_s_0.1"/>
</firmware>
</airframe>
@@ -0,0 +1,196 @@
<!-- this is a default Walkera V120D02S frame equiped with Lisa/S 0.1 -->
<!--
Applicable configuration:
airframe="airframes/TUDelft/IMAV2013/walkera_V120D02S.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml"
-->
<airframe name="walkera_v120d02s">
<servos driver="Pwm">
<servo name="CIC_FRONT" no="5" min="2000" neutral="1550" max="900"/>
<servo name="CIC_RIGHT" no="0" min="900" neutral="1550" max="2000"/>
<servo name="CIC_LEFT" no="1" min="900" neutral="1550" max="2000"/>
<servo name="TAIL" no="2" min="1000" neutral="1400" max="1800"/>
<servo name="GAS" no="3" min="900" neutral="980" max="2200"/>
</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>
<command_laws>
<let var="hoverpower" value=".75*MAX_PPRZ"/>
<let var="hoverstick" value=".35*MAX_PPRZ"/>
<let var="halfway" value="(@THRUST >= ($hoverstick) ? 1 : 0)"/>
<let var="collective" value="@THRUST * 0.4 + (MAX_PPRZ*0.01)"/>
<let var="gas" value="($hoverpower) + $halfway * (((@THRUST) - ($hoverstick)) * (MAX_PPRZ - ($hoverpower))) / (MAX_PPRZ - ($hoverstick)) + (1 - $halfway) * ((@THRUST - ($hoverstick)) * ($hoverpower)) / ($hoverstick)"/>
<set servo="GAS" value="$gas"/>
<set servo="CIC_LEFT" value="((@PITCH*0.5*0.5)-(@ROLL*0.5*0.7))+($collective)"/>
<set servo="CIC_RIGHT" value="((-@PITCH*0.5*0.5)-(@ROLL*0.5*0.7))-($collective)"/>
<set servo="CIC_FRONT" value="-@PITCH*0.5*1.0+($collective)"/>
<set servo="TAIL" value="@YAW"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="BODY_TO_IMU_PHI" value="190." unit="deg"/>
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
<define name="ACCEL_X_NEUTRAL" value="0"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="0"/>
<!-- From delft MAVLab (TODO) -->
<define name="MAG_X_NEUTRAL" value="-638"/>
<define name="MAG_Y_NEUTRAL" value="-101"/>
<define name="MAG_Z_NEUTRAL" value="-307"/>
<define name="MAG_X_SENS" value="3.61215021824" integer="16"/>
<define name="MAG_Y_SENS" value="4.23407732206" integer="16"/>
<define name="MAG_Z_SENS" value="4.28237277804" integer="16"/>
</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_DIRECT"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="10"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="4.3" unit="V"/>
</section>
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
<define name="SP_MAX_P" value="80000"/>
<define name="SP_MAX_Q" value="80000"/>
<define name="SP_MAX_R" value="80000"/>
<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"/>
<define name="DEADBAND_A" value="250"/>
<!-- reference -->
<define name="REF_OMEGA_P" value="3000" 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="3000" 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="3000" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="300." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(7000.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="3052"/>
<define name="PHI_DGAIN" value="108"/>
<define name="PHI_IGAIN" value="14"/>
<define name="THETA_PGAIN" value="3052"/>
<define name="THETA_DGAIN" value="108"/>
<define name="THETA_IGAIN" value="14"/>
<define name="PSI_PGAIN" value="1099"/>
<define name="PSI_DGAIN" value="201"/>
<define name="PSI_IGAIN" value="19"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value="0"/>
<define name="THETA_DDGAIN" value="0"/>
<define name="PSI_DDGAIN" value="0"/>
<define name="PHI_AGAIN" value="0"/>
<define name="THETA_AGAIN" value="0"/>
<define name="PSI_AGAIN" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="22.4" 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="281"/>
<define name="HOVER_KD" value="66"/>
<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="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value="0.9"/>
</section>
<section name="AHRS" prefix="AHRS_">
<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="16"/>
<define name="DGAIN" value="35"/>
<define name="IGAIN" value="6"/>
</section>
<section name="MISC">
<define name="FACE_REINJ_1" value="1024"/>
</section>
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
</modules>
<firmware name="rotorcraft">
<target name="ap" board="lisa_s_0.1">
<subsystem name="radio_control" type="superbitrf_rc">
<define name="RADIO_TRANSMITTER_ID" value="2008496626"/> <!-- TUDelft Dx6i: TX 4 -->
<define name="RADIO_TRANSMITTER_CHAN" value="6"/>
<define name="RADIO_TRANSMITTER_PROTOCOL" value="0x01"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAP"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
<configure name="LISA_S_BARO" value="BARO_MS5611_SPI"/>
</target>
<subsystem name="actuators" type="pwm">
<define name="SERVO_HZ" value="50"/>
<define name="USE_SERVOS_1AND2"/>
</subsystem>
<subsystem name="telemetry" type="superbitrf"/>
<subsystem name="imu" type="lisa_s_v0.1"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_quat"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
</firmware>
</airframe>
@@ -0,0 +1,201 @@
<!-- this is a Walkera Genius V1 frame equiped with Lisa/S 0.1 with brushless main rotor -->
<!--
Applicable configuration:
airframe="airframes/TUDelft/IMAV2013/walkera_genius_v1.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/rotorcraft_basic.xml"
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml"
-->
<airframe name="walkera_genius_v1">
<servos driver="Pwm">
<servo name="CIC_FRONT" no="4" min="570" neutral="1600" max="2200"/>
<servo name="CIC_RIGHT" no="5" min="570" neutral="1400" max="2200"/>
<servo name="CIC_LEFT" no="0" min="570" neutral="1600" max="2200"/>
<servo name="TAIL" no="2" min="0" neutral="0" max="500"/>
<servo name="GAS" no="3" min="0" neutral="10" max="500"/>
</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>
<command_laws>
<let var="hoverpower" value=".75*MAX_PPRZ"/>
<let var="hoverstick" value=".35*MAX_PPRZ"/>
<let var="halfway" value="(@THRUST >= ($hoverstick) ? 1 : 0)"/>
<let var="collective" value="@THRUST * 0.4 + (MAX_PPRZ*0.01)"/>
<let var="gas" value="($hoverpower) + $halfway * (((@THRUST) - ($hoverstick)) * (MAX_PPRZ - ($hoverpower))) / (MAX_PPRZ - ($hoverstick)) + (1 - $halfway) * ((@THRUST - ($hoverstick)) * ($hoverpower)) / ($hoverstick)"/>
<set servo="GAS" value="$gas"/>
<set servo="CIC_LEFT" value="((@PITCH*0.5*0.5)-(@ROLL*0.5*0.73))-($collective)"/>
<set servo="CIC_RIGHT" value="((-@PITCH*0.5*0.5)-(@ROLL*0.5*0.73))+($collective)"/>
<set servo="CIC_FRONT" value="-@PITCH*0.5-($collective)"/>
<set servo="TAIL" value="@YAW+0.4*$gas"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="BODY_TO_IMU_PHI" value="185." unit="deg"/>
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
<define name="ACCEL_X_NEUTRAL" value="0"/>
<define name="ACCEL_Y_NEUTRAL" value="0"/>
<define name="ACCEL_Z_NEUTRAL" value="0"/>
<!-- From delft MAVLab -->
<define name="MAG_X_NEUTRAL" value="396"/>
<define name="MAG_Y_NEUTRAL" value="-260"/>
<define name="MAG_Z_NEUTRAL" value="-91"/>
<define name="MAG_X_SENS" value="3.71635905504" integer="16"/>
<define name="MAG_Y_SENS" value="3.5526454063" integer="16"/>
<define name="MAG_Z_SENS" value="3.52339566014" integer="16"/>
<!-- Current correction -->
<define name="MAG_X_CURRENT_COEF" value="-0.390312445109"/>
<define name="MAG_Y_CURRENT_COEF" value="-0.068976232866"/>
<define name="MAG_Z_CURRENT_COEF" value="-0.181415585657"/>
</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_DIRECT"/>
</section>
<section name="BAT">
<define name="MILLIAMP_AT_FULL_THROTTLE" value="3700"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="3.4" unit="V"/>
</section>
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
<define name="SP_MAX_P" value="80000"/>
<define name="SP_MAX_Q" value="80000"/>
<define name="SP_MAX_R" value="80000"/>
<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"/>
<define name="DEADBAND_A" value="250"/>
<!-- reference -->
<define name="REF_OMEGA_P" value="3000" 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="3000" 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="3000" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="300." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(7000.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="3052"/>
<define name="PHI_DGAIN" value="108"/>
<define name="PHI_IGAIN" value="0"/>
<define name="THETA_PGAIN" value="3052"/>
<define name="THETA_DGAIN" value="108"/>
<define name="THETA_IGAIN" value="0"/>
<define name="PSI_PGAIN" value="944"/>
<define name="PSI_DGAIN" value="300"/>
<define name="PSI_IGAIN" value="10"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value="0"/>
<define name="THETA_DDGAIN" value="0"/>
<define name="PSI_DDGAIN" value=" 300"/>
<define name="PHI_AGAIN" value="0"/>
<define name="THETA_AGAIN" value="0"/>
<define name="PSI_AGAIN" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="22.4" 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="281"/>
<define name="HOVER_KD" value="66"/>
<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="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value="0.9"/>
</section>
<section name="AHRS" prefix="AHRS_">
<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="50"/>
<define name="DGAIN" value="50"/>
<define name="IGAIN" value="0"/>
</section>
<section name="MISC">
<define name="FACE_REINJ_1" value="1024"/>
</section>
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
</modules>
<firmware name="rotorcraft">
<target name="ap" board="lisa_s_0.1">
<subsystem name="radio_control" type="superbitrf_rc">
<define name="RADIO_TRANSMITTER_ID" value="2008496626"/> <!-- TUDelft Dx6i: TX 4 -->
<define name="RADIO_TRANSMITTER_CHAN" value="6"/>
<define name="RADIO_TRANSMITTER_PROTOCOL" value="0x01"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
<configure name="LISA_S_BARO" value="BARO_MS5611_SPI"/>
</target>
<subsystem name="actuators" type="pwm">
<define name="TIM5_SERVO_HZ" value="2000"/>
<define name="SERVO_HZ" value="300"/>
<define name="USE_SERVOS_1AND2"/>
</subsystem>
<subsystem name="telemetry" type="superbitrf"/>
<subsystem name="imu" type="lisa_s_v0.1"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_quat"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
</firmware>
</airframe>
@@ -30,7 +30,7 @@
<subsystem name="gps" type="ublox">
<configure name="GPS_BAUD" value="B57600"/>
</subsystem>
<subsystem name="stabilization" type="euler"/>
<subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
</firmware>
@@ -253,7 +253,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_default.h&quot;"/>
</section>
@@ -30,7 +30,7 @@
<subsystem name="gps" type="ublox">
<configure name="GPS_BAUD" value="B57600"/>
</subsystem>
<subsystem name="stabilization" type="euler"/>
<subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<define name="PRINT_CONFIG"/>
@@ -253,7 +253,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
+135 -148
View File
@@ -4,235 +4,222 @@
<firmware name="rotorcraft">
<target name="ap" board="ardrone2_raw">
<define name="USE_INS_NAV_INIT" />
<define name="USE_INS_NAV_INIT"/>
<!--configure name="USE_NEW_I2C_DRIVER" value="1"/ -->
<configure name="AHRS_PROPAGATE_FREQUENCY" value="200" />
<define name="AHRS_PROPAGATE_FREQUENCY" value="200" />
<define name="USE_BAROMETER" />
<subsystem name="telemetry" type="udp" />
<subsystem name="radio_control" type="datalink" />
<configure name="AHRS_PROPAGATE_FREQUENCY" value="200"/>
<define name="AHRS_PROPAGATE_FREQUENCY" value="200"/>
<define name="INS_PROPAGATE_FREQUENCY" value="200"/>
<define name="USE_BAROMETER"/>
<define name="AUTOPILOT_DISABLE_AHRS_KILL"/>
<subsystem name="telemetry" type="udp"/>
<subsystem name="radio_control" type="datalink"/>
</target>
<target name="nps" board="pc">
<subsystem name="fdm" type="jsbsim" />
<subsystem name="radio_control" type="ppm" />
<subsystem name="fdm" type="jsbsim"/>
<subsystem name="radio_control" type="ppm"/>
</target>
<subsystem name="motor_mixing" />
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="ardrone2" />
<subsystem name="imu" type="ardrone2" />
<subsystem name="gps" type="sirf" />
<subsystem name="stabilization" type="int_quat" />
<subsystem name="ahrs" type="int_cmpl_quat" />
<subsystem name="ins" />
<subsystem name="actuators" type="ardrone2"/>
<subsystem name="imu" type="ardrone2"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_quat"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins" type="extended"/>
</firmware>
<!-- <modules main_freq="512"> <load name="sys_mon.xml" /> </modules> -->
<modules main_freq="512">
<load name="gps_ubx_ucenter.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" />
<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>
<servos driver="Default">
<servo name="TOP_LEFT" no="0" min="0" neutral="1" max="500" />
<servo name="TOP_RIGHT" no="1" min="0" neutral="1" max="500" />
<servo name="BOTTOM_LEFT" no="3" min="0" neutral="1" max="500" />
<servo name="BOTTOM_RIGHT" no="2" min="0" neutral="1" max="500" />
<servo name="TOP_LEFT" no="0" min="0" neutral="1" max="500"/>
<servo name="TOP_RIGHT" no="1" min="0" neutral="1" max="500"/>
<servo name="BOTTOM_LEFT" no="3" min="0" neutral="1" max="500"/>
<servo name="BOTTOM_RIGHT" no="2" min="0" neutral="1" max="500"/>
</servos>
<section name="MIXING" prefix="MOTOR_MIXING_">
<define name="TRIM_ROLL" value="0" />
<define name="TRIM_PITCH" value="0" />
<define name="TRIM_YAW" value="0" />
<define name="NB_MOTOR" value="4" />
<define name="SCALE" value="255" />
<define name="TRIM_ROLL" value="0"/>
<define name="TRIM_PITCH" value="0"/>
<define name="TRIM_YAW" value="0"/>
<define name="NB_MOTOR" value="4"/>
<define name="SCALE" value="255"/>
<!-- Time cross layout (X), as documented in paparazzi -->
<define name="ROLL_COEF" value="{ 256, -256, -256, 256 }" />
<define name="PITCH_COEF" value="{ 256, 256, -256, -256 }" />
<define name="YAW_COEF" value="{ -256, 256, -256, 256 }" />
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }" />
<define name="ROLL_COEF" value="{ 256, -256, -256, 256 }"/>
<define name="PITCH_COEF" value="{ 256, 256, -256, -256 }"/>
<define name="YAW_COEF" value="{ -256, 256, -256, 256 }"/>
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)" />
<set servo="TOP_LEFT" value="motor_mixing.commands[SERVO_TOP_LEFT]" />
<set servo="TOP_RIGHT" value="motor_mixing.commands[SERVO_TOP_RIGHT]" />
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[SERVO_BOTTOM_LEFT]" />
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[SERVO_BOTTOM_RIGHT]" />
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="TOP_LEFT" value="motor_mixing.commands[SERVO_TOP_LEFT]"/>
<set servo="TOP_RIGHT" value="motor_mixing.commands[SERVO_TOP_RIGHT]"/>
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[SERVO_BOTTOM_LEFT]"/>
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[SERVO_BOTTOM_RIGHT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="ACCEL_X_NEUTRAL" value="2072" />
<define name="ACCEL_Y_NEUTRAL" value="2040" />
<define name="ACCEL_Z_NEUTRAL" value="2047" />
<define name="ACCEL_X_SENS" value="19.1079036954" integer="16" />
<define name="ACCEL_Y_SENS" value="19.5393623518" integer="16" />
<define name="ACCEL_Z_SENS" value="19.6539180847" integer="16" />
<define name="ACCEL_X_NEUTRAL" value="2056"/>
<define name="ACCEL_Y_NEUTRAL" value="2060"/>
<define name="ACCEL_Z_NEUTRAL" value="2052"/>
<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="99"/>
<define name="MAG_Y_NEUTRAL" value="59"/>
<define name="MAG_Z_NEUTRAL" value="-65"/>
<define name="MAG_X_SENS" value="14.8494072406" integer="16"/>
<define name="MAG_Y_SENS" value="14.4187929352" integer="16"/>
<define name="MAG_Z_SENS" value="15.4390790318" integer="16"/>
<define name="MAG_X_CURRENT_COEF" value="0.00175105205138"/>
<define name="MAG_Y_CURRENT_COEF" value="0.000172518663485"/>
<define name="MAG_Z_CURRENT_COEF" value="0.00022802329524"/>
<define name="GYRO_P_SENS_NUM" value="4359" />
<define name="GYRO_P_SENS_DEN" value="1000" />
<define name="GYRO_Q_SENS_NUM" value="4359" />
<define name="GYRO_Q_SENS_DEN" value="1000" />
<define name="GYRO_R_SENS_NUM" value="4359" />
<define name="GYRO_R_SENS_DEN" value="1000" />
<define name="GYRO_P_SIGN" value="1" />
<define name="GYRO_Q_SIGN" value="-1" />
<define name="GYRO_R_SIGN" value="-1" />
<define name="MAG_X_NEUTRAL" value="118" />
<define name="MAG_Y_NEUTRAL" value="-65" />
<define name="MAG_Z_NEUTRAL" value="110" />
<define name="MAG_X_SENS" value="14.6416865144" integer="16" />
<define name="MAG_Y_SENS" value="14.5167340835" integer="16" />
<define name="MAG_Z_SENS" value="15.1670335124" integer="16" />
<define name="MAG_X_SIGN" value="-1" />
<define name="MAG_Y_SIGN" value="1" />
<define name="MAG_Z_SIGN" value="-1" />
<!-- roll -->
<define name="BODY_TO_IMU_PHI" value="0." unit="deg" />
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
<!-- pitch -->
<define name="BODY_TO_IMU_THETA" value="0." unit="deg" />
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
<!-- yaw -->
<define name="BODY_TO_IMU_PSI" value="0." unit="deg" />
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
</section>
<!-- local magnetic field, calculated for: 52°3'56", 4°31'24" -->
<!-- http://paparazzi.enac.fr/wiki/Subsystem/ahrs#Local_Magnetic_Field -->
<section name="AHRS" prefix="AHRS_">
<define name="H_X" value="0.3892503" />
<define name="H_Y" value="0.0017972" />
<define name="H_Z" value="0.9211303" />
<define name="H_X" value="0.3892503"/>
<define name="H_Y" value="0.0017972"/>
<define name="H_Z" value="0.9211303"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="22.3" integer="16" />
<define name="BARO_SENS" value="22.4" 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="20" />
<define name="DEADBAND_Q" value="20" />
<define name="DEADBAND_R" value="200" />
<define name="REF_TAU" value="4" />
<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="20"/>
<define name="DEADBAND_Q" value="20"/>
<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="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" />
<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" />
<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="15" unit="deg" />
<define name="SP_MAX_THETA" value="15" unit="deg" />
<define name="SP_MAX_R" value="90" unit="deg/s" />
<define name="DEADBAND_A" value="0" />
<define name="DEADBAND_E" value="0" />
<define name="DEADBAND_R" value="250" />
<define name="SP_MAX_PHI" value="45" unit="deg"/>
<define name="SP_MAX_THETA" value="45" unit="deg"/>
<define name="SP_MAX_R" value="600" unit="deg/s"/>
<define name="DEADBAND_A" value="0"/>
<define name="DEADBAND_E" value="0"/>
<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="400." unit="deg/s" />
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)" />
<define name="REF_OMEGA_P" value="900" unit="deg/s"/>
<define name="REF_ZETA_P" value="0.9"/>
<define name="REF_MAX_P" value="600." unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_Q" value="800" unit="deg/s" />
<define name="REF_ZETA_Q" value="0.85" />
<define name="REF_MAX_Q" value="400." unit="deg/s" />
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)" />
<define name="REF_OMEGA_Q" value="900" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.9"/>
<define name="REF_MAX_Q" value="600." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
<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.)" />
<define name="REF_OMEGA_R" value="600" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.9"/>
<define name="REF_MAX_R" value="400." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(4000.)"/>
<!-- feedback -->
<define name="PHI_PGAIN" value="592" />
<define name="PHI_DGAIN" value="303" />
<define name="PHI_IGAIN" value="0" />
<define name="PHI_PGAIN" value="592"/>
<define name="PHI_DGAIN" value="303"/>
<define name="PHI_IGAIN" value="0"/>
<define name="THETA_PGAIN" value="606" />
<define name="THETA_DGAIN" value="303" />
<define name="THETA_IGAIN" value="0" />
<define name="THETA_PGAIN" value="606"/>
<define name="THETA_DGAIN" value="303"/>
<define name="THETA_IGAIN" value="0"/>
<define name="PSI_PGAIN" value="529" />
<define name="PSI_DGAIN" value="353" />
<define name="PSI_IGAIN" value="0" />
<define name="PSI_PGAIN" value="529"/>
<define name="PSI_DGAIN" value="353"/>
<define name="PSI_IGAIN" value="0"/>
<!-- feedforward -->
<define name="PHI_DDGAIN" value="0" />
<define name="THETA_DDGAIN" value="0" />
<define name="PSI_DDGAIN" value="52" />
<define name="PHI_DDGAIN" value="0"/>
<define name="THETA_DDGAIN" value="0"/>
<define name="PSI_DDGAIN" value="52"/>
</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="283" />
<define name="HOVER_KD" value="18" />
<define name="HOVER_KI" value="13" />
<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="283"/>
<define name="HOVER_KD" value="82"/>
<define name="HOVER_KI" value="13"/>
<!-- 1.5m/s for full stick : BOOZ_SPEED_I_OF_F(1.5) / (MAX_PPRZ/2) -->
<define name="RC_CLIMB_COEF" value="163" />
<define name="RC_CLIMB_COEF" value="163"/>
<!-- BOOZ_SPEED_I_OF_F(1.5) * 20% -->
<define name="RC_CLIMB_DEAD_BAND" value="160000" />
<!-- NOMINAL_HOVER_THROTTLE sets a fixed value instead of the adaptive
estimation -->
<define name="NOMINAL_HOVER_THROTTLE" value="0.4" />
<define name="RC_CLIMB_DEAD_BAND" value="160000"/>
<define name="NOMINAL_HOVER_THROTTLE" value="0.655"/>
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
<define name="MAX_BANK" value="20" unit="deg" />
<define name="PGAIN" value="100" />
<define name="DGAIN" value="100" />
<define name="IGAIN" value="0" />
<define name="MAX_BANK" value="20" unit="deg"/>
<define name="PGAIN" value="79"/>
<define name="DGAIN" value="100"/>
<define name="IGAIN" value="26"/>
</section>
<section name="SIMULATOR" prefix="NPS_">
<define name="ACTUATOR_NAMES"
value="{&quot;top_left_motor&quot;, &quot;top_right_motor&quot;, &quot;bottom_right_motor&quot;, &quot;bottom_left_motor&quot;}" />
<define name="INITIAL_CONDITITONS" value="&quot;reset00&quot;" />
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_default.h&quot;" />
<define name="ACTUATOR_NAMES" value="{&quot;top_left_motor&quot;, &quot;top_right_motor&quot;, &quot;bottom_right_motor&quot;, &quot;bottom_left_motor&quot;}"/>
<define name="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_default.h&quot;"/>
</section>
<section name="AUTOPILOT">
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT" />
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_Z_HOLD" />
<define name="MODE_AUTO2" value="AP_MODE_HOVER_Z_HOLD" />
<define name="MODE_STARTUP" value="AP_MODE_NAV"/>
<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_NAV"/>
</section>
<section name="BAT">
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V" />
<define name="CRITIC_BAT_LEVEL" value="9.6" unit="V" />
<define name="LOW_BAT_LEVEL" value="9.7" unit="V" />
<define name="MAX_BAT_LEVEL" value="12.4" unit="V" />
<define name="MILLIAMP_AT_FULL_THROTTLE" value="8700"/>
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
<define name="CRITIC_BAT_LEVEL" value="9.6" unit="V"/>
<define name="LOW_BAT_LEVEL" value="9.7" unit="V"/>
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
</section>
</airframe>
+3 -3
View File
@@ -6,6 +6,7 @@
<target name="ap" board="ardrone2_sdk">
<define name="USE_INS_NAV_INIT" />
<define name="ROTORCRAFT_COMMANDS_YAW_ALWAYS_ENABLED"/>
<!-- <define name="ARDRONE2_DEBUG" /> -->
<!-- <define name="USE_GPS_HEIGHT" /> -->
<!-- <define name="ARDRONE_FLIGHT_INDOOR" /> -->
<!-- <define name="ARDRONE_WITHOUT_SHELL" /> -->
@@ -84,9 +85,8 @@
<define name="RC_CLIMB_COEF" value="163" />
<!-- BOOZ_SPEED_I_OF_F(1.5) * 20% -->
<define name="RC_CLIMB_DEAD_BAND" value="160000" />
<!-- NOMINAL_HOVER_THROTTLE sets a fixed value instead of the adaptive
estimation -->
<define name="NOMINAL_HOVER_THROTTLE" value="0.5" />
<define name="NOMINAL_HOVER_THROTTLE" value="0.5"/>
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
</section>
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
+2 -2
View File
@@ -19,7 +19,7 @@
<subsystem name="gps" type="ublox"/>
<subsystem name="actuators" type="mkk"/>
<subsystem name="imu" type="b2_v1.0"/>
<subsystem name="stabilization" type="euler"/>
<subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
</firmware>
@@ -232,7 +232,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;" />
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;" />
</section>
+1 -1
View File
@@ -204,7 +204,7 @@
<subsystem name="actuators" type="asctec"/>
<subsystem name="imu" type="b2_v1.1"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="euler"/>
<subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/>
<subsystem name="ins"/>
</firmware>
@@ -0,0 +1,34 @@
<!-- Default Aspirin V2.1 values based on the datasheet -->
<!-- You can also just leave out those defines then the defaults will be provided by imu_aspirin2.h -->
<airframe>
<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="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="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"/>
</section>
</airframe>
+5 -7
View File
@@ -207,7 +207,7 @@ B2L -> CW
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -223,12 +223,10 @@ B2L -> CW
<firmware name="rotorcraft">
<target name="ap" board="lisa_m_2.0">
<subsystem name="radio_control" type="spektrum">
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
</target>
<target name="nps" board="pc">
@@ -249,7 +247,7 @@ B2L -> CW
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
@@ -189,7 +189,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -233,7 +233,7 @@
</subsystem>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
</airframe>
+10 -12
View File
@@ -205,7 +205,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -215,16 +215,14 @@
<load name="led_safety_status.xml"/>
</modules>
<firmware name="rotorcraft">
<target name="ap" board="lisa_l_1.1">
<subsystem name="radio_control" type="spektrum">
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
</target>
<firmware name="rotorcraft">
<target name="ap" board="lisa_l_1.1">
<subsystem name="radio_control" type="spektrum">
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
</subsystem>
</target>
<target name="nps" board="pc">
<subsystem name="fdm" type="jsbsim"/>
@@ -244,7 +242,7 @@
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
+5 -7
View File
@@ -166,7 +166,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -178,12 +178,10 @@
<firmware name="rotorcraft">
<target name="ap" board="lisa_m_2.0">
<subsystem name="radio_control" type="spektrum">
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
</target>
<target name="nps" board="pc">
@@ -205,7 +203,7 @@
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
+2 -4
View File
@@ -177,7 +177,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -195,8 +195,6 @@
<subsystem name="radio_control" type="ppm">
<configure name="RADIO_CONTROL_PPM_PIN" value="UART1_RX"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
</target>
<target name="nps" board="pc">
@@ -220,7 +218,7 @@
</subsystem>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
+2 -2
View File
@@ -200,7 +200,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -244,7 +244,7 @@
</subsystem>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
</airframe>
+5 -7
View File
@@ -201,7 +201,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -213,12 +213,10 @@
<firmware name="rotorcraft">
<target name="ap" board="lisa_l_1.1">
<subsystem name="radio_control" type="spektrum">
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
</target>
<target name="nps" board="pc">
@@ -239,7 +237,7 @@
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
+5 -7
View File
@@ -162,7 +162,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -174,12 +174,10 @@
<firmware name="rotorcraft">
<target name="ap" board="lisa_m_1.0">
<subsystem name="radio_control" type="spektrum">
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
</target>
<target name="nps" board="pc">
@@ -200,7 +198,7 @@
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
+5 -7
View File
@@ -164,7 +164,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -180,12 +180,10 @@
<firmware name="rotorcraft">
<target name="ap" board="lisa_m_2.0">
<subsystem name="radio_control" type="spektrum">
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
<configure name="LISA_M_BARO" value="BARO_MS5611_SPI"/>
</target>
@@ -207,7 +205,7 @@
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
+3 -5
View File
@@ -162,7 +162,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -178,10 +178,8 @@
<firmware name="rotorcraft">
<target name="ap" board="lisa_m_2.0">
<subsystem name="radio_control" type="ppm">
<configure name="RADIO_CONTROL_PPM_PIN" value="UART1_RX"/>
<configure name="RADIO_CONTROL_PPM_PIN" value="UART1_RX"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
</target>
<target name="nps" board="pc">
@@ -202,7 +200,7 @@
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<!--subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
+233
View File
@@ -0,0 +1,233 @@
<!-- this is a quadrocopter frame equiped with Lisa/S 0.1 and generic china pwm motor controllers -->
<!--
Applicable configuration:
airframe="airframes/esden/quady_ls01pwm.xml"
radio="radios/cockpitSX.xml"
telemetry="telemetry/default_rotorcraft.xml"
flight_plan="flight_plans/dummy.xml"
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml"
-->
<airframe name="quady_lm2a2pwm">
<servos driver="Pwm">
<servo name="FRONT" no="0" min="1000" neutral="1100" max="1950"/>
<servo name="RIGHT" no="1" min="1000" neutral="1100" max="1950"/>
<servo name="BACK" no="2" min="1000" neutral="1100" max="1950"/>
<servo name="LEFT" no="3" min="1000" neutral="1100" max="1950"/>
</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>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="MIXING" prefix="MOTOR_MIXING_">
<define name="TRIM_ROLL" value="0"/>
<define name="TRIM_PITCH" value="0"/>
<define name="TRIM_YAW" value="0"/>
<define name="NB_MOTOR" value="4"/>
<define name="SCALE" value="256"/>
<define name="ROLL_COEF" value="{ 0, -256, 0, 256 }"/>
<define name="PITCH_COEF" value="{ 256, 0, -256, 0 }"/>
<define name="YAW_COEF" value="{ -256, 256, -256, 256 }"/>
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<include href="conf/airframes/esden/calib/ls01-default.xml"/>
<section name="IMU" prefix="IMU_">
<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="45." 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_HOVER_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_PSI" value="45." unit="deg"/>
<define name="SP_MAX_R" value="90." unit="deg/s"/>
<define name="SP_MAX_P" value="90." unit="deg/s"/>
<define name="DEADBAND_R" value="250"/>
<define name="DEADBAND_A" 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="400." unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.85"/>
<define name="REF_MAX_Q" value="400." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
<define name="REF_OMEGA_R" value="500" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="90." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(900.)"/>
<!-- 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="500"/>
<define name="PSI_DGAIN" value="300"/>
<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"/>
<define name="PHI_AGAIN" value="0"/>
<define name="THETA_AGAIN" value="0"/>
<define name="PSI_AGAIN" value="0"/>
</section>
<section name="INS" prefix="INS_">
<define name="BARO_SENS" value="22.4" 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="400"/>
<define name="HOVER_KD" value="350"/>
<define name="HOVER_KI" value="144"/>
<!-- 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="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value ="0.9"/>
</section>
<section name="AHRS" prefix="AHRS_">
<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="50"/>
<define name="DGAIN" value="50"/>
<define name="IGAIN" 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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
<modules main_freq="512">
<load name="gps_ubx_ucenter.xml"/>
</modules>
<firmware name="rotorcraft">
<target name="ap" board="lisa_s_0.1">
<subsystem name="radio_control" type="spektrum">
<define name="RADIO_MODE" value="RADIO_FLAP"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="0"/>
</subsystem>
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
<configure name="LISA_S_BARO" value="BARO_MS5611_SPI"/>
</target>
<target name="nps" board="pc">
<subsystem name="fdm" type="jsbsim"/>
<subsystem name="radio_control" type="ppm"/>
</target>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="pwm">
<define name="SERVO_HZ" value="400"/>
<define name="USE_SERVOS_1AND2"/>
</subsystem>
<subsystem name="telemetry" type="transparent"/>
<subsystem name="imu" type="lisa_s_v0.1"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="int_quat"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins"/>
<!--define name="USE_INS_NAV_INIT"/-->
<!--subsystem name="stabilization" type="euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/-->
</firmware>
<firmware name="lisa_test_progs">
<target name="test_led" board="lisa_s_0.1">
<configure name="SYS_TIME_LED" value="none"/>
</target>
<target name="test_uart" board="lisa_s_0.1"/>
<target name="test_servos" board="lisa_s_0.1"/>
<target name="test_telemetry" board="lisa_s_0.1"/>
<target name="test_imu_aspirin" board="lisa_s_0.1"/>
<target name="test_rc_spektrum" board="lisa_s_0.1"/>
<target name="test_baro" board="lisa_s_0.1"/>
<target name="test_imu_b2" board="lisa_s_0.1"/>
<target name="test_can" board="lisa_s_0.1"/>
<!--<target name="test_imu" board="lisa_s_0.1"/>
<target name="test_rc_ppm" board="lisa_s_0.1"/>
<target name="test_adc" board="lisa_s_0.1"/>
<target name="test_hmc5843" board="lisa_s_0.1"/>
<target name="test_itg3200" board="lisa_s_0.1"/>
<target name="test_adxl345" board="lisa_s_0.1"/>
<target name="test_esc_mkk_simple" board="lisa_s_0.1"/>
<target name="test_esc_asctecv1_simple" board="lisa_s_0.1"/>
<target name="test_actuators_mkk" board="lisa_s_0.1"/>
<target name="test_actuators_asctecv1" board="lisa_s_0.1"/-->
</firmware>
</airframe>
+12
View File
@@ -21,6 +21,11 @@
</target>
<target name="sim" board="pc"/>
<target name="nps" board="pc">
<!-- Note NPS needs the ppm type radio_control subsystem -->
<subsystem name="fdm" type="jsbsim"/>
</target>
<define name="USE_AIRSPEED"/>
<define name="AGR_CLIMB"/>
<define name="STRONG_WIND"/>
@@ -251,4 +256,11 @@
<define name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
</section>
<section name="SIMULATOR" prefix="NPS_">
<define name="JSBSIM_MODEL" value="&quot;LisaAspirin2&quot;"/>
<define name="ACTUATOR_NAMES" value="{&quot;throttle-cmd-norm&quot;, &quot;aileron-cmd-norm&quot;, &quot;elevator-cmd-norm&quot;, &quot;rudder-cmd-norm&quot;}"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_default.h&quot;"/>
<define name="JS_AXIS_MODE" value="4"/>
</section>
</airframe>
+2 -2
View File
@@ -194,7 +194,7 @@
<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="JSBSIM_INIT" value="&quot;reset00&quot;"/>
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>
@@ -210,7 +210,7 @@
<subsystem name="actuators" type="mkk"/>
<subsystem name="imu" type="b2_v1.0"/>
<subsystem name="gps" type="ublox"/>
<subsystem name="stabilization" type="euler"/>
<subsystem name="stabilization" type="int_euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/>
<subsystem name="ins" type="hff"/>
</firmware>

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