feat(sim): add X-Plane SITL airframes (#22493)

This commit is contained in:
Alireza Ghaderi
2026-07-01 08:42:33 +00:00
committed by GitHub
parent a7a6f4c4d7
commit b885c2d7e9
13 changed files with 1777 additions and 9 deletions

View File

@@ -0,0 +1,280 @@
#!/bin/sh
################################################################################
# PX4 SITL Configuration for Cessna 172 Skyhawk in X-Plane
################################################################################
#
# Airframe: Cessna 172 Skyhawk
# Type: Fixed-wing, tricycle landing gear
# Configuration: 1 propeller motor + ailerons + elevator + rudder + nosewheel
# Compatible Sim: X-Plane 11/12
#
# AIRCRAFT REFERENCE VALUES:
# - MTOW: 2,550 lb / 1,157 kg
# - Wingspan: 36 ft 1 in / 11.0 m
# - Cruise speed: about 124 ktas / 64 m/s
# - Stall speed: about 48 kcas / 25 m/s
# - Best-rate climb speed: about 74 kias / 38 m/s
# - Sea-level max climb: about 730 ft/min / 3.7 m/s
# - Engine: Lycoming IO-360-L2A, 180 hp
#
# The defaults are tuned for the packaged X-Plane model and runway-mission
# SITL validation.
#
# USAGE:
# make px4_sitl_default xplane_cessna172
#
# @name Cessna 172 Skyhawk X-Plane SITL
# @type Standard Plane
# @class Plane
# @maintainer Alireza Ghaderi <p30planets@gmail.com>
# @url https://github.com/alireza787b/px4xplane/
. ${R}etc/init.d/rc.fw_defaults
################################################################################
# SECTION 1: CONTROL ALLOCATION - FIXED-WING CONFIGURATION
################################################################################
param set-default CA_ROTOR_COUNT 1
# Propeller motor.
param set-default CA_ROTOR0_PX 1.2
param set-default CA_ROTOR0_AX 1.0
param set-default CA_ROTOR0_AZ 0.0
param set-default CA_R0_SLEW 2.0
# Control surfaces: left aileron, right aileron, elevator, rudder,
# left flap, right flap.
param set-default CA_SV_CS0_TRQ_R -0.5
param set-default CA_SV_CS0_TYPE 1
param set-default CA_SV_CS1_TRQ_R 0.5
param set-default CA_SV_CS1_TYPE 2
param set-default CA_SV_CS2_TRQ_P 1.0
param set-default CA_SV_CS2_TYPE 3
param set-default CA_SV_CS3_TRQ_Y 1.0
param set-default CA_SV_CS3_TYPE 4
param set-default CA_SV_CS4_TYPE 9
param set-default CA_SV_CS4_FLAP 1.0
param set-default CA_SV_CS5_TYPE 10
param set-default CA_SV_CS5_FLAP 1.0
param set-default CA_SV_CS_COUNT 6
param set-default CA_SV_FLAP_SLEW 0.08
# PWM output mapping matched to config.ini Cessna172 channels.
# Output 6 uses PX4's Landing_Gear_Wheel output function for runway steering.
# Outputs 7/8 drive left/right landing flaps.
param set-default PWM_MAIN_FUNC1 201
param set-default PWM_MAIN_FUNC2 202
param set-default PWM_MAIN_FUNC3 203
param set-default PWM_MAIN_FUNC4 101
param set-default PWM_MAIN_FUNC5 204
param set-default PWM_MAIN_FUNC6 440
param set-default PWM_MAIN_FUNC7 205
param set-default PWM_MAIN_FUNC8 206
param set-default PWM_MAIN_REV 7
################################################################################
# SECTION 2: BRIDGE / SIMULATOR SENSOR CONTRACT
################################################################################
# Simulator sensors.
param set-default SENS_EN_GPSSIM 1
param set-default SENS_EN_BAROSIM 1
param set-default SENS_EN_ARSPDSIM 1
param set-default SENS_EN_MAGSIM 1
# Barometer priority. PX4 simulator_mavlink publishes two simulated baro uORB
# instances from one HIL_SENSOR stream; disable the duplicate as a fusion source.
param set-default CAL_BARO0_ID 6620172
param set-default CAL_BARO0_PRIO 100
param set-default CAL_BARO1_ID 6620428
param set-default CAL_BARO1_PRIO 0
# Use neutral simulated accelerometer offsets. The px4xplane bridge publishes
# attitude-consistent HIL accelerometer data, so model-specific calibration
# offsets would corrupt sensor_combined and can trip EKF2 bias checks.
param set-default CAL_ACC0_PRIO 50
param set-default CAL_ACC0_XOFF 0.0
param set-default CAL_ACC0_YOFF 0.0
param set-default CAL_ACC0_ZOFF 0.0
# EKF2 core settings aligned with the current px4xplane sensor contract.
param set-default EKF2_MULTI_IMU 1
param set-default SENS_IMU_MODE 0
param set-default EKF2_ABL_LIM 0.8
param set-default EKF2_ABL_ACCLIM 35.0
param set-default EKF2_ACC_NOISE 1.0
param set-default EKF2_ACC_B_NOISE 0.001
# Height and horizontal aiding.
param set-default EKF2_BARO_NOISE 1.0
param set-default EKF2_BARO_GATE 10.0
param set-default SENS_GPS0_DELAY 10
param set-default SENS_GPS1_DELAY 10
# Runway roll is intentional motion while the fixed-wing land detector can still
# report landed/at-rest. Keep normal GNSS quality checks, but do not reject a
# valid simulator GNSS source on stationary-only horizontal drift checks.
param set-default EKF2_GPS_CHECK 1887
param set-default EKF2_GPS_P_NOISE 2.5
param set-default EKF2_GPS_V_NOISE 0.30
param set-default EKF2_GPS_P_GATE 8.0
# Magnetometer and airspeed aiding.
param set-default EKF2_MAG_TYPE 1
param set-default EKF2_MAG_DELAY 1.0
param set-default EKF2_MAG_GATE 5.0
param set-default EKF2_SYNT_MAG_Z 1
param set-default EKF2_ASP_DELAY 0.0
param set-default EKF2_ARSP_THR 10.0
param set-default EKF2_GSF_TAS 50.0
param set-default EKF2_AVEL_DELAY 0.0
param set-default EKF2_WIND_NSD 0.01
# The bridge target sensor rate is 200 Hz. Actual send cadence is still bounded
# by X-Plane frame callbacks, but matching the PX4 rate cap avoids stale 100 Hz
# assumptions in the airframe defaults.
param set-default IMU_GYRO_RATEMAX 200
################################################################################
# SECTION 3: FIXED-WING ATTITUDE / RATE CONTROL
################################################################################
# Roll authority is kept high enough for path capture while avoiding the
# control-surface saturation seen with more aggressive feed-forward settings.
param set-default FW_RR_P 0.42
param set-default FW_RR_I 0.11
param set-default FW_RR_D 0.08
param set-default FW_RR_FF 3.2
param set-default FW_R_RMAX 8.0
param set-default FW_R_TC 1.5
param set-default FW_R_LIM 15.0
# Pitch.
param set-default FW_PR_P 0.365
param set-default FW_PR_I 0.045
param set-default FW_PR_D 0.355
param set-default FW_PR_FF 3.4
param set-default FW_P_LIM_MAX 20.0
param set-default FW_P_LIM_MIN 0.0
param set-default FW_P_TC 0.55
param set-default FW_PN_R_SLEW_MAX 10.0
# Ground steering during runway takeoff/landing.
param set-default FW_W_EN 1
param set-default FW_WR_P 0.8
param set-default FW_WR_I 0.12
param set-default FW_WR_FF 0.35
################################################################################
# SECTION 4: AIRSPEED AND TECS
################################################################################
param set-default FW_AIRSPD_MIN 28.0
param set-default FW_AIRSPD_MAX 65.0
param set-default FW_AIRSPD_TRIM 40.0
param set-default FW_AIRSPD_STALL 25.0
param set-default FW_AIRSPD_FLP_SC 0.85
# X-Plane provides the pitot through the simulator stream, not a physical driver.
# Keep the missing-data check and avoid false innovation/stuck-data failures
# during accelerated SITL ground roll and landing flare.
param set-default ASPD_DO_CHECKS 1
param set-default ASPD_FALLBACK 1
param set-default SYS_HAS_NUM_ASPD 0
# Cessna 172 sea-level climb capability is about 3.7 m/s at max gross weight.
param set-default FW_T_ALT_TC 8.0
param set-default FW_T_RLL2THR 11.0
param set-default FW_T_STE_R_TC 2.0
param set-default FW_T_HRATE_FF 0.3
param set-default FW_T_SPDWEIGHT 0.20
param set-default FW_T_CLMB_MAX 3.7
param set-default FW_T_SINK_MIN 1.0
param set-default FW_T_SINK_MAX 2.5
param set-default FW_T_VERT_ACC 1.8
param set-default FW_T_THR_DAMPING 0.25
param set-default FW_T_PTCH_DAMP 0.20
param set-default FW_T_I_GAIN_PIT 0.22
param set-default FW_T_SINK_R_SP 1.2
param set-default FW_THR_TRIM 0.60
param set-default FW_THR_MIN 0.10
param set-default FW_THR_SLEW_MAX 0.25
################################################################################
# SECTION 5: RUNWAY TAKEOFF AND AUTO LANDING BASELINE
################################################################################
# Runway takeoff. Keep pitch below the previous 20 deg value to avoid an
# unrealistic rotation and early climb oscillation on a C172-size aircraft.
param set-default RWTO_TKOFF 1
param set-default RWTO_RAMP_TIME 3.0
param set-default RWTO_ROT_AIRSPD 32.0
param set-default RWTO_ROT_TIME 2.0
param set-default FW_TKO_AIRSPD 40.0
param set-default FW_TKO_PITCH_MIN 10.0
param set-default FW_FLAPS_TO_SCL 0.33
param set-default MIS_TAKEOFF_ALT 150.0
# Auto landing. Use landing flaps and early landing configuration so the
# aircraft stabilizes before approach. Disable touchdown-time clamping because
# the C172 flare timing varies with X-Plane runway geometry and wind.
param set-default FW_LND_ABORT 0
param set-default FW_LND_AIRSPD 32.5
param set-default FW_LND_EARLYCFG 1
param set-default FW_LND_FLALT 8.0
param set-default FW_LND_FL_TIME 4.0
param set-default FW_LND_FL_PMIN 9.0
param set-default FW_LND_FL_PMAX 20.0
param set-default FW_LND_FL_SINK 0.30
param set-default FW_LND_THRTC_SC 0.8
param set-default FW_FLAPS_LND_SCL 0.85
param set-default LNDFW_AIRSPD_MAX 30.0
param set-default LNDFW_VEL_XY_MAX 10.0
param set-default LNDFW_VEL_Z_MAX 1.5
param set-default LNDFW_TRIG_TIME 1.0
################################################################################
# SECTION 6: NPFG GUIDANCE AND MISSION DEFAULTS
################################################################################
param set-default NPFG_PERIOD 55.0
param set-default NPFG_DAMPING 0.8
param set-default NPFG_ROLL_TC 1.4
param set-default NPFG_SW_DST_MLT 0.8
param set-default MIS_YAW_ERR 30.0
param set-default MIS_YAW_TMT 5.0
param set-default MIS_TKO_LAND_REQ 0
param set-default MIS_DIST_1WP 5000.0
param set-default NAV_ACC_RAD 180.0
param set-default NAV_FW_ALT_RAD 40.0
param set-default NAV_LOITER_RAD 600.0
param set-default RTL_RETURN_ALT 120.0
param set-default RTL_DESCEND_ALT 80.0
param set-default RTL_MIN_DIST 50.0
param set-default RTL_LOITER_RAD 600.0
################################################################################
# SECTION 7: AIRCRAFT GEOMETRY, MASS, AND SYSTEM DEFAULTS
################################################################################
param set-default FW_WING_SPAN 11.0
param set-default FW_WING_HEIGHT 3.0
param set-default WEIGHT_BASE 1157.0
param set-default WEIGHT_GROSS 1157.0
# SITL-only circuit breakers.
param set-default CBRK_SUPPLY_CHK 894281
################################################################################
# END OF CONFIGURATION
################################################################################

View File

@@ -0,0 +1,273 @@
#!/bin/sh
################################################################################
# PX4 SITL Configuration for Bayraktar TB2-Style UAV in X-Plane
################################################################################
#
# Airframe: Bayraktar TB2-style MALE UAV
# Type: Fixed-wing, tricycle landing gear, inverted A-tail
# Configuration: 1 propeller motor + ailerons + A-tail + nosewheel + flaps
# Compatible Sim: X-Plane 11/12
#
# AIRCRAFT REFERENCE VALUES:
# - Baykar official data: 12 m wingspan, 6.5 m length, 2.2 m height,
# 700 kg MTOW, 100 hp engine, 70 kt cruise class, 90-110 KTAS travel/max.
# - Uploaded X-Plane model: about 10.8 m modeled main-wing span and about
# 418 kg empty-plus-full-fuel loaded mass from the ACF weight fields.
#
# The defaults match the tested X-Plane model mass and geometry while keeping
# published TB2 performance values as reference bounds.
#
# USAGE:
# make px4_sitl_default xplane_tb2
#
# @name Bayraktar TB2 X-Plane SITL
# @type Plane A-Tail
# @class Plane
# @maintainer Alireza Ghaderi <p30planets@gmail.com>
# @url https://github.com/alireza787b/px4xplane/
. ${R}etc/init.d/rc.fw_defaults
################################################################################
# SECTION 1: CONTROL ALLOCATION - FIXED-WING A-TAIL CONFIGURATION
################################################################################
param set-default CA_ROTOR_COUNT 1
# Propeller motor.
param set-default CA_ROTOR0_PX 1.2
param set-default CA_ROTOR0_AX 1.0
param set-default CA_ROTOR0_AZ 0.0
param set-default CA_R0_SLEW 2.0
# Control surfaces: left aileron, right aileron, left A-tail, right A-tail,
# left flap, right flap. Nosewheel steering is handled by PX4's
# Landing_Gear_Wheel output function rather than as a generic servo surface.
param set-default CA_SV_CS0_TRQ_R -0.5
param set-default CA_SV_CS0_TYPE 1
param set-default CA_SV_CS1_TRQ_R 0.5
param set-default CA_SV_CS1_TYPE 2
param set-default CA_SV_CS2_TRQ_P 0.5
param set-default CA_SV_CS2_TRQ_Y -0.5
param set-default CA_SV_CS2_TYPE 13
param set-default CA_SV_CS3_TRQ_P 0.5
param set-default CA_SV_CS3_TRQ_Y 0.5
param set-default CA_SV_CS3_TYPE 14
param set-default CA_SV_CS4_TYPE 9
param set-default CA_SV_CS4_FLAP 1.0
param set-default CA_SV_CS5_TYPE 10
param set-default CA_SV_CS5_FLAP 1.0
param set-default CA_SV_CS_COUNT 6
# PWM output mapping matched to config.ini TB2 channels.
param set-default PWM_MAIN_FUNC1 201
param set-default PWM_MAIN_FUNC2 202
param set-default PWM_MAIN_FUNC3 203
param set-default PWM_MAIN_FUNC4 204
param set-default PWM_MAIN_FUNC5 101
param set-default PWM_MAIN_FUNC6 440
param set-default PWM_MAIN_FUNC7 205
param set-default PWM_MAIN_FUNC8 206
param set-default PWM_MAIN_REV 15
################################################################################
# SECTION 2: BRIDGE / SIMULATOR SENSOR CONTRACT
################################################################################
param set-default SENS_EN_GPSSIM 1
param set-default SENS_EN_BAROSIM 1
param set-default SENS_EN_ARSPDSIM 1
param set-default SENS_EN_MAGSIM 1
# PX4 simulator_mavlink can expose duplicate simulated barometer instances from
# one HIL_SENSOR stream. Keep a single fusion source to avoid source switching.
param set-default CAL_BARO0_ID 6620172
param set-default CAL_BARO0_PRIO 100
param set-default CAL_BARO1_ID 6620428
param set-default CAL_BARO1_PRIO 0
# Use neutral simulated accelerometer offsets. The px4xplane bridge publishes
# attitude-consistent HIL accelerometer data, so model-specific calibration
# offsets would corrupt sensor_combined and can trip EKF2 bias checks.
param set-default CAL_ACC0_PRIO 50
param set-default CAL_ACC0_XOFF 0.0
param set-default CAL_ACC0_YOFF 0.0
param set-default CAL_ACC0_ZOFF 0.0
param set-default EKF2_MULTI_IMU 1
param set-default SENS_IMU_MODE 0
param set-default EKF2_ABL_LIM 0.8
param set-default EKF2_ABL_ACCLIM 35.0
param set-default EKF2_ACC_NOISE 1.0
param set-default EKF2_ACC_B_NOISE 0.001
param set-default EKF2_BARO_NOISE 1.0
param set-default EKF2_BARO_GATE 10.0
param set-default SENS_GPS0_DELAY 10
param set-default SENS_GPS1_DELAY 10
# Runway roll is intentional motion while the fixed-wing land detector can still
# report landed/at-rest. Keep normal GNSS quality checks, but do not reject a
# valid simulator GNSS source on stationary-only horizontal drift checks.
param set-default EKF2_GPS_CHECK 1887
param set-default EKF2_GPS_P_NOISE 2.5
param set-default EKF2_GPS_V_NOISE 0.30
param set-default EKF2_GPS_P_GATE 8.0
param set-default EKF2_MAG_TYPE 1
param set-default EKF2_MAG_DELAY 1.0
param set-default EKF2_MAG_GATE 5.0
param set-default EKF2_SYNT_MAG_Z 1
param set-default EKF2_ASP_DELAY 0.0
param set-default EKF2_ARSP_THR 10.0
param set-default EKF2_GSF_TAS 36.0
param set-default EKF2_AVEL_DELAY 0.0
param set-default EKF2_WIND_NSD 0.01
param set-default IMU_GYRO_RATEMAX 200
################################################################################
# SECTION 3: FIXED-WING ATTITUDE / RATE CONTROL
################################################################################
# The old TB2-derived feed-forward values made the Cessna surfaces visibly
# step and saturate. Start the TB2 refresh below that old aggressive baseline,
# then tune from returned ULog surface/setpoint evidence.
param set-default FW_RR_P 0.34
param set-default FW_RR_I 0.08
param set-default FW_RR_D 0.05
param set-default FW_RR_FF 2.4
param set-default FW_R_RMAX 18.0
param set-default FW_R_TC 1.0
param set-default FW_R_LIM 35.0
param set-default FW_PR_P 0.32
param set-default FW_PR_I 0.04
param set-default FW_PR_D 0.08
param set-default FW_PR_FF 2.4
param set-default FW_P_LIM_MAX 18.0
param set-default FW_P_LIM_MIN -12.0
param set-default FW_P_TC 0.75
param set-default FW_PN_R_SLEW_MAX 30.0
param set-default FW_MAN_P_MAX 35.0
# Ground steering during runway takeoff/landing.
param set-default FW_W_EN 1
param set-default FW_WR_P 1.2
param set-default FW_WR_I 0.18
param set-default FW_WR_IMAX 0.5
param set-default FW_WR_FF 0.60
param set-default FW_W_RMAX 0.0
################################################################################
# SECTION 4: AIRSPEED AND TECS
################################################################################
# Baykar lists 70 kt cruise class and 90-110 KTAS travel/max. The X-Plane model
# is lighter than the published 700 kg MTOW, so these values are conservative
# SITL targets.
param set-default FW_AIRSPD_MIN 24.0
param set-default FW_AIRSPD_MAX 56.0
param set-default FW_AIRSPD_TRIM 36.0
param set-default FW_AIRSPD_STALL 20.0
param set-default FW_AIRSPD_FLP_SC 0.85
# X-Plane provides the pitot through the simulator stream, not a physical driver.
# Keep the missing-data check and avoid false innovation/stuck-data failures
# during accelerated SITL ground roll and landing flare.
param set-default ASPD_DO_CHECKS 1
param set-default ASPD_FALLBACK 1
param set-default SYS_HAS_NUM_ASPD 0
param set-default FW_T_ALT_TC 8.0
param set-default FW_T_RLL2THR 6.0
param set-default FW_T_STE_R_TC 1.5
param set-default FW_T_HRATE_FF 0.15
param set-default FW_T_CLMB_MAX 2.5
param set-default FW_T_CLMB_R_SP 1.5
param set-default FW_T_SINK_MIN 1.0
param set-default FW_T_SINK_MAX 2.0
param set-default FW_T_SINK_R_SP 1.0
param set-default FW_T_VERT_ACC 1.5
param set-default FW_T_THR_DAMPING 0.25
param set-default FW_T_PTCH_DAMP 0.30
param set-default FW_T_I_GAIN_PIT 0.15
param set-default FW_THR_TRIM 0.32
param set-default FW_THR_MIN 0.05
param set-default FW_THR_SLEW_MAX 0.30
################################################################################
# SECTION 5: RUNWAY TAKEOFF AND AUTO LANDING BASELINE
################################################################################
param set-default RWTO_TKOFF 1
param set-default RWTO_RAMP_TIME 3.0
param set-default RWTO_ROT_AIRSPD 27.0
param set-default RWTO_ROT_TIME 2.5
param set-default FW_TKO_AIRSPD 32.0
param set-default FW_TKO_PITCH_MIN 7.0
param set-default MIS_TAKEOFF_ALT 150.0
param set-default FW_LND_ABORT 0
param set-default FW_LND_ANG 3.0
param set-default FW_LND_AIRSPD 28.0
param set-default FW_LND_EARLYCFG 1
param set-default FW_LND_FLALT 10.0
param set-default FW_LND_FL_TIME 5.0
param set-default FW_LND_FL_PMIN 8.0
param set-default FW_LND_FL_PMAX 14.0
param set-default FW_LND_FL_SINK 0.35
param set-default FW_LND_THRTC_SC 0.7
param set-default FW_LND_TD_OFF 4.0
param set-default LNDFW_AIRSPD_MAX 12.0
param set-default LNDFW_VEL_XY_MAX 6.0
param set-default LNDFW_VEL_Z_MAX 1.5
param set-default COM_DISARM_LAND 4.0
################################################################################
# SECTION 6: NPFG GUIDANCE AND MISSION DEFAULTS
################################################################################
param set-default NPFG_PERIOD 28.0
param set-default NPFG_DAMPING 0.8
param set-default NPFG_ROLL_TC 0.9
param set-default NPFG_SW_DST_MLT 0.8
param set-default MIS_YAW_ERR 30.0
param set-default MIS_YAW_TMT 5.0
param set-default MIS_TKO_LAND_REQ 0
param set-default MIS_DIST_1WP 5000.0
param set-default NAV_ACC_RAD 180.0
param set-default NAV_FW_ALT_RAD 25.0
param set-default NAV_LOITER_RAD 700.0
param set-default RTL_RETURN_ALT 150.0
param set-default RTL_DESCEND_ALT 80.0
param set-default RTL_MIN_DIST 50.0
param set-default RTL_LOITER_RAD 700.0
################################################################################
# SECTION 7: AIRCRAFT GEOMETRY AND MASS
################################################################################
param set-default FW_WING_SPAN 10.8
param set-default FW_WING_HEIGHT 2.2
param set-default WEIGHT_BASE 418.0
param set-default WEIGHT_GROSS 418.0
################################################################################
# SECTION 8: SITL SYSTEM DEFAULTS
################################################################################
param set-default CBRK_SUPPLY_CHK 894281
################################################################################
# END OF CONFIGURATION
################################################################################

View File

@@ -0,0 +1,328 @@
#!/bin/sh
################################################################################
# PX4 SITL Configuration for Ehang 184 Airtaxi (Quadcopter) in X-Plane
################################################################################
#
# Aircraft: Ehang 184 Electric Airtaxi
# Type: Quadrotor Wide (X configuration)
# Compatible Sim: X-Plane 11/12
# Rotor Diameter: 5.2m (large manned aircraft)
# MTOW: ~600kg (2 passengers + batteries)
#
# USAGE:
# make px4_sitl_default xplane_ehang184
#
# CONFIGURATION NOTES:
# This airframe starts from conservative large-multicopter SITL values focused on:
# - Smooth flight and gentle commanded accelerations
# - Passenger-scale multicopter margins
# - Robust sensor fusion for variable X-Plane FPS
#
# Key values:
# - Barometer noise: 1.0 m to avoid overconfident frame-limited X-Plane fusion
# - Innovation gates: 5.0-10.0 to tolerate simulator timing variability
# - Navigation radii: 12 m horizontal, 2 m vertical for smooth but useful tracking
# - Cruise speed: 6 m/s (~22 km/h)
# - Jerk/acceleration limits kept near PX4-valid comfort-oriented minimums
#
# @name Ehang 184 X-Plane SITL
# @type Quadrotor Wide
# @class Copter
# @maintainer Alireza Ghaderi <p30planets@gmail.com>
# @url https://github.com/alireza787b/px4xplane/
. ${R}etc/init.d/rc.mc_defaults
################################################################################
# CONTROL ALLOCATION - Motor Configuration
################################################################################
# Quadcopter X configuration with 5.2m diameter rotors
#
# Motor Layout: Front
# ^
# 1 0 (CW/CCW)
# \ /
# \ /
# \ /
# / \
# / \
# / \
# 2 3
#
# Motor 0: Front-Right (CCW) - Position: (+1.4, -1.4, 0)m from CG
# Motor 1: Front-Left (CW) - Position: (+1.4, +1.4, 0)m from CG
# Motor 2: Rear-Left (CCW) - Position: (-1.4, -1.4, 0)m from CG
# Motor 3: Rear-Right (CW) - Position: (-1.4, +1.4, 0)m from CG
#
# Default thrust and moment coefficients are used unless overridden below.
param set-default CA_ROTOR_COUNT 4
# Motor 0: Front-Right (CCW)
param set-default CA_ROTOR0_PX 1.4
param set-default CA_ROTOR0_PY -1.4
param set-default CA_ROTOR0_KM -0.05
# Motor 1: Front-Left (CW)
param set-default CA_ROTOR1_PX 1.4
param set-default CA_ROTOR1_PY 1.4
# Motor 2: Rear-Left (CCW)
param set-default CA_ROTOR2_PX -1.4
param set-default CA_ROTOR2_PY -1.4
# Motor 3: Rear-Right (CW)
param set-default CA_ROTOR3_PX -1.4
param set-default CA_ROTOR3_PY 1.4
param set-default CA_ROTOR3_KM -0.05
# PWM Output Mapping
param set-default PWM_MAIN_FUNC1 101
param set-default PWM_MAIN_FUNC2 102
param set-default PWM_MAIN_FUNC3 103
param set-default PWM_MAIN_FUNC4 104
################################################################################
# EKF2 SENSOR FUSION
################################################################################
# Optimized for X-Plane SITL with variable FPS (30-150 Hz)
#
# BAROMETER TUNING:
# - BARO_NOISE: 1.0 m, matching the Alia SITL lesson that X-Plane baro should
# not be treated as centimeter-class when frame timing and physics vary.
# - BARO_GATE: 10.0 (increased from default 3.0)
# * Tolerates FPS-induced timing gaps and altitude transients
# * Prevents false "BARO switch" errors during mission climbs
#
# GPS TUNING:
# - GPS_P_NOISE: 0.15 m, kept conservative for this X-Plane model.
# * Barometer remains the primary smooth height source, but not centimeter-class.
# - Horizontal noise: 0.01m (GPS horizontal is more accurate)
#
# INNOVATION GATES:
# All gates increased from default values for FPS variability tolerance.
# Prevents false sensor faults during:
# - X-Plane FPS drops (timing jitter)
# - Mission altitude changes (pressure transients)
# - Waypoint transitions (acceleration spikes)
#
# TROUBLESHOOTING:
# If "BARO switch" errors occur:
# 1. Verify CAL_BARO1_PRIO=0 (backup sensor disabled)
# 2. Check only one barometer message per frame in px4xplane plugin
# 3. Increase EKF2_BARO_GATE if needed (max 10.0)
# Simulation mode enablement
param set-default SENS_EN_GPSSIM 1
param set-default SENS_EN_BAROSIM 1
# Barometer priority (single sensor for SITL simplicity)
param set-default CAL_BARO0_ID 6620172
param set-default CAL_BARO0_PRIO 100
param set-default CAL_BARO1_ID 6620428
param set-default CAL_BARO1_PRIO 0 # Backup disabled (prevents mid-mission switching)
# EKF2 core configuration
param set-default EKF2_MULTI_IMU 1
param set-default SENS_IMU_MODE 0
# Accelerometer bias estimation for X-Plane SITL.
param set-default EKF2_ABL_LIM 2.5 # X-Plane SITL requires higher tolerance (see note below)
param set-default EKF2_ABL_ACCLIM 35.0
param set-default EKF2_ACC_NOISE 1.0 # Better accelerometer trust
param set-default EKF2_ACC_B_NOISE 0.001 # Accel bias damping for frame-paced SITL updates
# X-PLANE SITL NOTE: EKF2_ABL_LIM = 2.5 (vs Gazebo/jMAVSim default 0.4)
# Required because X-Plane sensor updates are frame-paced and can vary with
# rendering load, which can make EKF2 estimate higher acceleration bias.
# This does NOT affect flight performance - only the preflight arming check.
# Barometer parameters.
param set-default EKF2_BARO_NOISE 1.0 # Baro height noise in m; avoids overconfident fusion during X-Plane transients
param set-default EKF2_BARO_GATE 10.0 # Increased for FPS variability tolerance
# Use neutral simulated accelerometer offsets. The px4xplane bridge publishes
# attitude-consistent HIL accelerometer data, so model-specific calibration
# offsets would corrupt sensor_combined and can trip EKF2 bias checks.
param set-default CAL_ACC0_PRIO 50
param set-default CAL_ACC0_XOFF 0.0
param set-default CAL_ACC0_YOFF 0.0
param set-default CAL_ACC0_ZOFF 0.0
# GPS parameters
param set-default SENS_GPS0_DELAY 10
param set-default SENS_GPS1_DELAY 10
param set-default EKF2_GPS_P_NOISE 1.5 # X-Plane HIL position covariance
param set-default EKF2_GPS_V_NOISE 0.30 # X-Plane HIL velocity covariance for variable-FPS ground/transition phases
param set-default EKF2_GPS_P_GATE 8.0 # Innovation gate
# Magnetometer parameters
param set-default EKF2_MAG_TYPE 1
param set-default EKF2_MAG_GATE 5.0 # Increased for FPS tolerance
# Additional sensors
param set-default EKF2_ASP_DELAY 0.0
param set-default EKF2_AVEL_DELAY 0.0
param set-default EKF2_WIND_NSD 0.01
param set-default EKF2_REQ_VDRIFT 1.0
# IMU configuration
param set-default IMU_GYRO_RATEMAX 200
################################################################################
# MULTICOPTER RATE CONTROL (Inner Loop PID)
################################################################################
# Attitude rate controllers for roll, pitch, yaw.
#
# TUNING GUIDE:
# - P gain: Responsiveness (higher = faster, can cause oscillation)
# - I gain: Steady-state error correction (too high = overshoot)
# - D gain: Damping (reduces oscillation, sensitive to noise)
# - FF: Feedforward (improves tracking, reduces lag)
# - K: Loop gain multiplier
#
# For new airframes:
# 1. Start with these conservative values
# 2. Increase P until slight oscillation, then back off 20-30%
# 3. Add D for damping (typically P/10)
# 4. Add I last (typically P/15)
# Roll rate
param set-default MC_ROLLRATE_I 0.1
param set-default MC_ROLLRATE_D 0.01
param set-default MC_ROLLRATE_K 3.0
# Pitch rate
param set-default MC_PITCHRATE_I 0.1
param set-default MC_PITCHRATE_D 0.01
param set-default MC_PITCHRATE_K 2.05
# Yaw rate
param set-default MC_YAWRATE_P 2
param set-default MC_YAWRATE_I 0
param set-default MC_YAWRATE_FF 0.2
param set-default MC_YAWRATE_K 0.6
param set-default MC_YAWRATE_MAX 100
################################################################################
# MULTICOPTER ATTITUDE CONTROL (Outer Loop)
################################################################################
# Attitude controllers for orientation angles.
param set-default MC_ROLL_P 1.0
param set-default MC_PITCH_P 1.0
param set-default MC_YAW_P 0.6
################################################################################
# POSITION & VELOCITY CONTROL
################################################################################
# Outermost control loops for position and velocity.
#
# LARGE AIRCRAFT TUNING:
# Conservative speeds and gentle accelerations for passenger comfort.
# Position control
param set-default MPC_XY_P 0.05 # Conservative large-multicopter position P
param set-default MPC_Z_P 0.25 # Vertical position P
# Velocity control
param set-default MPC_XY_VEL_P_ACC 1.2
param set-default MPC_XY_VEL_I_ACC 0.2
param set-default MPC_XY_VEL_D_ACC 0.8
param set-default MPC_Z_VEL_P_ACC 3
param set-default MPC_Z_VEL_D_ACC 0.2
# Velocity limits (passenger comfort priority)
param set-default MPC_XY_VEL_MAX 6.5 # Max horizontal (m/s) ~23 km/h
param set-default MPC_Z_V_AUTO_UP 2.0
param set-default MPC_Z_V_AUTO_DN 1.2
param set-default MPC_VEL_MANUAL 5 # Manual horizontal speed below MPC_XY_VEL_MAX
# Trajectory & jerk limits (reduced for smooth ride)
param set-default MPC_ACC_HOR 1.5
param set-default MPC_ACC_HOR_MAX 1.8
param set-default MPC_ACC_UP_MAX 2.0
param set-default MPC_ACC_DOWN_MAX 2.0
param set-default MPC_JERK_AUTO 1.0 # PX4-valid low jerk for smooth auto motion
param set-default MPC_JERK_MAX 2.0 # Smooth manual acceleration changes
# Error limits
param set-default MPC_XY_ERR_MAX 10
################################################################################
# MANUAL FLIGHT MODE
################################################################################
# Manual flight characteristics and feel.
# Tilt & attitude limits
param set-default MPC_MAN_TILT_MAX 25
param set-default MPC_TILTMAX_AIR 30
# Yaw control
param set-default MPC_MAN_Y_MAX 15
param set-default MPC_YAWRAUTO_MAX 20
# Advanced options
param set-default MPC_ALT_MODE 0
################################################################################
# TAKEOFF & LANDING
################################################################################
# Takeoff
param set-default MPC_TKO_SPEED 2.0 # Smooth takeoff climb rate (m/s)
# Landing
param set-default MPC_LAND_ALT1 8 # Start slowing close to ground (m)
param set-default MPC_LAND_ALT2 3 # Final landing speed below this height (m)
param set-default MPC_LAND_SPEED 0.6 # PX4 minimum landing descend rate (m/s)
param set-default MPC_LAND_RADIUS 25
param set-default MPC_LAND_RC_HELP 1
# Land detector
param set-default LNDMC_Z_VEL_MAX 0.24
param set-default COM_DISARM_LAND 1.5
################################################################################
# NAVIGATION & MISSION
################################################################################
# LARGE MULTICOPTER CONFIGURATION
#
# Design philosophy: this X-Plane Ehang-style multicopter is not a small racing
# drone. Parameters prioritize smooth motion and stable commanded response
# over aggressive point capture.
#
# TUNING BY AIRCRAFT SIZE:
# - Small drone (<2kg): NAV_ACC_RAD=5m, ALT_RAD=0.8m, JERK=2.0
# - Medium drone (2-25kg): NAV_ACC_RAD=10m, ALT_RAD=1.5m, JERK=1.5
# - Large multicopter (>100kg): NAV_ACC_RAD=12m, ALT_RAD=2m, JERK=1.0 <-- Current
# - Heavy cargo (>500kg): NAV_ACC_RAD=50m, ALT_RAD=5m, JERK=0.5
# Mission parameters
param set-default MIS_YAW_ERR 30 # Max yaw error (deg) - gentle corrections
param set-default MIS_YAW_TMT 5
# Navigation acceptance radii
# Large enough for smooth waypoint capture while preserving useful tracking.
param set-default NAV_ACC_RAD 12 # Horizontal acceptance radius (m)
param set-default NAV_MC_ALT_RAD 2 # Vertical acceptance radius (m)
# Return to launch
param set-default RTL_DESCEND_ALT 30
# GPS configuration
param set-default GPS_UBX_DYNMODEL 6 # Airborne <1g
################################################################################
# END OF CONFIGURATION
################################################################################
# Maintainer: px4xplane project - https://github.com/alireza787b/px4xplane/
################################################################################

View File

@@ -0,0 +1,447 @@
#!/bin/sh
################################################################################
# PX4 SITL Configuration for Alia-250 eVTOL (VTOL Quadplane) in X-Plane
################################################################################
#
# Airframe: Beta Technologies Alia-250
# Type: VTOL Quadplane / lift-plus-cruise style
# Configuration: 4 Hover Motors + 1 Pusher Motor + Control Surfaces
# Compatible Sim: X-Plane 11/12
#
# AIRCRAFT REFERENCE VALUES:
# - Active SITL mass model: 3,120 kg, matching the tested X-Plane aircraft
# - Public Alia reference MTOW: about 6,000 lb (2,721 kg)
# - Wingspan: 50 ft (15 m) - Fixed-wing design
# - Cruise Speed: 170 mph (75 m/s) in forward flight
# - Range: 250 nautical miles (460 km)
# - Capacity: 5 passengers or cargo
# - Motors: 4x hover rotors + 1x pusher propeller
# - Flight Modes: Multicopter hover, fixed-wing cruise, transition
#
# USAGE:
# make px4_sitl_default xplane_alia250
#
# @name Alia-250 eVTOL X-Plane SITL
# @type Standard VTOL
# @class VTOL
# @maintainer Alireza Ghaderi <p30planets@gmail.com>
# @url https://github.com/alireza787b/px4xplane/
. ${R}etc/init.d/rc.vtol_defaults
################################################################################
# BRIDGE / SIMULATOR CONTRACT PARAMETERS
# Sections 1-2 keep PX4 aligned with the px4xplane sensor and actuator bridge.
# Avoid changing these in aircraft-performance tuning unless a bridge replay or
# ULog analysis proves the contract itself changed.
################################################################################
################################################################################
# SECTION 1: CONTROL ALLOCATION (CA) - VTOL QUADPLANE CONFIGURATION
################################################################################
# Hover Motors: 4x wing-mounted rotors (MC mode)
# Forward Motor: 1x pusher propeller (FW mode)
# Control Surfaces: Ailerons, Elevator, Rudder (FW mode)
param set-default CA_AIRFRAME 2 # VTOL configuration
param set-default CA_ROTOR_COUNT 5 # 4 hover + 1 pusher
# Hover Motors (X configuration)
param set-default CA_ROTOR0_PX 3.0 # Front-Right (CW)
param set-default CA_ROTOR0_PY 2.5
param set-default CA_ROTOR0_KM -0.05
param set-default CA_ROTOR1_PX 3.0
param set-default CA_ROTOR1_PY -2.5
param set-default CA_ROTOR2_PX -3.0
param set-default CA_ROTOR2_PY -2.5
param set-default CA_ROTOR2_KM -0.05
param set-default CA_ROTOR3_PX -3.0
param set-default CA_ROTOR3_PY 2.5
# Pusher Motor (FW mode)
param set-default CA_ROTOR4_AX 1.0 # Thrust forward
param set-default CA_ROTOR4_AZ 0.0
param set-default CA_ROTOR4_PX 5.0 # Tail position
param set-default CA_ROTOR4_KM -0.05
# Control Surfaces (FW mode)
param set-default CA_SV_CS0_TRQ_R -0.5 # Left Aileron
param set-default CA_SV_CS0_TYPE 1
param set-default CA_SV_CS1_TRQ_R 0.5 # Right Aileron
param set-default CA_SV_CS1_TYPE 2
param set-default CA_SV_CS2_TRQ_P 1.0 # Elevator
param set-default CA_SV_CS2_TYPE 3
param set-default CA_SV_CS3_TRQ_Y 1.0 # Rudder
param set-default CA_SV_CS3_TYPE 4
param set-default CA_SV_CS_COUNT 4
# PWM Output Mapping
param set-default PWM_MAIN_FUNC1 101 # Hover motor 1
param set-default PWM_MAIN_FUNC2 102 # Hover motor 2
param set-default PWM_MAIN_FUNC3 103 # Hover motor 3
param set-default PWM_MAIN_FUNC4 104 # Hover motor 4
param set-default PWM_MAIN_FUNC5 201 # Aileron L
param set-default PWM_MAIN_FUNC6 202 # Aileron R
param set-default PWM_MAIN_FUNC7 203 # Elevator
param set-default PWM_MAIN_FUNC8 204 # Rudder
param set-default PWM_MAIN_FUNC9 105 # Pusher motor
param set-default PWM_MAIN_REV 112
################################################################################
# SECTION 2: EKF2 SENSOR FUSION - PX4XPLANE SITL BASELINE
################################################################################
# Estimator settings for the px4xplane simulator sensor contract.
# Sensor Simulation Enables
param set-default SENS_EN_GPSSIM 1 # GPS simulation
param set-default SENS_EN_BAROSIM 1 # Barometer simulation
# Barometer priority. PX4 simulator_mavlink publishes two simulated baro
# uORB instances from one HIL_SENSOR stream. Seed the known simulated device
# IDs so CAL_BARO1_PRIO=0 actually disables the duplicate backup instance on
# a fresh PX4 SITL rootfs.
param set-default CAL_BARO0_ID 6620172
param set-default CAL_BARO0_PRIO 100 # Primary barometer
param set-default CAL_BARO1_ID 6620428
param set-default CAL_BARO1_PRIO 0 # Backup disabled
# EKF2 Core Configuration
param set-default EKF2_MULTI_IMU 1
param set-default SENS_IMU_MODE 0
# Accelerometer Bias Estimation
param set-default EKF2_ABL_LIM 2.5 # X-Plane SITL requires higher tolerance (see note below)
param set-default EKF2_ABL_ACCLIM 35.0
param set-default EKF2_ACC_NOISE 1.0
param set-default EKF2_ACC_B_NOISE 0.001
# X-Plane SITL note: this limit is intentionally higher than common robotics
# simulator defaults because the bridge is frame-rate-limited and X-Plane's
# physics model is not identical to the EKF sensor model. Revisit with replay
# and ULog innovation evidence before reducing it.
# Barometer
param set-default EKF2_BARO_NOISE 1.0 # Baro height noise in m; avoids overconfident fusion during VTOL/FW transients
param set-default EKF2_BARO_GATE 10.0 # Increased tolerance for VTOL transitions (prevents false BARO switch)
# Use neutral simulated accelerometer offsets. The px4xplane bridge publishes
# attitude-consistent HIL accelerometer data, so model-specific calibration
# offsets would corrupt sensor_combined and can trip EKF2 bias checks.
param set-default CAL_ACC0_PRIO 50
param set-default CAL_ACC0_XOFF 0.0
param set-default CAL_ACC0_YOFF 0.0
param set-default CAL_ACC0_ZOFF 0.0
# GPS Parameters
param set-default SENS_GPS0_DELAY 10
param set-default SENS_GPS1_DELAY 10
param set-default EKF2_GPS_P_NOISE 5.0 # X-Plane HIL position covariance during high-speed transition
param set-default EKF2_GPS_V_NOISE 0.30 # X-Plane HIL velocity covariance for variable-FPS ground/transition phases
param set-default EKF2_GPS_P_GATE 10.0
# Magnetometer
param set-default EKF2_MAG_TYPE 1
param set-default EKF2_MAG_GATE 5.0
param set-default EKF2_MAG_DELAY 1.0
# Airspeed (SITL strategy - optional fusion)
param set-default EKF2_ASP_DELAY 0.0
param set-default EKF2_ARSP_THR 50.0
param set-default EKF2_GSF_TAS 0.0
# Additional Sensors
param set-default EKF2_AVEL_DELAY 0.0
param set-default EKF2_WIND_NSD 0.01
param set-default EKF2_REQ_VDRIFT 1.0
param set-default EKF2_SYNT_MAG_Z 1
# IMU Configuration
param set-default IMU_GYRO_RATEMAX 200
################################################################################
# AIRCRAFT-PERFORMANCE TUNING PARAMETERS
# Tune in this order: MC rate/attitude/position, FW attitude, TECS/NPFG,
# then VTOL front/back transition behavior.
################################################################################
################################################################################
# SECTION 3: MULTICOPTER RATE CONTROL (HOVER MODE)
################################################################################
# Initial MC mode tuning for a heavy VTOL.
# Roll Rate
param set-default MC_ROLLRATE_P 0.4
param set-default MC_ROLLRATE_I 0.0
param set-default MC_ROLLRATE_D 0.0044
param set-default MC_ROLLRATE_K 2.25
param set-default MC_ROLLRATE_MAX 220
# Pitch Rate
param set-default MC_PITCHRATE_P 0.4
param set-default MC_PITCHRATE_I 0.0
param set-default MC_PITCHRATE_D 0.01
param set-default MC_PITCHRATE_K 4.0
# Yaw Rate
param set-default MC_YAWRATE_P 1.0
param set-default MC_YAWRATE_I 0.0
param set-default MC_YAWRATE_FF 1.0
param set-default MC_YAWRATE_K 5.0
param set-default MC_YAWRATE_MAX 30
################################################################################
# SECTION 4: MULTICOPTER ATTITUDE CONTROL (HOVER MODE)
################################################################################
param set-default MC_ROLL_P 0.3
param set-default MC_PITCH_P 0.5
param set-default MC_YAW_P 1.0
################################################################################
# SECTION 5: POSITION & VELOCITY CONTROL (MC MODE)
################################################################################
# Initial heavy-aircraft position control values.
# Position Control
param set-default MPC_XY_P 0.05
param set-default MPC_Z_P 0.65
# Velocity control
param set-default MPC_XY_VEL_P_ACC 1.2
param set-default MPC_XY_VEL_I_ACC 0.2
param set-default MPC_XY_VEL_D_ACC 2.0
param set-default MPC_Z_VEL_P_ACC 5.0
param set-default MPC_Z_VEL_I_ACC 1.25 # Reduced from 1.4 for less integral windup
param set-default MPC_Z_VEL_D_ACC 0.55 # Increased from 0.45 for better damping
# Velocity Limits (heavy aircraft performance)
param set-default MPC_XY_VEL_MAX 15 # Increased for heavy aircraft
param set-default MPC_Z_VEL_MAX_UP 4 # Increased for heavy aircraft
param set-default MPC_Z_VEL_MAX_DN 2.2
param set-default MPC_Z_V_AUTO_DN 2.2
param set-default MPC_VEL_MANUAL 10
param set-default MPC_XY_CRUISE 10
# Trajectory & Jerk Limits
param set-default MPC_JERK_AUTO 1.0 # Increased for heavy aircraft
param set-default MPC_JERK_MAX 3.0
# Error Limits
# Large VTOL takeoff can carry several metres of lateral residual while climbing.
# The PX4 maximum prevents the takeoff trajectory from pausing vertical progress
# just because XY error briefly exceeds the multicopter default.
param set-default MPC_XY_ERR_MAX 10
################################################################################
# SECTION 6: MANUAL FLIGHT MODE (MC MODE)
################################################################################
# Yaw Control
param set-default MPC_MAN_Y_MAX 30
param set-default MPC_YAWRAUTO_MAX 30
# Advanced Options
param set-default MPC_ALT_MODE 0
param set-default MPC_YAW_MODE 0
################################################################################
# SECTION 7: TAKEOFF & LANDING (MC MODE)
################################################################################
# Takeoff
param set-default MPC_TKO_SPEED 3.0
# Landing
# Descend efficiently above 8 m AGL, then slow to a passenger-friendly flare.
param set-default MPC_LAND_ALT1 8
param set-default MPC_LAND_ALT2 3
param set-default MPC_LAND_SPEED 0.6
param set-default MPC_LAND_RADIUS 1000
param set-default MPC_LAND_RC_HELP 1
# Land Detector
param set-default COM_DISARM_LAND 1.5
################################################################################
# SECTION 8: VTOL TRANSITION PARAMETERS
################################################################################
# Core Configuration
param set-default VT_TYPE 2 # Current PX4 airframe type used by this SITL config
# Transition airspeeds. Match the FW trim schedule so the pusher/TECS handoff
# does not enter FW already overspeeding and above the mission altitude.
param set-default VT_ARSP_BLEND 22.0
param set-default VT_ARSP_TRANS 40.0
param set-default VT_F_TRANS_THR 0.95
param set-default VT_PSHER_SLEW 0.45
# Front Transition (MC -> FW)
param set-default VT_F_TRANS_DUR 45.0
param set-default VT_F_TR_OL_TM 55.0
# Back Transition (FW -> MC)
param set-default VT_B_TRANS_DUR 28.0
param set-default VT_B_DEC_MSS 2.0
param set-default VT_B_DEC_I 0.25
param set-default VT_B_TRANS_RAMP 10.0 # Smooth MC motor ramp-up for this large SITL eVTOL
# Transition Safety
param set-default VT_TRANS_MIN_TM 15.0 # Minimum transition time
param set-default VT_TRANS_TIMEOUT 100.0 # Transition timeout
param set-default VT_QC_T_ALT_LOSS 100.0 # Max altitude loss in QuadChute
# Transition Control
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_FWD_THRUST_EN 4 # Enabled
param set-default VTO_LOITER_ALT 1500.0
param set-default VT_FW_MIN_ALT 20.0 # Min altitude for FW mode
param set-default VT_TILT_TRANS 0.5
param set-default VT_PITCH_MIN -5.0
################################################################################
# SECTION 9: FIXED-WING FLIGHT PARAMETERS (CRUISE MODE)
################################################################################
# The fixed-wing envelope uses moderate bank authority and a large orbit radius
# to keep the heavy eVTOL model inside the tested X-Plane handling envelope.
# Rate Control
param set-default FW_RR_P 0.47
param set-default FW_RR_I 0.05
param set-default FW_RR_D 0.1
param set-default FW_R_RMAX 16.0
param set-default FW_R_TC 0.85
param set-default FW_R_LIM 20.0
param set-default FW_PR_P 0.52
param set-default FW_PR_I 0.045
param set-default FW_PR_D 0.355
param set-default FW_PR_FF 3.6
param set-default FW_PSP_OFF 2.0
param set-default FW_P_LIM_MAX 24.0
param set-default FW_P_LIM_MIN -2.0
param set-default FW_P_TC 0.40
param set-default FW_PN_R_SLEW_MAX 50.0
# Yaw Rate Control (High-speed cruise mode)
param set-default FW_YR_P 0.1 # P gain (higher for 75 m/s cruise)
param set-default FW_YR_I 0.12 # I gain (balanced authority)
param set-default FW_Y_RMAX 60.0 # Max yaw rate (slightly higher for eVTOL)
# Airspeed Control
param set-default FW_AIRSPD_MIN 32.0 # Above stall
param set-default FW_AIRSPD_MAX 75.0 # Cruise limit
param set-default FW_AIRSPD_TRIM 55.0 # Validation trim for transition and mission tracking
param set-default FW_AIRSPD_STALL 30.0 # Stall speed
# Airspeed Sensor (SITL)
# X-Plane provides the pitot through the simulator stream, not a physical driver.
# Keep the missing-data check and avoid false innovation/stuck-data failures
# during VTOL transition.
param set-default ASPD_DO_CHECKS 1
param set-default ASPD_FALLBACK 1 # Fallback to G/S - W/S
param set-default SYS_HAS_NUM_ASPD 0 # Do not make virtual SITL pitot a prearm hardware requirement
# TECS
param set-default FW_T_ALT_TC 7.5
param set-default FW_T_RLL2THR 8.0
param set-default FW_T_STE_R_TC 2.0
param set-default FW_T_SPDWEIGHT 0.45
param set-default FW_T_SINK_MIN 1.0
param set-default FW_T_SINK_MAX 3.0
param set-default FW_T_CLMB_MAX 3.2
param set-default FW_T_VERT_ACC 2.2
param set-default FW_T_THR_DAMPING 0.35
param set-default FW_T_PTCH_DAMP 0.25
param set-default FW_T_I_GAIN_PIT 0.20
param set-default FW_T_CLMB_R_SP 2.0
param set-default FW_T_SINK_R_SP 1.5
# Throttle Management
param set-default FW_THR_TRIM 0.65
param set-default FW_THR_MIN 0.12
param set-default FW_THR_SLEW_MAX 0.35
# Geometry
param set-default FW_WING_SPAN 17.0 # Actually 15m, 17m for tuning
param set-default FW_WING_HEIGHT 3.5
param set-default WEIGHT_BASE 3120.0
param set-default WEIGHT_GROSS 3120.0
# Landing
param set-default FW_LND_ABORT 0
param set-default FW_LND_AIRSPD 0 # Auto
param set-default FW_LND_FLALT 5.0
param set-default FW_LND_FL_PMAX 35.0
param set-default LNDFW_VEL_XY_MAX 15.0
# Orbit
param set-default MC_ORBIT_RAD_MAX 2000
################################################################################
# SECTION 10: NPFG GUIDANCE (Modern PX4 v1.14+)
################################################################################
# Formula: L1_distance = (1/pi) * NPFG_DAMPING * NPFG_PERIOD * groundspeed.
# The values below keep loiter capture smooth without sustained high-bank flight.
param set-default NPFG_PERIOD 40.0
param set-default NPFG_DAMPING 0.80
param set-default NPFG_ROLL_TC 0.9
param set-default NPFG_SW_DST_MLT 0.7
################################################################################
# SECTION 11: NAVIGATION & MISSION
################################################################################
# Large VTOL aircraft navigation strategy
# Mission Parameters
param set-default MIS_YAW_ERR 30.0
param set-default MIS_YAW_TMT 5.0
param set-default MIS_TAKEOFF_ALT 100.0
param set-default MIS_TKO_LAND_REQ 0
param set-default MIS_DIST_1WP 5000.0
# MC Mode Acceptance
param set-default NAV_ACC_RAD 30 # Tighter landing (reduced from 50m)
param set-default NAV_MC_ALT_RAD 5.0 # Heavier aircraft
# FW Mode Acceptance
param set-default NAV_LOITER_RAD 2000.0
param set-default NAV_FW_ALT_RAD 50.0
# Return to Launch
param set-default RTL_RETURN_ALT 100
param set-default RTL_DESCEND_ALT 80
param set-default RTL_MIN_DIST 50.0
param set-default RTL_LOITER_RAD 2000.0
################################################################################
# SECTION 12: SYSTEM DEFAULTS
################################################################################
# Hover Thrust Estimator
param set-default HTE_VXY_THR 10
# GPS Configuration
param set-default GPS_UBX_DYNMODEL 6 # Airborne <1g
################################################################################
# END OF CONFIGURATION
################################################################################

View File

@@ -0,0 +1,309 @@
#!/bin/sh
################################################################################
# PX4 SITL Configuration for QuadTailsitter in X-Plane
################################################################################
#
# X-Plane model: QuadTailsitter.acf
# Compatible Sim: X-Plane 12
# Control: Four fixed rotors, no aerodynamic control surfaces
#
# This airframe targets a 5 kg, 6S, control-surface-less quad tailsitter with a
# body-axis virtual pitot. PX4 sensors are mounted in the multicopter body frame;
# airspeed is projected along the fixed-wing nose axis so TECS and transition
# logic receive positive calibrated airspeed in forward flight.
#
# USAGE:
# make px4_sitl_default xplane_qtailsitter
#
# @name QuadTailsitter X-Plane SITL
# @type VTOL Quad Tailsitter
# @class VTOL
# @maintainer Alireza Ghaderi <p30planets@gmail.com>
# @url https://github.com/alireza787b/px4xplane/
. ${R}etc/init.d/rc.vtol_defaults
################################################################################
# AIRFRAME AND CONTROL ALLOCATION
################################################################################
param set-default MAV_TYPE 20
param set-default CA_AIRFRAME 4
# X-Plane aircraft coordinates use X=right, Y=up, Z=tail. Plane Maker ACF
# position values are in feet. PX4 control allocation uses body X=forward and
# body Y=right in meters. The conversion below is:
# PX4_X = -XPLANE_Z * 0.3048
# PX4_Y = XPLANE_X * 0.3048
# The canted rotor axes match the X-Plane aircraft and add yaw authority without
# requiring aerodynamic control surfaces.
param set-default CA_ROTOR_COUNT 4
param set-default CA_ROTOR0_PX 0.22
param set-default CA_ROTOR0_PY 0.43
param set-default CA_ROTOR0_AX -0.078
param set-default CA_ROTOR0_AY 0.040
param set-default CA_ROTOR0_AZ -0.996
param set-default CA_ROTOR0_CT 2.0
param set-default CA_ROTOR0_KM 0.04
param set-default CA_ROTOR1_PX -0.22
param set-default CA_ROTOR1_PY -0.43
param set-default CA_ROTOR1_AX 0.078
param set-default CA_ROTOR1_AY -0.040
param set-default CA_ROTOR1_AZ -0.996
param set-default CA_ROTOR1_CT 2.0
param set-default CA_ROTOR1_KM 0.04
param set-default CA_ROTOR2_PX 0.22
param set-default CA_ROTOR2_PY -0.43
param set-default CA_ROTOR2_AX -0.078
param set-default CA_ROTOR2_AY -0.040
param set-default CA_ROTOR2_AZ -0.996
param set-default CA_ROTOR2_CT 2.0
param set-default CA_ROTOR2_KM -0.04
param set-default CA_ROTOR3_PX -0.22
param set-default CA_ROTOR3_PY 0.43
param set-default CA_ROTOR3_AX 0.078
param set-default CA_ROTOR3_AY 0.040
param set-default CA_ROTOR3_AZ -0.996
param set-default CA_ROTOR3_CT 2.0
param set-default CA_ROTOR3_KM -0.04
param set-default PWM_MAIN_FUNC1 101
param set-default PWM_MAIN_FUNC2 102
param set-default PWM_MAIN_FUNC3 103
param set-default PWM_MAIN_FUNC4 104
################################################################################
# PX4XPLANE SENSOR BASELINE
################################################################################
param set-default SENS_EN_GPSSIM 1
param set-default SENS_EN_BAROSIM 1
param set-default CAL_BARO0_ID 6620172
param set-default CAL_BARO0_PRIO 100
param set-default CAL_BARO1_ID 6620428
param set-default CAL_BARO1_PRIO 0
param set-default EKF2_BARO_NOISE 1.0
param set-default EKF2_BARO_GATE 10.0
param set-default SENS_GPS0_DELAY 10
param set-default SENS_GPS1_DELAY 10
param set-default EKF2_GPS_P_NOISE 5.0
param set-default EKF2_GPS_V_NOISE 0.30
param set-default EKF2_GPS_P_GATE 10.0
param set-default EKF2_MAG_TYPE 1
param set-default EKF2_MAG_GATE 5.0
param set-default EKF2_FUSE_BETA 0
param set-default EKF2_ABL_LIM 2.5
param set-default EKF2_ABL_ACCLIM 35.0
param set-default EKF2_ACC_NOISE 1.0
param set-default EKF2_ACC_B_NOISE 0.001
param set-default EKF2_MULTI_IMU 1
param set-default SENS_IMU_MODE 0
param set-default EKF2_ASP_DELAY 0.0
param set-default EKF2_AVEL_DELAY 0.0
param set-default EKF2_WIND_NSD 0.01
param set-default EKF2_REQ_VDRIFT 1.0
param set-default IMU_GYRO_RATEMAX 200
################################################################################
# MULTICOPTER HOVER CONTROL
################################################################################
# Preserve yaw authority at low hover thrust. PX4 requires stick arming to be
# disabled when yaw airmode is enabled.
param set-default MC_AIRMODE 2
param set-default MAN_ARM_GESTURE 0
param set-default MC_ROLL_P 0.9
param set-default MC_PITCH_P 0.58
param set-default MC_YAW_P 0.65
param set-default MC_YAW_WEIGHT 0.35
param set-default MC_ROLLRATE_P 0.10
param set-default MC_ROLLRATE_I 0.02
param set-default MC_ROLLRATE_D 0.0008
param set-default MC_ROLLRATE_MAX 80
param set-default MC_PITCHRATE_P 0.115
param set-default MC_PITCHRATE_I 0.02
param set-default MC_PITCHRATE_D 0.0012
param set-default MC_PITCHRATE_K 0.92
param set-default MC_PITCHRATE_MAX 110
param set-default MC_YAWRATE_I 0.015
param set-default MC_YAWRATE_D 0.025
param set-default MC_YAWRATE_K 1.10
param set-default MC_YAWRATE_MAX 55
################################################################################
# MULTICOPTER POSITION, TAKEOFF, AND LANDING
################################################################################
# Keep autonomous multicopter motion moderate. This vehicle has enough thrust
# margin, but excessive command acceleration couples into yaw/roll during hover
# and after back-transition.
param set-default MPC_XY_P 0.18
param set-default MPC_XY_VEL_P_ACC 0.8
param set-default MPC_XY_VEL_I_ACC 0.1
param set-default MPC_Z_VEL_P_ACC 2.0
param set-default MPC_Z_VEL_I_ACC 0.5
param set-default MPC_Z_VEL_D_ACC 0.6
param set-default MPC_XY_VEL_MAX 4.0
param set-default MPC_XY_CRUISE 3.5
param set-default MPC_VEL_MANUAL 4.0
param set-default MPC_Z_V_AUTO_UP 2.0
param set-default MPC_Z_V_AUTO_DN 1.4
param set-default MPC_Z_VEL_MAX_UP 2.4
param set-default MPC_Z_VEL_MAX_DN 1.4
param set-default MPC_XY_ERR_MAX 10
param set-default MPC_ACC_HOR 0.7
param set-default MPC_ACC_HOR_MAX 1.0
param set-default MPC_ACC_UP_MAX 2.2
param set-default MPC_ACC_DOWN_MAX 1.5
param set-default MPC_JERK_AUTO 0.7
param set-default MPC_JERK_MAX 1.2
param set-default MPC_MAN_TILT_MAX 30
param set-default MPC_TILTMAX_AIR 30
param set-default MPC_TILTMAX_LND 8
param set-default MPC_THR_HOVER 0.22
param set-default MPC_THR_MIN 0.08
param set-default MPC_THR_XY_MARG 0.4
param set-default MPC_TKO_SPEED 1.2
param set-default MPC_TKO_RAMP_T 2.5
param set-default MIS_TAKEOFF_ALT 1.5
param set-default MPC_LAND_ALT1 8
param set-default MPC_LAND_ALT2 3
param set-default MPC_LAND_SPEED 0.9
param set-default MPC_LAND_CRWL 0.36
param set-default MPC_LAND_RADIUS 30
param set-default LNDMC_ALT_GND 1.5
param set-default LNDMC_ROT_MAX 25
param set-default COM_DISARM_LAND 1.5
param set-default MPC_YAW_MODE 0
param set-default MPC_YAWRAUTO_ACC 8
param set-default MPC_YAWRAUTO_MAX 25
param set-default MIS_YAW_ERR 30
param set-default MIS_YAW_TMT 5
param set-default MC_ORBIT_YAW_MOD 1
################################################################################
# FIXED-WING ENVELOPE AND ENERGY CONTROL
################################################################################
# The body-axis X-Plane pitot is used by TECS and transition logic. Keep the
# missing-data check and avoid false innovation/stuck-data failures during the
# high-attitude tailsitter transition.
param set-default ASPD_DO_CHECKS 1
param set-default ASPD_FALLBACK 1
param set-default SYS_HAS_NUM_ASPD 0
param set-default EKF2_ARSP_THR 24.0
param set-default EKF2_GSF_TAS 0.0
param set-default FW_AIRSPD_STALL 16
param set-default FW_AIRSPD_MIN 19
param set-default FW_AIRSPD_TRIM 27
param set-default FW_AIRSPD_MAX 36
param set-default FW_THR_TRIM 0.14
param set-default FW_THR_MAX 0.50
param set-default FW_THR_SLEW_MAX 0.20
param set-default FW_T_SINK_MAX 3
param set-default FW_T_SINK_MIN 1.6
param set-default FW_T_SPDWEIGHT 0.8
param set-default FW_T_RLL2THR 2.0
param set-default FW_T_STE_R_TC 1.0
param set-default FW_T_THR_DAMPING 0.25
param set-default FW_T_PTCH_DAMP 0.25
param set-default FW_T_I_GAIN_PIT 0.25
param set-default FW_T_CLMB_R_SP 2.0
param set-default FW_P_TC 0.6
param set-default FW_PSP_OFF 2.0
param set-default FW_P_LIM_MAX 35
param set-default FW_P_LIM_MIN -15
param set-default FW_PR_P 0.50
param set-default FW_PR_I 0.30
param set-default FW_R_TC 1.5
param set-default FW_R_LIM 16
param set-default FW_RR_P 0.10
param set-default FW_RR_I 0.04
param set-default FW_RR_FF 0.05
param set-default FW_YR_P 0.01
param set-default FW_YR_I 0.0
param set-default FW_YR_FF 0.0
################################################################################
# VTOL TRANSITION
################################################################################
param set-default VT_ARSP_BLEND 20
param set-default VT_ARSP_TRANS 28
param set-default VT_F_TRANS_DUR 10.0
param set-default VT_F_TRANS_THR 0.36
param set-default VT_F_TR_OL_TM 14.0
param set-default VT_TRANS_MIN_TM 8.0
param set-default VT_TRANS_TIMEOUT 30
param set-default VT_B_TRANS_DUR 5.0
param set-default VT_B_DEC_MSS 1.0
param set-default VT_B_DEC_I 0.12
param set-default VT_B_TRANS_RAMP 1.5
param set-default VT_FW_MIN_ALT 30
param set-default VT_QC_T_ALT_LOSS 35
param set-default VT_PITCH_MIN -10
param set-default VT_FW_DIFTHR_EN 7
param set-default VT_FW_DIFTHR_S_R 0.55
param set-default VT_FW_DIFTHR_S_P 0.90
param set-default VT_FW_DIFTHR_S_Y 0.32
################################################################################
# NAVIGATION AND FAILSAFE
################################################################################
param set-default NPFG_PERIOD 55.0
param set-default NPFG_DAMPING 1.00
param set-default NPFG_ROLL_TC 2.4
param set-default NPFG_SW_DST_MLT 0.70
param set-default NAV_ACC_RAD 120
param set-default NAV_FW_ALT_RAD 40
param set-default NAV_MC_ALT_RAD 2
param set-default NAV_LOITER_RAD 1300
param set-default RTL_LOITER_RAD 1300
param set-default RTL_RETURN_ALT 180
param set-default RTL_DESCEND_ALT 150
param set-default RTL_MIN_DIST 50
param set-default FD_FAIL_R 85
param set-default FD_FAIL_P 85
param set-default FD_FAIL_R_TTRI 1.0
param set-default FD_FAIL_P_TTRI 1.0
param set-default WV_EN 0
################################################################################
# END OF FILE
################################################################################

View File

@@ -89,6 +89,12 @@ px4_add_romfs_files(
4020_gz_tiltrotor
4021_gz_x500_flow
5001_xplane_cessna172
5002_xplane_tb2
5010_xplane_ehang184
5020_xplane_alia250
5021_xplane_qtailsitter
6011_gazebo-classic_typhoon_h480
6011_gazebo-classic_typhoon_h480.post

View File

@@ -1,11 +1,15 @@
#!/bin/sh
# shellcheck disable=SC2154
# EKF2 specifics
param set-default SENS_GPS0_DELAY 10
param set-default SENS_GPS1_DELAY 10
param set-default EKF2_MULTI_IMU 3
param set-default SENS_IMU_MODE 0
# EKF2 specifics. X-Plane targets tune these in their airframe files because
# the bridge sensor timing and IMU topology differ from the classic mavlink
# simulator defaults.
if [ "$PX4_SIMULATOR" != "xplane" ]; then
param set-default SENS_GPS0_DELAY 10
param set-default SENS_GPS1_DELAY 10
param set-default EKF2_MULTI_IMU 3
param set-default SENS_IMU_MODE 0
fi
simulator_tcp_port=$((4560+px4_instance))

View File

@@ -1,8 +1,11 @@
#!/bin/sh
# shellcheck disable=SC2154
# Simulator IMU data provided at 250 Hz
param set-default IMU_INTEG_RATE 250
# Most mavlink simulator models provide IMU data at 250 Hz. X-Plane airframes
# set their own bridge cadence in the airframe file.
if [ "$PX4_SIMULATOR" != "xplane" ]; then
param set-default IMU_INTEG_RATE 250
fi
# For simulation, allow registering modes while armed for developer convenience
param set-default COM_MODE_ARM_CHK 1
@@ -24,6 +27,10 @@ elif [ "$PX4_SIM_MODEL" = "jmavsim_iris" ] || [ "$(param show -q SYS_AUTOSTART)"
# Run jMAVSim
. px4-rc.jmavsim
elif [ "$PX4_SIMULATOR" = "xplane" ]; then
# Run X-Plane through the mavlink simulator bridge
. px4-rc.mavlinksim
else
# Run simulator_mavlink module for interface with gazebo-classic
. px4-rc.mavlinksim