mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-06-05 15:30:08 +08:00
Merge branch 'master' into telemetry
fix ahrs_gx3 and stabilization_attitude_euler_float
This commit is contained in:
@@ -31,6 +31,9 @@
|
|||||||
/build.properties
|
/build.properties
|
||||||
/META-INF
|
/META-INF
|
||||||
|
|
||||||
|
# JetBrains (PyCharm, etc) IDE project files
|
||||||
|
.idea
|
||||||
|
|
||||||
|
|
||||||
/var
|
/var
|
||||||
/dox
|
/dox
|
||||||
|
|||||||
+3
-93
@@ -227,101 +227,11 @@ $(AOBJ) : $(OBJDIR)/%.o : %.S
|
|||||||
$(Q)test -d $(dir $@) || mkdir -p $(dir $@)
|
$(Q)test -d $(dir $@) || mkdir -p $(dir $@)
|
||||||
$(Q)$(CC) -c $(AFLAGS) $< -o $@
|
$(Q)$(CC) -c $(AFLAGS) $< -o $@
|
||||||
|
|
||||||
#
|
# Load upload rules
|
||||||
# check which flash mode is configured
|
include $(PAPARAZZI_SRC)/conf/Makefile.stm32-upload
|
||||||
#
|
|
||||||
ifeq ($(FLASH_MODE),DFU)
|
|
||||||
ifeq ($(DFU_UTIL),y)
|
|
||||||
#
|
|
||||||
# DFU flash mode using dfu-util
|
|
||||||
DFU_ADDR ?= 0x08000000
|
|
||||||
upload: $(OBJDIR)/$(TARGET).bin
|
|
||||||
@echo "Using dfu-util at $(DFU_ADDR)"
|
|
||||||
$(Q)dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s $(DFU_ADDR) -D $^
|
|
||||||
else
|
|
||||||
#
|
|
||||||
# DFU flash mode paparazzi stm32_mem
|
|
||||||
ifdef DFU_ADDR
|
|
||||||
DFU_ADDR_CMD = --addr=$(DFU_ADDR)
|
|
||||||
endif
|
|
||||||
ifdef DFU_PRODUCT
|
|
||||||
DFU_PRODUCT_CMD = --product=$(DFU_PRODUCT)
|
|
||||||
endif
|
|
||||||
upload: $(OBJDIR)/$(TARGET).bin
|
|
||||||
@echo "Using stm32 mem dfu loader"
|
|
||||||
$(PYTHON) $(PAPARAZZI_SRC)/sw/tools/dfu/stm32_mem.py $(DFU_PRODUCT_CMD) $(DFU_ADDR_CMD) $^
|
|
||||||
endif
|
|
||||||
|
|
||||||
#
|
|
||||||
# serial flash mode
|
|
||||||
else ifeq ($(FLASH_MODE),SERIAL)
|
|
||||||
upload: $(OBJDIR)/$(TARGET).bin
|
|
||||||
$(LOADER) -p /dev/ttyUSB0 -b 115200 -e -w -v $^
|
|
||||||
#
|
|
||||||
# JTAG flash mode
|
|
||||||
else ifeq ($(FLASH_MODE),JTAG)
|
|
||||||
# either via normal jtag or BlackMagicProbe
|
|
||||||
ifeq ($(BMP_PORT),)
|
|
||||||
# normal jtag via OpenOCD
|
|
||||||
upload: $(OBJDIR)/$(TARGET).hex
|
|
||||||
@echo "Assuming luftboot bootloader: $(ASSUMING_LUFTBOOT)"
|
|
||||||
@echo "Using OOCD = $(OOCD)"
|
|
||||||
@echo " OOCD\t$<"
|
|
||||||
$(Q)$(OOCD) -f interface/$(OOCD_INTERFACE).cfg \
|
|
||||||
-f board/$(OOCD_BOARD).cfg $(OOCD_OPTIONS) \
|
|
||||||
-c init \
|
|
||||||
-c "reset halt" \
|
|
||||||
-c "reset init" \
|
|
||||||
-c "flash erase_sector 0 $(OOCD_START_SECTOR) last" \
|
|
||||||
-c "flash write_image $<" \
|
|
||||||
-c reset \
|
|
||||||
-c shutdown
|
|
||||||
else
|
|
||||||
# jtag via BMP
|
|
||||||
BMP_UPLOAD_SCRIPT ?= $(PAPARAZZI_SRC)/sw/tools/flash_scripts/bmp_jtag_flash.scr
|
|
||||||
|
|
||||||
upload: $(OBJDIR)/$(TARGET).elf
|
|
||||||
@echo "Assuming luftboot bootloader: $(ASSUMING_LUFTBOOT)"
|
|
||||||
@echo "Using Black Magic Probe with JTAG on BMP_PORT $(BMP_PORT)"
|
|
||||||
@echo "Using GDB = $(GDB)"
|
|
||||||
@echo " BMP\t$<"
|
|
||||||
$(Q)$(GDB) --batch \
|
|
||||||
-ex 'target extended-remote $(BMP_PORT)' \
|
|
||||||
-x $(BMP_UPLOAD_SCRIPT) \
|
|
||||||
$<
|
|
||||||
endif
|
|
||||||
#
|
|
||||||
# SWD flash mode
|
|
||||||
else ifeq ($(FLASH_MODE),SWD)
|
|
||||||
# only works if BMP_PORT is defined
|
|
||||||
ifeq ($(STLINK),y)
|
|
||||||
STLINK_ADDR ?= 0x08000000
|
|
||||||
upload: $(OBJDIR)/$(TARGET).bin
|
|
||||||
@echo "Using ST-LINK with SWD at $(STLINK_ADDR)"
|
|
||||||
$(Q)st-flash write $^ $(STLINK_ADDR)
|
|
||||||
else
|
|
||||||
BMP_PORT ?= /dev/ttyACM0
|
|
||||||
BMP_UPLOAD_SCRIPT ?= $(PAPARAZZI_SRC)/sw/tools/flash_scripts/bmp_swd_flash.scr
|
|
||||||
upload: $(OBJDIR)/$(TARGET).elf
|
|
||||||
@echo "Assuming luftboot bootloader: $(ASSUMING_LUFTBOOT)"
|
|
||||||
@echo "Using Black Magic Probe with SWD on BMP_PORT $(BMP_PORT)"
|
|
||||||
@echo "Using GDB = $(GDB)"
|
|
||||||
@echo " BMP\t$<"
|
|
||||||
$(Q)$(GDB) --batch \
|
|
||||||
-ex 'target extended-remote $(BMP_PORT)' \
|
|
||||||
-x $(BMP_UPLOAD_SCRIPT) \
|
|
||||||
$<
|
|
||||||
endif
|
|
||||||
#
|
|
||||||
# no known flash mode
|
|
||||||
else
|
|
||||||
upload:
|
|
||||||
@echo unknown flash_mode $(FLASH_MODE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
# Listing of phony targets.
|
# Listing of phony targets.
|
||||||
.PHONY : all build elf bin lss sym upload start_gdb start_telnet
|
.PHONY : all build elf bin lss sym start_gdb start_telnet
|
||||||
|
|
||||||
#
|
#
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
|||||||
@@ -0,0 +1,119 @@
|
|||||||
|
# Hey Emacs, this is a -*- makefile -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013 Gautier Hattenberger
|
||||||
|
#
|
||||||
|
# This file is part of paparazzi.
|
||||||
|
#
|
||||||
|
# paparazzi is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# paparazzi is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with paparazzi; see the file COPYING. If not, see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is the common Makefile for STM32 upload rules
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# check which flash mode is configured
|
||||||
|
#
|
||||||
|
ifeq ($(FLASH_MODE),DFU)
|
||||||
|
ifeq ($(DFU_UTIL),y)
|
||||||
|
#
|
||||||
|
# DFU flash mode using dfu-util
|
||||||
|
DFU_ADDR ?= 0x08000000
|
||||||
|
upload: $(OBJDIR)/$(TARGET).bin
|
||||||
|
@echo "Using dfu-util at $(DFU_ADDR)"
|
||||||
|
$(Q)dfu-util -d 0483:df11 -c 1 -i 0 -a 0 -s $(DFU_ADDR) -D $^
|
||||||
|
else
|
||||||
|
#
|
||||||
|
# DFU flash mode paparazzi stm32_mem
|
||||||
|
ifdef DFU_ADDR
|
||||||
|
DFU_ADDR_CMD = --addr=$(DFU_ADDR)
|
||||||
|
endif
|
||||||
|
ifdef DFU_PRODUCT
|
||||||
|
DFU_PRODUCT_CMD = --product=$(DFU_PRODUCT)
|
||||||
|
endif
|
||||||
|
upload: $(OBJDIR)/$(TARGET).bin
|
||||||
|
@echo "Using stm32 mem dfu loader"
|
||||||
|
$(PYTHON) $(PAPARAZZI_SRC)/sw/tools/dfu/stm32_mem.py $(DFU_PRODUCT_CMD) $(DFU_ADDR_CMD) $^
|
||||||
|
endif
|
||||||
|
|
||||||
|
#
|
||||||
|
# serial flash mode
|
||||||
|
else ifeq ($(FLASH_MODE),SERIAL)
|
||||||
|
upload: $(OBJDIR)/$(TARGET).bin
|
||||||
|
$(LOADER) -p /dev/ttyUSB0 -b 115200 -e -w -v $^
|
||||||
|
#
|
||||||
|
# JTAG flash mode
|
||||||
|
else ifeq ($(FLASH_MODE),JTAG)
|
||||||
|
# either via normal jtag or BlackMagicProbe
|
||||||
|
ifeq ($(BMP_PORT),)
|
||||||
|
# normal jtag via OpenOCD
|
||||||
|
upload: $(OBJDIR)/$(TARGET).hex
|
||||||
|
@echo "Assuming luftboot bootloader: $(ASSUMING_LUFTBOOT)"
|
||||||
|
@echo "Using OOCD = $(OOCD)"
|
||||||
|
@echo " OOCD\t$<"
|
||||||
|
$(Q)$(OOCD) -f interface/$(OOCD_INTERFACE).cfg \
|
||||||
|
-f board/$(OOCD_BOARD).cfg $(OOCD_OPTIONS) \
|
||||||
|
-c init \
|
||||||
|
-c "reset halt" \
|
||||||
|
-c "reset init" \
|
||||||
|
-c "flash erase_sector 0 $(OOCD_START_SECTOR) last" \
|
||||||
|
-c "flash write_image $<" \
|
||||||
|
-c reset \
|
||||||
|
-c shutdown
|
||||||
|
else
|
||||||
|
# jtag via BMP
|
||||||
|
BMP_UPLOAD_SCRIPT ?= $(PAPARAZZI_SRC)/sw/tools/flash_scripts/bmp_jtag_flash.scr
|
||||||
|
|
||||||
|
upload: $(OBJDIR)/$(TARGET).elf
|
||||||
|
@echo "Assuming luftboot bootloader: $(ASSUMING_LUFTBOOT)"
|
||||||
|
@echo "Using Black Magic Probe with JTAG on BMP_PORT $(BMP_PORT)"
|
||||||
|
@echo "Using GDB = $(GDB)"
|
||||||
|
@echo " BMP\t$<"
|
||||||
|
$(Q)$(GDB) --batch \
|
||||||
|
-ex 'target extended-remote $(BMP_PORT)' \
|
||||||
|
-x $(BMP_UPLOAD_SCRIPT) \
|
||||||
|
$<
|
||||||
|
endif
|
||||||
|
#
|
||||||
|
# SWD flash mode
|
||||||
|
else ifeq ($(FLASH_MODE),SWD)
|
||||||
|
# only works if BMP_PORT is defined
|
||||||
|
ifeq ($(STLINK),y)
|
||||||
|
STLINK_ADDR ?= 0x08000000
|
||||||
|
upload: $(OBJDIR)/$(TARGET).bin
|
||||||
|
@echo "Using ST-LINK with SWD at $(STLINK_ADDR)"
|
||||||
|
$(Q)st-flash write $^ $(STLINK_ADDR)
|
||||||
|
else
|
||||||
|
BMP_PORT ?= /dev/ttyACM0
|
||||||
|
BMP_UPLOAD_SCRIPT ?= $(PAPARAZZI_SRC)/sw/tools/flash_scripts/bmp_swd_flash.scr
|
||||||
|
upload: $(OBJDIR)/$(TARGET).elf
|
||||||
|
@echo "Assuming luftboot bootloader: $(ASSUMING_LUFTBOOT)"
|
||||||
|
@echo "Using Black Magic Probe with SWD on BMP_PORT $(BMP_PORT)"
|
||||||
|
@echo "Using GDB = $(GDB)"
|
||||||
|
@echo " BMP\t$<"
|
||||||
|
$(Q)$(GDB) --batch \
|
||||||
|
-ex 'target extended-remote $(BMP_PORT)' \
|
||||||
|
-x $(BMP_UPLOAD_SCRIPT) \
|
||||||
|
$<
|
||||||
|
endif
|
||||||
|
#
|
||||||
|
# no known flash mode
|
||||||
|
else
|
||||||
|
upload:
|
||||||
|
@echo unknown flash_mode $(FLASH_MODE)
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY : upload
|
||||||
|
|
||||||
@@ -216,6 +216,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,258 @@
|
|||||||
|
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
|
||||||
|
|
||||||
|
<!-- Funjet Multiplex (http://www.multiplex-rc.de/)
|
||||||
|
Umarim Lite
|
||||||
|
Radiotronix modem
|
||||||
|
UBX GPS
|
||||||
|
Airspeed sensor
|
||||||
|
Digital camera
|
||||||
|
-->
|
||||||
|
|
||||||
|
<airframe name="Funjet II">
|
||||||
|
|
||||||
|
<modules>
|
||||||
|
<!--load name="light.xml">
|
||||||
|
<define name="LIGHT_LED_STROBE" value="5"/>
|
||||||
|
<define name="LIGHT_LED_NAV" value="3"/>
|
||||||
|
</load-->
|
||||||
|
<!--load name="baro_board.xml">
|
||||||
|
<define name="BARO_ABS_EVENT" value="BaroPbnUpdate"/>
|
||||||
|
</load-->
|
||||||
|
<load name="pbn.xml"/>
|
||||||
|
</modules>
|
||||||
|
|
||||||
|
<firmware name="fixedwing">
|
||||||
|
<define name="USE_I2C0"/>
|
||||||
|
<define name="USE_I2C1"/>
|
||||||
|
<define name="AGR_CLIMB"/>
|
||||||
|
<!--define name="ALT_KALMAN"/-->
|
||||||
|
<define name="LOITER_TRIM"/>
|
||||||
|
<define name="USE_AIRSPEED"/>
|
||||||
|
|
||||||
|
<target name="sim" board="pc">
|
||||||
|
<subsystem name="imu" type="umarim"/>
|
||||||
|
</target>
|
||||||
|
<target name="nps" board="pc">
|
||||||
|
<subsystem name="fdm" type="crrcsim"/>
|
||||||
|
<subsystem name="imu" type="nps"/>
|
||||||
|
</target>
|
||||||
|
<target name="ap" board="umarim_lite_2.0">
|
||||||
|
<subsystem name="imu" type="umarim"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
|
||||||
|
<!-- Communication -->
|
||||||
|
<subsystem name="telemetry" type="transparent"/>
|
||||||
|
|
||||||
|
<!-- Actuators are automatically chosen according to board-->
|
||||||
|
<subsystem name="ahrs" type="float_dcm"/>
|
||||||
|
<subsystem name="ins" type="alt_float"/>
|
||||||
|
<subsystem name="control" type="new">
|
||||||
|
<define name="USE_GYRO_PITCH_RATE"/>
|
||||||
|
</subsystem>
|
||||||
|
<!-- Sensors -->
|
||||||
|
<subsystem name="gps" type="ublox"/>
|
||||||
|
|
||||||
|
<subsystem name="current_sensor">
|
||||||
|
<configure name="ADC_CURRENT_SENSOR" value="ADC_0"/>
|
||||||
|
</subsystem>
|
||||||
|
|
||||||
|
<subsystem name="navigation"/>
|
||||||
|
</firmware>
|
||||||
|
|
||||||
|
<servos>
|
||||||
|
<servo name="MOTOR" no="0" min="1040" neutral="1040" max="2000"/>
|
||||||
|
<servo name="AILEVON_LEFT" no="2" min="1900" neutral="1500" max="1050"/>
|
||||||
|
<servo name="AILEVON_RIGHT" no="1" min="1120" neutral="1540" max="1980"/>
|
||||||
|
</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="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="5"/>
|
||||||
|
<define name="GYRO_Q_NEUTRAL" value="17"/>
|
||||||
|
<define name="GYRO_R_NEUTRAL" value="-5 "/>
|
||||||
|
|
||||||
|
<define name="GYRO_P_SENS" value="1." integer="16"/>
|
||||||
|
<define name="GYRO_Q_SENS" value="1." integer="16"/>
|
||||||
|
<define name="GYRO_R_SENS" value="1." 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="6"/>
|
||||||
|
<define name="ACCEL_Y_NEUTRAL" value="-3"/>
|
||||||
|
<define name="ACCEL_Z_NEUTRAL" value="-8"/>
|
||||||
|
|
||||||
|
<define name="ACCEL_X_SENS" value="38.273044006" integer="16"/>
|
||||||
|
<define name="ACCEL_Y_SENS" value="39.3799642589" integer="16"/>
|
||||||
|
<define name="ACCEL_Z_SENS" value="39.6142126316" integer="16"/>
|
||||||
|
|
||||||
|
<define name="MAG_X_SIGN" value="1"/>
|
||||||
|
<define name="MAG_Y_SIGN" value="-1"/>
|
||||||
|
<define name="MAG_Z_SIGN" value="-1"/>
|
||||||
|
|
||||||
|
<define name="MAG_X_NEUTRAL" value="6"/>
|
||||||
|
<define name="MAG_Y_NEUTRAL" value="-3"/>
|
||||||
|
<define name="MAG_Z_NEUTRAL" value="-8"/>
|
||||||
|
|
||||||
|
<define name="MAG_X_SENS" value="38.273044006" integer="16"/>
|
||||||
|
<define name="MAG_Y_SENS" value="39.3799642589" integer="16"/>
|
||||||
|
<define name="MAG_Z_SENS" value="39.6142126316" integer="16"/>
|
||||||
|
|
||||||
|
<define name="BODY_TO_IMU_PHI" value="0"/>
|
||||||
|
<define name="BODY_TO_IMU_THETA" value="0"/>
|
||||||
|
<define name="BODY_TO_IMU_PSI" value="0"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="INS" prefix="INS_">
|
||||||
|
<define name="ROLL_NEUTRAL_DEFAULT" value="0." unit="deg"/>
|
||||||
|
<define name="PITCH_NEUTRAL_DEFAULT" value="8." unit="deg"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="BAT">
|
||||||
|
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
|
||||||
|
<define name="MilliAmpereOfAdc(_adc)" value="(_adc-100)*26.9"/>
|
||||||
|
</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="FALSE"/>
|
||||||
|
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
|
||||||
|
|
||||||
|
<define name="UNLOCKED_HOME_MODE" value="TRUE"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="VERTICAL CONTROL" prefix="V_CTL_">
|
||||||
|
<!-- outer loop proportional gain -->
|
||||||
|
<define name="ALTITUDE_PGAIN" value="0.1"/>
|
||||||
|
<!-- outer loop saturation -->
|
||||||
|
<define name="ALTITUDE_MAX_CLIMB" value="4."/>
|
||||||
|
<!-- disable climb rate limiter -->
|
||||||
|
<define name="AUTO_CLIMB_LIMIT" value="2*V_CTL_ALTITUDE_MAX_CLIMB"/>
|
||||||
|
|
||||||
|
<!-- auto throttle inner loop -->
|
||||||
|
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.45"/>
|
||||||
|
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
|
||||||
|
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
|
||||||
|
<!--define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
|
||||||
|
<define name="AUTO_THROTTLE_DASH_TRIM" value="-1000"/-->
|
||||||
|
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.1" unit="%/(m/s)"/>
|
||||||
|
<define name="AUTO_THROTTLE_PGAIN" value="0.005"/>
|
||||||
|
<define name="AUTO_THROTTLE_IGAIN" value="0.003"/>
|
||||||
|
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.02"/>
|
||||||
|
|
||||||
|
<!-- auto pitch inner loop -->
|
||||||
|
<define name="AUTO_PITCH_PGAIN" value="0.03"/>
|
||||||
|
<define name="AUTO_PITCH_DGAIN" value="0.03"/>
|
||||||
|
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
|
||||||
|
<!--define name="AUTO_PITCH_CLIMB_THROTTLE_INCREMENT" value="0.14"/-->
|
||||||
|
<define name="AUTO_PITCH_MAX_PITCH" value="20" unit="deg"/>
|
||||||
|
<define name="AUTO_PITCH_MIN_PITCH" value="-20" unit="deg"/>
|
||||||
|
|
||||||
|
<!-- 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"/>
|
||||||
|
<define name="AIRSPEED_MIN" value="10"/>
|
||||||
|
|
||||||
|
<!-- groundspeed control -->
|
||||||
|
<define name="AUTO_GROUNDSPEED_SETPOINT" value="15"/>
|
||||||
|
<define name="AUTO_GROUNDSPEED_PGAIN" value="1."/>
|
||||||
|
<define name="AUTO_GROUNDSPEED_IGAIN" value="0."/>
|
||||||
|
|
||||||
|
<!-- pitch trim -->
|
||||||
|
<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.6"/>
|
||||||
|
<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="9000."/>
|
||||||
|
<define name="ROLL_RATE_GAIN" value="1000."/>
|
||||||
|
<define name="ROLL_IGAIN" value="150."/>
|
||||||
|
|
||||||
|
<define name="PITCH_PGAIN" value="18000."/>
|
||||||
|
<define name="PITCH_DGAIN" value="500"/>
|
||||||
|
<define name="PITCH_IGAIN" value="250."/>
|
||||||
|
|
||||||
|
<define name="PITCH_OF_ROLL" value="1." unit="deg"/>
|
||||||
|
<define name="AILERON_OF_THROTTLE" value="0.0"/>
|
||||||
|
<!--define name="ELEVATOR_OF_ROLL" value="1400"/-->
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="NAV">
|
||||||
|
<define name="NAV_GLIDE_PITCH_TRIM" value="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>
|
||||||
|
|
||||||
|
<section name="SIMU">
|
||||||
|
<define name="YAW_RESPONSE_FACTOR" value="0.6"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="NPS" prefix="NPS_">
|
||||||
|
<define name="BYPASS_AHRS" value="TRUE"/>
|
||||||
|
<define name="CRRCSIM_COMMAND_ROLL" value="1"/>
|
||||||
|
<define name="CRRCSIM_COMMAND_PITCH" value="2"/>
|
||||||
|
<define name="CRRCSIM_COMMAND_THROTTLE" value="0"/>
|
||||||
|
<define name="CRRCSIM_ROLL_NEUTRAL" value="0." unit="deg"/>
|
||||||
|
<define name="CRRCSIM_PITCH_NEUTRAL" value="12." unit="deg"/>
|
||||||
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</airframe>
|
||||||
@@ -257,6 +257,7 @@
|
|||||||
|
|
||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<!--define name="JSBSIM_INIT" value=""reset_enac""/-->
|
<!--define name="JSBSIM_INIT" value=""reset_enac""/-->
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -92,10 +92,6 @@
|
|||||||
<define name="H_Z" value="0.858336"/>
|
<define name="H_Z" value="0.858336"/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section name="INS" prefix="INS_">
|
|
||||||
<define name="BARO_SENS" value="22.4" integer="16"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||||
<!-- setpoints -->
|
<!-- setpoints -->
|
||||||
<define name="SP_MAX_P" value="10000"/>
|
<define name="SP_MAX_P" value="10000"/>
|
||||||
|
|||||||
@@ -249,6 +249,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -249,6 +249,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -189,10 +189,6 @@
|
|||||||
<define name="HOVER_KP" value="283"/>
|
<define name="HOVER_KP" value="283"/>
|
||||||
<define name="HOVER_KD" value="82"/>
|
<define name="HOVER_KD" value="82"/>
|
||||||
<define name="HOVER_KI" value="13"/>
|
<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="NOMINAL_HOVER_THROTTLE" value="0.655"/>
|
||||||
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
|
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
|
||||||
</section>
|
</section>
|
||||||
@@ -210,6 +206,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"top_left_motor", "top_right_motor", "bottom_right_motor", "bottom_left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"top_left_motor", "top_right_motor", "bottom_right_motor", "bottom_left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -190,6 +190,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -214,6 +214,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -212,6 +212,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -175,6 +175,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -199,6 +199,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||||
<define name="JS_AXIS_MODE" value="4"/>
|
<define name="JS_AXIS_MODE" value="4"/>
|
||||||
|
|||||||
@@ -200,6 +200,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -189,6 +189,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -180,6 +180,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_booz2_a1.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -198,6 +198,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||||
<define name="JS_AXIS_MODE" value="4"/>
|
<define name="JS_AXIS_MODE" value="4"/>
|
||||||
|
|||||||
@@ -264,6 +264,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -194,6 +194,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|||||||
@@ -235,6 +235,7 @@
|
|||||||
<section name="SIMULATOR" prefix="NPS_">
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
<define name="JSBSIM_INIT" value=""reset00""/>
|
<define name="JSBSIM_INIT" value=""reset00""/>
|
||||||
|
<define name="JSBSIM_MODEL" value=""simple_quad_ccw""/>
|
||||||
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||||
<define name="JS_AXIS_MODE" value="4"/>
|
<define name="JS_AXIS_MODE" value="4"/>
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# Hey Emacs, this is a -*- makefile -*-
|
||||||
|
|
||||||
|
#
|
||||||
|
# SITL Simulator based on CRRCSIM (MNAV inputdev)
|
||||||
|
#
|
||||||
|
|
||||||
|
SRC_FIRMWARE=firmwares/fixedwing
|
||||||
|
|
||||||
|
SRC_BOARD=boards/$(BOARD)
|
||||||
|
|
||||||
|
NPSDIR = $(SIMDIR)/nps
|
||||||
|
|
||||||
|
|
||||||
|
nps.ARCHDIR = sim
|
||||||
|
|
||||||
|
# include Makefile.nps instead of Makefile.sim
|
||||||
|
nps.MAKEFILE = nps
|
||||||
|
|
||||||
|
# add normal ap and fbw sources define in autopilot.makefile
|
||||||
|
nps.CFLAGS += $(fbw_CFLAGS) $(ap_CFLAGS)
|
||||||
|
nps.srcs += $(fbw_srcs) $(ap_srcs)
|
||||||
|
|
||||||
|
nps.CFLAGS += -DSITL -DUSE_NPS
|
||||||
|
nps.CFLAGS += $(shell pkg-config glib-2.0 --cflags)
|
||||||
|
nps.LDFLAGS += $(shell pkg-config glib-2.0 --libs) -lm -lglibivy -lpcre -lgsl -lgslcblas
|
||||||
|
nps.CFLAGS += -I$(NPSDIR) -I$(SRC_FIRMWARE) -I$(SRC_BOARD) -I../simulator -I$(PAPARAZZI_HOME)/conf/simulator/nps
|
||||||
|
nps.LDFLAGS += $(shell sdl-config --libs)
|
||||||
|
|
||||||
|
nps.srcs += $(NPSDIR)/nps_main.c \
|
||||||
|
$(NPSDIR)/nps_fdm_crrcsim.c \
|
||||||
|
$(NPSDIR)/nps_random.c \
|
||||||
|
$(NPSDIR)/nps_sensors.c \
|
||||||
|
$(NPSDIR)/nps_sensors_utils.c \
|
||||||
|
$(NPSDIR)/nps_sensor_gyro.c \
|
||||||
|
$(NPSDIR)/nps_sensor_accel.c \
|
||||||
|
$(NPSDIR)/nps_sensor_mag.c \
|
||||||
|
$(NPSDIR)/nps_sensor_baro.c \
|
||||||
|
$(NPSDIR)/nps_sensor_gps.c \
|
||||||
|
$(NPSDIR)/nps_electrical.c \
|
||||||
|
$(NPSDIR)/nps_atmosphere.c \
|
||||||
|
$(NPSDIR)/nps_radio_control.c \
|
||||||
|
$(NPSDIR)/nps_radio_control_joystick.c \
|
||||||
|
$(NPSDIR)/nps_radio_control_spektrum.c \
|
||||||
|
$(NPSDIR)/nps_autopilot_fixedwing.c \
|
||||||
|
$(NPSDIR)/nps_ivy_common.c \
|
||||||
|
$(NPSDIR)/nps_ivy_fixedwing.c \
|
||||||
|
$(NPSDIR)/nps_flightgear.c \
|
||||||
|
|
||||||
|
|
||||||
|
nps.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=IvyTransport
|
||||||
|
nps.srcs += subsystems/datalink/downlink.c $(SRC_FIRMWARE)/datalink.c $(SRC_ARCH)/ivy_transport.c
|
||||||
|
|
||||||
@@ -6,6 +6,7 @@ GX3_BAUD ?= B921600
|
|||||||
AHRS_ALIGNER_LED ?= none
|
AHRS_ALIGNER_LED ?= none
|
||||||
|
|
||||||
AHRS_CFLAGS = -DUSE_AHRS
|
AHRS_CFLAGS = -DUSE_AHRS
|
||||||
|
AHRS_CFLAGS += -DAHRS_FLOAT
|
||||||
AHRS_CFLAGS += -DUSE_IMU
|
AHRS_CFLAGS += -DUSE_IMU
|
||||||
AHRS_CFLAGS += -DUSE_IMU_FLOAT
|
AHRS_CFLAGS += -DUSE_IMU_FLOAT
|
||||||
AHRS_CFLAGS += -DUSE_GX3
|
AHRS_CFLAGS += -DUSE_GX3
|
||||||
|
|||||||
@@ -59,9 +59,11 @@ else ifeq ($(ARCH), stm32)
|
|||||||
DROTEK_2_I2C_DEV ?= i2c2
|
DROTEK_2_I2C_DEV ?= i2c2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TARGET), ap)
|
||||||
ifndef DROTEK_2_I2C_DEV
|
ifndef DROTEK_2_I2C_DEV
|
||||||
$(error Error: DROTEK_2_I2C_DEV not configured!)
|
$(error Error: DROTEK_2_I2C_DEV not configured!)
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# convert i2cx to upper/lower case
|
# convert i2cx to upper/lower case
|
||||||
DROTEK_2_I2C_DEV_UPPER=$(shell echo $(DROTEK_2_I2C_DEV) | tr a-z A-Z)
|
DROTEK_2_I2C_DEV_UPPER=$(shell echo $(DROTEK_2_I2C_DEV) | tr a-z A-Z)
|
||||||
|
|||||||
@@ -28,9 +28,11 @@ else ifeq ($(ARCH), stm32)
|
|||||||
GL1_I2C_DEV ?= i2c2
|
GL1_I2C_DEV ?= i2c2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(TARGET), ap)
|
||||||
ifndef GL1_I2C_DEV
|
ifndef GL1_I2C_DEV
|
||||||
$(error Error: GL1_I2C_DEV not configured!)
|
$(error Error: GL1_I2C_DEV not configured!)
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# convert i2cx to upper/lower case
|
# convert i2cx to upper/lower case
|
||||||
GL1_I2C_DEV_UPPER=$(shell echo $(GL1_I2C_DEV) | tr a-z A-Z)
|
GL1_I2C_DEV_UPPER=$(shell echo $(GL1_I2C_DEV) | tr a-z A-Z)
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<!DOCTYPE settings SYSTEM "../settings.dtd">
|
||||||
|
|
||||||
|
<settings>
|
||||||
|
<dl_settings>
|
||||||
|
|
||||||
|
<dl_settings NAME="Att Loop">
|
||||||
|
<dl_setting var="stabilization_gains.p.x" min="1" step="1" max="8000" module="stabilization/stabilization_attitude" shortname="pgain phi" param="STABILIZATION_ATTITUDE_PHI_PGAIN"/>
|
||||||
|
<dl_setting var="stabilization_gains.i.x" min="0" step="1" max="800" module="stabilization/stabilization_attitude" shortname="igain phi" param="STABILIZATION_ATTITUDE_PHI_IGAIN" />
|
||||||
|
<dl_setting var="stabilization_gains.d.x" min="1" step="1" max="4000" module="stabilization/stabilization_attitude" shortname="dgain p" param="STABILIZATION_ATTITUDE_PHI_DGAIN"/>
|
||||||
|
<dl_setting var="stabilization_gains.rates_d.x" min="0" step="1" max="500" module="stabilization/stabilization_attitude" shortname="dgaind p" param="STABILIZATION_ATTITUDE_PHI_DGAIN_D"/>
|
||||||
|
<dl_setting var="stabilization_gains.dd.x" min="0" step="1" max="1000" module="stabilization/stabilization_attitude" shortname="ddgain p" param="STABILIZATION_ATTITUDE_PHI_DDGAIN"/>
|
||||||
|
|
||||||
|
<dl_setting var="stabilization_gains.p.y" min="1" step="1" max="8000" module="stabilization/stabilization_attitude" shortname="pgain theta" param="STABILIZATION_ATTITUDE_THETA_PGAIN"/>
|
||||||
|
<dl_setting var="stabilization_gains.i.y" min="0" step="1" max="800" module="stabilization/stabilization_attitude" shortname="igain theta" param="STABILIZATION_ATTITUDE_THETA_IGAIN"/>
|
||||||
|
<dl_setting var="stabilization_gains.d.y" min="1" step="1" max="4000" module="stabilization/stabilization_attitude" shortname="dgain q" param="STABILIZATION_ATTITUDE_THETA_DGAIN"/>
|
||||||
|
<dl_setting var="stabilization_gains.rates_d.y" min="0" step="1" max="500" module="stabilization/stabilization_attitude" shortname="dgaind q" param="STABILIZATION_ATTITUDE_THETA_DGAIN_D"/>
|
||||||
|
<dl_setting var="stabilization_gains.dd.y" min="0" step="1" max="1000" module="stabilization/stabilization_attitude" shortname="ddgain q" param="STABILIZATION_ATTITUDE_THETA_DDGAIN"/>
|
||||||
|
|
||||||
|
<dl_setting var="stabilization_gains.p.z" min="1" step="1" max="4000" module="stabilization/stabilization_attitude" shortname="pgain psi" param="STABILIZATION_ATTITUDE_PSI_PGAIN"/>
|
||||||
|
<dl_setting var="stabilization_gains.i.z" min="0" step="1" max="400" module="stabilization/stabilization_attitude" shortname="igain psi" param="STABILIZATION_ATTITUDE_PSI_IGAIN"/>
|
||||||
|
<dl_setting var="stabilization_gains.d.z" min="1" step="1" max="4000" module="stabilization/stabilization_attitude" shortname="dgain r" param="STABILIZATION_ATTITUDE_PSI_DGAIN"/>
|
||||||
|
<dl_setting var="stabilization_gains.rates_d.z" min="0" step="1" max="500" module="stabilization/stabilization_attitude" shortname="dgaind r" param="STABILIZATION_ATTITUDE_PHI_DGAIN_D"/>
|
||||||
|
<dl_setting var="stabilization_gains.dd.z" min="0" step="1" max="1000" module="stabilization/stabilization_attitude" shortname="ddgain r" param="STABILIZATION_ATTITUDE_PSI_DDGAIN"/>
|
||||||
|
</dl_settings>
|
||||||
|
|
||||||
|
</dl_settings>
|
||||||
|
</settings>
|
||||||
@@ -1,396 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?>
|
|
||||||
<fdm_config name="QUAD COMPLETE EXT" version="2.0" release="BETA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|
||||||
|
|
||||||
<fileheader>
|
|
||||||
<author> Gustavo Violato & Antoine Drouin</author>
|
|
||||||
<filecreationdate> 24-02-2009 </filecreationdate>
|
|
||||||
<version> Version 0.9 - beta</version>
|
|
||||||
<description> Simple Quadrotor without rotor dynamic </description>
|
|
||||||
</fileheader>
|
|
||||||
|
|
||||||
<metrics>
|
|
||||||
<wingarea unit="IN2"> 78.53 </wingarea>
|
|
||||||
<wingspan unit="IN"> 10 </wingspan>
|
|
||||||
<chord unit="IN"> 6.89 </chord>
|
|
||||||
<htailarea unit="FT2"> 0 </htailarea>
|
|
||||||
<htailarm unit="FT"> 0 </htailarm>
|
|
||||||
<vtailarea unit="FT2"> 0 </vtailarea>
|
|
||||||
<vtailarm unit="FT"> 0 </vtailarm>
|
|
||||||
<location name="AERORP" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
<location name="EYEPOINT" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
<location name="VRP" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
</metrics>
|
|
||||||
|
|
||||||
<mass_balance>
|
|
||||||
<ixx unit="SLUG*FT2"> 0.005 </ixx>
|
|
||||||
<iyy unit="SLUG*FT2"> 0.005 </iyy>
|
|
||||||
<izz unit="SLUG*FT2"> 0.010 </izz>
|
|
||||||
<ixy unit="SLUG*FT2"> 0. </ixy>
|
|
||||||
<ixz unit="SLUG*FT2"> 0. </ixz>
|
|
||||||
<iyz unit="SLUG*FT2"> 0. </iyz>
|
|
||||||
<emptywt unit="LBS"> 0.84 </emptywt>
|
|
||||||
<location name="CG" unit="M">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
</mass_balance>
|
|
||||||
|
|
||||||
<ground_reactions>
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_FRONT">
|
|
||||||
<location unit="M">
|
|
||||||
<x>-0.15 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_BACK">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0.15</x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_RIGHT">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0. </x>
|
|
||||||
<y> 0.15</y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_LEFT">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0. </x>
|
|
||||||
<y>-0.15</y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
</ground_reactions>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<external_reactions>
|
|
||||||
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
|
|
||||||
<!-- First the lift forces produced by each propeller -->
|
|
||||||
|
|
||||||
<force name="front_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="back_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="right_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>0</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="left_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>0</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Then the Moment Couples -->
|
|
||||||
|
|
||||||
<!-- Front Engine -->
|
|
||||||
|
|
||||||
<force name="front_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<!-- Necessary arm in IN to produce a moment ten times
|
|
||||||
"weaker" then the force when both are measured in the SI.
|
|
||||||
front and back motors turning clockwise, left and right motors
|
|
||||||
turning anti-clockwise when view from up-->
|
|
||||||
<y>1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="front_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<y>-1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>-1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Back Engine -->
|
|
||||||
|
|
||||||
<force name="back_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="back_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>-1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>-1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Right Engine -->
|
|
||||||
|
|
||||||
<force name="right_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-1.9685</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="right_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>1.9685</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>-1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Left Engine -->
|
|
||||||
|
|
||||||
<force name="left_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-1.9685</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="left_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>1.9685</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>-1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
</external_reactions>
|
|
||||||
|
|
||||||
<propulsion/>
|
|
||||||
|
|
||||||
<flight_control name="FGFCS"/>
|
|
||||||
|
|
||||||
<aerodynamics>
|
|
||||||
<axis name="DRAG">
|
|
||||||
<function name="aero/coefficient/CD">
|
|
||||||
<description>Drag</description>
|
|
||||||
<product>
|
|
||||||
<property>aero/qbar-psf</property>
|
|
||||||
<value>47.9</value> <!-- Conversion to pascals -->
|
|
||||||
<value>0.0151</value> <!-- CD x Area (m^2) -->
|
|
||||||
<value>0.224808943</value> <!-- N to LBS -->
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
</axis>
|
|
||||||
</aerodynamics>
|
|
||||||
|
|
||||||
</fdm_config>
|
|
||||||
@@ -1,396 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?>
|
|
||||||
<fdm_config name="QUAD COMPLETE EXT" version="2.0" release="BETA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|
||||||
|
|
||||||
<fileheader>
|
|
||||||
<author> Gustavo Violato & Antoine Drouin</author>
|
|
||||||
<filecreationdate> 24-02-2009 </filecreationdate>
|
|
||||||
<version> Version 0.9 - beta</version>
|
|
||||||
<description> Simple Quadrotor without rotor dynamic </description>
|
|
||||||
</fileheader>
|
|
||||||
|
|
||||||
<metrics>
|
|
||||||
<wingarea unit="IN2"> 78.53 </wingarea>
|
|
||||||
<wingspan unit="IN"> 10 </wingspan>
|
|
||||||
<chord unit="IN"> 6.89 </chord>
|
|
||||||
<htailarea unit="FT2"> 0 </htailarea>
|
|
||||||
<htailarm unit="FT"> 0 </htailarm>
|
|
||||||
<vtailarea unit="FT2"> 0 </vtailarea>
|
|
||||||
<vtailarm unit="FT"> 0 </vtailarm>
|
|
||||||
<location name="AERORP" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
<location name="EYEPOINT" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
<location name="VRP" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
</metrics>
|
|
||||||
|
|
||||||
<mass_balance>
|
|
||||||
<ixx unit="SLUG*FT2"> 0.005 </ixx>
|
|
||||||
<iyy unit="SLUG*FT2"> 0.005 </iyy>
|
|
||||||
<izz unit="SLUG*FT2"> 0.010 </izz>
|
|
||||||
<ixy unit="SLUG*FT2"> 0. </ixy>
|
|
||||||
<ixz unit="SLUG*FT2"> 0. </ixz>
|
|
||||||
<iyz unit="SLUG*FT2"> 0. </iyz>
|
|
||||||
<emptywt unit="LBS"> 0.84 </emptywt>
|
|
||||||
<location name="CG" unit="M">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
</mass_balance>
|
|
||||||
|
|
||||||
<ground_reactions>
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_FRONT">
|
|
||||||
<location unit="M">
|
|
||||||
<x>-0.15 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_BACK">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0.15</x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_RIGHT">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0. </x>
|
|
||||||
<y> 0.15</y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_LEFT">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0. </x>
|
|
||||||
<y>-0.15</y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
</ground_reactions>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<external_reactions>
|
|
||||||
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
|
|
||||||
<!-- First the lift forces produced by each propeller -->
|
|
||||||
|
|
||||||
<force name="front_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="back_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="right_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>0</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="left_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>0</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Then the Moment Couples -->
|
|
||||||
|
|
||||||
<!-- Front Engine -->
|
|
||||||
|
|
||||||
<force name="front_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<!-- Necessary arm in IN to produce a moment ten times
|
|
||||||
"weaker" then the force when both are measured in the SI.
|
|
||||||
front and back motors turning clockwise, left and right motors
|
|
||||||
turning anti-clockwise when view from up-->
|
|
||||||
<y>1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="front_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<y>-1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>-1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Back Engine -->
|
|
||||||
|
|
||||||
<force name="back_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="back_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>-1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>-1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Right Engine -->
|
|
||||||
|
|
||||||
<force name="right_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-1.9685</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="right_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>1.9685</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>-1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Left Engine -->
|
|
||||||
|
|
||||||
<force name="left_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-1.9685</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="left_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>1.9685</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>-1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
</external_reactions>
|
|
||||||
|
|
||||||
<propulsion/>
|
|
||||||
|
|
||||||
<flight_control name="FGFCS"/>
|
|
||||||
|
|
||||||
<aerodynamics>
|
|
||||||
<axis name="DRAG">
|
|
||||||
<function name="aero/coefficient/CD">
|
|
||||||
<description>Drag</description>
|
|
||||||
<product>
|
|
||||||
<property>aero/qbar-psf</property>
|
|
||||||
<value>47.9</value> <!-- Conversion to pascals -->
|
|
||||||
<value>0.0151</value> <!-- CD x Area (m^2) -->
|
|
||||||
<value>0.224808943</value> <!-- N to LBS -->
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
</axis>
|
|
||||||
</aerodynamics>
|
|
||||||
|
|
||||||
</fdm_config>
|
|
||||||
@@ -1,396 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?>
|
|
||||||
<fdm_config name="QUAD COMPLETE EXT" version="2.0" release="BETA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|
||||||
|
|
||||||
<fileheader>
|
|
||||||
<author> Gustavo Violato & Antoine Drouin </author>
|
|
||||||
<filecreationdate> 24-02-2009 </filecreationdate>
|
|
||||||
<version> Version 0.9 - beta</version>
|
|
||||||
<description> Simple Quadrotor without rotor dynamic </description>
|
|
||||||
</fileheader>
|
|
||||||
|
|
||||||
<metrics>
|
|
||||||
<wingarea unit="IN2"> 78.53 </wingarea>
|
|
||||||
<wingspan unit="IN"> 10 </wingspan>
|
|
||||||
<chord unit="IN"> 6.89 </chord>
|
|
||||||
<htailarea unit="FT2"> 0 </htailarea>
|
|
||||||
<htailarm unit="FT"> 0 </htailarm>
|
|
||||||
<vtailarea unit="FT2"> 0 </vtailarea>
|
|
||||||
<vtailarm unit="FT"> 0 </vtailarm>
|
|
||||||
<location name="AERORP" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
<location name="EYEPOINT" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
<location name="VRP" unit="IN">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
</metrics>
|
|
||||||
|
|
||||||
<mass_balance>
|
|
||||||
<ixx unit="SLUG*FT2"> 0.005 </ixx>
|
|
||||||
<iyy unit="SLUG*FT2"> 0.005 </iyy>
|
|
||||||
<izz unit="SLUG*FT2"> 0.010 </izz>
|
|
||||||
<ixy unit="SLUG*FT2"> 0. </ixy>
|
|
||||||
<ixz unit="SLUG*FT2"> 0. </ixz>
|
|
||||||
<iyz unit="SLUG*FT2"> 0. </iyz>
|
|
||||||
<emptywt unit="LBS"> 0.84 </emptywt>
|
|
||||||
<location name="CG" unit="M">
|
|
||||||
<x> 0 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z> 0 </z>
|
|
||||||
</location>
|
|
||||||
</mass_balance>
|
|
||||||
|
|
||||||
<ground_reactions>
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_FRONT">
|
|
||||||
<location unit="M">
|
|
||||||
<x>-0.15 </x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_BACK">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0.15</x>
|
|
||||||
<y> 0 </y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_RIGHT">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0. </x>
|
|
||||||
<y> 0.15</y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
|
|
||||||
<contact type="STRUCTURE" name="CONTACT_LEFT">
|
|
||||||
<location unit="M">
|
|
||||||
<x> 0. </x>
|
|
||||||
<y>-0.15</y>
|
|
||||||
<z>-0.1 </z>
|
|
||||||
</location>
|
|
||||||
<static_friction> 0.8 </static_friction>
|
|
||||||
<dynamic_friction> 0.5 </dynamic_friction>
|
|
||||||
<spring_coeff unit="N/M"> 500 </spring_coeff>
|
|
||||||
<damping_coeff unit="N/M/SEC"> 100 </damping_coeff>
|
|
||||||
<damping_coeff_rebound type="SQUARE" unit="N/M2/SEC2"> 1000 </damping_coeff_rebound>
|
|
||||||
<max_steer unit="DEG"> 0.0 </max_steer>
|
|
||||||
<brake_group> NONE </brake_group>
|
|
||||||
<retractable>0</retractable>
|
|
||||||
</contact>
|
|
||||||
</ground_reactions>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<external_reactions>
|
|
||||||
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
|
|
||||||
<!-- First the lift forces produced by each propeller -->
|
|
||||||
|
|
||||||
<force name="front_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="back_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="right_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>0</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="left_motor" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>0</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>-1</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Then the Moment Couples -->
|
|
||||||
|
|
||||||
<!-- Front Engine -->
|
|
||||||
|
|
||||||
<force name="front_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<!-- Necessary arm in IN to produce a moment ten times
|
|
||||||
"weaker" then the force when both are measured in the SI.
|
|
||||||
front and back motors turning clockwise, left and right motors
|
|
||||||
turning anti-clockwise when view from up-->
|
|
||||||
<y>1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>-1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="front_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/front_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-6.89</x>
|
|
||||||
<y>-1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Back Engine -->
|
|
||||||
|
|
||||||
<force name="back_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>-1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="back_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/back_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>6.89</x>
|
|
||||||
<y>-1.9685</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>1</x>
|
|
||||||
<y>0</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Right Engine -->
|
|
||||||
|
|
||||||
<force name="right_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-1.9685</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>-1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="right_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/right_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>1.9685</x>
|
|
||||||
<y>6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<!-- Left Engine -->
|
|
||||||
|
|
||||||
<force name="left_couple1" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>-1.9685</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>-1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
<force name="left_couple2" frame="BODY" unit="LBS">
|
|
||||||
<function>
|
|
||||||
<product>
|
|
||||||
<property>fcs/left_motor</property>
|
|
||||||
<value> 0.84 </value>
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
<location unit="IN">
|
|
||||||
<x>1.9685</x>
|
|
||||||
<y>-6.89</y>
|
|
||||||
<z>0</z>
|
|
||||||
</location>
|
|
||||||
<direction>
|
|
||||||
<x>0</x>
|
|
||||||
<y>1</y>
|
|
||||||
<z>0</z>
|
|
||||||
</direction>
|
|
||||||
</force>
|
|
||||||
|
|
||||||
</external_reactions>
|
|
||||||
|
|
||||||
<propulsion/>
|
|
||||||
|
|
||||||
<flight_control name="FGFCS"/>
|
|
||||||
|
|
||||||
<aerodynamics>
|
|
||||||
<axis name="DRAG">
|
|
||||||
<function name="aero/coefficient/CD">
|
|
||||||
<description>Drag</description>
|
|
||||||
<product>
|
|
||||||
<property>aero/qbar-psf</property>
|
|
||||||
<value>47.9</value> <!-- Conversion to pascals -->
|
|
||||||
<value>0.0151</value> <!-- CD x Area (m^2) -->
|
|
||||||
<value>0.224808943</value> <!-- N to LBS -->
|
|
||||||
</product>
|
|
||||||
</function>
|
|
||||||
</axis>
|
|
||||||
</aerodynamics>
|
|
||||||
|
|
||||||
</fdm_config>
|
|
||||||
@@ -67,7 +67,7 @@ void uart_periph_set_bits_stop_parity(struct uart_periph* p, uint8_t bits, uint8
|
|||||||
else // 8 data bits by default
|
else // 8 data bits by default
|
||||||
usart_set_databits((uint32_t)p->reg_addr, 9);
|
usart_set_databits((uint32_t)p->reg_addr, 9);
|
||||||
}
|
}
|
||||||
else if (parity == USART_PARITY_ODD) {
|
else if (parity == UPARITY_ODD) {
|
||||||
usart_set_parity((uint32_t)p->reg_addr, USART_PARITY_ODD);
|
usart_set_parity((uint32_t)p->reg_addr, USART_PARITY_ODD);
|
||||||
if (bits == UBITS_7)
|
if (bits == UBITS_7)
|
||||||
usart_set_databits((uint32_t)p->reg_addr, 8);
|
usart_set_databits((uint32_t)p->reg_addr, 8);
|
||||||
|
|||||||
@@ -36,8 +36,31 @@
|
|||||||
#include "subsystems/abi.h"
|
#include "subsystems/abi.h"
|
||||||
#include "led.h"
|
#include "led.h"
|
||||||
|
|
||||||
|
/** Normal frequency with the default settings
|
||||||
|
*
|
||||||
|
* the baro read function should be called at 5 Hz
|
||||||
|
*/
|
||||||
|
#ifndef BARO_BOARD_APOGEE_FREQ
|
||||||
|
#define BARO_BOARD_APOGEE_FREQ 5
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** Baro periodic prescaler
|
||||||
|
*
|
||||||
|
* different for fixedwing and rotorcraft...
|
||||||
|
*/
|
||||||
|
#ifdef BARO_PERIODIC_FREQUENCY
|
||||||
|
#define MPL_PRESCALER ((BARO_PERIODIC_FREQUENCY)/BARO_BOARD_APOGEE_FREQ)
|
||||||
|
#else
|
||||||
|
#ifdef PERIODIC_FREQUENCY
|
||||||
|
#define MPL_PRESCALER ((PERIODIC_FREQUENCY)/BARO_BOARD_APOGEE_FREQ)
|
||||||
|
#else
|
||||||
|
// default: assuming 60Hz for a 5Hz baro update
|
||||||
|
#define MPL_PRESCALER 12
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Counter to init ads1114 at startup */
|
/** Counter to init ads1114 at startup */
|
||||||
#define BARO_STARTUP_COUNTER 200
|
#define BARO_STARTUP_COUNTER (200/(MPL_PRESCALER))
|
||||||
uint16_t startup_cnt;
|
uint16_t startup_cnt;
|
||||||
|
|
||||||
struct Mpl3115 apogee_baro;
|
struct Mpl3115 apogee_baro;
|
||||||
@@ -67,17 +90,15 @@ void baro_periodic( void ) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
// Read the sensor
|
// Read the sensor
|
||||||
mpl3115_periodic(&apogee_baro);
|
RunOnceEvery(MPL_PRESCALER, mpl3115_periodic(&apogee_baro));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void apogee_baro_event(void) {
|
void apogee_baro_event(void) {
|
||||||
mpl3115_event(&apogee_baro);
|
mpl3115_event(&apogee_baro);
|
||||||
if (apogee_baro.data_available) {
|
if (apogee_baro.data_available && startup_cnt == 0) {
|
||||||
if (startup_cnt == 0) {
|
|
||||||
float pressure = ((float)apogee_baro.pressure/(1<<2));
|
float pressure = ((float)apogee_baro.pressure/(1<<2));
|
||||||
AbiSendMsgBARO_ABS(BARO_BOARD_SENDER_ID, &pressure);
|
AbiSendMsgBARO_ABS(BARO_BOARD_SENDER_ID, &pressure);
|
||||||
}
|
|
||||||
apogee_baro.data_available = FALSE;
|
apogee_baro.data_available = FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ void baro_periodic(void) {
|
|||||||
&bb_ms5611.data.c[4],
|
&bb_ms5611.data.c[4],
|
||||||
&bb_ms5611.data.c[5],
|
&bb_ms5611.data.c[5],
|
||||||
&bb_ms5611.data.c[6],
|
&bb_ms5611.data.c[6],
|
||||||
&bb_ms5611.data.c[7]);
|
&bb_ms5611.data.c[7]));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,12 +70,12 @@ void baro_periodic(void) {
|
|||||||
&bb_ms5611.data.c[4],
|
&bb_ms5611.data.c[4],
|
||||||
&bb_ms5611.data.c[5],
|
&bb_ms5611.data.c[5],
|
||||||
&bb_ms5611.data.c[6],
|
&bb_ms5611.data.c[6],
|
||||||
&bb_ms5611.data.c[7]);
|
&bb_ms5611.data.c[7]));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void baro_event(){
|
void baro_event(void) {
|
||||||
if (sys_time.nb_sec > 1) {
|
if (sys_time.nb_sec > 1) {
|
||||||
ms5611_spi_event(&bb_ms5611);
|
ms5611_spi_event(&bb_ms5611);
|
||||||
|
|
||||||
|
|||||||
@@ -65,8 +65,8 @@
|
|||||||
* PD9 = UART3 RX
|
* PD9 = UART3 RX
|
||||||
* PD10 = FREE
|
* PD10 = FREE
|
||||||
* PD11 = FREE
|
* PD11 = FREE
|
||||||
* PD12 = LED_3
|
* PD12 = LED_4
|
||||||
* PD13 = LED_4
|
* PD13 = LED_3
|
||||||
* PD14 = LED_5
|
* PD14 = LED_5
|
||||||
* PD15 = LED_6
|
* PD15 = LED_6
|
||||||
*
|
*
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#define LED_3_GPIO GPIOD
|
#define LED_3_GPIO GPIOD
|
||||||
#define LED_3_GPIO_CLK RCC_AHB1ENR_IOPDEN
|
#define LED_3_GPIO_CLK RCC_AHB1ENR_IOPDEN
|
||||||
#define LED_3_GPIO_PIN GPIO12
|
#define LED_3_GPIO_PIN GPIO13
|
||||||
#define LED_3_AFIO_REMAP ((void)0)
|
#define LED_3_AFIO_REMAP ((void)0)
|
||||||
#define LED_3_GPIO_ON gpio_set
|
#define LED_3_GPIO_ON gpio_set
|
||||||
#define LED_3_GPIO_OFF gpio_clear
|
#define LED_3_GPIO_OFF gpio_clear
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#define LED_4_GPIO GPIOD
|
#define LED_4_GPIO GPIOD
|
||||||
#define LED_4_GPIO_CLK RCC_AHB1ENR_IOPDEN
|
#define LED_4_GPIO_CLK RCC_AHB1ENR_IOPDEN
|
||||||
#define LED_4_GPIO_PIN GPIO13
|
#define LED_4_GPIO_PIN GPIO12
|
||||||
#define LED_4_AFIO_REMAP ((void)0)
|
#define LED_4_AFIO_REMAP ((void)0)
|
||||||
#define LED_4_GPIO_ON gpio_set
|
#define LED_4_GPIO_ON gpio_set
|
||||||
#define LED_4_GPIO_OFF gpio_clear
|
#define LED_4_GPIO_OFF gpio_clear
|
||||||
|
|||||||
@@ -57,6 +57,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
PRINT_CONFIG_VAR(GUIDANCE_H_USE_REF)
|
PRINT_CONFIG_VAR(GUIDANCE_H_USE_REF)
|
||||||
|
PRINT_CONFIG_VAR(GUIDANCE_H_USE_SPEED_REF)
|
||||||
|
|
||||||
#ifndef GUIDANCE_H_APPROX_FORCE_BY_THRUST
|
#ifndef GUIDANCE_H_APPROX_FORCE_BY_THRUST
|
||||||
#define GUIDANCE_H_APPROX_FORCE_BY_THRUST FALSE
|
#define GUIDANCE_H_APPROX_FORCE_BY_THRUST FALSE
|
||||||
|
|||||||
@@ -41,6 +41,14 @@
|
|||||||
#define GUIDANCE_H_USE_REF TRUE
|
#define GUIDANCE_H_USE_REF TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** Use horizontal guidance speed reference.
|
||||||
|
* This also allows to give velocity commands via RC in GUIDANCE_H_MODE_HOVER.
|
||||||
|
* Default is TRUE, define to FALSE to always disable it.
|
||||||
|
*/
|
||||||
|
#ifndef GUIDANCE_H_USE_SPEED_REF
|
||||||
|
#define GUIDANCE_H_USE_SPEED_REF TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
#define GUIDANCE_H_MODE_KILL 0
|
#define GUIDANCE_H_MODE_KILL 0
|
||||||
#define GUIDANCE_H_MODE_RATE 1
|
#define GUIDANCE_H_MODE_RATE 1
|
||||||
#define GUIDANCE_H_MODE_ATTITUDE 2
|
#define GUIDANCE_H_MODE_ATTITUDE 2
|
||||||
|
|||||||
+1
-1
@@ -46,7 +46,7 @@ struct FloatAttitudeGains {
|
|||||||
struct FloatVect3 surface_i;
|
struct FloatVect3 surface_i;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct FloatEulers stabilization_att_sum_err_eulers;
|
extern struct FloatEulers stabilization_att_sum_err;
|
||||||
|
|
||||||
extern float stabilization_att_fb_cmd[COMMANDS_NB];
|
extern float stabilization_att_fb_cmd[COMMANDS_NB];
|
||||||
extern float stabilization_att_ff_cmd[COMMANDS_NB];
|
extern float stabilization_att_ff_cmd[COMMANDS_NB];
|
||||||
|
|||||||
@@ -48,9 +48,9 @@ static void send_att(void) {
|
|||||||
&stab_att_sp_euler.phi,
|
&stab_att_sp_euler.phi,
|
||||||
&stab_att_sp_euler.theta,
|
&stab_att_sp_euler.theta,
|
||||||
&stab_att_sp_euler.psi,
|
&stab_att_sp_euler.psi,
|
||||||
&stabilization_att_sum_err_eulers.phi,
|
&stabilization_att_sum_err.phi,
|
||||||
&stabilization_att_sum_err_eulers.theta,
|
&stabilization_att_sum_err.theta,
|
||||||
&stabilization_att_sum_err_eulers.psi,
|
&stabilization_att_sum_err.psi,
|
||||||
&stabilization_att_fb_cmd[COMMAND_ROLL],
|
&stabilization_att_fb_cmd[COMMAND_ROLL],
|
||||||
&stabilization_att_fb_cmd[COMMAND_PITCH],
|
&stabilization_att_fb_cmd[COMMAND_PITCH],
|
||||||
&stabilization_att_fb_cmd[COMMAND_YAW],
|
&stabilization_att_fb_cmd[COMMAND_YAW],
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
struct FloatAttitudeGains stabilization_gains[STABILIZATION_ATTITUDE_GAIN_NB];
|
struct FloatAttitudeGains stabilization_gains[STABILIZATION_ATTITUDE_GAIN_NB];
|
||||||
|
|
||||||
struct FloatQuat stabilization_att_sum_err_quat;
|
struct FloatQuat stabilization_att_sum_err_quat;
|
||||||
struct FloatEulers stabilization_att_sum_err_eulers;
|
struct FloatEulers stabilization_att_sum_err;
|
||||||
|
|
||||||
struct FloatRates last_body_rate;
|
struct FloatRates last_body_rate;
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ void stabilization_attitude_init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
FLOAT_QUAT_ZERO( stabilization_att_sum_err_quat );
|
FLOAT_QUAT_ZERO( stabilization_att_sum_err_quat );
|
||||||
FLOAT_EULERS_ZERO( stabilization_att_sum_err_eulers );
|
FLOAT_EULERS_ZERO( stabilization_att_sum_err );
|
||||||
FLOAT_RATES_ZERO( last_body_rate );
|
FLOAT_RATES_ZERO( last_body_rate );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ void stabilization_attitude_enter(void) {
|
|||||||
stabilization_attitude_ref_enter();
|
stabilization_attitude_ref_enter();
|
||||||
|
|
||||||
FLOAT_QUAT_ZERO( stabilization_att_sum_err_quat );
|
FLOAT_QUAT_ZERO( stabilization_att_sum_err_quat );
|
||||||
FLOAT_EULERS_ZERO( stabilization_att_sum_err_eulers );
|
FLOAT_EULERS_ZERO( stabilization_att_sum_err );
|
||||||
}
|
}
|
||||||
|
|
||||||
void stabilization_attitude_set_failsafe_setpoint(void) {
|
void stabilization_attitude_set_failsafe_setpoint(void) {
|
||||||
@@ -264,11 +264,11 @@ void stabilization_attitude_run(bool_t enable_integrator) {
|
|||||||
FLOAT_QUAT_COMP(new_sum_err, stabilization_att_sum_err_quat, scaled_att_err);
|
FLOAT_QUAT_COMP(new_sum_err, stabilization_att_sum_err_quat, scaled_att_err);
|
||||||
FLOAT_QUAT_NORMALIZE(new_sum_err);
|
FLOAT_QUAT_NORMALIZE(new_sum_err);
|
||||||
FLOAT_QUAT_COPY(stabilization_att_sum_err_quat, new_sum_err);
|
FLOAT_QUAT_COPY(stabilization_att_sum_err_quat, new_sum_err);
|
||||||
FLOAT_EULERS_OF_QUAT(stabilization_att_sum_err_eulers, stabilization_att_sum_err_quat);
|
FLOAT_EULERS_OF_QUAT(stabilization_att_sum_err, stabilization_att_sum_err_quat);
|
||||||
} else {
|
} else {
|
||||||
/* reset accumulator */
|
/* reset accumulator */
|
||||||
FLOAT_QUAT_ZERO( stabilization_att_sum_err_quat );
|
FLOAT_QUAT_ZERO( stabilization_att_sum_err_quat );
|
||||||
FLOAT_EULERS_ZERO( stabilization_att_sum_err_eulers );
|
FLOAT_EULERS_ZERO( stabilization_att_sum_err );
|
||||||
}
|
}
|
||||||
|
|
||||||
attitude_run_ff(stabilization_att_ff_cmd, &stabilization_gains[gain_idx], &stab_att_ref_accel);
|
attitude_run_ff(stabilization_att_ff_cmd, &stabilization_gains[gain_idx], &stab_att_ref_accel);
|
||||||
|
|||||||
+2
-2
@@ -82,8 +82,8 @@ void stabilization_attitude_ref_update() {
|
|||||||
stab_att_ref_accel.r = -2.*ZETA_R*OMEGA_P*stab_att_ref_rate.r - OMEGA_R*OMEGA_R*ref_err.psi;
|
stab_att_ref_accel.r = -2.*ZETA_R*OMEGA_P*stab_att_ref_rate.r - OMEGA_R*OMEGA_R*ref_err.psi;
|
||||||
|
|
||||||
/* saturate acceleration */
|
/* saturate acceleration */
|
||||||
const struct Int32Rates MIN_ACCEL = { -REF_ACCEL_MAX_P, -REF_ACCEL_MAX_Q, -REF_ACCEL_MAX_R };
|
const struct FloatRates MIN_ACCEL = { -REF_ACCEL_MAX_P, -REF_ACCEL_MAX_Q, -REF_ACCEL_MAX_R };
|
||||||
const struct Int32Rates MAX_ACCEL = { REF_ACCEL_MAX_P, REF_ACCEL_MAX_Q, REF_ACCEL_MAX_R }; \
|
const struct FloatRates MAX_ACCEL = { REF_ACCEL_MAX_P, REF_ACCEL_MAX_Q, REF_ACCEL_MAX_R };
|
||||||
RATES_BOUND_BOX(stab_att_ref_accel, MIN_ACCEL, MAX_ACCEL);
|
RATES_BOUND_BOX(stab_att_ref_accel, MIN_ACCEL, MAX_ACCEL);
|
||||||
|
|
||||||
/* saturate speed and trim accel accordingly */
|
/* saturate speed and trim accel accordingly */
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ void mpl3115_read(struct Mpl3115 *mpl)
|
|||||||
mpl->req_trans.buf[0] = MPL3115_REG_CTRL_REG1;
|
mpl->req_trans.buf[0] = MPL3115_REG_CTRL_REG1;
|
||||||
mpl->req_trans.buf[1] = ((MPL3115_OVERSAMPLING<<3) | (mpl->raw_mode<<6) |
|
mpl->req_trans.buf[1] = ((MPL3115_OVERSAMPLING<<3) | (mpl->raw_mode<<6) |
|
||||||
(mpl->alt_mode<<7) | MPL3115_OST_BIT);
|
(mpl->alt_mode<<7) | MPL3115_OST_BIT);
|
||||||
i2c_transmit(mpl->i2c_p, &mpl->trans, mpl->trans.slave_addr, 2);
|
i2c_transmit(mpl->i2c_p, &mpl->req_trans, mpl->trans.slave_addr, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-7
@@ -744,8 +744,9 @@ void stateCalcHorizontalSpeedNorm_i(void) {
|
|||||||
state.h_speed_norm_i = SPEED_BFP_OF_REAL(state.h_speed_norm_f);
|
state.h_speed_norm_i = SPEED_BFP_OF_REAL(state.h_speed_norm_f);
|
||||||
}
|
}
|
||||||
else if (bit_is_set(state.speed_status, SPEED_NED_I)) {
|
else if (bit_is_set(state.speed_status, SPEED_NED_I)) {
|
||||||
/// @todo consider INT32_SPEED_FRAC
|
int32_t n2 = (state.ned_speed_i.x*state.ned_speed_i.x +
|
||||||
INT32_VECT2_NORM(state.h_speed_norm_i, state.ned_speed_i);
|
state.ned_speed_i.y*state.ned_speed_i.y) >> INT32_SPEED_FRAC;
|
||||||
|
INT32_SQRT(state.h_speed_norm_i, n2);
|
||||||
}
|
}
|
||||||
else if (bit_is_set(state.speed_status, SPEED_NED_F)) {
|
else if (bit_is_set(state.speed_status, SPEED_NED_F)) {
|
||||||
FLOAT_VECT2_NORM(state.h_speed_norm_f, state.ned_speed_f);
|
FLOAT_VECT2_NORM(state.h_speed_norm_f, state.ned_speed_f);
|
||||||
@@ -753,8 +754,9 @@ void stateCalcHorizontalSpeedNorm_i(void) {
|
|||||||
state.h_speed_norm_i = SPEED_BFP_OF_REAL(state.h_speed_norm_f);
|
state.h_speed_norm_i = SPEED_BFP_OF_REAL(state.h_speed_norm_f);
|
||||||
}
|
}
|
||||||
else if (bit_is_set(state.speed_status, SPEED_ENU_I)) {
|
else if (bit_is_set(state.speed_status, SPEED_ENU_I)) {
|
||||||
/// @todo consider INT32_SPEED_FRAC
|
int32_t n2 = (state.enu_speed_i.x*state.enu_speed_i.x +
|
||||||
INT32_VECT2_NORM(state.h_speed_norm_i, state.enu_speed_i);
|
state.enu_speed_i.y*state.enu_speed_i.y) >> INT32_SPEED_FRAC;
|
||||||
|
INT32_SQRT(state.h_speed_norm_i, n2);
|
||||||
}
|
}
|
||||||
else if (bit_is_set(state.speed_status, SPEED_ENU_F)) {
|
else if (bit_is_set(state.speed_status, SPEED_ENU_F)) {
|
||||||
FLOAT_VECT2_NORM(state.h_speed_norm_f, state.enu_speed_f);
|
FLOAT_VECT2_NORM(state.h_speed_norm_f, state.enu_speed_f);
|
||||||
@@ -763,9 +765,11 @@ void stateCalcHorizontalSpeedNorm_i(void) {
|
|||||||
}
|
}
|
||||||
else if (bit_is_set(state.speed_status, SPEED_ECEF_I)) {
|
else if (bit_is_set(state.speed_status, SPEED_ECEF_I)) {
|
||||||
/* transform ecef speed to ned, set status bit, then compute norm */
|
/* transform ecef speed to ned, set status bit, then compute norm */
|
||||||
//foo
|
ned_of_ecef_vect_i(&state.ned_speed_i, &state.ned_origin_i, &state.ecef_speed_i);
|
||||||
/// @todo consider INT32_SPEED_FRAC
|
SetBit(state.speed_status, SPEED_NED_I);
|
||||||
//INT32_VECT2_NORM(state.h_speed_norm_i, state.ned_speed_i);
|
int32_t n2 = (state.ned_speed_i.x*state.ned_speed_i.x +
|
||||||
|
state.ned_speed_i.y*state.ned_speed_i.y) >> INT32_SPEED_FRAC;
|
||||||
|
INT32_SQRT(state.h_speed_norm_i, n2);
|
||||||
}
|
}
|
||||||
else if (bit_is_set(state.speed_status, SPEED_ECEF_F)) {
|
else if (bit_is_set(state.speed_status, SPEED_ECEF_F)) {
|
||||||
ned_of_ecef_vect_f(&state.ned_speed_f, &state.ned_origin_f, &state.ecef_speed_f);
|
ned_of_ecef_vect_f(&state.ned_speed_f, &state.ned_origin_f, &state.ecef_speed_f);
|
||||||
|
|||||||
@@ -96,10 +96,10 @@ void ahrs_align(void) {
|
|||||||
|
|
||||||
static send_gx3(void) {
|
static send_gx3(void) {
|
||||||
DOWNLINK_SEND_GX3_INFO(DefaultChannel, DefaultDevice,
|
DOWNLINK_SEND_GX3_INFO(DefaultChannel, DefaultDevice,
|
||||||
&ahrs_impl.GX3_freq,
|
&ahrs_impl.gx3_freq,
|
||||||
&ahrs_impl.GX3_packet.chksm_error,
|
&ahrs_impl.gx3_packet.chksm_error,
|
||||||
&ahrs_impl.GX3_packet.hdr_error,
|
&ahrs_impl.gx3_packet.hdr_error,
|
||||||
&ahrs_impl.GX3_chksm);
|
&ahrs_impl.gx3_chksm);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -140,6 +140,9 @@ void ins_update_gps(void) {
|
|||||||
#if !USE_BAROMETER
|
#if !USE_BAROMETER
|
||||||
float falt = gps.hmsl / 1000.;
|
float falt = gps.hmsl / 1000.;
|
||||||
EstimatorSetAlt(falt);
|
EstimatorSetAlt(falt);
|
||||||
|
if (!alt_kalman_enabled) {
|
||||||
|
ins_alt_dot = -gps.ned_vel.z / 100.;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
utm.alt = ins_alt;
|
utm.alt = ins_alt;
|
||||||
// set position
|
// set position
|
||||||
|
|||||||
@@ -707,7 +707,7 @@ let create_ac = fun alert (geomap:G.widget) (acs_notebook:GPack.notebook) (ac_id
|
|||||||
strip_connect (fun x -> dl_setting_callback id x)
|
strip_connect (fun x -> dl_setting_callback id x)
|
||||||
with Not_found ->
|
with Not_found ->
|
||||||
if warning then
|
if warning then
|
||||||
fprintf stderr "Warning: %s not setable from GCS strip (i.e. not listed in the xml settings file)" setting_name in
|
fprintf stderr "Warning: %s not setable from GCS strip (i.e. not listed in the xml settings file)\n" setting_name in
|
||||||
|
|
||||||
connect "flight_altitude" (fun f -> ac.strip#connect_shift_alt (fun x -> f (ac.target_alt+.x)));
|
connect "flight_altitude" (fun f -> ac.strip#connect_shift_alt (fun x -> f (ac.target_alt+.x)));
|
||||||
connect "launch" ac.strip#connect_launch;
|
connect "launch" ac.strip#connect_launch;
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import sys
|
|||||||
|
|
||||||
sys.path.append(os.getenv("PAPARAZZI_HOME") + "/sw/lib/python")
|
sys.path.append(os.getenv("PAPARAZZI_HOME") + "/sw/lib/python")
|
||||||
import settings_xml_parse
|
import settings_xml_parse
|
||||||
DEFAULT_AC_IDS = [ 11 ] # biwhirly
|
|
||||||
|
|
||||||
def Usage(scmd):
|
def Usage(scmd):
|
||||||
lpathitem = scmd.split('/')
|
lpathitem = scmd.split('/')
|
||||||
@@ -40,11 +39,10 @@ def GetOptions():
|
|||||||
class SettingsApp(wx.App):
|
class SettingsApp(wx.App):
|
||||||
def OnInit(self):
|
def OnInit(self):
|
||||||
options = GetOptions()
|
options = GetOptions()
|
||||||
if len(options['ac_id']) > 0:
|
if not options['ac_id']:
|
||||||
ac_ids = options['ac_id']
|
Usage(sys.argv[0])
|
||||||
else:
|
sys.exit("Error: Please specify at least one aircraft ID.")
|
||||||
ac_ids = DEFAULT_AC_IDS
|
self.main = settingsframe.create(None, options['ac_id'])
|
||||||
self.main = settingsframe.create(None, ac_ids)
|
|
||||||
self.main.Show()
|
self.main.Show()
|
||||||
self.SetTopWindow(self.main)
|
self.SetTopWindow(self.main)
|
||||||
|
|
||||||
|
|||||||
@@ -80,11 +80,20 @@ let _ =
|
|||||||
|
|
||||||
let ivy_bus = ref Defivybus.default_ivy_bus in
|
let ivy_bus = ref Defivybus.default_ivy_bus in
|
||||||
let acs = ref [] in
|
let acs = ref [] in
|
||||||
Arg.parse
|
|
||||||
|
let anon_fun = (fun x -> prerr_endline ("WARNING: don't do anything with "^x)) in
|
||||||
|
let speclist =
|
||||||
[ "-b", Arg.String (fun x -> ivy_bus := x), (sprintf "<ivy bus> Default is %s" !ivy_bus);
|
[ "-b", Arg.String (fun x -> ivy_bus := x), (sprintf "<ivy bus> Default is %s" !ivy_bus);
|
||||||
"-ac", Arg.String (fun x -> acs := x :: !acs), "A/C name"]
|
"-ac", Arg.String (fun x -> acs := x :: !acs), "A/C name"]
|
||||||
(fun x -> prerr_endline ("WARNING: don't do anything with "^x))
|
and usage_msg = "Usage: " in
|
||||||
"Usage: ";
|
|
||||||
|
Arg.parse speclist anon_fun usage_msg;
|
||||||
|
|
||||||
|
if List.length !acs = 0 then begin
|
||||||
|
prerr_endline "Error: Specify at least one Aircraft for which to display the settings!";
|
||||||
|
Arg.usage speclist usage_msg;
|
||||||
|
exit 1
|
||||||
|
end;
|
||||||
|
|
||||||
(** Connect to the Ivy bus *)
|
(** Connect to the Ivy bus *)
|
||||||
Ivy.init "Paparazzi settings" "READY" (fun _ _ -> ());
|
Ivy.init "Paparazzi settings" "READY" (fun _ _ -> ());
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user