mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-27 08:55:51 +08:00
[conf] update Enac rotorcraft so that they work in simulation as well (#3235)
- update Enac rotorcraft airframes - remove dead aircraft - add jsbsim model files - update bebop2 example
This commit is contained in:
committed by
GitHub
parent
19952d8e04
commit
2ae4fed4e3
@@ -43,17 +43,6 @@
|
||||
settings_modules="modules/ahrs_int_cmpl_quat.xml modules/air_data.xml modules/electrical.xml modules/filter_1euro_imu.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/jevois.xml modules/logger_sd_chibios.xml modules/nav_rotorcraft.xml modules/nav_survey_poly_rotorcraft.xml modules/stabilization_indi.xml modules/switch_servo.xml modules/tag_tracking.xml"
|
||||
gui_color="#fdd12f992f99"
|
||||
/>
|
||||
<aircraft
|
||||
name="ULYSSE"
|
||||
ac_id="218"
|
||||
airframe="airframes/ENAC/quadrotor/ulysse_indi.xml"
|
||||
radio="radios/FrSky_X-Lite.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/competitions/IMAV2022_drop.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/ahrs_int_cmpl_quat.xml modules/air_data.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/jevois.xml modules/logger_sd_chibios.xml modules/nav_rotorcraft.xml modules/nav_survey_poly_rotorcraft.xml modules/stabilization_indi.xml modules/switch_servo.xml modules/tag_tracking.xml"
|
||||
gui_color="#c6d33e3ef958"
|
||||
/>
|
||||
<aircraft
|
||||
name="CobraV2"
|
||||
ac_id="11"
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<!--autopilot name="rotorcraft_autopilot"/-->
|
||||
|
||||
<configure name="PERIODIC_FREQUENCY" value="1000"/>
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="$(PERIODIC_FREQUENCY)"/>
|
||||
|
||||
@@ -28,18 +30,12 @@
|
||||
|
||||
<module name="telemetry" type="xbee_api"/>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<module name="actuators" type="dshot">
|
||||
<!--define name="DSHOT_SPEED" value="300"/-->
|
||||
</module>
|
||||
<module name="actuators" type="dshot"/>
|
||||
|
||||
<module name="board" type="tawaki">
|
||||
<define name="IMU_MPU_LOWPASS_FILTER" value="MPU60X0_DLPF_256HZ"/>
|
||||
<define name="IMU_MPU_ACCEL_LOWPASS_FILTER" value="MPU60X0_DLPF_ACC_218HZ"/>
|
||||
<define name="IMU_MPU_SMPLRT_DIV" value="0"/>
|
||||
<!--configure name="BOARD_TAWAKI_ROTATED" value="TRUE"/-->
|
||||
<configure name="MAG_LIS3MDL_I2C_DEV" value="i2c2"/>
|
||||
</module>
|
||||
<module name="gps" type="ublox">
|
||||
<configure name="GPS_BAUD" value="B115200"/>
|
||||
@@ -50,23 +46,20 @@
|
||||
<define name="WLS_N_U" value="4" />
|
||||
<define name="WLS_N_V" value="4" />
|
||||
</module>
|
||||
<module name="guidance" type="indi">
|
||||
<define name="GUIDANCE_INDI_SPECIFIC_FORCE_GAIN" value="-500.0"/>
|
||||
<define name="GUIDANCE_INDI_THRUST_DYNAMICS_FREQ" value="30.5"/>
|
||||
<define name="GUIDANCE_INDI_RC_DEBUG" value="FALSE"/>
|
||||
</module>
|
||||
<module name="guidance" type="indi"/>
|
||||
|
||||
<module name="ins"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="ekf2"/>
|
||||
<!--module name="ins"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/-->
|
||||
<module name="air_data"/>
|
||||
|
||||
<module name="actuators" type="pwm"/>
|
||||
<module name="switch" type="servo"/>
|
||||
|
||||
<module name="filter" type="1euro_imu">
|
||||
<!--module name="filter" type="1euro_imu">
|
||||
<define name="AHRS_ICQ_IMU_ID" value="IMU_F1E_ID"/>
|
||||
<define name="AHRS_ALIGNER_IMU_ID" value="IMU_F1E_ID"/>
|
||||
</module>
|
||||
</module-->
|
||||
|
||||
<!--module name="sonar_adc">
|
||||
<configure name="ADC_SONAR" value="ADC_1"/>
|
||||
@@ -100,13 +93,6 @@
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
<define name="TRIM_ROLL" value="0"/>
|
||||
<define name="TRIM_PITCH" value="0"/>
|
||||
<define name="TRIM_YAW" value="0"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<set servo="FR" value="autopilot_get_motors_on() ? actuators_pprz[0] : -MAX_PPRZ"/>
|
||||
<set servo="BR" value="autopilot_get_motors_on() ? actuators_pprz[1] : -MAX_PPRZ"/>
|
||||
@@ -129,15 +115,15 @@
|
||||
<define name="ACCEL_Y_SENS" value="2.450207588413862" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="2.4560049628471914" integer="16"/>
|
||||
|
||||
<define name="MAG_X_SIGN" value="1"/>
|
||||
<define name="MAG_Y_SIGN" value="1"/>
|
||||
<define name="MAG_X_SIGN" value="-1"/>
|
||||
<define name="MAG_Y_SIGN" value="-1"/>
|
||||
<define name="MAG_Z_SIGN" value="1"/>
|
||||
<define name="MAG_X_NEUTRAL" value="-3868"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="2013"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="-101"/>
|
||||
<define name="MAG_X_SENS" value="0.6497766229092939" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="0.6352026516080006" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="0.6627284899394246" integer="16"/>
|
||||
<define name="MAG_X_NEUTRAL" value="415"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-2365"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="1626"/>
|
||||
<define name="MAG_X_SENS" value="0.6639205812316621" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="0.6470134039115051" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="0.6456573321937272" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
@@ -147,10 +133,10 @@
|
||||
<section name="MAG">
|
||||
<define name="LIS3MDL_MAG_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="LIS3MDL_MAG_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="LIS3MDL_MAG_TO_IMU_PSI" value="90." unit="deg"/>
|
||||
<define name="LIS3MDL_MAG_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<include href="conf/mag/delft_valkenburg.xml"/>
|
||||
<include href="conf/mag/toulouse_muret.xml"/>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
@@ -198,37 +184,29 @@
|
||||
<define name="WLS_PRIORITIES" value="{1000, 1000, 1, 100}"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_INDI" prefix="GUIDANCE_INDI_">
|
||||
<define name="THRUST_DYNAMICS_FREQ" value="30.5"/>
|
||||
<define name="RC_DEBUG" value="FALSE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="REF_MIN_ZDD" value="-0.4*9.81"/>
|
||||
<define name="REF_MAX_ZDD" value=" 0.4*9.81"/>
|
||||
<define name="REF_MIN_ZD" value="-1.5"/>
|
||||
<define name="REF_MAX_ZD" value=" 1."/>
|
||||
<define name="HOVER_KP" value="87"/>
|
||||
<define name="HOVER_KD" value="120"/>
|
||||
<define name="HOVER_KI" value="11"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.30"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
<define name="ADAPT_NOISE_FACTOR" value="1."/>
|
||||
<define name="ADAPT_INITIAL_HOVER_THROTTLE" value="0.25"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="20" unit="deg"/>
|
||||
<define name="PGAIN" value="40"/>
|
||||
<define name="DGAIN" value="108"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
<define name="NGAIN" value="0"/>
|
||||
<!-- feedforward -->
|
||||
<define name="AGAIN" value="0"/>
|
||||
<define name="REF_MAX_SPEED" value="2.5"/>
|
||||
<define name="REF_MAX_ACCEL" value="2.5"/>
|
||||
</section>
|
||||
|
||||
<section name="NAV">
|
||||
<define name="ARRIVED_AT_WAYPOINT" value="2.0"/>
|
||||
<define name="NAV_CLIMB_VSPEED" value="1.0"/>
|
||||
<define name="NAV_DESCEND_VSPEED" value="-0.5"/>
|
||||
<define name="NAV_CLIMB_VSPEED" value="1.5"/>
|
||||
<define name="NAV_DESCEND_VSPEED" value="-0.8"/>
|
||||
<define name="RECTANGLE_SURVEY_HEADING_NS" value="0."/>
|
||||
</section>
|
||||
|
||||
@@ -267,9 +245,9 @@
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
<define name="ACTUATOR_NAMES" value="ne_motor, se_motor, sw_motor, nw_motor" type="string[]"/>
|
||||
<define name="COMMANDS_NB" value="4"/>
|
||||
<define name="JSBSIM_MODEL" value="anton" type="string"/>
|
||||
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<module name="radio_control" type="sbus"/>
|
||||
<configure name="BARO_PERIODIC_FREQUENCY" value="50"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GAIN1"/>
|
||||
<define name="INS_EKF2_OPTITRACK" value="TRUE"/>
|
||||
</target>
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
@@ -52,9 +53,7 @@
|
||||
<module name="stabilization" type="indi"/>
|
||||
<module name="guidance" type="indi"/>
|
||||
|
||||
<module name="ins" type="ekf2">
|
||||
<define name="INS_EKF2_OPTITRACK" value="TRUE"/>
|
||||
</module>
|
||||
<module name="ins" type="ekf2"/>
|
||||
<module name="preflight_checks"/>
|
||||
|
||||
<!--module name="filter" type="1euro_imu">
|
||||
@@ -62,8 +61,6 @@
|
||||
<define name="AHRS_ALIGNER_IMU_ID" value="IMU_F1E_ID"/>
|
||||
</module-->
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<module name="tag_tracking">
|
||||
<configure name="JEVOIS_UART" value="UART3"/>
|
||||
</module>
|
||||
@@ -89,11 +86,6 @@
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
<define name="REVERSE" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<set servo="FR" value="autopilot_get_motors_on() ? actuators_pprz[0] : -MAX_PPRZ"/>
|
||||
<set servo="BR" value="autopilot_get_motors_on() ? actuators_pprz[1] : -MAX_PPRZ"/>
|
||||
@@ -172,23 +164,11 @@
|
||||
<define name="REF_MAX_ZDD" value=" 0.4*9.81"/>
|
||||
<define name="REF_MIN_ZD" value="-2."/>
|
||||
<define name="REF_MAX_ZD" value=" 2."/>
|
||||
<define name="HOVER_KP" value="90"/>
|
||||
<define name="HOVER_KD" value="110"/>
|
||||
<define name="HOVER_KI" value="10"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.35"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
<define name="ADAPT_NOISE_FACTOR" value="1."/>
|
||||
<define name="ADAPT_INITIAL_HOVER_THROTTLE" value="0.3"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="30" unit="deg"/>
|
||||
<define name="PGAIN" value="41"/>
|
||||
<define name="DGAIN" value="108"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
<define name="NGAIN" value="0"/>
|
||||
<!-- feedforward -->
|
||||
<define name="AGAIN" value="0"/>
|
||||
<define name="REF_MAX_SPEED" value="0.5"/>
|
||||
<define name="REF_MAX_ACCEL" value="2."/>
|
||||
</section>
|
||||
@@ -231,8 +211,10 @@
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="ACTUATOR_NAMES" value="ne_motor, se_motor, sw_motor, nw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="COMMANDS_NB" value="4"/>
|
||||
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
<module name="radio_control" type="sbus"/>
|
||||
<configure name="BARO_PERIODIC_FREQUENCY" value="50"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GAIN1"/>
|
||||
<define name="INS_EKF2_OPTITRACK" value="TRUE"/>
|
||||
</target>
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
@@ -48,9 +49,7 @@
|
||||
<module name="stabilization" type="indi"/>
|
||||
<module name="guidance" type="indi"/>
|
||||
|
||||
<module name="ins" type="ekf2">
|
||||
<define name="INS_EKF2_OPTITRACK" value="TRUE"/>
|
||||
</module>
|
||||
<module name="ins" type="ekf2"/>
|
||||
<module name="preflight_checks"/>
|
||||
|
||||
<!--module name="filter" type="1euro_imu">
|
||||
@@ -58,8 +57,6 @@
|
||||
<define name="AHRS_ALIGNER_IMU_ID" value="IMU_F1E_ID"/>
|
||||
</module-->
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<module name="tag_tracking">
|
||||
<configure name="JEVOIS_UART" value="UART3"/>
|
||||
</module>
|
||||
@@ -85,11 +82,6 @@
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
<define name="REVERSE" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<set servo="FR" value="autopilot_get_motors_on() ? actuators_pprz[0] : -MAX_PPRZ"/>
|
||||
<set servo="BR" value="autopilot_get_motors_on() ? actuators_pprz[1] : -MAX_PPRZ"/>
|
||||
@@ -252,9 +244,10 @@
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="ACTUATOR_NAMES" value="ne_motor, se_motor, sw_motor, nw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="COMMANDS_NB" value="4"/>
|
||||
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<module name="radio_control" type="sbus"/>
|
||||
<configure name="BARO_PERIODIC_FREQUENCY" value="50"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GAIN1"/>
|
||||
<define name="INS_EKF2_OPTITRACK" value="TRUE"/>
|
||||
</target>
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
@@ -43,9 +44,7 @@
|
||||
<module name="stabilization" type="indi"/>
|
||||
<module name="guidance" type="indi"/>
|
||||
|
||||
<module name="ins" type="ekf2">
|
||||
<define name="INS_EKF2_OPTITRACK" value="TRUE"/>
|
||||
</module>
|
||||
<module name="ins" type="ekf2"/>
|
||||
<!-- <module name="preflight_checks"/> -->
|
||||
|
||||
<!--module name="filter" type="1euro_imu">
|
||||
@@ -53,8 +52,6 @@
|
||||
<define name="AHRS_ALIGNER_IMU_ID" value="IMU_F1E_ID"/>
|
||||
</module-->
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<module name="tag_tracking">
|
||||
<configure name="JEVOIS_UART" value="UART3"/>
|
||||
</module>
|
||||
@@ -73,7 +70,6 @@
|
||||
<servo name="FL" no="4" min="0" neutral="100" max="2000"/>
|
||||
</servos>
|
||||
|
||||
|
||||
<commands>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
@@ -81,11 +77,6 @@
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
<define name="REVERSE" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<set servo="FR" value="autopilot_get_motors_on() ? actuators_pprz[0] : -MAX_PPRZ"/>
|
||||
<set servo="BR" value="autopilot_get_motors_on() ? actuators_pprz[1] : -MAX_PPRZ"/>
|
||||
@@ -167,23 +158,11 @@
|
||||
<define name="REF_MAX_ZDD" value=" 0.4*9.81"/>
|
||||
<define name="REF_MIN_ZD" value="-2."/>
|
||||
<define name="REF_MAX_ZD" value=" 2."/>
|
||||
<define name="HOVER_KP" value="90"/>
|
||||
<define name="HOVER_KD" value="110"/>
|
||||
<define name="HOVER_KI" value="10"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.35"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
<define name="ADAPT_NOISE_FACTOR" value="1."/>
|
||||
<define name="ADAPT_INITIAL_HOVER_THROTTLE" value="0.3"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="30" unit="deg"/>
|
||||
<define name="PGAIN" value="41"/>
|
||||
<define name="DGAIN" value="108"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
<define name="NGAIN" value="0"/>
|
||||
<!-- feedforward -->
|
||||
<define name="AGAIN" value="0"/>
|
||||
<define name="REF_MAX_SPEED" value="0.5"/>
|
||||
<define name="REF_MAX_ACCEL" value="2."/>
|
||||
</section>
|
||||
@@ -225,9 +204,10 @@
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="ACTUATOR_NAMES" value="ne_motor, se_motor, sw_motor, nw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="COMMANDS_NB" value="4"/>
|
||||
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
|
||||
@@ -63,8 +63,6 @@
|
||||
<define name="AHRS_ALIGNER_IMU_ID" value="IMU_F1E_ID"/>
|
||||
</module-->
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<module name="tag_tracking">
|
||||
<configure name="JEVOIS_UART" value="UART3"/>
|
||||
</module>
|
||||
@@ -90,11 +88,6 @@
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
<define name="REVERSE" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<set servo="FR" value="autopilot_get_motors_on() ? actuators_pprz[0] : -MAX_PPRZ"/>
|
||||
<set servo="BR" value="autopilot_get_motors_on() ? actuators_pprz[1] : -MAX_PPRZ"/>
|
||||
@@ -185,23 +178,11 @@
|
||||
<define name="REF_MAX_ZDD" value=" 0.4*9.81"/>
|
||||
<define name="REF_MIN_ZD" value="-2."/>
|
||||
<define name="REF_MAX_ZD" value=" 2."/>
|
||||
<define name="HOVER_KP" value="90"/>
|
||||
<define name="HOVER_KD" value="110"/>
|
||||
<define name="HOVER_KI" value="10"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.35"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
<define name="ADAPT_NOISE_FACTOR" value="1."/>
|
||||
<define name="ADAPT_INITIAL_HOVER_THROTTLE" value="0.3"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="30" unit="deg"/>
|
||||
<define name="PGAIN" value="41"/>
|
||||
<define name="DGAIN" value="108"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
<define name="NGAIN" value="0"/>
|
||||
<!-- feedforward -->
|
||||
<define name="AGAIN" value="0"/>
|
||||
<define name="REF_MAX_SPEED" value="4."/>
|
||||
<define name="REF_MAX_ACCEL" value="2."/>
|
||||
</section>
|
||||
@@ -243,9 +224,10 @@
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="ACTUATOR_NAMES" value="ne_motor, se_motor, sw_motor, nw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="anton" type="string"/>
|
||||
<define name="COMMANDS_NB" value="4"/>
|
||||
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
|
||||
@@ -258,6 +258,7 @@
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="front_motor, right_motor, back_motor, left_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_quad_wind" type="string"/>
|
||||
<define name="COMMANDS_NB" value="4"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
|
||||
@@ -11,13 +11,17 @@
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<configure name="PERIODIC_FREQUENCY" value="512"/>
|
||||
<configure name="PERIODIC_FREQUENCY" value="500"/>
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="$(PERIODIC_FREQUENCY)"/>
|
||||
|
||||
<target name="ap" board="tawaki_1.1">
|
||||
<module name="radio_control" type="sbus"/>
|
||||
<module name="radio_control" type="sbus"/>
|
||||
<configure name="BARO_PERIODIC_FREQUENCY" value="50"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GAIN1"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GAIN1"/>
|
||||
<module name="filter" type="1euro_imu">
|
||||
<define name="AHRS_ICQ_IMU_ID" value="IMU_F1E_ID"/>
|
||||
<define name="AHRS_ALIGNER_IMU_ID" value="IMU_F1E_ID"/>
|
||||
</module>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
@@ -32,9 +36,7 @@
|
||||
|
||||
<module name="telemetry" type="xbee_api"/>
|
||||
|
||||
<module name="actuators" type="dshot">
|
||||
<!--define name="DSHOT_SPEED" value="300"/-->
|
||||
</module>
|
||||
<module name="actuators" type="dshot"/>
|
||||
<module name="board" type="tawaki">
|
||||
<define name="IMU_MPU_LOWPASS_FILTER" value="MPU60X0_DLPF_256HZ"/>
|
||||
<define name="IMU_MPU_ACCEL_LOWPASS_FILTER" value="MPU60X0_DLPF_ACC_218HZ"/>
|
||||
@@ -48,12 +50,7 @@
|
||||
<define name="WLS_N_U" value="4" />
|
||||
<define name="WLS_N_V" value="4" />
|
||||
</module>
|
||||
<module name="guidance" type="indi">
|
||||
<define name="GUIDANCE_INDI_SPEED_GAIN" value="3.0"/>
|
||||
<define name="GUIDANCE_INDI_SPECIFIC_FORCE_GAIN" value="-500.0"/>
|
||||
<define name="GUIDANCE_INDI_THRUST_DYNAMICS_FREQ" value="15.6"/>
|
||||
<define name="GUIDANCE_INDI_RC_DEBUG" value="FALSE"/>
|
||||
</module>
|
||||
<module name="guidance" type="indi"/>
|
||||
|
||||
<module name="ins"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
@@ -62,11 +59,6 @@
|
||||
</module>
|
||||
<module name="air_data"/>
|
||||
|
||||
<module name="filter" type="1euro_imu">
|
||||
<define name="AHRS_ICQ_IMU_ID" value="IMU_F1E_ID"/>
|
||||
<define name="AHRS_ALIGNER_IMU_ID" value="IMU_F1E_ID"/>
|
||||
</module>
|
||||
|
||||
<module name="tag_tracking">
|
||||
<configure name="JEVOIS_UART" value="UART4" description="dummy uart in this config"/>
|
||||
</module>
|
||||
@@ -75,8 +67,6 @@
|
||||
<configure name="EXTRA_DL_BAUD" value="B115200"/>
|
||||
</module>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<module name="flight_recorder"/>
|
||||
<!--module name="logger" type="tune_indi"/-->
|
||||
</firmware>
|
||||
@@ -95,18 +85,6 @@
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
<define name="REVERSE" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<!--command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="FR" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BR" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BL" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
<set servo="FL" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
</command_laws-->
|
||||
<command_laws>
|
||||
<set servo="FR" value="autopilot_get_motors_on() ? actuators_pprz[0] : -MAX_PPRZ"/>
|
||||
<set servo="BR" value="autopilot_get_motors_on() ? actuators_pprz[1] : -MAX_PPRZ"/>
|
||||
@@ -114,7 +92,6 @@
|
||||
<set servo="FL" value="autopilot_get_motors_on() ? actuators_pprz[3] : -MAX_PPRZ"/>
|
||||
</command_laws>
|
||||
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="GYRO_P_SIGN" value="-1"/>
|
||||
<define name="GYRO_Q_SIGN" value="-1"/>
|
||||
@@ -148,7 +125,7 @@
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<include href="conf/mag/delft_valkenburg.xml"/>
|
||||
<include href="conf/mag/toulouse_muret.xml"/>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="INV_NXZ" value="0.25"/>
|
||||
@@ -192,7 +169,6 @@
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
|
||||
|
||||
<!-- Full INDI -->
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1" type="matrix">
|
||||
@@ -216,28 +192,22 @@
|
||||
<define name="REF_MAX_ZDD" value=" 0.4*9.81"/>
|
||||
<define name="REF_MIN_ZD" value="-1.5"/>
|
||||
<define name="REF_MAX_ZD" value=" 1."/>
|
||||
<define name="HOVER_KP" value="90"/>
|
||||
<define name="HOVER_KD" value="110"/>
|
||||
<define name="HOVER_KI" value="10"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.35"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
<define name="ADAPT_NOISE_FACTOR" value="1."/>
|
||||
<define name="ADAPT_INITIAL_HOVER_THROTTLE" value="0.3"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="20" unit="deg"/>
|
||||
<define name="PGAIN" value="41"/>
|
||||
<define name="DGAIN" value="108"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
<define name="NGAIN" value="0"/>
|
||||
<!-- feedforward -->
|
||||
<define name="AGAIN" value="0"/>
|
||||
<define name="REF_MAX_SPEED" value="4."/>
|
||||
<define name="REF_MAX_ACCEL" value="2."/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_INDI" prefix="GUIDANCE_INDI_">
|
||||
<define name="SPEED_GAIN" value="3.0"/>
|
||||
<define name="SPECIFIC_FORCE_GAIN" value="-500.0"/>
|
||||
<define name="THRUST_DYNAMICS_FREQ" value="15.6"/>
|
||||
<define name="RC_DEBUG" value="FALSE"/>
|
||||
</section>
|
||||
|
||||
<section name="NAV">
|
||||
<define name="ARRIVED_AT_WAYPOINT" value="2.0"/>
|
||||
<define name="NAV_DESCEND_VSPEED" value="-0.5"/>
|
||||
@@ -271,10 +241,9 @@
|
||||
<define name="ACTUATORS_ORDER" value="{3, 2, 1, 0}"/>
|
||||
<define name="PYBULLET_MODULE" value="simple_quad_sim" type="string"/>
|
||||
<define name="PYBULLET_URDF" value="robobee.urdf" type="string"/>
|
||||
<!--define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<!--define name="ACTUATOR_NAMES" value="ne_motor, se_motor, sw_motor, nw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/-->
|
||||
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
<define name="COMMANDS_NB" value="4"/>
|
||||
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -1,266 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
|
||||
|
||||
<airframe name="Quadricopter ULYSSE Tawaki">
|
||||
|
||||
<description>
|
||||
* Autopilot: Tawaki
|
||||
* Actuators: 4 in 4 Holybro BLHELI ESC
|
||||
* Telemetry: XBee
|
||||
* GPS: ublox
|
||||
* RC: FrSky XM+
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<!--configure name="RTOS_DEBUG" value="TRUE"/-->
|
||||
<configure name="PERIODIC_FREQUENCY" value="1000"/>
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="$(PERIODIC_FREQUENCY)"/>
|
||||
|
||||
<target name="ap" board="tawaki_1.0">
|
||||
<configure name="BARO_PERIODIC_FREQUENCY" value="50"/>
|
||||
<module name="radio_control" type="sbus"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GAIN1"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
</target>
|
||||
|
||||
<module name="telemetry" type="xbee_api"/>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<module name="actuators" type="dshot">
|
||||
<!--define name="DSHOT_SPEED" value="300"/-->
|
||||
</module>
|
||||
|
||||
<module name="board" type="tawaki">
|
||||
<!--define name="IMU_MPU_LOWPASS_FILTER" value="MPU60X0_DLPF_256HZ"/-->
|
||||
<!--define name="IMU_MPU_ACCEL_LOWPASS_FILTER" value="MPU60X0_DLPF_ACC_218HZ"/-->
|
||||
<define name="IMU_MPU_LOWPASS_FILTER" value="MPU60X0_DLPF_98HZ"/>
|
||||
<define name="IMU_MPU_ACCEL_LOWPASS_FILTER" value="MPU60X0_DLPF_ACC_99HZ"/>
|
||||
<define name="IMU_MPU_SMPLRT_DIV" value="0"/>
|
||||
<!--configure name="BOARD_TAWAKI_ROTATED" value="TRUE"/-->
|
||||
<configure name="MAG_LIS3MDL_I2C_DEV" value="i2c2"/>
|
||||
</module>
|
||||
<module name="gps" type="ublox">
|
||||
<configure name="GPS_BAUD" value="B115200"/>
|
||||
<define name="USE_GPS_UBX_RTCM" value="TRUE"/>
|
||||
</module>
|
||||
|
||||
<module name="stabilization" type="indi">
|
||||
<define name="WLS_N_U" value="4" />
|
||||
<define name="WLS_N_V" value="4" />
|
||||
</module>
|
||||
<module name="guidance" type="indi">
|
||||
<define name="GUIDANCE_INDI_SPECIFIC_FORCE_GAIN" value="-500.0"/>
|
||||
<define name="GUIDANCE_INDI_THRUST_DYNAMICS_FREQ" value="30.5"/>
|
||||
<define name="GUIDANCE_INDI_RC_DEBUG" value="FALSE"/>
|
||||
</module>
|
||||
|
||||
<module name="ins"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="air_data"/>
|
||||
|
||||
<module name="actuators" type="pwm"/>
|
||||
<module name="switch" type="servo"/>
|
||||
|
||||
<!--module name="filter" type="1euro_imu">
|
||||
<define name="AHRS_ICQ_IMU_ID" value="IMU_F1E_ID"/>
|
||||
<define name="AHRS_ALIGNER_IMU_ID" value="IMU_F1E_ID"/>
|
||||
</module-->
|
||||
|
||||
<module name="tag_tracking">
|
||||
<configure name="JEVOIS_UART" value="UART3" description="UART on which Jevois camera is connected"/>
|
||||
</module>
|
||||
|
||||
<module name="flight_recorder"/>
|
||||
<!--module name="logger" type="tune_indi"/-->
|
||||
</firmware>
|
||||
|
||||
<servos driver="DShot">
|
||||
<servo name="FR" no="4" min="0" neutral="100" max="2000"/>
|
||||
<servo name="BR" no="2" min="0" neutral="100" max="2000"/>
|
||||
<servo name="BL" no="1" min="0" neutral="100" max="2000"/>
|
||||
<servo name="FL" no="3" min="0" neutral="100" max="2000"/>
|
||||
</servos>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="SWITCH" no="4" min="1000" neutral="1000" max="2000"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<set servo="FR" value="autopilot_get_motors_on() ? actuators_pprz[0] : -MAX_PPRZ"/>
|
||||
<set servo="BR" value="autopilot_get_motors_on() ? actuators_pprz[1] : -MAX_PPRZ"/>
|
||||
<set servo="BL" value="autopilot_get_motors_on() ? actuators_pprz[2] : -MAX_PPRZ"/>
|
||||
<set servo="FL" value="autopilot_get_motors_on() ? actuators_pprz[3] : -MAX_PPRZ"/>
|
||||
</command_laws>
|
||||
|
||||
<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"/>
|
||||
|
||||
<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="-27"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="75"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-109"/>
|
||||
<define name="ACCEL_X_SENS" value="2.27584739975" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="2.45270163528" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="2.44302118661" 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="-525"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="3252"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="1029"/>
|
||||
<define name="MAG_X_SENS" value="0.6621839327083922" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="0.635352946158572" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="0.6546061419369537" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="MAG">
|
||||
<define name="LIS3MDL_MAG_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="LIS3MDL_MAG_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="LIS3MDL_MAG_TO_IMU_PSI" value="135." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<include href="conf/mag/delft_valkenburg.xml"/>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="45." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="45." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="60." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="101"/>
|
||||
<define name="REF_ERR_Q" value="101"/>
|
||||
<define name="REF_ERR_R" value="124"/>
|
||||
<define name="REF_RATE_P" value="18.0"/>
|
||||
<define name="REF_RATE_Q" value="18.0"/>
|
||||
<define name="REF_RATE_R" value="14.0"/>
|
||||
|
||||
<define name="MAX_R" value="60" unit="deg/s"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="4.0"/>
|
||||
<define name="FILT_CUTOFF_R" value="4.0"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
|
||||
|
||||
<!-- Full INDI -->
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1" type="matrix">
|
||||
<field value="{-40 , -40, 40 , 40 }"/>
|
||||
<field value="{40 , -40, -40 , 40 }"/>
|
||||
<field value="{5, -5, 5, -5}"/>
|
||||
<field value="{-1.5, -1.5, -1.5, -1.5}"/>
|
||||
</define>
|
||||
<!--Counter torque effect of spinning up a rotor-->
|
||||
<define name="G2" value="{150.0, -150.0, 150.0, -150.0 }"/>
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_FREQ" value="{30.5, 30.5, 30.5, 30.5}"/>
|
||||
<define name="ESTIMATION_FILT_CUTOFF" value="4.0"/>
|
||||
|
||||
<!--Priority for each axis (roll, pitch, yaw and thrust)-->
|
||||
<define name="WLS_PRIORITIES" value="{1000, 1000, 1, 100}"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="REF_MIN_ZDD" value="-0.4*9.81"/>
|
||||
<define name="REF_MAX_ZDD" value=" 0.4*9.81"/>
|
||||
<define name="REF_MIN_ZD" value="-1.5"/>
|
||||
<define name="REF_MAX_ZD" value=" 1."/>
|
||||
<define name="HOVER_KP" value="48"/>
|
||||
<define name="HOVER_KD" value="46"/>
|
||||
<define name="HOVER_KI" value="11"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.48"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
<define name="ADAPT_NOISE_FACTOR" value="1."/>
|
||||
<define name="ADAPT_INITIAL_HOVER_THROTTLE" value="0.4"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="20" unit="deg"/>
|
||||
<define name="PGAIN" value="41"/>
|
||||
<define name="DGAIN" value="108"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
<define name="NGAIN" value="0"/>
|
||||
<!-- feedforward -->
|
||||
<define name="AGAIN" value="0"/>
|
||||
<define name="REF_MAX_SPEED" value="2.5"/>
|
||||
<define name="REF_MAX_ACCEL" value="2.5"/>
|
||||
</section>
|
||||
|
||||
<section name="NAV">
|
||||
<define name="ARRIVED_AT_WAYPOINT" value="2.0"/>
|
||||
<define name="NAV_CLIMB_VSPEED" value="1.0"/>
|
||||
<define name="NAV_DESCEND_VSPEED" value="-0.5"/>
|
||||
<define name="RECTANGLE_SURVEY_HEADING_NS" value="0."/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CRITIC_BAT_LEVEL" value="9.3" unit="V"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_STARTUP" value="AP_MODE_NAV"/>
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_NAV"/>
|
||||
</section>
|
||||
|
||||
<section name="AGL" prefix="AGL_DIST_SONAR_">
|
||||
<define name="ID" value="ABI_BROADCAST"/>
|
||||
<define name="MAX_RANGE" value="6." unit="m"/>
|
||||
<define name="MIN_RANGE" value="0.01" unit="m"/>
|
||||
<define name="FILTER" value="0.15"/> <!--Low pass filter time constant-->
|
||||
</section>
|
||||
|
||||
<section name="TAG_TRACKING" prefix="TAG_TRACKING_">
|
||||
<define name="BODY_TO_CAM_PSI" value="180."/>
|
||||
<define name="CAM_POS_Y" value="0.12"/>
|
||||
</section>
|
||||
|
||||
<section name="GCS">
|
||||
<define name="ALT_SHIFT_PLUS_PLUS" value="3"/>
|
||||
<define name="ALT_SHIFT_PLUS" value="1"/>
|
||||
<define name="ALT_SHIFT_MINUS" value="-0.5"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
<module name="imu" type="bebop"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="ins" type="ekf2">
|
||||
<define name="INS_EKF2_OPTITRACK" value="true"/>
|
||||
</module>
|
||||
<module name="ins" type="ekf2"/>
|
||||
|
||||
<module name="air_data"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
<aerodynamics>
|
||||
|
||||
<axis name="YAW">
|
||||
<function name="elevon_yaw" frame="BODY" unit="FT*LBS">
|
||||
<sum>
|
||||
<product>
|
||||
<property>fcs/ele_left_lag</property>
|
||||
<value> -0.35 </value>
|
||||
</product>
|
||||
<product>
|
||||
<property>fcs/ele_right_lag</property>
|
||||
<value> -.35 </value>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="PITCH">
|
||||
<function name="elevon_pitch" frame="BODY" unit="FT*LBS">
|
||||
<sum>
|
||||
<product>
|
||||
<property>fcs/ele_left_lag</property>
|
||||
<value> -0.0417 </value>
|
||||
</product>
|
||||
<product>
|
||||
<property>fcs/ele_right_lag</property>
|
||||
<value> .0417 </value>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
</axis>
|
||||
|
||||
<axis name="LIFT">
|
||||
|
||||
<function name="aero/force/Lift_alpha">
|
||||
<description>Lift due to alpha</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<table>
|
||||
<independentVar lookup="row">aero/alpha-deg</independentVar>
|
||||
<tableData>
|
||||
-180 0.14
|
||||
-140 -0.80
|
||||
-110 -0.63
|
||||
-102 -0.74
|
||||
-98 -0.64
|
||||
-90 0.0
|
||||
-85 0.15
|
||||
-80 0.25
|
||||
-75 0.42
|
||||
0 0.0
|
||||
45 0.8
|
||||
90 0.0
|
||||
135 -0.8
|
||||
180 0.0
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
</axis>
|
||||
|
||||
<axis name="DRAG">
|
||||
|
||||
<function name="aero/force/Drag_basic">
|
||||
<description>Drag</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<table>
|
||||
<independentVar lookup="row">aero/alpha-deg</independentVar>
|
||||
<tableData>
|
||||
-180 1.7
|
||||
-160 1.62
|
||||
-100 0.4
|
||||
-90 0.15
|
||||
-85 0.17
|
||||
-75 0.22
|
||||
-70 0.33
|
||||
-65 0.6128
|
||||
-20 1.36
|
||||
-4 1.45
|
||||
15 1.35
|
||||
30 1.12
|
||||
</tableData>
|
||||
</table>
|
||||
<value>2.0</value> <!-- FIXME why this factor 2 ? -->
|
||||
</product>
|
||||
</function>
|
||||
|
||||
</axis>
|
||||
|
||||
<axis name="SIDE">
|
||||
|
||||
<function name="aero/force/Side_beta">
|
||||
<description>Side force due to beta</description>
|
||||
<product>
|
||||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<property>aero/beta-rad</property>
|
||||
<!--value>-4</value-->
|
||||
<value>0.02</value>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
</axis>
|
||||
|
||||
</aerodynamics>
|
||||
@@ -0,0 +1,442 @@
|
||||
<?xml version="1.0"?>
|
||||
<?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?>
|
||||
<fdm_config name="QUAD ANTON" version="2.0" release="BETA" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
||||
|
||||
<fileheader>
|
||||
<author>Gautier Hattenberger</author>
|
||||
<filecreationdate>05-06-2023</filecreationdate>
|
||||
<version>Version 1.0</version>
|
||||
<description>
|
||||
Model for ANTON quadrotor
|
||||
Simple Quadrotor in X configuration
|
||||
Motor: T-Motor F40 + prop 6045
|
||||
Include rotor dynamic
|
||||
NE/SW turning CCW, NW/SE CW
|
||||
|
||||
Drag model is linear with speed and correspond to the quadrotor used in
|
||||
IMAV2021 paper "Estimating wind using a quadrotor" (Hattenberger, Bronz, Condomines)
|
||||
</description>
|
||||
</fileheader>
|
||||
|
||||
<metrics>
|
||||
<wingarea unit="M2"> 1 </wingarea>
|
||||
<wingspan unit="M"> 1 </wingspan>
|
||||
<chord unit="M"> 1 </chord>
|
||||
<htailarea unit="M2"> 0 </htailarea>
|
||||
<htailarm unit="M"> 0 </htailarm>
|
||||
<vtailarea unit="M2"> 0 </vtailarea>
|
||||
<vtailarm unit="M"> 0 </vtailarm>
|
||||
<location name="AERORP" unit="M">
|
||||
<x> 0 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<location name="EYEPOINT" unit="M">
|
||||
<x> 0 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<location name="VRP" unit="M">
|
||||
<x> 0 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
</metrics>
|
||||
|
||||
<mass_balance>
|
||||
<ixx unit="KG*M2"> 0.0068 </ixx>
|
||||
<iyy unit="KG*M2"> 0.0068 </iyy>
|
||||
<izz unit="KG*M2"> 0.0136 </izz>
|
||||
<ixy unit="KG*M2"> 0. </ixy>
|
||||
<ixz unit="KG*M2"> 0. </ixz>
|
||||
<iyz unit="KG*M2"> 0. </iyz>
|
||||
<emptywt unit="KG"> 0.8 </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.25 </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.25</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.25</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.25</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>
|
||||
|
||||
<flight_control name="actuator_dynamics">
|
||||
|
||||
<property value="30.">fcs/motor_lag</property>
|
||||
<property value="50.">fcs/motor_d_filter</property>
|
||||
<property value="1.">fcs/g1_gain</property>
|
||||
<property value="1.">fcs/g2_gain</property>
|
||||
|
||||
<channel name="filtering">
|
||||
|
||||
<!--First order filter represents actuator dynamics-->
|
||||
<lag_filter name="ne_motor_lag">
|
||||
<input> fcs/ne_motor </input>
|
||||
<c1> fcs/motor_lag </c1>
|
||||
<output> fcs/ne_motor_lag</output>
|
||||
</lag_filter>
|
||||
<lag_filter name="se_motor_lag">
|
||||
<input> fcs/se_motor </input>
|
||||
<c1> fcs/motor_lag </c1>
|
||||
<output> fcs/se_motor_lag</output>
|
||||
</lag_filter>
|
||||
<lag_filter name="sw_motor_lag">
|
||||
<input> fcs/sw_motor </input>
|
||||
<c1> fcs/motor_lag </c1>
|
||||
<output> fcs/sw_motor_lag</output>
|
||||
</lag_filter>
|
||||
<lag_filter name="nw_motor_lag">
|
||||
<input> fcs/nw_motor </input>
|
||||
<c1> fcs/motor_lag </c1>
|
||||
<output> fcs/nw_motor_lag</output>
|
||||
</lag_filter>
|
||||
|
||||
<!--Derivative of actuator dynamics for spinup torque-->
|
||||
<washout_filter name="ne_motor_d">
|
||||
<input> fcs/ne_motor </input>
|
||||
<c1> fcs/motor_d_filter </c1>
|
||||
<output> fcs/ne_motor_d</output>
|
||||
</washout_filter>
|
||||
<washout_filter name="se_motor_d">
|
||||
<input> fcs/se_motor </input>
|
||||
<c1> fcs/motor_d_filter </c1>
|
||||
<output> fcs/se_motor_d</output>
|
||||
</washout_filter>
|
||||
<washout_filter name="sw_motor_d">
|
||||
<input> fcs/sw_motor </input>
|
||||
<c1> fcs/motor_d_filter </c1>
|
||||
<output> fcs/sw_motor_d</output>
|
||||
</washout_filter>
|
||||
<washout_filter name="nw_motor_d">
|
||||
<input> fcs/nw_motor </input>
|
||||
<c1> fcs/motor_d_filter </c1>
|
||||
<output> fcs/nw_motor_d</output>
|
||||
</washout_filter>
|
||||
|
||||
<pure_gain name="ne_g2timesactd">
|
||||
<input>fcs/ne_motor_d</input>
|
||||
<gain>fcs/g2_gain</gain>
|
||||
<output>fcs/ne_g2timesactd</output>
|
||||
</pure_gain>
|
||||
<pure_gain name="ne_g1timesact">
|
||||
<input>fcs/ne_motor_lag</input>
|
||||
<gain>fcs/g1_gain</gain>
|
||||
<output>fcs/ne_g1timesact</output>
|
||||
</pure_gain>
|
||||
<summer name="ne_summer">
|
||||
<input>fcs/ne_g2timesactd</input>
|
||||
<input>fcs/ne_g1timesact</input>
|
||||
<output>fcs/ne_yawcontrol</output>
|
||||
</summer>
|
||||
|
||||
<pure_gain name="se_g2timesactd">
|
||||
<input>fcs/se_motor_d</input>
|
||||
<gain>fcs/g2_gain</gain>
|
||||
<output>fcs/se_g2timesactd</output>
|
||||
</pure_gain>
|
||||
<pure_gain name="se_g1timesact">
|
||||
<input>fcs/se_motor_lag</input>
|
||||
<gain>fcs/g1_gain</gain>
|
||||
<output>fcs/se_g1timesact</output>
|
||||
</pure_gain>
|
||||
<summer name="se_summer">
|
||||
<input>fcs/se_g2timesactd</input>
|
||||
<input>fcs/se_g1timesact</input>
|
||||
<output>fcs/se_yawcontrol</output>
|
||||
</summer>
|
||||
|
||||
<pure_gain name="sw_g2timesactd">
|
||||
<input>fcs/sw_motor_d</input>
|
||||
<gain>fcs/g2_gain</gain>
|
||||
<output>fcs/sw_g2timesactd</output>
|
||||
</pure_gain>
|
||||
<pure_gain name="sw_g1timesact">
|
||||
<input>fcs/sw_motor_lag</input>
|
||||
<gain>fcs/g1_gain</gain>
|
||||
<output>fcs/sw_g1timesact</output>
|
||||
</pure_gain>
|
||||
<summer name="sw_summer">
|
||||
<input>fcs/sw_g2timesactd</input>
|
||||
<input>fcs/sw_g1timesact</input>
|
||||
<output>fcs/sw_yawcontrol</output>
|
||||
</summer>
|
||||
|
||||
<pure_gain name="nw_g2timesactd">
|
||||
<input>fcs/nw_motor_d</input>
|
||||
<gain>fcs/g2_gain</gain>
|
||||
<output>fcs/nw_g2timesactd</output>
|
||||
</pure_gain>
|
||||
<pure_gain name="nw_g1timesact">
|
||||
<input>fcs/nw_motor_lag</input>
|
||||
<gain>fcs/g1_gain</gain>
|
||||
<output>fcs/nw_g1timesact</output>
|
||||
</pure_gain>
|
||||
<summer name="summer3">
|
||||
<input>fcs/nw_g2timesactd</input>
|
||||
<input>fcs/nw_g1timesact</input>
|
||||
<output>fcs/nw_yawcontrol</output>
|
||||
</summer>
|
||||
|
||||
</channel>
|
||||
</flight_control>
|
||||
|
||||
<external_reactions>
|
||||
|
||||
<property>fcs/ne_motor</property>
|
||||
<property>fcs/se_motor</property>
|
||||
<property>fcs/sw_motor</property>
|
||||
<property>fcs/nw_motor</property>
|
||||
<property>fcs/ne_motor_lag</property>
|
||||
<property>fcs/se_motor_lag</property>
|
||||
<property>fcs/sw_motor_lag</property>
|
||||
<property>fcs/nw_motor_lag</property>
|
||||
|
||||
<!-- First the lift forces produced by each propeller -->
|
||||
|
||||
<force name="ne_motor" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/ne_motor_lag</property>
|
||||
<value> 10. </value>
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>-0.15</x>
|
||||
<y>0.15</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</direction>
|
||||
</force>
|
||||
|
||||
<force name="sw_motor" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/sw_motor_lag</property>
|
||||
<value> 10. </value>
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0.15</x>
|
||||
<y>-0.15</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</direction>
|
||||
</force>
|
||||
|
||||
<force name="se_motor" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/se_motor_lag</property>
|
||||
<value> 10. </value>
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0.15</x>
|
||||
<y>0.15</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</direction>
|
||||
</force>
|
||||
|
||||
<force name="nw_motor" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/nw_motor_lag</property>
|
||||
<value> 10. </value>
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>-0.15</x>
|
||||
<y>-0.15</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</direction>
|
||||
</force>
|
||||
|
||||
<!-- Then the Moment Couples -->
|
||||
|
||||
<moment name="ne_couple" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/ne_yawcontrol</property>
|
||||
<value> 0.5 </value>
|
||||
<value> 0.738 </value> <!-- N.m to FT.LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>-0.15</x>
|
||||
<y>0.15</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
<moment name="sw_couple" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/sw_yawcontrol</property>
|
||||
<value> 0.5 </value>
|
||||
<value> 0.738 </value> <!-- N.m to FT.LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0.15</x>
|
||||
<y>-0.15</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
<moment name="se_couple" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/se_yawcontrol</property>
|
||||
<value> 0.5 </value>
|
||||
<value> 0.738 </value> <!-- N.m to FT.LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0.15</x>
|
||||
<y>0.15</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
<moment name="nw_couple" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/nw_yawcontrol</property>
|
||||
<value> 0.5 </value>
|
||||
<value> 0.738 </value> <!-- N.m to FT.LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0</x>
|
||||
<y>-0.25</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
</external_reactions>
|
||||
|
||||
<propulsion/>
|
||||
|
||||
<flight_control name="FGFCS"/>
|
||||
|
||||
<aerodynamics>
|
||||
<axis name="DRAG">
|
||||
<function name="aero/coefficient/CD">
|
||||
<description>Drag</description>
|
||||
<product>
|
||||
<property>velocities/vtrue-fps</property>
|
||||
<value>0.3048</value> <!-- conversion in m/s -->
|
||||
<value>0.230292</value> <!-- drag coef -->
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
</product>
|
||||
</function>
|
||||
</axis>
|
||||
</aerodynamics>
|
||||
|
||||
</fdm_config>
|
||||
@@ -0,0 +1,394 @@
|
||||
<?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>ENAC</author>
|
||||
<filecreationdate>09-06-2022</filecreationdate>
|
||||
<version>Version 0.92 - beta</version>
|
||||
<description>Falcon</description>
|
||||
</fileheader>
|
||||
|
||||
<metrics>
|
||||
<wingarea unit="M2"> 0.075 </wingarea>
|
||||
<wingspan unit="M"> 0.9 </wingspan>
|
||||
<chord unit="M"> 0.12 </chord>
|
||||
<htailarea unit="M2"> 0 </htailarea>
|
||||
<htailarm unit="M"> 0 </htailarm>
|
||||
<vtailarea unit="M2"> 0 </vtailarea>
|
||||
<vtailarm unit="M"> 0 </vtailarm>
|
||||
<wing_incidence unit="DEG"> 90 </wing_incidence>
|
||||
<location name="AERORP" unit="M">
|
||||
<x> 0 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<location name="EYEPOINT" unit="M">
|
||||
<x> 0 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
<location name="VRP" unit="M">
|
||||
<x> 0 </x>
|
||||
<y> 0 </y>
|
||||
<z> 0 </z>
|
||||
</location>
|
||||
</metrics>
|
||||
|
||||
<mass_balance>
|
||||
<ixx unit="KG*M2"> 0.005 </ixx>
|
||||
<iyy unit="KG*M2"> 0.005 </iyy>
|
||||
<izz unit="KG*M2"> 0.015 </izz>
|
||||
<ixy unit="KG*M2"> 0. </ixy>
|
||||
<ixz unit="KG*M2"> 0. </ixz>
|
||||
<iyz unit="KG*M2"> 0. </iyz>
|
||||
<emptywt unit="KG"> 0.72 </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.12 </x>
|
||||
<y> 0.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.12</x>
|
||||
<y> 0.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.0 </x>
|
||||
<y> 0.12</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.0 </x>
|
||||
<y>-0.12</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>
|
||||
|
||||
<flight_control name="actuator_dynamics">
|
||||
<property value="30.">fcs/motor_lag</property>
|
||||
<property value="54.">fcs/elevon_lag</property>
|
||||
|
||||
<channel name="filtering">
|
||||
|
||||
<!--First order filter represents actuator dynamics-->
|
||||
<lag_filter name="UR_lag">
|
||||
<input> fcs/UR </input>
|
||||
<clipto>
|
||||
<min>0</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
<c1> fcs/motor_lag </c1>
|
||||
<output> fcs/UR_lag</output>
|
||||
</lag_filter>
|
||||
<lag_filter name="BR_lag">
|
||||
<input> fcs/BR </input>
|
||||
<clipto>
|
||||
<min>0</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
<c1> fcs/motor_lag </c1>
|
||||
<output> fcs/BR_lag</output>
|
||||
</lag_filter>
|
||||
<lag_filter name="BL_lag">
|
||||
<input> fcs/BL </input>
|
||||
<clipto>
|
||||
<min>0</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
<c1> fcs/motor_lag </c1>
|
||||
<output> fcs/BL_lag</output>
|
||||
</lag_filter>
|
||||
<lag_filter name="UL_lag">
|
||||
<input> fcs/UL </input>
|
||||
<clipto>
|
||||
<min>0</min>
|
||||
<max>1</max>
|
||||
</clipto>
|
||||
<c1> fcs/motor_lag </c1>
|
||||
<output> fcs/UL_lag</output>
|
||||
</lag_filter>
|
||||
|
||||
<lag_filter name="ele_left_lag">
|
||||
<input> fcs/ele_left </input>
|
||||
<c1> fcs/elevon_lag </c1>
|
||||
<output> fcs/ele_left_lag</output>
|
||||
</lag_filter>
|
||||
<lag_filter name="ele_right_lag">
|
||||
<input> fcs/ele_right </input>
|
||||
<c1> fcs/elevon_lag </c1>
|
||||
<output> fcs/ele_right_lag</output>
|
||||
</lag_filter>
|
||||
</channel>
|
||||
</flight_control>
|
||||
|
||||
<external_reactions>
|
||||
|
||||
<property>fcs/UR</property>
|
||||
<property>fcs/BR</property>
|
||||
<property>fcs/BL</property>
|
||||
<property>fcs/UL</property>
|
||||
<property>fcs/UR_lag</property>
|
||||
<property>fcs/BR_lag</property>
|
||||
<property>fcs/BL_lag</property>
|
||||
<property>fcs/UL_lag</property>
|
||||
<property>fcs/ele_left</property>
|
||||
<property>fcs/ele_left_lag</property>
|
||||
<property>fcs/ele_right</property>
|
||||
<property>fcs/ele_right_lag</property>
|
||||
|
||||
<property value="6.">fcs/motor_max_thrust</property> <!-- FIXME should be 4. from flight data -->
|
||||
<property value="0.00001">fcs/motor_max_torque</property>
|
||||
|
||||
<!-- First the lift forces produced by each propeller -->
|
||||
|
||||
<force name="UR" frame="BODY" unit="LBS">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/UR_lag</property>
|
||||
<property>fcs/motor_max_thrust</property>
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
<table>
|
||||
<independentVar lookup="row">aero/qbar-psf</independentVar>
|
||||
<tableData> <!-- 1 psf = 47.88 Pa , 18m/s : 200Pa, 5m/s :15Pa 3m/s:5.5Pa-->
|
||||
0. 1.
|
||||
0.1148 1.
|
||||
4.17 0.7 <!-- 18m/s -->
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0.105</x>
|
||||
<y>0.12</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0.342</x>
|
||||
<y>0</y>
|
||||
<z>-0.94</z>
|
||||
</direction>
|
||||
</force>
|
||||
<force name="BR" frame="BODY" unit="LBS">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/BR_lag</property>
|
||||
<property>fcs/motor_max_thrust</property>
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
<table>
|
||||
<independentVar lookup="row">aero/qbar-psf</independentVar>
|
||||
<tableData> <!-- 1 psf = 47.88 Pa , 18m/s : 200Pa, 5m/s :15Pa 3m/s:5.5Pa-->
|
||||
0. 1.
|
||||
0.1148 1.
|
||||
4.17 0.7 <!-- 18m/s -->
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>-0.105</x>
|
||||
<y>0.12</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>-0.342</x>
|
||||
<y>0</y>
|
||||
<z>-0.94</z>
|
||||
</direction>
|
||||
</force>
|
||||
<force name="BL" frame="BODY" unit="LBS">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/BL_lag</property>
|
||||
<property>fcs/motor_max_thrust</property>
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
<table>
|
||||
<independentVar lookup="row">aero/qbar-psf</independentVar>
|
||||
<tableData> <!-- 1 psf = 47.88 Pa , 18m/s : 200Pa, 5m/s :15Pa 3m/s:5.5Pa-->
|
||||
0. 1.
|
||||
0.1148 1.
|
||||
4.17 0.7 <!-- 18m/s -->
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>-0.105</x>
|
||||
<y>-0.12</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>-0.342</x>
|
||||
<y>0</y>
|
||||
<z>-0.94</z>
|
||||
</direction>
|
||||
</force>
|
||||
<force name="UL" frame="BODY" unit="LBS">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/UL_lag</property>
|
||||
<property>fcs/motor_max_thrust</property>
|
||||
<value>0.224808943</value> <!-- N to LBS -->
|
||||
<table>
|
||||
<independentVar lookup="row">aero/qbar-psf</independentVar>
|
||||
<tableData> <!-- 1 psf = 47.88 Pa , 18m/s : 200Pa, 5m/s :15Pa 3m/s:5.5Pa-->
|
||||
0. 1.
|
||||
0.1148 1.
|
||||
4.17 0.7 <!-- 18m/s -->
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0.105</x>
|
||||
<y>-0.12</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0.342</x>
|
||||
<y>0</y>
|
||||
<z>-0.94</z>
|
||||
</direction>
|
||||
</force>
|
||||
|
||||
<!-- Then the Moment Couples -->
|
||||
|
||||
<moment name="UR_couple" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/UR_lag</property>
|
||||
<property>fcs/motor_max_torque</property>
|
||||
<value> 0.738 </value> <!-- N.m to FT.LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0.105</x>
|
||||
<y>0.12</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
<moment name="BR_couple" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/BR_lag</property>
|
||||
<property>fcs/motor_max_torque</property>
|
||||
<value> 0.738 </value> <!-- N.m to FT.LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>-0.105</x>
|
||||
<y>0.12</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
<moment name="BL_couple" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/BL_lag</property>
|
||||
<property>fcs/motor_max_torque</property>
|
||||
<value> 0.738 </value> <!-- N.m to FT.LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>-0.105</x>
|
||||
<y>-0.12</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
<moment name="UL_couple" frame="BODY">
|
||||
<function>
|
||||
<product>
|
||||
<property>fcs/UL_lag</property>
|
||||
<property>fcs/motor_max_torque</property>
|
||||
<value> 0.738 </value> <!-- N.m to FT.LBS -->
|
||||
</product>
|
||||
</function>
|
||||
<location unit="M">
|
||||
<x>0.105</x>
|
||||
<y>-0.12</y>
|
||||
<z>0</z>
|
||||
</location>
|
||||
<direction>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</direction>
|
||||
</moment>
|
||||
|
||||
</external_reactions>
|
||||
|
||||
<propulsion/>
|
||||
|
||||
<flight_control name="FGFCS"/>
|
||||
<aerodynamics file="Systems/aerodynamics_falcon.xml"/>
|
||||
|
||||
</fdm_config>
|
||||
Reference in New Issue
Block a user