diff --git a/REUSE.toml b/REUSE.toml index 883a4c8eb..6c182a5d4 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -31,10 +31,15 @@ SPDX-FileCopyrightText = "2024-2025 Amilcar Lucas" SPDX-License-Identifier = "GPL-3.0-or-later" [[annotations]] -path = ["ardupilot_methodic_configurator/images/*.png", "ardupilot_methodic_configurator/images/*.svg", "ardupilot_methodic_configurator/*.json"] +path = ["ardupilot_methodic_configurator/images/*.png", "ardupilot_methodic_configurator/*.json"] SPDX-FileCopyrightText = "2024-2025 Amilcar Lucas" SPDX-License-Identifier = "GPL-3.0-or-later" +[[annotations]] +path = ["ardupilot_methodic_configurator/images/motor_diagrams_png/m_*.png", "ardupilot_methodic_configurator/images/m_*.svg"] +SPDX-FileCopyrightText = "2024 Yuri Rage" +SPDX-License-Identifier = "GPL-3.0-or-later" + [[annotations]] path = ["ardupilot_methodic_configurator/locale/**"] SPDX-FileCopyrightText = "2024-2025 Amilcar Lucas" diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_00_quad_plus.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_00_quad_plus.png new file mode 100644 index 000000000..3448c4870 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_00_quad_plus.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_01_quad_x.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_01_quad_x.png new file mode 100644 index 000000000..4b8849ea0 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_01_quad_x.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_02_quad_v.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_02_quad_v.png new file mode 100644 index 000000000..bea25ce22 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_02_quad_v.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_03_quad_h.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_03_quad_h.png new file mode 100644 index 000000000..a9e018cc3 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_03_quad_h.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_04_quad_v_tail.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_04_quad_v_tail.png new file mode 100644 index 000000000..cfec7df71 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_04_quad_v_tail.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_05_quad_a_tail.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_05_quad_a_tail.png new file mode 100644 index 000000000..6fdc3bc7b Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_05_quad_a_tail.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_06_quad_plus_rev.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_06_quad_plus_rev.png new file mode 100644 index 000000000..3772d4626 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_06_quad_plus_rev.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_12_quad_x_bf.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_12_quad_x_bf.png new file mode 100644 index 000000000..6d990c8a2 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_12_quad_x_bf.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_13_quad_x_dji.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_13_quad_x_dji.png new file mode 100644 index 000000000..ac5f2d7eb Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_13_quad_x_dji.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_14_quad_x_cw.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_14_quad_x_cw.png new file mode 100644 index 000000000..885f1f780 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_14_quad_x_cw.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_16_quad_plus_nyt.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_16_quad_plus_nyt.png new file mode 100644 index 000000000..927f4b940 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_16_quad_plus_nyt.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_17_quad_x_nyt.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_17_quad_x_nyt.png new file mode 100644 index 000000000..b5a78c5bc Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_17_quad_x_nyt.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_18_quad_x_bf_rev.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_18_quad_x_bf_rev.png new file mode 100644 index 000000000..4fc89977d Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_18_quad_x_bf_rev.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_19_quad_y4a.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_19_quad_y4a.png new file mode 100644 index 000000000..a070d655b Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_01_19_quad_y4a.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_00_hexa_plus.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_00_hexa_plus.png new file mode 100644 index 000000000..778f98427 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_00_hexa_plus.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_01_hexa_x.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_01_hexa_x.png new file mode 100644 index 000000000..28fa0a2c8 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_01_hexa_x.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_03_hexa_h.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_03_hexa_h.png new file mode 100644 index 000000000..93af1e0b3 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_03_hexa_h.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_13_hexa_x_dji.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_13_hexa_x_dji.png new file mode 100644 index 000000000..b4f3741db Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_13_hexa_x_dji.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_14_hexa_x_cw.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_14_hexa_x_cw.png new file mode 100644 index 000000000..a71674423 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_02_14_hexa_x_cw.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_00_octo_plus.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_00_octo_plus.png new file mode 100644 index 000000000..315fd229d Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_00_octo_plus.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_01_octo_x.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_01_octo_x.png new file mode 100644 index 000000000..278fb93f0 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_01_octo_x.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_02_octo_v.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_02_octo_v.png new file mode 100644 index 000000000..1adc553fa Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_02_octo_v.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_03_octo_h.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_03_octo_h.png new file mode 100644 index 000000000..a874bd1fa Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_03_octo_h.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_13_octo_x_dji.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_13_octo_x_dji.png new file mode 100644 index 000000000..afe0aa4c3 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_13_octo_x_dji.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_14_octo_x_cw.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_14_octo_x_cw.png new file mode 100644 index 000000000..d1cf1593d Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_14_octo_x_cw.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_15_octo_i.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_15_octo_i.png new file mode 100644 index 000000000..1d2535878 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_03_15_octo_i.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_00_octo_quad_plus.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_00_octo_quad_plus.png new file mode 100644 index 000000000..e9d95b6a1 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_00_octo_quad_plus.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_01_octo_quad_x.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_01_octo_quad_x.png new file mode 100644 index 000000000..7fd70b5f2 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_01_octo_quad_x.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_02_octo_quad_v.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_02_octo_quad_v.png new file mode 100644 index 000000000..fcc406e66 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_02_octo_quad_v.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_03_octo_quad_h.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_03_octo_quad_h.png new file mode 100644 index 000000000..c6d99f9b7 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_03_octo_quad_h.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_12_octo_quad_x_bf.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_12_octo_quad_x_bf.png new file mode 100644 index 000000000..37600a290 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_12_octo_quad_x_bf.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_14_octo_quad_x_cw.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_14_octo_quad_x_cw.png new file mode 100644 index 000000000..917c21c47 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_14_octo_quad_x_cw.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_18_octo_quad_x_bf_rev.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_18_octo_quad_x_bf_rev.png new file mode 100644 index 000000000..03050fd8c Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_04_18_octo_quad_x_bf_rev.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_00_y6_a.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_00_y6_a.png new file mode 100644 index 000000000..987391bab Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_00_y6_a.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_10_y6_b.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_10_y6_b.png new file mode 100644 index 000000000..8f88170fc Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_10_y6_b.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_11_y6_f.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_11_y6_f.png new file mode 100644 index 000000000..bcefd0f5e Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_05_11_y6_f.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_07_00_tricopter.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_07_00_tricopter.png new file mode 100644 index 000000000..1c35f9c91 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_07_00_tricopter.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_07_06_tricopter_pitch_rev.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_07_06_tricopter_pitch_rev.png new file mode 100644 index 000000000..784d60008 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_07_06_tricopter_pitch_rev.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_10_00_bicopter.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_10_00_bicopter.png new file mode 100644 index 000000000..bb2edf6a0 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_10_00_bicopter.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_12_00_dodecahexa_plus.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_12_00_dodecahexa_plus.png new file mode 100644 index 000000000..1a2c20216 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_12_00_dodecahexa_plus.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_12_01_dodecahexa_x.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_12_01_dodecahexa_x.png new file mode 100644 index 000000000..a3e2819e2 Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_12_01_dodecahexa_x.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_14_00_deca_plus.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_14_00_deca_plus.png new file mode 100644 index 000000000..93661115c Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_14_00_deca_plus.png differ diff --git a/ardupilot_methodic_configurator/images/motor_diagrams_png/m_14_01_deca_x_and_cw_x.png b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_14_01_deca_x_and_cw_x.png new file mode 100644 index 000000000..e4ac7e73a Binary files /dev/null and b/ardupilot_methodic_configurator/images/motor_diagrams_png/m_14_01_deca_x_and_cw_x.png differ diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/00_default.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/00_default.param index 9a6f2504d..354f1f1fa 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/00_default.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/00_default.param @@ -1,1089 +1,1089 @@ -ACRO_BAL_PITCH,1 -ACRO_BAL_ROLL,1 -ACRO_OPTIONS,0 -ACRO_RP_EXPO,0.3 -ACRO_RP_RATE,360 -ACRO_RP_RATE_TC,0 -ACRO_THR_MID,0 -ACRO_TRAINER,2 -ACRO_Y_EXPO,0 -ACRO_Y_RATE,202.5 -ACRO_Y_RATE_TC,0 -ADSB_TYPE,0 -AHRS_COMP_BETA,0.1 -AHRS_EKF_TYPE,3 -AHRS_GPS_GAIN,1 -AHRS_GPS_MINSATS,6 -AHRS_GPS_USE,1 -AHRS_OPTIONS,0 -AHRS_ORIENTATION,0 -AHRS_RP_P,0.2 -AHRS_TRIM_X,0 -AHRS_TRIM_Y,0 -AHRS_TRIM_Z,0 -AHRS_WIND_MAX,0 -AHRS_YAW_P,0.2 -ANGLE_MAX,3000 -ARMING_ACCTHRESH,0.75 -ARMING_CHECK,1 -ARMING_CRSDP_IGN,0 -ARMING_MAGTHRESH,100 -ARMING_MIS_ITEMS,0 -ARMING_NEED_LOC,0 -ARMING_OPTIONS,0 -ARMING_RUDDER,2 -ARSPD_ENABLE,0 -ATC_ACCEL_P_MAX,110000 -ATC_ACCEL_R_MAX,110000 -ATC_ACCEL_Y_MAX,27000 -ATC_ANG_LIM_TC,1 -ATC_ANG_PIT_P,4.5 -ATC_ANG_RLL_P,4.5 -ATC_ANG_YAW_P,4.5 -ATC_ANGLE_BOOST,1 -ATC_INPUT_TC,0.15 -ATC_LAND_P_MULT,1 -ATC_LAND_R_MULT,1 -ATC_LAND_Y_MULT,1 -ATC_RAT_PIT_D,0.0036 -ATC_RAT_PIT_D_FF,0 -ATC_RAT_PIT_FF,0 -ATC_RAT_PIT_FLTD,20 -ATC_RAT_PIT_FLTE,0 -ATC_RAT_PIT_FLTT,20 -ATC_RAT_PIT_I,0.135 -ATC_RAT_PIT_IMAX,0.5 -ATC_RAT_PIT_NEF,0 -ATC_RAT_PIT_NTF,0 -ATC_RAT_PIT_P,0.135 -ATC_RAT_PIT_PDMX,0 -ATC_RAT_PIT_SMAX,0 -ATC_RAT_RLL_D,0.0036 -ATC_RAT_RLL_D_FF,0 -ATC_RAT_RLL_FF,0 -ATC_RAT_RLL_FLTD,20 -ATC_RAT_RLL_FLTE,0 -ATC_RAT_RLL_FLTT,20 -ATC_RAT_RLL_I,0.135 -ATC_RAT_RLL_IMAX,0.5 -ATC_RAT_RLL_NEF,0 -ATC_RAT_RLL_NTF,0 -ATC_RAT_RLL_P,0.135 -ATC_RAT_RLL_PDMX,0 -ATC_RAT_RLL_SMAX,0 -ATC_RAT_YAW_D,0 -ATC_RAT_YAW_D_FF,0 -ATC_RAT_YAW_FF,0 -ATC_RAT_YAW_FLTD,20 -ATC_RAT_YAW_FLTE,2.5 -ATC_RAT_YAW_FLTT,20 -ATC_RAT_YAW_I,0.018 -ATC_RAT_YAW_IMAX,0.5 -ATC_RAT_YAW_NEF,0 -ATC_RAT_YAW_NTF,0 -ATC_RAT_YAW_P,0.18 -ATC_RAT_YAW_PDMX,0 -ATC_RAT_YAW_SMAX,0 -ATC_RATE_FF_ENAB,1 -ATC_RATE_P_MAX,0 -ATC_RATE_R_MAX,0 -ATC_RATE_Y_MAX,0 -ATC_SLEW_YAW,6000 -ATC_THR_G_BOOST,0 -ATC_THR_MIX_MAN,0.1 -ATC_THR_MIX_MAX,0.5 -ATC_THR_MIX_MIN,0.1 -AUTO_OPTIONS,0 -AUTOTUNE_AGGR,0.075 -AUTOTUNE_AXES,7 -AUTOTUNE_MIN_D,0.0005 -AVD_ENABLE,0 -AVOID_ACCEL_MAX,3 -AVOID_ALT_MIN,0 -AVOID_ANGLE_MAX,1000 -AVOID_BACKUP_DZ,0.1 -AVOID_BACKUP_SPD,0.75 -AVOID_BACKZ_SPD,0.75 -AVOID_BEHAVE,0 -AVOID_DIST_MAX,5 -AVOID_ENABLE,3 -AVOID_MARGIN,2 -BARO_ALT_OFFSET,0 -BARO_ALTERR_MAX,2000 -BARO_EXT_BUS,-1 -BARO_FIELD_ELV,0 -BARO_FLTR_RNG,0 -BARO_GND_TEMP,0 -BARO_OPTIONS,0 -BARO_PRIMARY,0 -BARO_PROBE_EXT,0 -BARO1_DEVID,0 -BARO1_GND_PRESS,0 -BARO1_WCF_ENABLE,0 -BARO2_DEVID,0 -BARO2_GND_PRESS,0 -BARO2_WCF_ENABLE,0 -BARO3_DEVID,0 -BARO3_GND_PRESS,0 -BARO3_WCF_ENABLE,0 -BATT_AMP_OFFSET,0 -BATT_AMP_PERVLT,36.363998 -BATT_ARM_MAH,0 -BATT_ARM_VOLT,0 -BATT_CAPACITY,3300 -BATT_CRT_MAH,0 -BATT_CRT_VOLT,0 -BATT_CURR_PIN,1 -BATT_FS_CRT_ACT,0 -BATT_FS_LOW_ACT,0 -BATT_FS_VOLTSRC,0 -BATT_LOW_MAH,0 -BATT_LOW_TIMER,10 -BATT_LOW_VOLT,10.5 -BATT_MONITOR,0 -BATT_OPTIONS,0 -BATT_SERIAL_NUM,-1 -BATT_VLT_OFFSET,0 -BATT_VOLT_MULT,18.181999 -BATT_VOLT_PIN,0 -BATT2_MONITOR,0 -BATT3_MONITOR,0 -BATT4_MONITOR,0 -BATT5_MONITOR,0 -BATT6_MONITOR,0 -BATT7_MONITOR,0 -BATT8_MONITOR,0 -BATT9_MONITOR,0 -BCN_TYPE,0 -BRD_BOOT_DELAY,0 -BRD_IO_DSHOT,0 -BRD_IO_ENABLE,1 -BRD_OPTIONS,1 -BRD_RTC_TYPES,1 -BRD_RTC_TZ_MIN,0 -BRD_SAFETY_DEFLT,1 -BRD_SAFETY_MASK,16368 -BRD_SAFETYOPTION,3 -BRD_SBUS_OUT,0 -BRD_SD_SLOWDOWN,0 -BRD_SER1_RTSCTS,0 -BRD_SER2_RTSCTS,0 -BRD_SER5_RTSCTS,2 -BRD_SERIAL_NUM,0 -BRD_TYPE,0 -BRD_VBUS_MIN,4.3 -BRD_VSERVO_MIN,0 -BTN_ENABLE,0 -CAM_AUTO_ONLY,0 -CAM_MAX_ROLL,0 -CAM_RC_TYPE,0 -CAM1_TYPE,0 -CAM2_TYPE,0 -CAN_D1_PROTOCOL,1 -CAN_D1_PROTOCOL2,0 -CAN_D2_PROTOCOL,1 -CAN_D2_PROTOCOL2,0 -CAN_LOGLEVEL,0 -CAN_P1_DRIVER,0 -CAN_P2_DRIVER,0 -CAN_SLCAN_CPORT,0 -CAN_SLCAN_SDELAY,1 -CAN_SLCAN_SERNUM,-1 -CAN_SLCAN_TIMOUT,0 -CHUTE_ENABLED,0 -CIRCLE_OPTIONS,1 -CIRCLE_RADIUS,1000 -CIRCLE_RATE,20 -COMPASS_AUTO_ROT,2 -COMPASS_AUTODEC,1 -COMPASS_CAL_FIT,16 -COMPASS_DEC,0 -COMPASS_DEV_ID,0 -COMPASS_DEV_ID2,0 -COMPASS_DEV_ID3,0 -COMPASS_DEV_ID4,0 -COMPASS_DEV_ID5,0 -COMPASS_DEV_ID6,0 -COMPASS_DEV_ID7,0 -COMPASS_DEV_ID8,0 -COMPASS_DIA_X,1 -COMPASS_DIA_Y,1 -COMPASS_DIA_Z,1 -COMPASS_DIA2_X,1 -COMPASS_DIA2_Y,1 -COMPASS_DIA2_Z,1 -COMPASS_DIA3_X,1 -COMPASS_DIA3_Y,1 -COMPASS_DIA3_Z,1 -COMPASS_DISBLMSK,0 -COMPASS_ENABLE,1 -COMPASS_EXTERN2,0 -COMPASS_EXTERN3,0 -COMPASS_EXTERNAL,0 -COMPASS_FLTR_RNG,0 -COMPASS_LEARN,0 -COMPASS_MOT_X,0 -COMPASS_MOT_Y,0 -COMPASS_MOT_Z,0 -COMPASS_MOT2_X,0 -COMPASS_MOT2_Y,0 -COMPASS_MOT2_Z,0 -COMPASS_MOT3_X,0 -COMPASS_MOT3_Y,0 -COMPASS_MOT3_Z,0 -COMPASS_MOTCT,0 -COMPASS_ODI_X,0 -COMPASS_ODI_Y,0 -COMPASS_ODI_Z,0 -COMPASS_ODI2_X,0 -COMPASS_ODI2_Y,0 -COMPASS_ODI2_Z,0 -COMPASS_ODI3_X,0 -COMPASS_ODI3_Y,0 -COMPASS_ODI3_Z,0 -COMPASS_OFFS_MAX,1800 -COMPASS_OFS_X,0 -COMPASS_OFS_Y,0 -COMPASS_OFS_Z,0 -COMPASS_OFS2_X,0 -COMPASS_OFS2_Y,0 -COMPASS_OFS2_Z,0 -COMPASS_OFS3_X,0 -COMPASS_OFS3_Y,0 -COMPASS_OFS3_Z,0 -COMPASS_OPTIONS,0 -COMPASS_ORIENT,0 -COMPASS_ORIENT2,0 -COMPASS_ORIENT3,0 -COMPASS_PMOT_EN,0 -COMPASS_PRIO1_ID,0 -COMPASS_PRIO2_ID,0 -COMPASS_PRIO3_ID,0 -COMPASS_SCALE,0 -COMPASS_SCALE2,0 -COMPASS_SCALE3,0 -COMPASS_USE,1 -COMPASS_USE2,1 -COMPASS_USE3,1 -CUST_ROT_ENABLE,0 -DEV_OPTIONS,0 -DISARM_DELAY,10 -EAHRS_TYPE,0 -EFI_TYPE,0 -EK3_ABIAS_P_NSE,0.02 -EK3_ACC_BIAS_LIM,1 -EK3_ACC_P_NSE,0.35 -EK3_AFFINITY,0 -EK3_ALT_M_NSE,2 -EK3_BCN_DELAY,50 -EK3_BCN_I_GTE,500 -EK3_BCN_M_NSE,1 -EK3_BETA_MASK,0 -EK3_CHECK_SCALE,100 -EK3_DRAG_BCOEF_X,0 -EK3_DRAG_BCOEF_Y,0 -EK3_DRAG_M_NSE,0.5 -EK3_DRAG_MCOEF,0 -EK3_EAS_I_GATE,400 -EK3_EAS_M_NSE,1.4 -EK3_ENABLE,1 -EK3_ERR_THRESH,0.2 -EK3_FLOW_DELAY,10 -EK3_FLOW_I_GATE,300 -EK3_FLOW_M_NSE,0.25 -EK3_FLOW_USE,1 -EK3_GBIAS_P_NSE,0.001 -EK3_GLITCH_RAD,25 -EK3_GND_EFF_DZ,4 -EK3_GPS_CHECK,31 -EK3_GPS_VACC_MAX,0 -EK3_GSF_RST_MAX,2 -EK3_GSF_RUN_MASK,3 -EK3_GSF_USE_MASK,3 -EK3_GYRO_P_NSE,0.015 -EK3_HGT_DELAY,60 -EK3_HGT_I_GATE,500 -EK3_HRT_FILT,2 -EK3_IMU_MASK,3 -EK3_LOG_LEVEL,0 -EK3_MAG_CAL,3 -EK3_MAG_EF_LIM,50 -EK3_MAG_I_GATE,300 -EK3_MAG_M_NSE,0.05 -EK3_MAG_MASK,0 -EK3_MAGB_P_NSE,0.0001 -EK3_MAGE_P_NSE,0.001 -EK3_MAX_FLOW,2.5 -EK3_NOAID_M_NSE,10 -EK3_OGN_HGT_MASK,0 -EK3_OGNM_TEST_SF,2 -EK3_OPTIONS,0 -EK3_POS_I_GATE,500 -EK3_POSNE_M_NSE,0.5 -EK3_PRIMARY,0 -EK3_RNG_I_GATE,500 -EK3_RNG_M_NSE,0.5 -EK3_RNG_USE_HGT,-1 -EK3_RNG_USE_SPD,2 -EK3_SRC_OPTIONS,1 -EK3_SRC1_POSXY,3 -EK3_SRC1_POSZ,1 -EK3_SRC1_VELXY,3 -EK3_SRC1_VELZ,3 -EK3_SRC1_YAW,1 -EK3_SRC2_POSXY,0 -EK3_SRC2_POSZ,1 -EK3_SRC2_VELXY,0 -EK3_SRC2_VELZ,0 -EK3_SRC2_YAW,0 -EK3_SRC3_POSXY,0 -EK3_SRC3_POSZ,1 -EK3_SRC3_VELXY,0 -EK3_SRC3_VELZ,0 -EK3_SRC3_YAW,0 -EK3_TAU_OUTPUT,25 -EK3_TERR_GRAD,0.1 -EK3_VEL_I_GATE,500 -EK3_VELD_M_NSE,0.5 -EK3_VELNE_M_NSE,0.3 -EK3_VIS_VERR_MAX,0.9 -EK3_VIS_VERR_MIN,0.1 -EK3_WENC_VERR,0.1 -EK3_WIND_P_NSE,0.2 -EK3_WIND_PSCALE,1 -EK3_YAW_I_GATE,300 -EK3_YAW_M_NSE,0.5 -ESC_CALIBRATION,0 -ESC_TLM_MAV_OFS,0 -FENCE_ACTION,1 -FENCE_ALT_MAX,100 -FENCE_ALT_MIN,-10 -FENCE_AUTOENABLE,0 -FENCE_ENABLE,0 -FENCE_MARGIN,2 -FENCE_OPTIONS,0 -FENCE_RADIUS,300 -FENCE_TOTAL,0 -FENCE_TYPE,7 -FFT_ENABLE,0 -FHLD_BRAKE_RATE,8 -FHLD_FILT_HZ,5 -FHLD_FLOW_MAX,0.6 -FHLD_QUAL_MIN,10 -FHLD_XY_FILT_HZ,5 -FHLD_XY_I,0.3 -FHLD_XY_IMAX,3000 -FHLD_XY_P,0.2 -FILT1_TYPE,0 -FILT2_TYPE,0 -FILT3_TYPE,0 -FILT4_TYPE,0 -FILT5_TYPE,0 -FILT6_TYPE,0 -FILT7_TYPE,0 -FILT8_TYPE,0 -FLIGHT_OPTIONS,0 -FLOW_TYPE,0 -FLTMODE_CH,5 -FLTMODE_GCSBLOCK,0 -FLTMODE1,0 -FLTMODE2,0 -FLTMODE3,0 -FLTMODE4,0 -FLTMODE5,0 -FLTMODE6,0 -FOLL_ENABLE,0 -FORMAT_VERSION,120 -FRAME_CLASS,0 -FRAME_TYPE,1 -FRSKY_DNLINK_ID,27 -FRSKY_DNLINK1_ID,20 -FRSKY_DNLINK2_ID,7 -FRSKY_OPTIONS,0 -FRSKY_UPLINK_ID,13 -FS_CRASH_CHECK,1 -FS_DR_ENABLE,2 -FS_DR_TIMEOUT,30 -FS_EKF_ACTION,1 -FS_EKF_FILT,5 -FS_EKF_THRESH,0.8 -FS_GCS_ENABLE,0 -FS_GCS_TIMEOUT,5 -FS_OPTIONS,16 -FS_THR_ENABLE,1 -FS_THR_VALUE,975 -FS_VIBE_ENABLE,1 -GCS_PID_MASK,0 -GEN_TYPE,0 -GND_EFFECT_COMP,1 -GPS_AUTO_CONFIG,1 -GPS_AUTO_SWITCH,1 -GPS_BLEND_MASK,5 -GPS_DRV_OPTIONS,0 -GPS_HDOP_GOOD,140 -GPS_INJECT_TO,127 -GPS_MIN_ELEV,-100 -GPS_NAVFILTER,8 -GPS_PRIMARY,0 -GPS_RAW_DATA,0 -GPS_SAVE_CFG,2 -GPS_SBAS_MODE,2 -GPS_SBP_LOGMASK,-256 -GPS1_CAN_NODEID,0 -GPS1_CAN_OVRIDE,0 -GPS1_COM_PORT,1 -GPS1_DELAY_MS,0 -GPS1_GNSS_MODE,0 -GPS1_MB_TYPE,0 -GPS1_POS_X,0 -GPS1_POS_Y,0 -GPS1_POS_Z,0 -GPS1_RATE_MS,200 -GPS1_TYPE,1 -GPS2_TYPE,0 -GRIP_ENABLE,0 -GUID_OPTIONS,0 -GUID_TIMEOUT,3 -INITIAL_MODE,0 -INS_ACC_BODYFIX,2 -INS_ACC_ID,0 -INS_ACC1_CALTEMP,-300 -INS_ACC2_CALTEMP,-300 -INS_ACC2_ID,0 -INS_ACC2OFFS_X,0 -INS_ACC2OFFS_Y,0 -INS_ACC2OFFS_Z,0 -INS_ACC2SCAL_X,1 -INS_ACC2SCAL_Y,1 -INS_ACC2SCAL_Z,1 -INS_ACC3_CALTEMP,-300 -INS_ACC3_ID,0 -INS_ACC3OFFS_X,0 -INS_ACC3OFFS_Y,0 -INS_ACC3OFFS_Z,0 -INS_ACC3SCAL_X,1 -INS_ACC3SCAL_Y,1 -INS_ACC3SCAL_Z,1 -INS_ACCEL_FILTER,20 -INS_ACCOFFS_X,0 -INS_ACCOFFS_Y,0 -INS_ACCOFFS_Z,0 -INS_ACCSCAL_X,1 -INS_ACCSCAL_Y,1 -INS_ACCSCAL_Z,1 -INS_ENABLE_MASK,127 -INS_FAST_SAMPLE,1 -INS_GYR_CAL,1 -INS_GYR_ID,0 -INS_GYR1_CALTEMP,-300 -INS_GYR2_CALTEMP,-300 -INS_GYR2_ID,0 -INS_GYR2OFFS_X,0 -INS_GYR2OFFS_Y,0 -INS_GYR2OFFS_Z,0 -INS_GYR3_CALTEMP,-300 -INS_GYR3_ID,0 -INS_GYR3OFFS_X,0 -INS_GYR3OFFS_Y,0 -INS_GYR3OFFS_Z,0 -INS_GYRO_FILTER,20 -INS_GYRO_RATE,1 -INS_GYROFFS_X,0 -INS_GYROFFS_Y,0 -INS_GYROFFS_Z,0 -INS_HNTC2_ENABLE,0 -INS_HNTCH_ATT,40 -INS_HNTCH_BW,40 -INS_HNTCH_ENABLE,0 -INS_HNTCH_FM_RAT,1 -INS_HNTCH_FREQ,80 -INS_HNTCH_HMNCS,1 -INS_HNTCH_MODE,1 -INS_HNTCH_OPTS,0 -INS_HNTCH_REF,0 -INS_LOG_BAT_CNT,1024 -INS_LOG_BAT_LGCT,32 -INS_LOG_BAT_LGIN,20 -INS_LOG_BAT_MASK,0 -INS_LOG_BAT_OPT,0 -INS_POS1_X,0 -INS_POS1_Y,0 -INS_POS1_Z,0 -INS_POS2_X,0 -INS_POS2_Y,0 -INS_POS2_Z,0 -INS_POS3_X,0 -INS_POS3_Y,0 -INS_POS3_Z,0 -INS_RAW_LOG_OPT,0 -INS_STILL_THRESH,2.5 -INS_TCAL_OPTIONS,0 -INS_TCAL1_ENABLE,0 -INS_TCAL2_ENABLE,0 -INS_TCAL3_ENABLE,0 -INS_TRIM_OPTION,1 -INS_USE,1 -INS_USE2,1 -INS_USE3,1 -KDE_NPOLE,14 -LAND_ALT_LOW,1000 -LAND_REPOSITION,1 -LAND_SPEED,50 -LAND_SPEED_HIGH,0 -LGR_ENABLE,0 -LOG_BACKEND_TYPE,1 -LOG_BITMASK,180222 -LOG_DARM_RATEMAX,0 -LOG_DISARMED,0 -LOG_FILE_BUFSIZE,80 -LOG_FILE_DSRMROT,0 -LOG_FILE_MB_FREE,500 -LOG_FILE_RATEMAX,0 -LOG_FILE_TIMEOUT,5 -LOG_MAV_BUFSIZE,8 -LOG_MAV_RATEMAX,0 -LOG_MAX_FILES,500 -LOG_REPLAY,0 -LOIT_ACC_MAX,500 -LOIT_ANG_MAX,0 -LOIT_BRK_ACCEL,250 -LOIT_BRK_DELAY,1 -LOIT_BRK_JERK,500 -LOIT_SPEED,1250 -MAGH_ALT_DELTA,10 -MAGH_B,1.2 -MAGH_CMD,117 -MAGH_COUNT,6 -MAGH_LOG_ENABLE,1 -MAGH_MIN_SPEED,0.4 -MAGH_NUM_WP,18 -MAGH_USE_LOITER,1 -MIS_OPTIONS,0 -MIS_RESTART,0 -MIS_TOTAL,0 -MNT1_TYPE,0 -MNT2_TYPE,0 -MOT_BAT_CURR_MAX,0 -MOT_BAT_CURR_TC,5 -MOT_BAT_IDX,0 -MOT_BAT_VOLT_MAX,0 -MOT_BAT_VOLT_MIN,0 -MOT_BOOST_SCALE,0 -MOT_HOVER_LEARN,2 -MOT_OPTIONS,0 -MOT_PWM_MAX,2000 -MOT_PWM_MIN,1000 -MOT_PWM_TYPE,0 -MOT_SAFE_DISARM,0 -MOT_SAFE_TIME,1 -MOT_SLEW_DN_TIME,0 -MOT_SLEW_UP_TIME,0 -MOT_SPIN_ARM,0.1 -MOT_SPIN_MAX,0.95 -MOT_SPIN_MIN,0.15 -MOT_SPOOL_TIM_DN,0 -MOT_SPOOL_TIME,0.5 -MOT_THST_EXPO,0.65 -MOT_THST_HOVER,0.35 -MOT_YAW_HEADROOM,200 -MSP_OPTIONS,0 -MSP_OSD_NCELLS,0 -NMEA_MSG_EN,3 -NMEA_RATE_MS,100 -NTF_BUZZ_ON_LVL,1 -NTF_BUZZ_PIN,-1 -NTF_BUZZ_TYPES,5 -NTF_BUZZ_VOLUME,100 -NTF_DISPLAY_TYPE,0 -NTF_LED_BRIGHT,3 -NTF_LED_LEN,1 -NTF_LED_OVERRIDE,0 -NTF_LED_TYPES,123079 -OA_TYPE,0 -OSD_TYPE,0 -PHLD_BRAKE_ANGLE,3000 -PHLD_BRAKE_RATE,8 -PILOT_ACCEL_Z,250 -PILOT_SPEED_DN,0 -PILOT_SPEED_UP,250 -PILOT_THR_BHV,0 -PILOT_THR_FILT,0 -PILOT_TKOFF_ALT,0 -PILOT_Y_EXPO,0 -PILOT_Y_RATE,202.5 -PILOT_Y_RATE_TC,0 -PLDP_DELAY,0 -PLDP_RNG_MAX,0 -PLDP_SPEED_DN,0 -PLDP_THRESH,0.9 -PLND_ENABLED,0 -PRX_ALT_MIN,1 -PRX_FILT,0.25 -PRX_IGN_GND,0 -PRX_LOG_RAW,0 -PRX1_TYPE,0 -PRX2_TYPE,0 -PRX3_TYPE,0 -PRX4_TYPE,0 -PRX5_TYPE,0 -PSC_ACCZ_D,0 -PSC_ACCZ_D_FF,0 -PSC_ACCZ_FF,0 -PSC_ACCZ_FLTD,0 -PSC_ACCZ_FLTE,20 -PSC_ACCZ_FLTT,0 -PSC_ACCZ_I,1 -PSC_ACCZ_IMAX,800 -PSC_ACCZ_NEF,0 -PSC_ACCZ_NTF,0 -PSC_ACCZ_P,0.5 -PSC_ACCZ_PDMX,0 -PSC_ACCZ_SMAX,0 -PSC_ANGLE_MAX,0 -PSC_JERK_XY,5 -PSC_JERK_Z,5 -PSC_POSXY_P,1 -PSC_POSZ_P,1 -PSC_VELXY_D,0.25 -PSC_VELXY_FF,0 -PSC_VELXY_FLTD,5 -PSC_VELXY_FLTE,5 -PSC_VELXY_I,1 -PSC_VELXY_IMAX,1000 -PSC_VELXY_P,2 -PSC_VELZ_D,0 -PSC_VELZ_FF,0 -PSC_VELZ_FLTD,5 -PSC_VELZ_FLTE,5 -PSC_VELZ_I,0 -PSC_VELZ_IMAX,1000 -PSC_VELZ_P,5 -QUIK_AUTO_FILTER,1 -QUIK_AUTO_SAVE,0 -QUIK_AXES,7 -QUIK_DOUBLE_TIME,10 -QUIK_ENABLE,0 -QUIK_GAIN_MARGIN,60 -QUIK_MAX_REDUCE,20 -QUIK_OPTIONS,0 -QUIK_OSC_SMAX,5 -QUIK_RC_FUNC,300 -QUIK_RP_PI_RATIO,1 -QUIK_Y_PI_RATIO,10 -QUIK_YAW_D_MAX,0.01 -QUIK_YAW_P_MAX,0.5 -RALLY_INCL_HOME,1 -RALLY_LIMIT_KM,0.3 -RALLY_TOTAL,0 -RC_FS_TIMEOUT,1 -RC_OPTIONS,32 -RC_OVERRIDE_TIME,3 -RC_PROTOCOLS,1 -RC_SPEED,490 -RC1_DZ,20 -RC1_MAX,1900 -RC1_MIN,1100 -RC1_OPTION,0 -RC1_REVERSED,0 -RC1_TRIM,1500 -RC10_DZ,0 -RC10_MAX,1900 -RC10_MIN,1100 -RC10_OPTION,0 -RC10_REVERSED,0 -RC10_TRIM,1500 -RC11_DZ,0 -RC11_MAX,1900 -RC11_MIN,1100 -RC11_OPTION,0 -RC11_REVERSED,0 -RC11_TRIM,1500 -RC12_DZ,0 -RC12_MAX,1900 -RC12_MIN,1100 -RC12_OPTION,0 -RC12_REVERSED,0 -RC12_TRIM,1500 -RC13_DZ,0 -RC13_MAX,1900 -RC13_MIN,1100 -RC13_OPTION,0 -RC13_REVERSED,0 -RC13_TRIM,1500 -RC14_DZ,0 -RC14_MAX,1900 -RC14_MIN,1100 -RC14_OPTION,0 -RC14_REVERSED,0 -RC14_TRIM,1500 -RC15_DZ,0 -RC15_MAX,1900 -RC15_MIN,1100 -RC15_OPTION,0 -RC15_REVERSED,0 -RC15_TRIM,1500 -RC16_DZ,0 -RC16_MAX,1900 -RC16_MIN,1100 -RC16_OPTION,0 -RC16_REVERSED,0 -RC16_TRIM,1500 -RC2_DZ,20 -RC2_MAX,1900 -RC2_MIN,1100 -RC2_OPTION,0 -RC2_REVERSED,0 -RC2_TRIM,1500 -RC3_DZ,30 -RC3_MAX,1900 -RC3_MIN,1100 -RC3_OPTION,0 -RC3_REVERSED,0 -RC3_TRIM,1500 -RC4_DZ,20 -RC4_MAX,1900 -RC4_MIN,1100 -RC4_OPTION,0 -RC4_REVERSED,0 -RC4_TRIM,1500 -RC5_DZ,0 -RC5_MAX,1900 -RC5_MIN,1100 -RC5_OPTION,0 -RC5_REVERSED,0 -RC5_TRIM,1500 -RC6_DZ,0 -RC6_MAX,1900 -RC6_MIN,1100 -RC6_OPTION,0 -RC6_REVERSED,0 -RC6_TRIM,1500 -RC7_DZ,0 -RC7_MAX,1900 -RC7_MIN,1100 -RC7_OPTION,0 -RC7_REVERSED,0 -RC7_TRIM,1500 -RC8_DZ,0 -RC8_MAX,1900 -RC8_MIN,1100 -RC8_OPTION,0 -RC8_REVERSED,0 -RC8_TRIM,1500 -RC9_DZ,0 -RC9_MAX,1900 -RC9_MIN,1100 -RC9_OPTION,0 -RC9_REVERSED,0 -RC9_TRIM,1500 -RCMAP_PITCH,2 -RCMAP_ROLL,1 -RCMAP_THROTTLE,3 -RCMAP_YAW,4 -RELAY1_FUNCTION,0 -RELAY2_FUNCTION,0 -RELAY3_FUNCTION,0 -RELAY4_FUNCTION,0 -RELAY5_FUNCTION,0 -RELAY6_FUNCTION,0 -RNGFND_FILT,0.5 -RNGFND1_TYPE,0 -RNGFND2_TYPE,0 -RNGFND3_TYPE,0 -RNGFND4_TYPE,0 -RNGFND5_TYPE,0 -RNGFND6_TYPE,0 -RNGFND7_TYPE,0 -RNGFND8_TYPE,0 -RNGFND9_TYPE,0 -RNGFNDA_TYPE,0 -RPM1_TYPE,0 -RPM2_TYPE,0 -RSSI_TYPE,0 -RTL_ALT,1500 -RTL_ALT_FINAL,0 -RTL_ALT_TYPE,0 -RTL_CLIMB_MIN,0 -RTL_CONE_SLOPE,3 -RTL_LOIT_TIME,5000 -RTL_OPTIONS,0 -RTL_SPEED,0 -SCHED_DEBUG,0 -SCHED_LOOP_RATE,400 -SCHED_OPTIONS,0 -SCR_DEBUG_OPTS,0 -SCR_DIR_DISABLE,0 -SCR_ENABLE,0 -SCR_HEAP_SIZE,102400 -SCR_LD_CHECKSUM,-1 -SCR_RUN_CHECKSUM,-1 -SCR_SDEV_EN,0 -SCR_THD_PRIORITY,0 -SCR_USER1,0 -SCR_USER2,0 -SCR_USER3,0 -SCR_USER4,0 -SCR_USER5,0 -SCR_USER6,0 -SCR_VM_I_COUNT,10000 -SERIAL_PASS1,0 -SERIAL_PASS2,-1 -SERIAL_PASSTIMO,15 -SERIAL0_BAUD,115 -SERIAL0_PROTOCOL,2 -SERIAL1_BAUD,57 -SERIAL1_OPTIONS,0 -SERIAL1_PROTOCOL,2 -SERIAL2_BAUD,57 -SERIAL2_OPTIONS,0 -SERIAL2_PROTOCOL,2 -SERIAL3_BAUD,230 -SERIAL3_OPTIONS,0 -SERIAL3_PROTOCOL,5 -SERIAL4_BAUD,230 -SERIAL4_OPTIONS,0 -SERIAL4_PROTOCOL,5 -SERIAL5_BAUD,57 -SERIAL5_OPTIONS,0 -SERIAL5_PROTOCOL,-1 -SERIAL6_BAUD,57 -SERIAL6_OPTIONS,0 -SERIAL6_PROTOCOL,-1 -SERIAL7_BAUD,115200 -SERIAL7_OPTIONS,0 -SERIAL7_PROTOCOL,2 -SERVO_32_ENABLE,0 -SERVO_BLH_3DMASK,0 -SERVO_BLH_AUTO,0 -SERVO_BLH_DEBUG,0 -SERVO_BLH_MASK,0 -SERVO_BLH_OTYPE,0 -SERVO_BLH_POLES,14 -SERVO_BLH_PORT,0 -SERVO_BLH_RVMASK,0 -SERVO_BLH_TEST,0 -SERVO_BLH_TMOUT,0 -SERVO_BLH_TRATE,10 -SERVO_DSHOT_ESC,0 -SERVO_DSHOT_RATE,0 -SERVO_FTW_MASK,0 -SERVO_FTW_POLES,14 -SERVO_FTW_RVMASK,0 -SERVO_GPIO_MASK,0 -SERVO_RATE,50 -SERVO_RC_FS_MSK,0 -SERVO_ROB_POSMAX,4095 -SERVO_ROB_POSMIN,0 -SERVO_SBUS_RATE,50 -SERVO_VOLZ_MASK,0 -SERVO_VOLZ_RANGE,200 -SERVO1_FUNCTION,0 -SERVO1_MAX,1900 -SERVO1_MIN,1100 -SERVO1_REVERSED,0 -SERVO1_TRIM,1500 -SERVO10_FUNCTION,0 -SERVO10_MAX,1900 -SERVO10_MIN,1100 -SERVO10_REVERSED,0 -SERVO10_TRIM,1500 -SERVO11_FUNCTION,0 -SERVO11_MAX,1900 -SERVO11_MIN,1100 -SERVO11_REVERSED,0 -SERVO11_TRIM,1500 -SERVO12_FUNCTION,0 -SERVO12_MAX,1900 -SERVO12_MIN,1100 -SERVO12_REVERSED,0 -SERVO12_TRIM,1500 -SERVO13_FUNCTION,0 -SERVO13_MAX,1900 -SERVO13_MIN,1100 -SERVO13_REVERSED,0 -SERVO13_TRIM,1500 -SERVO14_FUNCTION,0 -SERVO14_MAX,1900 -SERVO14_MIN,1100 -SERVO14_REVERSED,0 -SERVO14_TRIM,1500 -SERVO15_FUNCTION,0 -SERVO15_MAX,1900 -SERVO15_MIN,1100 -SERVO15_REVERSED,0 -SERVO15_TRIM,1500 -SERVO16_FUNCTION,0 -SERVO16_MAX,1900 -SERVO16_MIN,1100 -SERVO16_REVERSED,0 -SERVO16_TRIM,1500 -SERVO2_FUNCTION,0 -SERVO2_MAX,1900 -SERVO2_MIN,1100 -SERVO2_REVERSED,0 -SERVO2_TRIM,1500 -SERVO3_FUNCTION,0 -SERVO3_MAX,1900 -SERVO3_MIN,1100 -SERVO3_REVERSED,0 -SERVO3_TRIM,1500 -SERVO4_FUNCTION,0 -SERVO4_MAX,1900 -SERVO4_MIN,1100 -SERVO4_REVERSED,0 -SERVO4_TRIM,1500 -SERVO5_FUNCTION,0 -SERVO5_MAX,1900 -SERVO5_MIN,1100 -SERVO5_REVERSED,0 -SERVO5_TRIM,1500 -SERVO6_FUNCTION,0 -SERVO6_MAX,1900 -SERVO6_MIN,1100 -SERVO6_REVERSED,0 -SERVO6_TRIM,1500 -SERVO7_FUNCTION,0 -SERVO7_MAX,1900 -SERVO7_MIN,1100 -SERVO7_REVERSED,0 -SERVO7_TRIM,1500 -SERVO8_FUNCTION,0 -SERVO8_MAX,1900 -SERVO8_MIN,1100 -SERVO8_REVERSED,0 -SERVO8_TRIM,1500 -SERVO9_FUNCTION,0 -SERVO9_MAX,1900 -SERVO9_MIN,1100 -SERVO9_REVERSED,0 -SERVO9_TRIM,1500 -SID_AXIS,0 -SID_F_START_HZ,0.5 -SID_F_STOP_HZ,40 -SID_MAGNITUDE,15 -SID_T_FADE_IN,15 -SID_T_FADE_OUT,2 -SID_T_REC,70 -SIMPLE,0 -SPRAY_ENABLE,0 -SR0_ADSB,0 -SR0_EXT_STAT,0 -SR0_EXTRA1,0 -SR0_EXTRA2,0 -SR0_EXTRA3,0 -SR0_PARAMS,0 -SR0_POSITION,0 -SR0_RAW_CTRL,0 -SR0_RAW_SENS,0 -SR0_RC_CHAN,0 -SR1_ADSB,0 -SR1_EXT_STAT,0 -SR1_EXTRA1,0 -SR1_EXTRA2,0 -SR1_EXTRA3,0 -SR1_PARAMS,0 -SR1_POSITION,0 -SR1_RAW_CTRL,0 -SR1_RAW_SENS,0 -SR1_RC_CHAN,0 -SR2_ADSB,0 -SR2_EXT_STAT,0 -SR2_EXTRA1,0 -SR2_EXTRA2,0 -SR2_EXTRA3,0 -SR2_PARAMS,0 -SR2_POSITION,0 -SR2_RAW_CTRL,0 -SR2_RAW_SENS,0 -SR2_RC_CHAN,0 -SR3_ADSB,0 -SR3_EXT_STAT,0 -SR3_EXTRA1,0 -SR3_EXTRA2,0 -SR3_EXTRA3,0 -SR3_PARAMS,0 -SR3_POSITION,0 -SR3_RAW_CTRL,0 -SR3_RAW_SENS,0 -SR3_RC_CHAN,0 -SR4_ADSB,0 -SR4_EXT_STAT,0 -SR4_EXTRA1,0 -SR4_EXTRA2,0 -SR4_EXTRA3,0 -SR4_PARAMS,0 -SR4_POSITION,0 -SR4_RAW_CTRL,0 -SR4_RAW_SENS,0 -SR4_RC_CHAN,0 -SR5_ADSB,0 -SR5_EXT_STAT,0 -SR5_EXTRA1,0 -SR5_EXTRA2,0 -SR5_EXTRA3,0 -SR5_PARAMS,0 -SR5_POSITION,0 -SR5_RAW_CTRL,0 -SR5_RAW_SENS,0 -SR5_RC_CHAN,0 -SR6_ADSB,0 -SR6_EXT_STAT,0 -SR6_EXTRA1,0 -SR6_EXTRA2,0 -SR6_EXTRA3,0 -SR6_PARAMS,0 -SR6_POSITION,0 -SR6_RAW_CTRL,0 -SR6_RAW_SENS,0 -SR6_RC_CHAN,0 -SRTL_ACCURACY,2 -SRTL_OPTIONS,0 -SRTL_POINTS,300 -STAT_BOOTCNT,0 -STAT_FLTTIME,0 -STAT_RESET,1 -STAT_RUNTIME,0 -SUPER_SIMPLE,0 -SURFTRAK_MODE,1 -SURFTRAK_TC,1 -SYSID_ENFORCE,0 -SYSID_MYGCS,255 -SYSID_THISMAV,1 -TCAL_ENABLED,0 -TELEM_DELAY,0 -TERRAIN_CACHE_SZ,12 -TERRAIN_ENABLE,1 -TERRAIN_MARGIN,0.05 -TERRAIN_OFS_MAX,30 -TERRAIN_OPTIONS,0 -TERRAIN_SPACING,100 -THR_DZ,100 -THROW_ALT_MAX,0 -THROW_ALT_MIN,0 -THROW_MOT_START,0 -THROW_NEXTMODE,18 -THROW_TYPE,0 -TKOFF_RPM_MAX,0 -TKOFF_RPM_MIN,0 -TKOFF_SLEW_TIME,2 -TKOFF_THR_MAX,0.9 -TUNE,0 -TUNE_MAX,0 -TUNE_MIN,0 -VISO_TYPE,0 -VTX_ENABLE,0 -WINCH_TYPE,0 -WP_NAVALT_MIN,0 -WP_YAW_BEHAVIOR,2 -WPNAV_ACCEL,250 -WPNAV_ACCEL_C,0 -WPNAV_ACCEL_Z,100 -WPNAV_JERK,1 -WPNAV_RADIUS,200 -WPNAV_RFND_USE,1 -WPNAV_SPEED,1000 -WPNAV_SPEED_DN,150 -WPNAV_SPEED_UP,250 -WPNAV_TER_MARGIN,10 -WVANE_ENABLE,0 -ZIGZ_AUTO_ENABLE,0 +ACRO_BAL_PITCH,1 +ACRO_BAL_ROLL,1 +ACRO_OPTIONS,0 +ACRO_RP_EXPO,0.3 +ACRO_RP_RATE,360 +ACRO_RP_RATE_TC,0 +ACRO_THR_MID,0 +ACRO_TRAINER,2 +ACRO_Y_EXPO,0 +ACRO_Y_RATE,202.5 +ACRO_Y_RATE_TC,0 +ADSB_TYPE,0 +AHRS_COMP_BETA,0.1 +AHRS_EKF_TYPE,3 +AHRS_GPS_GAIN,1 +AHRS_GPS_MINSATS,6 +AHRS_GPS_USE,1 +AHRS_OPTIONS,0 +AHRS_ORIENTATION,0 +AHRS_RP_P,0.2 +AHRS_TRIM_X,0 +AHRS_TRIM_Y,0 +AHRS_TRIM_Z,0 +AHRS_WIND_MAX,0 +AHRS_YAW_P,0.2 +ANGLE_MAX,3000 +ARMING_ACCTHRESH,0.75 +ARMING_CHECK,1 +ARMING_CRSDP_IGN,0 +ARMING_MAGTHRESH,100 +ARMING_MIS_ITEMS,0 +ARMING_NEED_LOC,0 +ARMING_OPTIONS,0 +ARMING_RUDDER,2 +ARSPD_ENABLE,0 +ATC_ACCEL_P_MAX,110000 +ATC_ACCEL_R_MAX,110000 +ATC_ACCEL_Y_MAX,27000 +ATC_ANG_LIM_TC,1 +ATC_ANG_PIT_P,4.5 +ATC_ANG_RLL_P,4.5 +ATC_ANG_YAW_P,4.5 +ATC_ANGLE_BOOST,1 +ATC_INPUT_TC,0.15 +ATC_LAND_P_MULT,1 +ATC_LAND_R_MULT,1 +ATC_LAND_Y_MULT,1 +ATC_RAT_PIT_D,0.0036 +ATC_RAT_PIT_D_FF,0 +ATC_RAT_PIT_FF,0 +ATC_RAT_PIT_FLTD,20 +ATC_RAT_PIT_FLTE,0 +ATC_RAT_PIT_FLTT,20 +ATC_RAT_PIT_I,0.135 +ATC_RAT_PIT_IMAX,0.5 +ATC_RAT_PIT_NEF,0 +ATC_RAT_PIT_NTF,0 +ATC_RAT_PIT_P,0.135 +ATC_RAT_PIT_PDMX,0 +ATC_RAT_PIT_SMAX,0 +ATC_RAT_RLL_D,0.0036 +ATC_RAT_RLL_D_FF,0 +ATC_RAT_RLL_FF,0 +ATC_RAT_RLL_FLTD,20 +ATC_RAT_RLL_FLTE,0 +ATC_RAT_RLL_FLTT,20 +ATC_RAT_RLL_I,0.135 +ATC_RAT_RLL_IMAX,0.5 +ATC_RAT_RLL_NEF,0 +ATC_RAT_RLL_NTF,0 +ATC_RAT_RLL_P,0.135 +ATC_RAT_RLL_PDMX,0 +ATC_RAT_RLL_SMAX,0 +ATC_RAT_YAW_D,0 +ATC_RAT_YAW_D_FF,0 +ATC_RAT_YAW_FF,0 +ATC_RAT_YAW_FLTD,20 +ATC_RAT_YAW_FLTE,2.5 +ATC_RAT_YAW_FLTT,20 +ATC_RAT_YAW_I,0.018 +ATC_RAT_YAW_IMAX,0.5 +ATC_RAT_YAW_NEF,0 +ATC_RAT_YAW_NTF,0 +ATC_RAT_YAW_P,0.18 +ATC_RAT_YAW_PDMX,0 +ATC_RAT_YAW_SMAX,0 +ATC_RATE_FF_ENAB,1 +ATC_RATE_P_MAX,0 +ATC_RATE_R_MAX,0 +ATC_RATE_Y_MAX,0 +ATC_SLEW_YAW,6000 +ATC_THR_G_BOOST,0 +ATC_THR_MIX_MAN,0.1 +ATC_THR_MIX_MAX,0.5 +ATC_THR_MIX_MIN,0.1 +AUTO_OPTIONS,0 +AUTOTUNE_AGGR,0.075 +AUTOTUNE_AXES,7 +AUTOTUNE_MIN_D,0.0005 +AVD_ENABLE,0 +AVOID_ACCEL_MAX,3 +AVOID_ALT_MIN,0 +AVOID_ANGLE_MAX,1000 +AVOID_BACKUP_DZ,0.1 +AVOID_BACKUP_SPD,0.75 +AVOID_BACKZ_SPD,0.75 +AVOID_BEHAVE,0 +AVOID_DIST_MAX,5 +AVOID_ENABLE,3 +AVOID_MARGIN,2 +BARO_ALT_OFFSET,0 +BARO_ALTERR_MAX,2000 +BARO_EXT_BUS,-1 +BARO_FIELD_ELV,0 +BARO_FLTR_RNG,0 +BARO_GND_TEMP,0 +BARO_OPTIONS,0 +BARO_PRIMARY,0 +BARO_PROBE_EXT,0 +BARO1_DEVID,0 +BARO1_GND_PRESS,0 +BARO1_WCF_ENABLE,0 +BARO2_DEVID,0 +BARO2_GND_PRESS,0 +BARO2_WCF_ENABLE,0 +BARO3_DEVID,0 +BARO3_GND_PRESS,0 +BARO3_WCF_ENABLE,0 +BATT_AMP_OFFSET,0 +BATT_AMP_PERVLT,36.363998 +BATT_ARM_MAH,0 +BATT_ARM_VOLT,0 +BATT_CAPACITY,3300 +BATT_CRT_MAH,0 +BATT_CRT_VOLT,0 +BATT_CURR_PIN,1 +BATT_FS_CRT_ACT,0 +BATT_FS_LOW_ACT,0 +BATT_FS_VOLTSRC,0 +BATT_LOW_MAH,0 +BATT_LOW_TIMER,10 +BATT_LOW_VOLT,10.5 +BATT_MONITOR,0 +BATT_OPTIONS,0 +BATT_SERIAL_NUM,-1 +BATT_VLT_OFFSET,0 +BATT_VOLT_MULT,18.181999 +BATT_VOLT_PIN,0 +BATT2_MONITOR,0 +BATT3_MONITOR,0 +BATT4_MONITOR,0 +BATT5_MONITOR,0 +BATT6_MONITOR,0 +BATT7_MONITOR,0 +BATT8_MONITOR,0 +BATT9_MONITOR,0 +BCN_TYPE,0 +BRD_BOOT_DELAY,0 +BRD_IO_DSHOT,0 +BRD_IO_ENABLE,1 +BRD_OPTIONS,1 +BRD_RTC_TYPES,1 +BRD_RTC_TZ_MIN,0 +BRD_SAFETY_DEFLT,1 +BRD_SAFETY_MASK,16368 +BRD_SAFETYOPTION,3 +BRD_SBUS_OUT,0 +BRD_SD_SLOWDOWN,0 +BRD_SER1_RTSCTS,0 +BRD_SER2_RTSCTS,0 +BRD_SER5_RTSCTS,2 +BRD_SERIAL_NUM,0 +BRD_TYPE,0 +BRD_VBUS_MIN,4.3 +BRD_VSERVO_MIN,0 +BTN_ENABLE,0 +CAM_AUTO_ONLY,0 +CAM_MAX_ROLL,0 +CAM_RC_TYPE,0 +CAM1_TYPE,0 +CAM2_TYPE,0 +CAN_D1_PROTOCOL,1 +CAN_D1_PROTOCOL2,0 +CAN_D2_PROTOCOL,1 +CAN_D2_PROTOCOL2,0 +CAN_LOGLEVEL,0 +CAN_P1_DRIVER,0 +CAN_P2_DRIVER,0 +CAN_SLCAN_CPORT,0 +CAN_SLCAN_SDELAY,1 +CAN_SLCAN_SERNUM,-1 +CAN_SLCAN_TIMOUT,0 +CHUTE_ENABLED,0 +CIRCLE_OPTIONS,1 +CIRCLE_RADIUS,1000 +CIRCLE_RATE,20 +COMPASS_AUTO_ROT,2 +COMPASS_AUTODEC,1 +COMPASS_CAL_FIT,16 +COMPASS_DEC,0 +COMPASS_DEV_ID,0 +COMPASS_DEV_ID2,0 +COMPASS_DEV_ID3,0 +COMPASS_DEV_ID4,0 +COMPASS_DEV_ID5,0 +COMPASS_DEV_ID6,0 +COMPASS_DEV_ID7,0 +COMPASS_DEV_ID8,0 +COMPASS_DIA_X,1 +COMPASS_DIA_Y,1 +COMPASS_DIA_Z,1 +COMPASS_DIA2_X,1 +COMPASS_DIA2_Y,1 +COMPASS_DIA2_Z,1 +COMPASS_DIA3_X,1 +COMPASS_DIA3_Y,1 +COMPASS_DIA3_Z,1 +COMPASS_DISBLMSK,0 +COMPASS_ENABLE,1 +COMPASS_EXTERN2,0 +COMPASS_EXTERN3,0 +COMPASS_EXTERNAL,0 +COMPASS_FLTR_RNG,0 +COMPASS_LEARN,0 +COMPASS_MOT_X,0 +COMPASS_MOT_Y,0 +COMPASS_MOT_Z,0 +COMPASS_MOT2_X,0 +COMPASS_MOT2_Y,0 +COMPASS_MOT2_Z,0 +COMPASS_MOT3_X,0 +COMPASS_MOT3_Y,0 +COMPASS_MOT3_Z,0 +COMPASS_MOTCT,0 +COMPASS_ODI_X,0 +COMPASS_ODI_Y,0 +COMPASS_ODI_Z,0 +COMPASS_ODI2_X,0 +COMPASS_ODI2_Y,0 +COMPASS_ODI2_Z,0 +COMPASS_ODI3_X,0 +COMPASS_ODI3_Y,0 +COMPASS_ODI3_Z,0 +COMPASS_OFFS_MAX,1800 +COMPASS_OFS_X,0 +COMPASS_OFS_Y,0 +COMPASS_OFS_Z,0 +COMPASS_OFS2_X,0 +COMPASS_OFS2_Y,0 +COMPASS_OFS2_Z,0 +COMPASS_OFS3_X,0 +COMPASS_OFS3_Y,0 +COMPASS_OFS3_Z,0 +COMPASS_OPTIONS,0 +COMPASS_ORIENT,0 +COMPASS_ORIENT2,0 +COMPASS_ORIENT3,0 +COMPASS_PMOT_EN,0 +COMPASS_PRIO1_ID,0 +COMPASS_PRIO2_ID,0 +COMPASS_PRIO3_ID,0 +COMPASS_SCALE,0 +COMPASS_SCALE2,0 +COMPASS_SCALE3,0 +COMPASS_USE,1 +COMPASS_USE2,1 +COMPASS_USE3,1 +CUST_ROT_ENABLE,0 +DEV_OPTIONS,0 +DISARM_DELAY,10 +EAHRS_TYPE,0 +EFI_TYPE,0 +EK3_ABIAS_P_NSE,0.02 +EK3_ACC_BIAS_LIM,1 +EK3_ACC_P_NSE,0.35 +EK3_AFFINITY,0 +EK3_ALT_M_NSE,2 +EK3_BCN_DELAY,50 +EK3_BCN_I_GTE,500 +EK3_BCN_M_NSE,1 +EK3_BETA_MASK,0 +EK3_CHECK_SCALE,100 +EK3_DRAG_BCOEF_X,0 +EK3_DRAG_BCOEF_Y,0 +EK3_DRAG_M_NSE,0.5 +EK3_DRAG_MCOEF,0 +EK3_EAS_I_GATE,400 +EK3_EAS_M_NSE,1.4 +EK3_ENABLE,1 +EK3_ERR_THRESH,0.2 +EK3_FLOW_DELAY,10 +EK3_FLOW_I_GATE,300 +EK3_FLOW_M_NSE,0.25 +EK3_FLOW_USE,1 +EK3_GBIAS_P_NSE,0.001 +EK3_GLITCH_RAD,25 +EK3_GND_EFF_DZ,4 +EK3_GPS_CHECK,31 +EK3_GPS_VACC_MAX,0 +EK3_GSF_RST_MAX,2 +EK3_GSF_RUN_MASK,3 +EK3_GSF_USE_MASK,3 +EK3_GYRO_P_NSE,0.015 +EK3_HGT_DELAY,60 +EK3_HGT_I_GATE,500 +EK3_HRT_FILT,2 +EK3_IMU_MASK,3 +EK3_LOG_LEVEL,0 +EK3_MAG_CAL,3 +EK3_MAG_EF_LIM,50 +EK3_MAG_I_GATE,300 +EK3_MAG_M_NSE,0.05 +EK3_MAG_MASK,0 +EK3_MAGB_P_NSE,0.0001 +EK3_MAGE_P_NSE,0.001 +EK3_MAX_FLOW,2.5 +EK3_NOAID_M_NSE,10 +EK3_OGN_HGT_MASK,0 +EK3_OGNM_TEST_SF,2 +EK3_OPTIONS,0 +EK3_POS_I_GATE,500 +EK3_POSNE_M_NSE,0.5 +EK3_PRIMARY,0 +EK3_RNG_I_GATE,500 +EK3_RNG_M_NSE,0.5 +EK3_RNG_USE_HGT,-1 +EK3_RNG_USE_SPD,2 +EK3_SRC_OPTIONS,1 +EK3_SRC1_POSXY,3 +EK3_SRC1_POSZ,1 +EK3_SRC1_VELXY,3 +EK3_SRC1_VELZ,3 +EK3_SRC1_YAW,1 +EK3_SRC2_POSXY,0 +EK3_SRC2_POSZ,1 +EK3_SRC2_VELXY,0 +EK3_SRC2_VELZ,0 +EK3_SRC2_YAW,0 +EK3_SRC3_POSXY,0 +EK3_SRC3_POSZ,1 +EK3_SRC3_VELXY,0 +EK3_SRC3_VELZ,0 +EK3_SRC3_YAW,0 +EK3_TAU_OUTPUT,25 +EK3_TERR_GRAD,0.1 +EK3_VEL_I_GATE,500 +EK3_VELD_M_NSE,0.5 +EK3_VELNE_M_NSE,0.3 +EK3_VIS_VERR_MAX,0.9 +EK3_VIS_VERR_MIN,0.1 +EK3_WENC_VERR,0.1 +EK3_WIND_P_NSE,0.2 +EK3_WIND_PSCALE,1 +EK3_YAW_I_GATE,300 +EK3_YAW_M_NSE,0.5 +ESC_CALIBRATION,0 +ESC_TLM_MAV_OFS,0 +FENCE_ACTION,1 +FENCE_ALT_MAX,100 +FENCE_ALT_MIN,-10 +FENCE_AUTOENABLE,0 +FENCE_ENABLE,0 +FENCE_MARGIN,2 +FENCE_OPTIONS,0 +FENCE_RADIUS,300 +FENCE_TOTAL,0 +FENCE_TYPE,7 +FFT_ENABLE,0 +FHLD_BRAKE_RATE,8 +FHLD_FILT_HZ,5 +FHLD_FLOW_MAX,0.6 +FHLD_QUAL_MIN,10 +FHLD_XY_FILT_HZ,5 +FHLD_XY_I,0.3 +FHLD_XY_IMAX,3000 +FHLD_XY_P,0.2 +FILT1_TYPE,0 +FILT2_TYPE,0 +FILT3_TYPE,0 +FILT4_TYPE,0 +FILT5_TYPE,0 +FILT6_TYPE,0 +FILT7_TYPE,0 +FILT8_TYPE,0 +FLIGHT_OPTIONS,0 +FLOW_TYPE,0 +FLTMODE_CH,5 +FLTMODE_GCSBLOCK,0 +FLTMODE1,0 +FLTMODE2,0 +FLTMODE3,0 +FLTMODE4,0 +FLTMODE5,0 +FLTMODE6,0 +FOLL_ENABLE,0 +FORMAT_VERSION,120 +FRAME_CLASS,0 +FRAME_TYPE,1 +FRSKY_DNLINK_ID,27 +FRSKY_DNLINK1_ID,20 +FRSKY_DNLINK2_ID,7 +FRSKY_OPTIONS,0 +FRSKY_UPLINK_ID,13 +FS_CRASH_CHECK,1 +FS_DR_ENABLE,2 +FS_DR_TIMEOUT,30 +FS_EKF_ACTION,1 +FS_EKF_FILT,5 +FS_EKF_THRESH,0.8 +FS_GCS_ENABLE,0 +FS_GCS_TIMEOUT,5 +FS_OPTIONS,16 +FS_THR_ENABLE,1 +FS_THR_VALUE,975 +FS_VIBE_ENABLE,1 +GCS_PID_MASK,0 +GEN_TYPE,0 +GND_EFFECT_COMP,1 +GPS_AUTO_CONFIG,1 +GPS_AUTO_SWITCH,1 +GPS_BLEND_MASK,5 +GPS_DRV_OPTIONS,0 +GPS_HDOP_GOOD,140 +GPS_INJECT_TO,127 +GPS_MIN_ELEV,-100 +GPS_NAVFILTER,8 +GPS_PRIMARY,0 +GPS_RAW_DATA,0 +GPS_SAVE_CFG,2 +GPS_SBAS_MODE,2 +GPS_SBP_LOGMASK,-256 +GPS1_CAN_NODEID,0 +GPS1_CAN_OVRIDE,0 +GPS1_COM_PORT,1 +GPS1_DELAY_MS,0 +GPS1_GNSS_MODE,0 +GPS1_MB_TYPE,0 +GPS1_POS_X,0 +GPS1_POS_Y,0 +GPS1_POS_Z,0 +GPS1_RATE_MS,200 +GPS1_TYPE,1 +GPS2_TYPE,0 +GRIP_ENABLE,0 +GUID_OPTIONS,0 +GUID_TIMEOUT,3 +INITIAL_MODE,0 +INS_ACC_BODYFIX,2 +INS_ACC_ID,0 +INS_ACC1_CALTEMP,-300 +INS_ACC2_CALTEMP,-300 +INS_ACC2_ID,0 +INS_ACC2OFFS_X,0 +INS_ACC2OFFS_Y,0 +INS_ACC2OFFS_Z,0 +INS_ACC2SCAL_X,1 +INS_ACC2SCAL_Y,1 +INS_ACC2SCAL_Z,1 +INS_ACC3_CALTEMP,-300 +INS_ACC3_ID,0 +INS_ACC3OFFS_X,0 +INS_ACC3OFFS_Y,0 +INS_ACC3OFFS_Z,0 +INS_ACC3SCAL_X,1 +INS_ACC3SCAL_Y,1 +INS_ACC3SCAL_Z,1 +INS_ACCEL_FILTER,20 +INS_ACCOFFS_X,0 +INS_ACCOFFS_Y,0 +INS_ACCOFFS_Z,0 +INS_ACCSCAL_X,1 +INS_ACCSCAL_Y,1 +INS_ACCSCAL_Z,1 +INS_ENABLE_MASK,127 +INS_FAST_SAMPLE,1 +INS_GYR_CAL,1 +INS_GYR_ID,0 +INS_GYR1_CALTEMP,-300 +INS_GYR2_CALTEMP,-300 +INS_GYR2_ID,0 +INS_GYR2OFFS_X,0 +INS_GYR2OFFS_Y,0 +INS_GYR2OFFS_Z,0 +INS_GYR3_CALTEMP,-300 +INS_GYR3_ID,0 +INS_GYR3OFFS_X,0 +INS_GYR3OFFS_Y,0 +INS_GYR3OFFS_Z,0 +INS_GYRO_FILTER,20 +INS_GYRO_RATE,1 +INS_GYROFFS_X,0 +INS_GYROFFS_Y,0 +INS_GYROFFS_Z,0 +INS_HNTC2_ENABLE,0 +INS_HNTCH_ATT,40 +INS_HNTCH_BW,40 +INS_HNTCH_ENABLE,0 +INS_HNTCH_FM_RAT,1 +INS_HNTCH_FREQ,80 +INS_HNTCH_HMNCS,1 +INS_HNTCH_MODE,1 +INS_HNTCH_OPTS,0 +INS_HNTCH_REF,0 +INS_LOG_BAT_CNT,1024 +INS_LOG_BAT_LGCT,32 +INS_LOG_BAT_LGIN,20 +INS_LOG_BAT_MASK,0 +INS_LOG_BAT_OPT,0 +INS_POS1_X,0 +INS_POS1_Y,0 +INS_POS1_Z,0 +INS_POS2_X,0 +INS_POS2_Y,0 +INS_POS2_Z,0 +INS_POS3_X,0 +INS_POS3_Y,0 +INS_POS3_Z,0 +INS_RAW_LOG_OPT,0 +INS_STILL_THRESH,2.5 +INS_TCAL_OPTIONS,0 +INS_TCAL1_ENABLE,0 +INS_TCAL2_ENABLE,0 +INS_TCAL3_ENABLE,0 +INS_TRIM_OPTION,1 +INS_USE,1 +INS_USE2,1 +INS_USE3,1 +KDE_NPOLE,14 +LAND_ALT_LOW,1000 +LAND_REPOSITION,1 +LAND_SPEED,50 +LAND_SPEED_HIGH,0 +LGR_ENABLE,0 +LOG_BACKEND_TYPE,1 +LOG_BITMASK,180222 +LOG_DARM_RATEMAX,0 +LOG_DISARMED,0 +LOG_FILE_BUFSIZE,80 +LOG_FILE_DSRMROT,0 +LOG_FILE_MB_FREE,500 +LOG_FILE_RATEMAX,0 +LOG_FILE_TIMEOUT,5 +LOG_MAV_BUFSIZE,8 +LOG_MAV_RATEMAX,0 +LOG_MAX_FILES,500 +LOG_REPLAY,0 +LOIT_ACC_MAX,500 +LOIT_ANG_MAX,0 +LOIT_BRK_ACCEL,250 +LOIT_BRK_DELAY,1 +LOIT_BRK_JERK,500 +LOIT_SPEED,1250 +MAGH_ALT_DELTA,10 +MAGH_B,1.2 +MAGH_CMD,117 +MAGH_COUNT,6 +MAGH_LOG_ENABLE,1 +MAGH_MIN_SPEED,0.4 +MAGH_NUM_WP,18 +MAGH_USE_LOITER,1 +MIS_OPTIONS,0 +MIS_RESTART,0 +MIS_TOTAL,0 +MNT1_TYPE,0 +MNT2_TYPE,0 +MOT_BAT_CURR_MAX,0 +MOT_BAT_CURR_TC,5 +MOT_BAT_IDX,0 +MOT_BAT_VOLT_MAX,0 +MOT_BAT_VOLT_MIN,0 +MOT_BOOST_SCALE,0 +MOT_HOVER_LEARN,2 +MOT_OPTIONS,0 +MOT_PWM_MAX,2000 +MOT_PWM_MIN,1000 +MOT_PWM_TYPE,0 +MOT_SAFE_DISARM,0 +MOT_SAFE_TIME,1 +MOT_SLEW_DN_TIME,0 +MOT_SLEW_UP_TIME,0 +MOT_SPIN_ARM,0.1 +MOT_SPIN_MAX,0.95 +MOT_SPIN_MIN,0.15 +MOT_SPOOL_TIM_DN,0 +MOT_SPOOL_TIME,0.5 +MOT_THST_EXPO,0.65 +MOT_THST_HOVER,0.35 +MOT_YAW_HEADROOM,200 +MSP_OPTIONS,0 +MSP_OSD_NCELLS,0 +NMEA_MSG_EN,3 +NMEA_RATE_MS,100 +NTF_BUZZ_ON_LVL,1 +NTF_BUZZ_PIN,-1 +NTF_BUZZ_TYPES,5 +NTF_BUZZ_VOLUME,100 +NTF_DISPLAY_TYPE,0 +NTF_LED_BRIGHT,3 +NTF_LED_LEN,1 +NTF_LED_OVERRIDE,0 +NTF_LED_TYPES,123079 +OA_TYPE,0 +OSD_TYPE,0 +PHLD_BRAKE_ANGLE,3000 +PHLD_BRAKE_RATE,8 +PILOT_ACCEL_Z,250 +PILOT_SPEED_DN,0 +PILOT_SPEED_UP,250 +PILOT_THR_BHV,0 +PILOT_THR_FILT,0 +PILOT_TKOFF_ALT,0 +PILOT_Y_EXPO,0 +PILOT_Y_RATE,202.5 +PILOT_Y_RATE_TC,0 +PLDP_DELAY,0 +PLDP_RNG_MAX,0 +PLDP_SPEED_DN,0 +PLDP_THRESH,0.9 +PLND_ENABLED,0 +PRX_ALT_MIN,1 +PRX_FILT,0.25 +PRX_IGN_GND,0 +PRX_LOG_RAW,0 +PRX1_TYPE,0 +PRX2_TYPE,0 +PRX3_TYPE,0 +PRX4_TYPE,0 +PRX5_TYPE,0 +PSC_ACCZ_D,0 +PSC_ACCZ_D_FF,0 +PSC_ACCZ_FF,0 +PSC_ACCZ_FLTD,0 +PSC_ACCZ_FLTE,20 +PSC_ACCZ_FLTT,0 +PSC_ACCZ_I,1 +PSC_ACCZ_IMAX,800 +PSC_ACCZ_NEF,0 +PSC_ACCZ_NTF,0 +PSC_ACCZ_P,0.5 +PSC_ACCZ_PDMX,0 +PSC_ACCZ_SMAX,0 +PSC_ANGLE_MAX,0 +PSC_JERK_XY,5 +PSC_JERK_Z,5 +PSC_POSXY_P,1 +PSC_POSZ_P,1 +PSC_VELXY_D,0.25 +PSC_VELXY_FF,0 +PSC_VELXY_FLTD,5 +PSC_VELXY_FLTE,5 +PSC_VELXY_I,1 +PSC_VELXY_IMAX,1000 +PSC_VELXY_P,2 +PSC_VELZ_D,0 +PSC_VELZ_FF,0 +PSC_VELZ_FLTD,5 +PSC_VELZ_FLTE,5 +PSC_VELZ_I,0 +PSC_VELZ_IMAX,1000 +PSC_VELZ_P,5 +QUIK_AUTO_FILTER,1 +QUIK_AUTO_SAVE,0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10 +QUIK_ENABLE,0 +QUIK_GAIN_MARGIN,60 +QUIK_MAX_REDUCE,20 +QUIK_OPTIONS,0 +QUIK_OSC_SMAX,5 +QUIK_RC_FUNC,300 +QUIK_RP_PI_RATIO,1 +QUIK_Y_PI_RATIO,10 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 +RALLY_INCL_HOME,1 +RALLY_LIMIT_KM,0.3 +RALLY_TOTAL,0 +RC_FS_TIMEOUT,1 +RC_OPTIONS,32 +RC_OVERRIDE_TIME,3 +RC_PROTOCOLS,1 +RC_SPEED,490 +RC1_DZ,20 +RC1_MAX,1900 +RC1_MIN,1100 +RC1_OPTION,0 +RC1_REVERSED,0 +RC1_TRIM,1500 +RC10_DZ,0 +RC10_MAX,1900 +RC10_MIN,1100 +RC10_OPTION,0 +RC10_REVERSED,0 +RC10_TRIM,1500 +RC11_DZ,0 +RC11_MAX,1900 +RC11_MIN,1100 +RC11_OPTION,0 +RC11_REVERSED,0 +RC11_TRIM,1500 +RC12_DZ,0 +RC12_MAX,1900 +RC12_MIN,1100 +RC12_OPTION,0 +RC12_REVERSED,0 +RC12_TRIM,1500 +RC13_DZ,0 +RC13_MAX,1900 +RC13_MIN,1100 +RC13_OPTION,0 +RC13_REVERSED,0 +RC13_TRIM,1500 +RC14_DZ,0 +RC14_MAX,1900 +RC14_MIN,1100 +RC14_OPTION,0 +RC14_REVERSED,0 +RC14_TRIM,1500 +RC15_DZ,0 +RC15_MAX,1900 +RC15_MIN,1100 +RC15_OPTION,0 +RC15_REVERSED,0 +RC15_TRIM,1500 +RC16_DZ,0 +RC16_MAX,1900 +RC16_MIN,1100 +RC16_OPTION,0 +RC16_REVERSED,0 +RC16_TRIM,1500 +RC2_DZ,20 +RC2_MAX,1900 +RC2_MIN,1100 +RC2_OPTION,0 +RC2_REVERSED,0 +RC2_TRIM,1500 +RC3_DZ,30 +RC3_MAX,1900 +RC3_MIN,1100 +RC3_OPTION,0 +RC3_REVERSED,0 +RC3_TRIM,1500 +RC4_DZ,20 +RC4_MAX,1900 +RC4_MIN,1100 +RC4_OPTION,0 +RC4_REVERSED,0 +RC4_TRIM,1500 +RC5_DZ,0 +RC5_MAX,1900 +RC5_MIN,1100 +RC5_OPTION,0 +RC5_REVERSED,0 +RC5_TRIM,1500 +RC6_DZ,0 +RC6_MAX,1900 +RC6_MIN,1100 +RC6_OPTION,0 +RC6_REVERSED,0 +RC6_TRIM,1500 +RC7_DZ,0 +RC7_MAX,1900 +RC7_MIN,1100 +RC7_OPTION,0 +RC7_REVERSED,0 +RC7_TRIM,1500 +RC8_DZ,0 +RC8_MAX,1900 +RC8_MIN,1100 +RC8_OPTION,0 +RC8_REVERSED,0 +RC8_TRIM,1500 +RC9_DZ,0 +RC9_MAX,1900 +RC9_MIN,1100 +RC9_OPTION,0 +RC9_REVERSED,0 +RC9_TRIM,1500 +RCMAP_PITCH,2 +RCMAP_ROLL,1 +RCMAP_THROTTLE,3 +RCMAP_YAW,4 +RELAY1_FUNCTION,0 +RELAY2_FUNCTION,0 +RELAY3_FUNCTION,0 +RELAY4_FUNCTION,0 +RELAY5_FUNCTION,0 +RELAY6_FUNCTION,0 +RNGFND_FILT,0.5 +RNGFND1_TYPE,0 +RNGFND2_TYPE,0 +RNGFND3_TYPE,0 +RNGFND4_TYPE,0 +RNGFND5_TYPE,0 +RNGFND6_TYPE,0 +RNGFND7_TYPE,0 +RNGFND8_TYPE,0 +RNGFND9_TYPE,0 +RNGFNDA_TYPE,0 +RPM1_TYPE,0 +RPM2_TYPE,0 +RSSI_TYPE,0 +RTL_ALT,1500 +RTL_ALT_FINAL,0 +RTL_ALT_TYPE,0 +RTL_CLIMB_MIN,0 +RTL_CONE_SLOPE,3 +RTL_LOIT_TIME,5000 +RTL_OPTIONS,0 +RTL_SPEED,0 +SCHED_DEBUG,0 +SCHED_LOOP_RATE,400 +SCHED_OPTIONS,0 +SCR_DEBUG_OPTS,0 +SCR_DIR_DISABLE,0 +SCR_ENABLE,0 +SCR_HEAP_SIZE,102400 +SCR_LD_CHECKSUM,-1 +SCR_RUN_CHECKSUM,-1 +SCR_SDEV_EN,0 +SCR_THD_PRIORITY,0 +SCR_USER1,0 +SCR_USER2,0 +SCR_USER3,0 +SCR_USER4,0 +SCR_USER5,0 +SCR_USER6,0 +SCR_VM_I_COUNT,10000 +SERIAL_PASS1,0 +SERIAL_PASS2,-1 +SERIAL_PASSTIMO,15 +SERIAL0_BAUD,115 +SERIAL0_PROTOCOL,2 +SERIAL1_BAUD,57 +SERIAL1_OPTIONS,0 +SERIAL1_PROTOCOL,2 +SERIAL2_BAUD,57 +SERIAL2_OPTIONS,0 +SERIAL2_PROTOCOL,2 +SERIAL3_BAUD,230 +SERIAL3_OPTIONS,0 +SERIAL3_PROTOCOL,5 +SERIAL4_BAUD,230 +SERIAL4_OPTIONS,0 +SERIAL4_PROTOCOL,5 +SERIAL5_BAUD,57 +SERIAL5_OPTIONS,0 +SERIAL5_PROTOCOL,-1 +SERIAL6_BAUD,57 +SERIAL6_OPTIONS,0 +SERIAL6_PROTOCOL,-1 +SERIAL7_BAUD,115200 +SERIAL7_OPTIONS,0 +SERIAL7_PROTOCOL,2 +SERVO_32_ENABLE,0 +SERVO_BLH_3DMASK,0 +SERVO_BLH_AUTO,0 +SERVO_BLH_DEBUG,0 +SERVO_BLH_MASK,0 +SERVO_BLH_OTYPE,0 +SERVO_BLH_POLES,14 +SERVO_BLH_PORT,0 +SERVO_BLH_RVMASK,0 +SERVO_BLH_TEST,0 +SERVO_BLH_TMOUT,0 +SERVO_BLH_TRATE,10 +SERVO_DSHOT_ESC,0 +SERVO_DSHOT_RATE,0 +SERVO_FTW_MASK,0 +SERVO_FTW_POLES,14 +SERVO_FTW_RVMASK,0 +SERVO_GPIO_MASK,0 +SERVO_RATE,50 +SERVO_RC_FS_MSK,0 +SERVO_ROB_POSMAX,4095 +SERVO_ROB_POSMIN,0 +SERVO_SBUS_RATE,50 +SERVO_VOLZ_MASK,0 +SERVO_VOLZ_RANGE,200 +SERVO1_FUNCTION,0 +SERVO1_MAX,1900 +SERVO1_MIN,1100 +SERVO1_REVERSED,0 +SERVO1_TRIM,1500 +SERVO10_FUNCTION,0 +SERVO10_MAX,1900 +SERVO10_MIN,1100 +SERVO10_REVERSED,0 +SERVO10_TRIM,1500 +SERVO11_FUNCTION,0 +SERVO11_MAX,1900 +SERVO11_MIN,1100 +SERVO11_REVERSED,0 +SERVO11_TRIM,1500 +SERVO12_FUNCTION,0 +SERVO12_MAX,1900 +SERVO12_MIN,1100 +SERVO12_REVERSED,0 +SERVO12_TRIM,1500 +SERVO13_FUNCTION,0 +SERVO13_MAX,1900 +SERVO13_MIN,1100 +SERVO13_REVERSED,0 +SERVO13_TRIM,1500 +SERVO14_FUNCTION,0 +SERVO14_MAX,1900 +SERVO14_MIN,1100 +SERVO14_REVERSED,0 +SERVO14_TRIM,1500 +SERVO15_FUNCTION,0 +SERVO15_MAX,1900 +SERVO15_MIN,1100 +SERVO15_REVERSED,0 +SERVO15_TRIM,1500 +SERVO16_FUNCTION,0 +SERVO16_MAX,1900 +SERVO16_MIN,1100 +SERVO16_REVERSED,0 +SERVO16_TRIM,1500 +SERVO2_FUNCTION,0 +SERVO2_MAX,1900 +SERVO2_MIN,1100 +SERVO2_REVERSED,0 +SERVO2_TRIM,1500 +SERVO3_FUNCTION,0 +SERVO3_MAX,1900 +SERVO3_MIN,1100 +SERVO3_REVERSED,0 +SERVO3_TRIM,1500 +SERVO4_FUNCTION,0 +SERVO4_MAX,1900 +SERVO4_MIN,1100 +SERVO4_REVERSED,0 +SERVO4_TRIM,1500 +SERVO5_FUNCTION,0 +SERVO5_MAX,1900 +SERVO5_MIN,1100 +SERVO5_REVERSED,0 +SERVO5_TRIM,1500 +SERVO6_FUNCTION,0 +SERVO6_MAX,1900 +SERVO6_MIN,1100 +SERVO6_REVERSED,0 +SERVO6_TRIM,1500 +SERVO7_FUNCTION,0 +SERVO7_MAX,1900 +SERVO7_MIN,1100 +SERVO7_REVERSED,0 +SERVO7_TRIM,1500 +SERVO8_FUNCTION,0 +SERVO8_MAX,1900 +SERVO8_MIN,1100 +SERVO8_REVERSED,0 +SERVO8_TRIM,1500 +SERVO9_FUNCTION,0 +SERVO9_MAX,1900 +SERVO9_MIN,1100 +SERVO9_REVERSED,0 +SERVO9_TRIM,1500 +SID_AXIS,0 +SID_F_START_HZ,0.5 +SID_F_STOP_HZ,40 +SID_MAGNITUDE,15 +SID_T_FADE_IN,15 +SID_T_FADE_OUT,2 +SID_T_REC,70 +SIMPLE,0 +SPRAY_ENABLE,0 +SR0_ADSB,0 +SR0_EXT_STAT,0 +SR0_EXTRA1,0 +SR0_EXTRA2,0 +SR0_EXTRA3,0 +SR0_PARAMS,0 +SR0_POSITION,0 +SR0_RAW_CTRL,0 +SR0_RAW_SENS,0 +SR0_RC_CHAN,0 +SR1_ADSB,0 +SR1_EXT_STAT,0 +SR1_EXTRA1,0 +SR1_EXTRA2,0 +SR1_EXTRA3,0 +SR1_PARAMS,0 +SR1_POSITION,0 +SR1_RAW_CTRL,0 +SR1_RAW_SENS,0 +SR1_RC_CHAN,0 +SR2_ADSB,0 +SR2_EXT_STAT,0 +SR2_EXTRA1,0 +SR2_EXTRA2,0 +SR2_EXTRA3,0 +SR2_PARAMS,0 +SR2_POSITION,0 +SR2_RAW_CTRL,0 +SR2_RAW_SENS,0 +SR2_RC_CHAN,0 +SR3_ADSB,0 +SR3_EXT_STAT,0 +SR3_EXTRA1,0 +SR3_EXTRA2,0 +SR3_EXTRA3,0 +SR3_PARAMS,0 +SR3_POSITION,0 +SR3_RAW_CTRL,0 +SR3_RAW_SENS,0 +SR3_RC_CHAN,0 +SR4_ADSB,0 +SR4_EXT_STAT,0 +SR4_EXTRA1,0 +SR4_EXTRA2,0 +SR4_EXTRA3,0 +SR4_PARAMS,0 +SR4_POSITION,0 +SR4_RAW_CTRL,0 +SR4_RAW_SENS,0 +SR4_RC_CHAN,0 +SR5_ADSB,0 +SR5_EXT_STAT,0 +SR5_EXTRA1,0 +SR5_EXTRA2,0 +SR5_EXTRA3,0 +SR5_PARAMS,0 +SR5_POSITION,0 +SR5_RAW_CTRL,0 +SR5_RAW_SENS,0 +SR5_RC_CHAN,0 +SR6_ADSB,0 +SR6_EXT_STAT,0 +SR6_EXTRA1,0 +SR6_EXTRA2,0 +SR6_EXTRA3,0 +SR6_PARAMS,0 +SR6_POSITION,0 +SR6_RAW_CTRL,0 +SR6_RAW_SENS,0 +SR6_RC_CHAN,0 +SRTL_ACCURACY,2 +SRTL_OPTIONS,0 +SRTL_POINTS,300 +STAT_BOOTCNT,0 +STAT_FLTTIME,0 +STAT_RESET,1 +STAT_RUNTIME,0 +SUPER_SIMPLE,0 +SURFTRAK_MODE,1 +SURFTRAK_TC,1 +SYSID_ENFORCE,0 +SYSID_MYGCS,255 +SYSID_THISMAV,1 +TCAL_ENABLED,0 +TELEM_DELAY,0 +TERRAIN_CACHE_SZ,12 +TERRAIN_ENABLE,1 +TERRAIN_MARGIN,0.05 +TERRAIN_OFS_MAX,30 +TERRAIN_OPTIONS,0 +TERRAIN_SPACING,100 +THR_DZ,100 +THROW_ALT_MAX,0 +THROW_ALT_MIN,0 +THROW_MOT_START,0 +THROW_NEXTMODE,18 +THROW_TYPE,0 +TKOFF_RPM_MAX,0 +TKOFF_RPM_MIN,0 +TKOFF_SLEW_TIME,2 +TKOFF_THR_MAX,0.9 +TUNE,0 +TUNE_MAX,0 +TUNE_MIN,0 +VISO_TYPE,0 +VTX_ENABLE,0 +WINCH_TYPE,0 +WP_NAVALT_MIN,0 +WP_YAW_BEHAVIOR,2 +WPNAV_ACCEL,250 +WPNAV_ACCEL_C,0 +WPNAV_ACCEL_Z,100 +WPNAV_JERK,1 +WPNAV_RADIUS,200 +WPNAV_RFND_USE,1 +WPNAV_SPEED,1000 +WPNAV_SPEED_DN,150 +WPNAV_SPEED_UP,250 +WPNAV_TER_MARGIN,10 +WVANE_ENABLE,0 +ZIGZ_AUTO_ENABLE,0 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/02_imu_temperature_calibration_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/02_imu_temperature_calibration_setup.param index 1c376ef2c..837c6a0a6 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/02_imu_temperature_calibration_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/02_imu_temperature_calibration_setup.param @@ -1,8 +1,8 @@ -BRD_HEAT_TARG,65 # Reasonable for most places on this planet -INS_TCAL1_ENABLE,2 # Activates the temperature calibration for IMU 1 at the next start -INS_TCAL1_TMAX,70 # CubeOrange has an heater that heats up the board to almost 70 deg -INS_TCAL2_ENABLE,2 # Activates the temperature calibration for IMU 2 at the next start -INS_TCAL2_TMAX,70 # CubeOrange has an heater that heats up the board to almost 70 deg -INS_TCAL3_ENABLE,2 # Activates the temperature calibration for IMU 3 at the next start -LOG_BITMASK,524416 # Only for IMU and Raw-IMU -LOG_DISARMED,1 # Gather data for the offline IMU temperature calibration while the FC is disarmed +BRD_HEAT_TARG,65 # Reasonable for most places on this planet +INS_TCAL1_ENABLE,2 # Activates the temperature calibration for IMU 1 at the next start +INS_TCAL1_TMAX,70 # CubeOrange has an heater that heats up the board to almost 70 deg +INS_TCAL2_ENABLE,2 # Activates the temperature calibration for IMU 2 at the next start +INS_TCAL2_TMAX,70 # CubeOrange has an heater that heats up the board to almost 70 deg +INS_TCAL3_ENABLE,2 # Activates the temperature calibration for IMU 3 at the next start +LOG_BITMASK,524416 # Only for IMU and Raw-IMU +LOG_DISARMED,1 # Gather data for the offline IMU temperature calibration while the FC is disarmed diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/03_imu_temperature_calibration_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/03_imu_temperature_calibration_results.param index 33cfc7a59..768c8df2e 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/03_imu_temperature_calibration_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/03_imu_temperature_calibration_results.param @@ -1,42 +1,42 @@ -INS_TCAL1_ACC1_X,1256.403338 -INS_TCAL1_ACC1_Y,93.973534 -INS_TCAL1_ACC1_Z,-2916.686814 -INS_TCAL1_ACC2_X,35.887447 -INS_TCAL1_ACC2_Y,22.875882 -INS_TCAL1_ACC2_Z,-137.877095 -INS_TCAL1_ACC3_X,0.001474 -INS_TCAL1_ACC3_Y,0.196582 -INS_TCAL1_ACC3_Z,-1.224162 -INS_TCAL1_ENABLE,0 -INS_TCAL1_GYR1_X,-507.582949 -INS_TCAL1_GYR1_Y,-652.682326 -INS_TCAL1_GYR1_Z,-95.206169 -INS_TCAL1_GYR2_X,-23.486205 -INS_TCAL1_GYR2_Y,-24.435689 -INS_TCAL1_GYR2_Z,-8.391146 -INS_TCAL1_GYR3_X,-0.259612 -INS_TCAL1_GYR3_Y,-0.331278 -INS_TCAL1_GYR3_Z,-0.095689 -INS_TCAL1_TMAX,39.2 -INS_TCAL1_TMIN,-5.4 -INS_TCAL2_ACC1_X,5971.83104 -INS_TCAL2_ACC1_Y,2702.965981 -INS_TCAL2_ACC1_Z,-7246.282228 -INS_TCAL2_ACC2_X,-1.73141 -INS_TCAL2_ACC2_Y,-94.85933 -INS_TCAL2_ACC2_Z,102.896738 -INS_TCAL2_ACC3_X,-0.439389 -INS_TCAL2_ACC3_Y,-3.913247 -INS_TCAL2_ACC3_Z,2.63767 -INS_TCAL2_ENABLE,0 -INS_TCAL2_GYR1_X,-12.407282 -INS_TCAL2_GYR1_Y,61.287636 -INS_TCAL2_GYR1_Z,-119.993955 -INS_TCAL2_GYR2_X,-3.454038 -INS_TCAL2_GYR2_Y,4.779278 -INS_TCAL2_GYR2_Z,-16.104837 -INS_TCAL2_GYR3_X,-0.05665 -INS_TCAL2_GYR3_Y,0.069658 -INS_TCAL2_GYR3_Z,-0.344826 -INS_TCAL2_TMAX,38.9 -INS_TCAL2_TMIN,-2.4 +INS_TCAL1_ACC1_X,1256.403338 +INS_TCAL1_ACC1_Y,93.973534 +INS_TCAL1_ACC1_Z,-2916.686814 +INS_TCAL1_ACC2_X,35.887447 +INS_TCAL1_ACC2_Y,22.875882 +INS_TCAL1_ACC2_Z,-137.877095 +INS_TCAL1_ACC3_X,0.001474 +INS_TCAL1_ACC3_Y,0.196582 +INS_TCAL1_ACC3_Z,-1.224162 +INS_TCAL1_ENABLE,0 +INS_TCAL1_GYR1_X,-507.582949 +INS_TCAL1_GYR1_Y,-652.682326 +INS_TCAL1_GYR1_Z,-95.206169 +INS_TCAL1_GYR2_X,-23.486205 +INS_TCAL1_GYR2_Y,-24.435689 +INS_TCAL1_GYR2_Z,-8.391146 +INS_TCAL1_GYR3_X,-0.259612 +INS_TCAL1_GYR3_Y,-0.331278 +INS_TCAL1_GYR3_Z,-0.095689 +INS_TCAL1_TMAX,39.2 +INS_TCAL1_TMIN,-5.4 +INS_TCAL2_ACC1_X,5971.83104 +INS_TCAL2_ACC1_Y,2702.965981 +INS_TCAL2_ACC1_Z,-7246.282228 +INS_TCAL2_ACC2_X,-1.73141 +INS_TCAL2_ACC2_Y,-94.85933 +INS_TCAL2_ACC2_Z,102.896738 +INS_TCAL2_ACC3_X,-0.439389 +INS_TCAL2_ACC3_Y,-3.913247 +INS_TCAL2_ACC3_Z,2.63767 +INS_TCAL2_ENABLE,0 +INS_TCAL2_GYR1_X,-12.407282 +INS_TCAL2_GYR1_Y,61.287636 +INS_TCAL2_GYR1_Z,-119.993955 +INS_TCAL2_GYR2_X,-3.454038 +INS_TCAL2_GYR2_Y,4.779278 +INS_TCAL2_GYR2_Z,-16.104837 +INS_TCAL2_GYR3_X,-0.05665 +INS_TCAL2_GYR3_Y,0.069658 +INS_TCAL2_GYR3_Z,-0.344826 +INS_TCAL2_TMAX,38.9 +INS_TCAL2_TMIN,-2.4 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/04_board_orientation.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/04_board_orientation.param index 7fcc74968..f60639628 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/04_board_orientation.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/04_board_orientation.param @@ -1,3 +1,3 @@ -AHRS_ORIENTATION,0 # Point forward in the direction of travel -LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now -LOG_DISARMED,0 # Log disarmed was only required for offline IMU temperature calibration +AHRS_ORIENTATION,0 # Point forward in the direction of travel +LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now +LOG_DISARMED,0 # Log disarmed was only required for offline IMU temperature calibration diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/05_remote_controller.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/05_remote_controller.param index 06b140c5e..e237dbb97 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/05_remote_controller.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/05_remote_controller.param @@ -1,10 +1,10 @@ -ARMING_RUDDER,2 -FS_THR_VALUE,970 # A bit lower to be on the safe side -RC_OPTIONS,32 -RC_PROTOCOLS,8 # Selected in the component editor -RC10_OPTION,0 -RC6_OPTION,4 # Return home automatically if needed -RC7_OPTION,300 # For emergencies, be able to stop all motors at once -RC8_OPTION,31 -RC9_OPTION,0 -RSSI_TYPE,0 +ARMING_RUDDER,2 +FS_THR_VALUE,970 # A bit lower to be on the safe side +RC_OPTIONS,32 +RC_PROTOCOLS,8 # Selected in the component editor +RC10_OPTION,0 +RC6_OPTION,4 # Return home automatically if needed +RC7_OPTION,300 # For emergencies, be able to stop all motors at once +RC8_OPTION,31 +RC9_OPTION,0 +RSSI_TYPE,0 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/06_telemetry.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/06_telemetry.param index a6f8c9502..8cc7754bc 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/06_telemetry.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/06_telemetry.param @@ -1,4 +1,4 @@ -BRD_SER1_RTSCTS,1 # Holybro telemetry radio has RTS/CTS pins, so use them -SERIAL1_BAUD,57 # Holybro telemetry radio recomended datarate -SERIAL1_OPTIONS,0 -SERIAL1_PROTOCOL,2 +BRD_SER1_RTSCTS,1 # Holybro telemetry radio has RTS/CTS pins, so use them +SERIAL1_BAUD,57 # Holybro telemetry radio recommended datarate +SERIAL1_OPTIONS,0 +SERIAL1_PROTOCOL,2 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/07_esc.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/07_esc.param index 28033ddbc..7744ee524 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/07_esc.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/07_esc.param @@ -1,27 +1,27 @@ -ATC_RAT_PIT_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html -ATC_RAT_RLL_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html -ATC_RAT_YAW_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html -MOT_HOVER_LEARN,2 # So that it can tune the throttle controller on 20_throttle_controller.param file -MOT_PWM_MAX,1920 -MOT_PWM_MIN,1120 -MOT_PWM_TYPE,0 # Specified in component editor window -MOT_SPOOL_TIME,0.5 -NTF_BUZZ_TYPES,5 # Our CubeOrange have it self buzzer. -NTF_LED_TYPES,123079 -PSC_ACCZ_SMAX,1000 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html -SERVO_BLH_POLES,14 # Specified in component editor window -SERVO_FTW_POLES,14 # Specified in component editor window -SERVO1_MAX,1900 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO1_MIN,1100 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO1_TRIM,1500 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO2_MAX,1900 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO2_MIN,1100 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO2_TRIM,1500 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO3_MAX,1900 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO3_MIN,1100 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO3_TRIM,1500 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO4_MAX,1900 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO4_MIN,1100 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -SERVO4_TRIM,1500 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) -TKOFF_RPM_MIN,0 # No ESC telemetry available, so no way to measure RPM -TKOFF_SLEW_TIME,2 +ATC_RAT_PIT_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_RLL_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +ATC_RAT_YAW_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +MOT_HOVER_LEARN,2 # So that it can tune the throttle controller on 20_throttle_controller.param file +MOT_PWM_MAX,1920 +MOT_PWM_MIN,1120 +MOT_PWM_TYPE,0 # Specified in component editor window +MOT_SPOOL_TIME,0.5 +NTF_BUZZ_TYPES,5 # Our CubeOrange have it self buzzer. +NTF_LED_TYPES,123079 +PSC_ACCZ_SMAX,1000 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html +SERVO_BLH_POLES,14 # Specified in component editor window +SERVO_FTW_POLES,14 # Specified in component editor window +SERVO1_MAX,1900 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO1_MIN,1100 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO1_TRIM,1500 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO2_MAX,1900 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO2_MIN,1100 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO2_TRIM,1500 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO3_MAX,1900 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO3_MIN,1100 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO3_TRIM,1500 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO4_MAX,1900 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO4_MIN,1100 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +SERVO4_TRIM,1500 # Operating Pulse Width:1100-1900us(Fixed or cannot be Programmed) +TKOFF_RPM_MIN,0 # No ESC telemetry available, so no way to measure RPM +TKOFF_SLEW_TIME,2 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/08_batt1.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/08_batt1.param index d630818be..595037c2a 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/08_batt1.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/08_batt1.param @@ -1,17 +1,17 @@ -BATT_AMP_PERVLT,36.363998 # Provided by the manufacturer -BATT_ARM_VOLT,14.7 # Do not allow arming below this voltage -BATT_CAPACITY,5000 # Total battery capacity specified in the component editor -BATT_CRT_MAH,0 # No capacity based failsafes, too unreliable -BATT_CRT_VOLT,13.2 # (Critical voltage + 0.0) x no. of cells -BATT_CURR_PIN,3 -BATT_FS_CRT_ACT,1 # Land ASAP -BATT_FS_LOW_ACT,2 # Return and land at home or rally point -BATT_FS_VOLTSRC,1 -BATT_LOW_MAH,0 # No capacity based failsafes, too unreliable -BATT_LOW_VOLT,13.6 # (Low voltage + 0.0) x no. of cells -BATT_MONITOR,4 # Selected in component editor window -BATT_VOLT_MULT,18.181999 # Provided by the manufacturer -BATT_VOLT_PIN,2 -BRD_TYPE,24 -MOT_BAT_VOLT_MAX,16.8 # (Max voltage + 0.0) x no. of cells -MOT_BAT_VOLT_MIN,13.2 # (Critical voltage + 0.0) x no. of cells +BATT_AMP_PERVLT,36.363998 # Provided by the manufacturer +BATT_ARM_VOLT,14.7 # Do not allow arming below this voltage +BATT_CAPACITY,5000 # Total battery capacity specified in the component editor +BATT_CRT_MAH,0 # No capacity based failsafes, too unreliable +BATT_CRT_VOLT,13.2 # (Critical voltage + 0.0) x no. of cells +BATT_CURR_PIN,3 +BATT_FS_CRT_ACT,1 # Land ASAP +BATT_FS_LOW_ACT,2 # Return and land at home or rally point +BATT_FS_VOLTSRC,1 +BATT_LOW_MAH,0 # No capacity based failsafes, too unreliable +BATT_LOW_VOLT,13.6 # (Low voltage + 0.0) x no. of cells +BATT_MONITOR,4 # Selected in component editor window +BATT_VOLT_MULT,18.181999 # Provided by the manufacturer +BATT_VOLT_PIN,2 +BRD_TYPE,24 +MOT_BAT_VOLT_MAX,16.8 # (Max voltage + 0.0) x no. of cells +MOT_BAT_VOLT_MIN,13.2 # (Critical voltage + 0.0) x no. of cells diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/10_gnss.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/10_gnss.param index 1a549cdaa..b7fed7f95 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/10_gnss.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/10_gnss.param @@ -1,13 +1,13 @@ -BRD_BOOT_DELAY,0 -BRD_SAFETY_DEFLT,0 # The button is broken on this vehicle -CAN_D1_PROTOCOL,0 -CAN_P1_DRIVER,0 -GPS_AUTO_SWITCH,0 -GPS1_GNSS_MODE,7 -GPS1_POS_X,0 -GPS1_POS_Y,0 -GPS1_POS_Z,0 -GPS1_TYPE,2 # Defined in component editor -NTF_LED_TYPES,123079 -SERIAL3_PROTOCOL,5 -WPNAV_RADIUS,200 +BRD_BOOT_DELAY,0 +BRD_SAFETY_DEFLT,0 # The button is broken on this vehicle +CAN_D1_PROTOCOL,0 +CAN_P1_DRIVER,0 +GPS_AUTO_SWITCH,0 +GPS1_GNSS_MODE,7 +GPS1_POS_X,0 +GPS1_POS_Y,0 +GPS1_POS_Z,0 +GPS1_TYPE,2 # Defined in component editor +NTF_LED_TYPES,123079 +SERIAL3_PROTOCOL,5 +WPNAV_RADIUS,200 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/11_initial_atc.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/11_initial_atc.param index 830234c09..accea8d3b 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/11_initial_atc.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/11_initial_atc.param @@ -1,18 +1,18 @@ -ATC_ACCEL_P_MAX,116700 # Derived from vehicle component editor propeller size -ATC_ACCEL_R_MAX,116700 # Derived from vehicle component editor propeller size -ATC_ACCEL_Y_MAX,27000 # Derived from vehicle component editor propeller size -ATC_ANG_YAW_P,4.5 # Derived from vehicle component editor propeller size -ATC_RAT_PIT_FLTD,21 # INS_GYRO_FILTER / 2 -ATC_RAT_PIT_FLTE,0 # Initial value, will be improved at a later step -ATC_RAT_PIT_FLTT,21 # INS_GYRO_FILTER / 2 -ATC_RAT_RLL_FLTD,21 # INS_GYRO_FILTER / 2 -ATC_RAT_RLL_FLTE,0 # Initial value, will be improved at a later step -ATC_RAT_RLL_FLTT,21 # INS_GYRO_FILTER / 2 -ATC_RAT_YAW_FLTD,0 # Initial value, will be improved at a later step -ATC_RAT_YAW_FLTE,2 # Initial value, will be improved at a later step -ATC_RAT_YAW_FLTT,21 # INS_GYRO_FILTER / 2 -ATC_THR_MIX_MAN,0.1 # Value for the first couple of flights will be changed later once MOT_THST_HOVER is learned -INS_ACCEL_FILTER,10 # The default is 20Hz but that is too high in most situations -INS_GYRO_FILTER,42 # Derived from vehicle component editor propeller size -MOT_THST_EXPO,0.6 # Derived from vehicle component editor propeller size -MOT_THST_HOVER,0.2 # Hover learn will improve this initial guess +ATC_ACCEL_P_MAX,116700 # Derived from vehicle component editor propeller size +ATC_ACCEL_R_MAX,116700 # Derived from vehicle component editor propeller size +ATC_ACCEL_Y_MAX,27000 # Derived from vehicle component editor propeller size +ATC_ANG_YAW_P,4.5 # Derived from vehicle component editor propeller size +ATC_RAT_PIT_FLTD,21 # INS_GYRO_FILTER / 2 +ATC_RAT_PIT_FLTE,0 # Initial value, will be improved at a later step +ATC_RAT_PIT_FLTT,21 # INS_GYRO_FILTER / 2 +ATC_RAT_RLL_FLTD,21 # INS_GYRO_FILTER / 2 +ATC_RAT_RLL_FLTE,0 # Initial value, will be improved at a later step +ATC_RAT_RLL_FLTT,21 # INS_GYRO_FILTER / 2 +ATC_RAT_YAW_FLTD,0 # Initial value, will be improved at a later step +ATC_RAT_YAW_FLTE,2 # Initial value, will be improved at a later step +ATC_RAT_YAW_FLTT,21 # INS_GYRO_FILTER / 2 +ATC_THR_MIX_MAN,0.1 # Value for the first couple of flights will be changed later once MOT_THST_HOVER is learned +INS_ACCEL_FILTER,10 # The default is 20Hz but that is too high in most situations +INS_GYRO_FILTER,42 # Derived from vehicle component editor propeller size +MOT_THST_EXPO,0.6 # Derived from vehicle component editor propeller size +MOT_THST_HOVER,0.2 # Hover learn will improve this initial guess diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/12_mp_setup_mandatory_hardware.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/12_mp_setup_mandatory_hardware.param index a436715ad..e460a4faa 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/12_mp_setup_mandatory_hardware.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/12_mp_setup_mandatory_hardware.param @@ -1,82 +1,82 @@ -AHRS_TRIM_X,-0.018507 -AHRS_TRIM_Y,-0.001495 -ATC_ACCEL_P_MAX,116700 -ATC_ACCEL_R_MAX,116700 -ATC_ACCEL_Y_MAX,27000 -ATC_RAT_PIT_FLTD,21 # INS_GYRO_FILTER / 2 -ATC_RAT_PIT_FLTT,21 # INS_GYRO_FILTER / 2 -ATC_RAT_RLL_FLTD,21 # INS_GYRO_FILTER / 2 -ATC_RAT_RLL_FLTT,21 # INS_GYRO_FILTER / 2 -ATC_RAT_YAW_FLTE,2 -ATC_RAT_YAW_FLTT,21 # INS_GYRO_FILTER / 2 -COMPASS_EXTERNAL,1 -COMPASS_ORIENT,0 -COMPASS_PRIO1_ID,592905 -COMPASS_USE2,1 -COMPASS_USE3,0 -FENCE_ACTION,1 -FENCE_ALT_MAX,30 -FENCE_ENABLE,0 -FENCE_RADIUS,150 -FLTMODE1,0 -FLTMODE2,0 -FLTMODE3,2 -FLTMODE4,4 -FLTMODE5,5 -FLTMODE6,5 -FRAME_CLASS,1 -FRAME_TYPE,1 -INS_ACC1_CALTEMP,43.062431 -INS_ACC2_CALTEMP,34.5 -INS_ACC2SCAL_X,0.977191 -INS_ACC2SCAL_Y,0.990294 -INS_ACC2SCAL_Z,0.991804 -INS_ACC3SCAL_X,0 -INS_ACC3SCAL_Y,0 -INS_ACC3SCAL_Z,0 -INS_ACCSCAL_X,0.998941 -INS_ACCSCAL_Y,0.998003 -INS_ACCSCAL_Z,0.99054 -INS_GYRO_FILTER,42 -INS_USE3,1 -MOT_BAT_VOLT_MAX,16.799999 -MOT_BAT_VOLT_MIN,13.2 -MOT_SPIN_ARM,0.1 -MOT_SPIN_MAX,0.95 -MOT_SPIN_MIN,0.15 -MOT_THST_EXPO,0.6 -MOT_THST_HOVER,0.301157 -RC1_MAX,2006 -RC1_MIN,982 -RC1_TRIM,1500 -RC10_MAX,1900 -RC10_MIN,1100 -RC10_TRIM,1500 -RC2_MAX,2006 -RC2_MIN,982 -RC2_TRIM,1496 -RC3_MAX,2006 -RC3_MIN,982 -RC3_TRIM,982 -RC4_MAX,2006 -RC4_MIN,982 -RC4_TRIM,1490 -RC5_MAX,2006 -RC5_MIN,982 -RC5_TRIM,2006 -RC6_MAX,2006 -RC6_MIN,982 -RC6_TRIM,982 -RC7_MAX,2006 -RC7_MIN,982 -RC7_TRIM,982 -RC8_MAX,2006 -RC8_MIN,982 -RC8_TRIM,982 -RC9_MAX,1900 -RC9_MIN,1100 -RC9_TRIM,1500 -SERVO1_FUNCTION,33 -SERVO2_FUNCTION,34 -SERVO3_FUNCTION,35 -SERVO4_FUNCTION,36 +AHRS_TRIM_X,-0.018507 +AHRS_TRIM_Y,-0.001495 +ATC_ACCEL_P_MAX,116700 +ATC_ACCEL_R_MAX,116700 +ATC_ACCEL_Y_MAX,27000 +ATC_RAT_PIT_FLTD,21 # INS_GYRO_FILTER / 2 +ATC_RAT_PIT_FLTT,21 # INS_GYRO_FILTER / 2 +ATC_RAT_RLL_FLTD,21 # INS_GYRO_FILTER / 2 +ATC_RAT_RLL_FLTT,21 # INS_GYRO_FILTER / 2 +ATC_RAT_YAW_FLTE,2 +ATC_RAT_YAW_FLTT,21 # INS_GYRO_FILTER / 2 +COMPASS_EXTERNAL,1 +COMPASS_ORIENT,0 +COMPASS_PRIO1_ID,592905 +COMPASS_USE2,1 +COMPASS_USE3,0 +FENCE_ACTION,1 +FENCE_ALT_MAX,30 +FENCE_ENABLE,0 +FENCE_RADIUS,150 +FLTMODE1,0 +FLTMODE2,0 +FLTMODE3,2 +FLTMODE4,4 +FLTMODE5,5 +FLTMODE6,5 +FRAME_CLASS,1 +FRAME_TYPE,1 +INS_ACC1_CALTEMP,43.062431 +INS_ACC2_CALTEMP,34.5 +INS_ACC2SCAL_X,0.977191 +INS_ACC2SCAL_Y,0.990294 +INS_ACC2SCAL_Z,0.991804 +INS_ACC3SCAL_X,0 +INS_ACC3SCAL_Y,0 +INS_ACC3SCAL_Z,0 +INS_ACCSCAL_X,0.998941 +INS_ACCSCAL_Y,0.998003 +INS_ACCSCAL_Z,0.99054 +INS_GYRO_FILTER,42 +INS_USE3,1 +MOT_BAT_VOLT_MAX,16.799999 +MOT_BAT_VOLT_MIN,13.2 +MOT_SPIN_ARM,0.1 +MOT_SPIN_MAX,0.95 +MOT_SPIN_MIN,0.15 +MOT_THST_EXPO,0.6 +MOT_THST_HOVER,0.301157 +RC1_MAX,2006 +RC1_MIN,982 +RC1_TRIM,1500 +RC10_MAX,1900 +RC10_MIN,1100 +RC10_TRIM,1500 +RC2_MAX,2006 +RC2_MIN,982 +RC2_TRIM,1496 +RC3_MAX,2006 +RC3_MIN,982 +RC3_TRIM,982 +RC4_MAX,2006 +RC4_MIN,982 +RC4_TRIM,1490 +RC5_MAX,2006 +RC5_MIN,982 +RC5_TRIM,2006 +RC6_MAX,2006 +RC6_MIN,982 +RC6_TRIM,982 +RC7_MAX,2006 +RC7_MIN,982 +RC7_TRIM,982 +RC8_MAX,2006 +RC8_MIN,982 +RC8_TRIM,982 +RC9_MAX,1900 +RC9_MIN,1100 +RC9_TRIM,1500 +SERVO1_FUNCTION,33 +SERVO2_FUNCTION,34 +SERVO3_FUNCTION,35 +SERVO4_FUNCTION,36 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/13_general_configuration.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/13_general_configuration.param index cefd25bac..ab7cc0388 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/13_general_configuration.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/13_general_configuration.param @@ -1,29 +1,29 @@ -ARMING_CHECK,1 # Perform all arming checks. If you have a problem fix its source. Do NOT change this -AUTO_OPTIONS,0 -BRD_RTC_TZ_MIN,60 # Berlin time zone -BRD_SAFETY_MASK,16383 # Main motors can operate -BRD_SAFETYOPTION,0 # No safety button -EK3_SRC1_POSZ,1 # Use the default, it is safer, only barometer will be used -FENCE_TYPE,7 # obey local regulations and safety measures -FS_EKF_ACTION,1 -FS_OPTIONS,24 # No need to failsafe if already landing -INS_ACCEL_FILTER,10 # the default is 20 and that lets too much noise in -INS_POS1_X,0 -INS_POS1_Y,0 -INS_POS2_X,0 -INS_POS2_Y,0 -LAND_ALT_LOW,1000 -NTF_BUZZ_PIN,-1 -PRX1_TYPE,0 -RNGFND1_TYPE,0 -RTL_ALT,500 # RTL at 5m is needed inside the hangar -RTL_LOIT_TIME,2000 # The default is too long. This reduces the time -SCHED_LOOP_RATE,400 # Stay on default loop rate, this is a slow vehicle -SCR_ENABLE,1 # Use lua scripting for VTOL-Quicktune, MagFit automation and wind speed estimation automation -SERIAL2_BAUD,57 # The FrSky Archer R6 telemetry baudrate -SERIAL2_OPTIONS,7 # The FrSky Archer R6 telemetry needs this to work -SERIAL2_PROTOCOL,10 # The FrSky Archer R6 telemetry protocol -SERIAL4_BAUD,230 -SERIAL4_PROTOCOL,-1 -SERIAL7_BAUD,115 -SERIAL7_PROTOCOL,-1 +ARMING_CHECK,1 # Perform all arming checks. If you have a problem fix its source. Do NOT change this +AUTO_OPTIONS,0 +BRD_RTC_TZ_MIN,60 # Berlin time zone +BRD_SAFETY_MASK,16383 # Main motors can operate +BRD_SAFETYOPTION,0 # No safety button +EK3_SRC1_POSZ,1 # Use the default, it is safer, only barometer will be used +FENCE_TYPE,7 # obey local regulations and safety measures +FS_EKF_ACTION,1 +FS_OPTIONS,24 # No need to failsafe if already landing +INS_ACCEL_FILTER,10 # the default is 20 and that lets too much noise in +INS_POS1_X,0 +INS_POS1_Y,0 +INS_POS2_X,0 +INS_POS2_Y,0 +LAND_ALT_LOW,1000 +NTF_BUZZ_PIN,-1 +PRX1_TYPE,0 +RNGFND1_TYPE,0 +RTL_ALT,500 # RTL at 5m is needed inside the hangar +RTL_LOIT_TIME,2000 # The default is too long. This reduces the time +SCHED_LOOP_RATE,400 # Stay on default loop rate, this is a slow vehicle +SCR_ENABLE,1 # Use lua scripting for VTOL-Quicktune, MagFit automation and wind speed estimation automation +SERIAL2_BAUD,57 # The FrSky Archer R6 telemetry baudrate +SERIAL2_OPTIONS,7 # The FrSky Archer R6 telemetry needs this to work +SERIAL2_PROTOCOL,10 # The FrSky Archer R6 telemetry protocol +SERIAL4_BAUD,230 +SERIAL4_PROTOCOL,-1 +SERIAL7_BAUD,115 +SERIAL7_PROTOCOL,-1 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/14_logging.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/14_logging.param index b22f05e7f..2dcb63df7 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/14_logging.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/14_logging.param @@ -1,7 +1,7 @@ -INS_LOG_BAT_CNT,1024 # the default of 1024 causes some problems with https://firmware.ardupilot.org/Tools/WebTools/FilterReview/ -INS_LOG_BAT_MASK,1 # Use acc and gyro batch logging on F4 processors, gyro raw logging on others -INS_LOG_BAT_OPT,4 # Use pre and post filters acc and gyro batch logging on F4 processors, pre-post gyro raw logging on others -INS_RAW_LOG_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors, pre-post gyro raw logging on others -LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now -LOG_FILE_BUFSIZE,50 # We have a F7 processor, so be a bit conservative -LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot +INS_LOG_BAT_CNT,1024 # the default of 1024 causes some problems with https://firmware.ardupilot.org/Tools/WebTools/FilterReview/ +INS_LOG_BAT_MASK,1 # Use acc and gyro batch logging on F4 processors, gyro raw logging on others +INS_LOG_BAT_OPT,4 # Use pre and post filters acc and gyro batch logging on F4 processors, pre-post gyro raw logging on others +INS_RAW_LOG_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors, pre-post gyro raw logging on others +LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now +LOG_FILE_BUFSIZE,50 # We have a F7 processor, so be a bit conservative +LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/15_motor.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/15_motor.param index 99c926020..3b3a85ccd 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/15_motor.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/15_motor.param @@ -1,4 +1,4 @@ -MOT_SPIN_ARM,0.05 -MOT_SPIN_MAX,0.95 -MOT_SPIN_MIN,0.08 -MOT_THST_EXPO,0.6 +MOT_SPIN_ARM,0.05 +MOT_SPIN_MAX,0.95 +MOT_SPIN_MIN,0.08 +MOT_THST_EXPO,0.6 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/16_pid_adjustment.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/16_pid_adjustment.param index 5eba0bd25..0ac20040b 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/16_pid_adjustment.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/16_pid_adjustment.param @@ -1,13 +1,13 @@ -ATC_ANG_PIT_P,4.5 -ATC_ANG_RLL_P,4.5 -ATC_ANG_YAW_P,4.5 -ATC_INPUT_TC,0.15 -ATC_RAT_PIT_D,0.0036 # = 1* (0.0036 default) -ATC_RAT_PIT_I,0.121 # = 0.896 * (0.135 default) -ATC_RAT_PIT_P,0.121 # = 0.896 * (0.135 default) -ATC_RAT_RLL_D,0.0036 # = 1 * (0.0036 default) -ATC_RAT_RLL_I,0.121 # = 0.896 * (0.135 default) -ATC_RAT_RLL_P,0.121 # = 0.896 * (0.135 default) -ATC_RAT_YAW_D,0 # = 1 * (0 default) -ATC_RAT_YAW_I,0.018 # = 1 * (0.018 default) -ATC_RAT_YAW_P,0.18 # = 1 * (0.18 default) +ATC_ANG_PIT_P,4.5 +ATC_ANG_RLL_P,4.5 +ATC_ANG_YAW_P,4.5 +ATC_INPUT_TC,0.15 +ATC_RAT_PIT_D,0.0036 # = 1* (0.0036 default) +ATC_RAT_PIT_I,0.121 # = 0.896 * (0.135 default) +ATC_RAT_PIT_P,0.121 # = 0.896 * (0.135 default) +ATC_RAT_RLL_D,0.0036 # = 1 * (0.0036 default) +ATC_RAT_RLL_I,0.121 # = 0.896 * (0.135 default) +ATC_RAT_RLL_P,0.121 # = 0.896 * (0.135 default) +ATC_RAT_YAW_D,0 # = 1 * (0 default) +ATC_RAT_YAW_I,0.018 # = 1 * (0.018 default) +ATC_RAT_YAW_P,0.18 # = 1 * (0.18 default) diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/17_remote_id.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/17_remote_id.param index 544641653..8aeeab3a4 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/17_remote_id.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/17_remote_id.param @@ -1,4 +1,4 @@ -DID_CANDRIVER,0 # I don't use a remote id. -DID_ENABLE,0 # I don't use a remote id. -DID_MAVPORT,-1 # I don't use a remote id. -DID_OPTIONS,0 # I don't use a remote id. +DID_CANDRIVER,0 # I don't use a remote id. +DID_ENABLE,0 # I don't use a remote id. +DID_MAVPORT,-1 # I don't use a remote id. +DID_OPTIONS,0 # I don't use a remote id. diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/18_notch_filter_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/18_notch_filter_setup.param index 771530e67..0e3a5f48f 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/18_notch_filter_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/18_notch_filter_setup.param @@ -1,10 +1,10 @@ -INS_FAST_SAMPLE,1 -INS_GYRO_RATE,1 -INS_HNTCH_ATT,20 # this is just a hunch, it must be improved after the first flight (by the next file) -INS_HNTCH_BW,20 # this is just a hunch, it must be improved after the first flight (by the next file) -INS_HNTCH_ENABLE,1 # Use the first notch filter to filter the noise created by the motors/propellers -INS_HNTCH_FREQ,58.8 # Use 1.4 * INS_GYRO_FILTER as a first guess -INS_HNTCH_HMNCS,1 -INS_HNTCH_MODE,1 -INS_HNTCH_OPTS,0 -INS_HNTCH_REF,0.35 +INS_FAST_SAMPLE,1 +INS_GYRO_RATE,1 +INS_HNTCH_ATT,20 # this is just a hunch, it must be improved after the first flight (by the next file) +INS_HNTCH_BW,20 # this is just a hunch, it must be improved after the first flight (by the next file) +INS_HNTCH_ENABLE,1 # Use the first notch filter to filter the noise created by the motors/propellers +INS_HNTCH_FREQ,58.8 # Use 1.4 * INS_GYRO_FILTER as a first guess +INS_HNTCH_HMNCS,1 +INS_HNTCH_MODE,1 +INS_HNTCH_OPTS,0 +INS_HNTCH_REF,0.35 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/19_notch_filter_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/19_notch_filter_results.param index fab334b5e..9864f348f 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/19_notch_filter_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/19_notch_filter_results.param @@ -1,7 +1,7 @@ -INS_HNTCH_ATT,6 # just enough to filter the noise created by the motors/propellers -INS_HNTCH_BW,25 # just enough to filter the noise created by the motors/propellers -INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first notch filter -INS_HNTCH_FREQ,97 # the minimum frequency that the motors are expected to operate at -INS_HNTCH_HMNCS,1 -INS_HNTCH_OPTS,2 -INS_HNTCH_REF,0.32 # MOT_THST_HOVER * SQUARE(min_freq / hover_freq) +INS_HNTCH_ATT,6 # just enough to filter the noise created by the motors/propellers +INS_HNTCH_BW,25 # just enough to filter the noise created by the motors/propellers +INS_HNTCH_FM_RAT,0.75 # Allowed undercutting of the base frequency of the first notch filter +INS_HNTCH_FREQ,97 # the minimum frequency that the motors are expected to operate at +INS_HNTCH_HMNCS,1 +INS_HNTCH_OPTS,2 +INS_HNTCH_REF,0.32 # MOT_THST_HOVER * SQUARE(min_freq / hover_freq) diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/20_throttle_controller.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/20_throttle_controller.param index e5472d3ee..8fbac2cb0 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/20_throttle_controller.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/20_throttle_controller.param @@ -1,3 +1,3 @@ -ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value -PSC_ACCZ_I,0.624502 # Use 2 * MOT_THST_HOVER assuming MOT_THST_HOVER has been correctly learned -PSC_ACCZ_P,0.312251 # Use MOT_THST_HOVER assuming MOT_THST_HOVER has been correctly learned +ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value +PSC_ACCZ_I,0.624502 # Use 2 * MOT_THST_HOVER assuming MOT_THST_HOVER has been correctly learned +PSC_ACCZ_P,0.312251 # Use MOT_THST_HOVER assuming MOT_THST_HOVER has been correctly learned diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/21_ekf_config.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/21_ekf_config.param index b338c4b60..abdf61cce 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/21_ekf_config.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/21_ekf_config.param @@ -1,2 +1,2 @@ -EK3_ACC_P_NSE,0.35 # higher value -> trust accelerometer less, compared to other sources -EK3_ALT_M_NSE,2 # lower value -> trust baro more, compared to other sources +EK3_ACC_P_NSE,0.35 # higher value -> trust accelerometer less, compared to other sources +EK3_ALT_M_NSE,2 # lower value -> trust baro more, compared to other sources diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/22_quick_tune_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/22_quick_tune_setup.param index 1d148dcba..20647a3e0 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/22_quick_tune_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/22_quick_tune_setup.param @@ -1,14 +1,14 @@ -QUIK_AUTO_FILTER,1 -QUIK_AUTO_SAVE,0 -QUIK_AXES,7 -QUIK_DOUBLE_TIME,10 -QUIK_ENABLE,1 # Use VTOL-Quicktune lua script to estimate a good PID starting values -QUIK_GAIN_MARGIN,60 -QUIK_MAX_REDUCE,20 -QUIK_OPTIONS,0 -QUIK_OSC_SMAX,5 -QUIK_RC_FUNC,301 # the script uses this value to listen to RC switch -QUIK_RP_PI_RATIO,1 -QUIK_Y_PI_RATIO,10 -QUIK_YAW_D_MAX,0.01 -QUIK_YAW_P_MAX,0.5 +QUIK_AUTO_FILTER,1 +QUIK_AUTO_SAVE,0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10 +QUIK_ENABLE,1 # Use VTOL-Quicktune lua script to estimate a good PID starting values +QUIK_GAIN_MARGIN,60 +QUIK_MAX_REDUCE,20 +QUIK_OPTIONS,0 +QUIK_OSC_SMAX,5 +QUIK_RC_FUNC,301 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1 +QUIK_Y_PI_RATIO,10 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/23_quick_tune_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/23_quick_tune_results.param index ce87dd44c..4670d43f4 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/23_quick_tune_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/23_quick_tune_results.param @@ -1,10 +1,10 @@ -ATC_RAT_PIT_D,0.003372 # Tuned outside -ATC_RAT_PIT_I,0.229527 # Tuned outside -ATC_RAT_PIT_P,0.229527 # Tuned outside -ATC_RAT_RLL_D,0.003207 # Tuned outside -ATC_RAT_RLL_I,0.184505 # Tuned outside -ATC_RAT_RLL_P,0.184505 # Tuned outside -ATC_RAT_YAW_D,0.01 # Tuned outside -ATC_RAT_YAW_FLTD,21 # Tuned outside -ATC_RAT_YAW_I,0.05 # Tuned outside -ATC_RAT_YAW_P,0.5 # Tuned outside +ATC_RAT_PIT_D,0.003372 # Tuned outside +ATC_RAT_PIT_I,0.229527 # Tuned outside +ATC_RAT_PIT_P,0.229527 # Tuned outside +ATC_RAT_RLL_D,0.003207 # Tuned outside +ATC_RAT_RLL_I,0.184505 # Tuned outside +ATC_RAT_RLL_P,0.184505 # Tuned outside +ATC_RAT_YAW_D,0.01 # Tuned outside +ATC_RAT_YAW_FLTD,21 # Tuned outside +ATC_RAT_YAW_I,0.05 # Tuned outside +ATC_RAT_YAW_P,0.5 # Tuned outside diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/24_inflight_magnetometer_fit_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/24_inflight_magnetometer_fit_setup.param index c60f5b17d..041f34788 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/24_inflight_magnetometer_fit_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/24_inflight_magnetometer_fit_setup.param @@ -1,8 +1,8 @@ -MAGH_ALT_DELTA,10 # Height difference between the highest and lowest point of the eight -MAGH_B,1.2 # Geometric factor for the width of the eight -MAGH_CMD,117 # Script_Time command value for identification of the script -MAGH_COUNT,2 # Number of times the drone repeats the eight -MAGH_LOG_ENABLE,1 # Activates the logging of the MAGH.Active message -MAGH_MIN_SPEED,5 # Starting speed for the mission; slowly adjusts to the general speed in auto-missions -MAGH_NUM_WP,18 # Number of waypoints from which the eight is built -MAGH_USE_LOITER,1 # Sets a Loiter_unlimited command at the beginning of the mission to check the generated waypoints +MAGH_ALT_DELTA,10 # Height difference between the highest and lowest point of the eight +MAGH_B,1.2 # Geometric factor for the width of the eight +MAGH_CMD,117 # Script_Time command value for identification of the script +MAGH_COUNT,2 # Number of times the drone repeats the eight +MAGH_LOG_ENABLE,1 # Activates the logging of the MAGH.Active message +MAGH_MIN_SPEED,5 # Starting speed for the mission; slowly adjusts to the general speed in auto-missions +MAGH_NUM_WP,18 # Number of waypoints from which the eight is built +MAGH_USE_LOITER,1 # Sets a Loiter_unlimited command at the beginning of the mission to check the generated waypoints diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/25_inflight_magnetometer_fit_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/25_inflight_magnetometer_fit_results.param index a28ee8942..6a2cdd24c 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/25_inflight_magnetometer_fit_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/25_inflight_magnetometer_fit_results.param @@ -1,27 +1,27 @@ -COMPASS_DIA_X,1.007825 # Diagonal X component for static compensation of metal in the frame -COMPASS_DIA_Y,0.985828 # Diagonal Y component for static compensation of metal in the frame -COMPASS_DIA_Z,1.006347 # Diagonal Z component for static compensation of metal in the frame -COMPASS_DIA2_X,1.007409 -COMPASS_DIA2_Y,1.04496 -COMPASS_DIA2_Z,0.947631 -COMPASS_MOT_X,0 # Correction value for motor currents in X direction -COMPASS_MOT_Y,0 # Correction value for motor currents in Y direction -COMPASS_MOT_Z,0 # Correction value for motor currents in Z direction -COMPASS_MOT2_X,0 -COMPASS_MOT2_Y,0 -COMPASS_MOT2_Z,0 -COMPASS_MOTCT,0 # Type of interference compensation; two means current-based compensation -COMPASS_ODI_X,-0.002024 # Off-diagonal X component for static compensation of metal in the frame -COMPASS_ODI_Y,0.01556 # Off-diagonal Y component for static compensation of metal in the frame -COMPASS_ODI_Z,0.020036 # Off-diagonal Z component for static compensation of metal in the frame -COMPASS_ODI2_X,-0.002067 -COMPASS_ODI2_Y,-0.017635 -COMPASS_ODI2_Z,0.063169 -COMPASS_OFS_X,-251.846344 # Lateral compass offset to the X axis for static compensation of metal in the frame -COMPASS_OFS_Y,93.755348 # Lateral compass offset to the Y axis for static compensation of metal in the frame -COMPASS_OFS_Z,-188.055771 # Lateral compass offset to the Z axis for static compensation of metal in the frame -COMPASS_OFS2_X,34.652832 -COMPASS_OFS2_Y,43.459236 -COMPASS_OFS2_Z,-70.552094 -COMPASS_SCALE,0.980598 # Scaling factor for compensation -COMPASS_SCALE2,1.005626 +COMPASS_DIA_X,1.007825 # Diagonal X component for static compensation of metal in the frame +COMPASS_DIA_Y,0.985828 # Diagonal Y component for static compensation of metal in the frame +COMPASS_DIA_Z,1.006347 # Diagonal Z component for static compensation of metal in the frame +COMPASS_DIA2_X,1.007409 +COMPASS_DIA2_Y,1.04496 +COMPASS_DIA2_Z,0.947631 +COMPASS_MOT_X,0 # Correction value for motor currents in X direction +COMPASS_MOT_Y,0 # Correction value for motor currents in Y direction +COMPASS_MOT_Z,0 # Correction value for motor currents in Z direction +COMPASS_MOT2_X,0 +COMPASS_MOT2_Y,0 +COMPASS_MOT2_Z,0 +COMPASS_MOTCT,0 # Type of interference compensation; two means current-based compensation +COMPASS_ODI_X,-0.002024 # Off-diagonal X component for static compensation of metal in the frame +COMPASS_ODI_Y,0.01556 # Off-diagonal Y component for static compensation of metal in the frame +COMPASS_ODI_Z,0.020036 # Off-diagonal Z component for static compensation of metal in the frame +COMPASS_ODI2_X,-0.002067 +COMPASS_ODI2_Y,-0.017635 +COMPASS_ODI2_Z,0.063169 +COMPASS_OFS_X,-251.846344 # Lateral compass offset to the X axis for static compensation of metal in the frame +COMPASS_OFS_Y,93.755348 # Lateral compass offset to the Y axis for static compensation of metal in the frame +COMPASS_OFS_Z,-188.055771 # Lateral compass offset to the Z axis for static compensation of metal in the frame +COMPASS_OFS2_X,34.652832 +COMPASS_OFS2_Y,43.459236 +COMPASS_OFS2_Z,-70.552094 +COMPASS_SCALE,0.980598 # Scaling factor for compensation +COMPASS_SCALE2,1.005626 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/26_quick_tune_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/26_quick_tune_setup.param index 1d148dcba..20647a3e0 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/26_quick_tune_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/26_quick_tune_setup.param @@ -1,14 +1,14 @@ -QUIK_AUTO_FILTER,1 -QUIK_AUTO_SAVE,0 -QUIK_AXES,7 -QUIK_DOUBLE_TIME,10 -QUIK_ENABLE,1 # Use VTOL-Quicktune lua script to estimate a good PID starting values -QUIK_GAIN_MARGIN,60 -QUIK_MAX_REDUCE,20 -QUIK_OPTIONS,0 -QUIK_OSC_SMAX,5 -QUIK_RC_FUNC,301 # the script uses this value to listen to RC switch -QUIK_RP_PI_RATIO,1 -QUIK_Y_PI_RATIO,10 -QUIK_YAW_D_MAX,0.01 -QUIK_YAW_P_MAX,0.5 +QUIK_AUTO_FILTER,1 +QUIK_AUTO_SAVE,0 +QUIK_AXES,7 +QUIK_DOUBLE_TIME,10 +QUIK_ENABLE,1 # Use VTOL-Quicktune lua script to estimate a good PID starting values +QUIK_GAIN_MARGIN,60 +QUIK_MAX_REDUCE,20 +QUIK_OPTIONS,0 +QUIK_OSC_SMAX,5 +QUIK_RC_FUNC,301 # the script uses this value to listen to RC switch +QUIK_RP_PI_RATIO,1 +QUIK_Y_PI_RATIO,10 +QUIK_YAW_D_MAX,0.01 +QUIK_YAW_P_MAX,0.5 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/27_quick_tune_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/27_quick_tune_results.param index 484123316..99d93a39e 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/27_quick_tune_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/27_quick_tune_results.param @@ -1,10 +1,10 @@ -ATC_RAT_PIT_D,0.003372 -ATC_RAT_PIT_I,0.229527 -ATC_RAT_PIT_P,0.229527 -ATC_RAT_RLL_D,0.003207 -ATC_RAT_RLL_I,0.184505 -ATC_RAT_RLL_P,0.184505 -ATC_RAT_YAW_D,0.01 -ATC_RAT_YAW_FLTD,21 -ATC_RAT_YAW_I,0.05 -ATC_RAT_YAW_P,0.5 +ATC_RAT_PIT_D,0.003372 +ATC_RAT_PIT_I,0.229527 +ATC_RAT_PIT_P,0.229527 +ATC_RAT_RLL_D,0.003207 +ATC_RAT_RLL_I,0.184505 +ATC_RAT_RLL_P,0.184505 +ATC_RAT_YAW_D,0.01 +ATC_RAT_YAW_FLTD,21 +ATC_RAT_YAW_I,0.05 +ATC_RAT_YAW_P,0.5 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/28_evaluate_the_aircraft_tune_ff_disable.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/28_evaluate_the_aircraft_tune_ff_disable.param index eaa7668c9..92e512243 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/28_evaluate_the_aircraft_tune_ff_disable.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/28_evaluate_the_aircraft_tune_ff_disable.param @@ -1,4 +1,4 @@ -ATC_RATE_FF_ENAB,0 # test the stabilization loops independent of the input shaping -INS_LOG_BAT_MASK,0 # IMU batch logging no longer required, notch filter setup is complete, this reduces processor load and log file size -INS_RAW_LOG_OPT,0 # Gyro raw logging no longer required, notch filter setup is complete, this reduces processor load and log file size -LOG_BITMASK,145118 # Disable fast harmonic notch logging +ATC_RATE_FF_ENAB,0 # test the stabilization loops independent of the input shaping +INS_LOG_BAT_MASK,0 # IMU batch logging no longer required, notch filter setup is complete, this reduces processor load and log file size +INS_RAW_LOG_OPT,0 # Gyro raw logging no longer required, notch filter setup is complete, this reduces processor load and log file size +LOG_BITMASK,145118 # Disable fast harmonic notch logging diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/29_evaluate_the_aircraft_tune_ff_enable.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/29_evaluate_the_aircraft_tune_ff_enable.param index d44d19e88..77242b284 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/29_evaluate_the_aircraft_tune_ff_enable.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/29_evaluate_the_aircraft_tune_ff_enable.param @@ -1 +1 @@ -ATC_RATE_FF_ENAB,1 # re-enable normal operation, activate input shaping +ATC_RATE_FF_ENAB,1 # re-enable normal operation, activate input shaping diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/30_autotune_roll_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/30_autotune_roll_setup.param index 42c1abe37..7b49d6b6b 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/30_autotune_roll_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/30_autotune_roll_setup.param @@ -1,3 +1,3 @@ -AUTOTUNE_AGGR,0.1 -AUTOTUNE_AXES,1 # Autotune roll axis -RC6_OPTION,17 +AUTOTUNE_AGGR,0.1 +AUTOTUNE_AXES,1 # Autotune roll axis +RC6_OPTION,17 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/31_autotune_roll_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/31_autotune_roll_results.param index f99f5788f..7657dd5ac 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/31_autotune_roll_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/31_autotune_roll_results.param @@ -1,5 +1,5 @@ -ATC_ACCEL_R_MAX,189720.921875 # Vehicle has high power-to-weight ratio and is very fast -ATC_ANG_RLL_P,18.379057 # higher value mean a tighter tune -ATC_RAT_RLL_D,0.00528 -ATC_RAT_RLL_I,0.155054 -ATC_RAT_RLL_P,0.155054 +ATC_ACCEL_R_MAX,189720.921875 # Vehicle has high power-to-weight ratio and is very fast +ATC_ANG_RLL_P,18.379057 # higher value mean a tighter tune +ATC_RAT_RLL_D,0.00528 +ATC_RAT_RLL_I,0.155054 +ATC_RAT_RLL_P,0.155054 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/32_autotune_pitch_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/32_autotune_pitch_setup.param index c986f51ea..b98a5426c 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/32_autotune_pitch_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/32_autotune_pitch_setup.param @@ -1,2 +1,2 @@ -AUTOTUNE_AGGR,0.1 # Use the default for now -AUTOTUNE_AXES,2 # Autotune pitch axis +AUTOTUNE_AGGR,0.1 # Use the default for now +AUTOTUNE_AXES,2 # Autotune pitch axis diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/33_autotune_pitch_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/33_autotune_pitch_results.param index 418290def..65c68cb0d 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/33_autotune_pitch_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/33_autotune_pitch_results.param @@ -1,5 +1,5 @@ -ATC_ACCEL_P_MAX,216475.875 -ATC_ANG_PIT_P,24.629694 # higher value mean a tighter tune -ATC_RAT_PIT_D,0.006718 -ATC_RAT_PIT_I,0.180513 -ATC_RAT_PIT_P,0.180513 +ATC_ACCEL_P_MAX,216475.875 +ATC_ANG_PIT_P,24.629694 # higher value mean a tighter tune +ATC_RAT_PIT_D,0.006718 +ATC_RAT_PIT_I,0.180513 +ATC_RAT_PIT_P,0.180513 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/34_autotune_yaw_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/34_autotune_yaw_setup.param index bfffa7045..9f9b947cd 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/34_autotune_yaw_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/34_autotune_yaw_setup.param @@ -1,3 +1,3 @@ -ATC_RAT_YAW_FLTD,10.5 # Use INS_GYRO_FILTER / 4 as a first guess -AUTOTUNE_AGGR,0.1 # Use the default for now -AUTOTUNE_AXES,4 # Autotune yaw axis +ATC_RAT_YAW_FLTD,10.5 # Use INS_GYRO_FILTER / 4 as a first guess +AUTOTUNE_AGGR,0.1 # Use the default for now +AUTOTUNE_AXES,4 # Autotune yaw axis diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/35_autotune_yaw_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/35_autotune_yaw_results.param index 37529a805..dbae4b762 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/35_autotune_yaw_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/35_autotune_yaw_results.param @@ -1,5 +1,5 @@ -ATC_ACCEL_Y_MAX,27161.945312 -ATC_ANG_YAW_P,7.636879 # higher value mean a tighter tune -ATC_RAT_YAW_FLTE,2.090602 -ATC_RAT_YAW_I,0.099616 -ATC_RAT_YAW_P,0.99616 +ATC_ACCEL_Y_MAX,27161.945312 +ATC_ANG_YAW_P,7.636879 # higher value mean a tighter tune +ATC_RAT_YAW_FLTE,2.090602 +ATC_RAT_YAW_I,0.099616 +ATC_RAT_YAW_P,0.99616 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/36_autotune_yawd_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/36_autotune_yawd_setup.param index 64278e2c3..6e5278263 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/36_autotune_yawd_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/36_autotune_yawd_setup.param @@ -1,3 +1,3 @@ -AUTOTUNE_AGGR,0.1 # Use the default for now -AUTOTUNE_AXES,8 # Autotune yaw D axis -AUTOTUNE_MIN_D,0.001 # small copters need small D parameters +AUTOTUNE_AGGR,0.1 # Use the default for now +AUTOTUNE_AXES,8 # Autotune yaw D axis +AUTOTUNE_MIN_D,0.001 # small copters need small D parameters diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/37_autotune_yawd_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/37_autotune_yawd_results.param index 4553b95ae..20ba9e8f8 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/37_autotune_yawd_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/37_autotune_yawd_results.param @@ -1,5 +1,5 @@ -ATC_ACCEL_Y_MAX,27161.945312 -ATC_ANG_YAW_P,7.636879 -ATC_RAT_YAW_D,0.01 # if == to AUTOTUNE_MIN_D, autotune failed -ATC_RAT_YAW_I,0.099616 -ATC_RAT_YAW_P,0.99616 +ATC_ACCEL_Y_MAX,27161.945312 +ATC_ANG_YAW_P,7.636879 +ATC_RAT_YAW_D,0.01 # if == to AUTOTUNE_MIN_D, autotune failed +ATC_RAT_YAW_I,0.099616 +ATC_RAT_YAW_P,0.99616 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/38_autotune_roll_pitch_retune_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/38_autotune_roll_pitch_retune_setup.param index b89718a67..175b61bbe 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/38_autotune_roll_pitch_retune_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/38_autotune_roll_pitch_retune_setup.param @@ -1,2 +1,2 @@ -AUTOTUNE_AGGR,0.1 # Use the default for now -AUTOTUNE_AXES,3 # Autotune roll and pitch axis +AUTOTUNE_AGGR,0.1 # Use the default for now +AUTOTUNE_AXES,3 # Autotune roll and pitch axis diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/39_autotune_roll_pitch_retune_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/39_autotune_roll_pitch_retune_results.param index 83ed1e36f..fdf138cca 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/39_autotune_roll_pitch_retune_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/39_autotune_roll_pitch_retune_results.param @@ -1,10 +1,10 @@ -ATC_ACCEL_P_MAX,216475.875 -ATC_ACCEL_R_MAX,189720.921875 -ATC_ANG_PIT_P,24.629694 # higher value mean a tighter tune -ATC_ANG_RLL_P,18.379057 # higher value mean a tighter tune -ATC_RAT_PIT_D,0.006718 -ATC_RAT_PIT_I,0.180513 -ATC_RAT_PIT_P,0.180513 -ATC_RAT_RLL_D,0.00528 -ATC_RAT_RLL_I,0.155054 -ATC_RAT_RLL_P,0.155054 +ATC_ACCEL_P_MAX,216475.875 +ATC_ACCEL_R_MAX,189720.921875 +ATC_ANG_PIT_P,24.629694 # higher value mean a tighter tune +ATC_ANG_RLL_P,18.379057 # higher value mean a tighter tune +ATC_RAT_PIT_D,0.006718 +ATC_RAT_PIT_I,0.180513 +ATC_RAT_PIT_P,0.180513 +ATC_RAT_RLL_D,0.00528 +ATC_RAT_RLL_I,0.155054 +ATC_RAT_RLL_P,0.155054 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/40_windspeed_estimation.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/40_windspeed_estimation.param index 62b221f42..dcb80529d 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/40_windspeed_estimation.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/40_windspeed_estimation.param @@ -1,5 +1,5 @@ -EK3_DRAG_BCOEF_X,0 -EK3_DRAG_BCOEF_Y,0 -EK3_DRAG_MCOEF,0 -LOG_DISARMED,1 # allow post flight tuning with Replay -LOG_REPLAY,1 # allow post flight tuning with Replay +EK3_DRAG_BCOEF_X,0 +EK3_DRAG_BCOEF_Y,0 +EK3_DRAG_MCOEF,0 +LOG_DISARMED,1 # allow post flight tuning with Replay +LOG_REPLAY,1 # allow post flight tuning with Replay diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/41_barometer_compensation.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/41_barometer_compensation.param index 14629ef2f..e8d825caf 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/41_barometer_compensation.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/41_barometer_compensation.param @@ -1,7 +1,7 @@ -BARO1_WCF_BCK,0 -BARO1_WCF_DN,0 -BARO1_WCF_ENABLE,0 -BARO1_WCF_FWD,0 -BARO1_WCF_LFT,0 -BARO1_WCF_RGT,0 -BARO1_WCF_UP,0 +BARO1_WCF_BCK,0 +BARO1_WCF_DN,0 +BARO1_WCF_ENABLE,0 +BARO1_WCF_FWD,0 +BARO1_WCF_LFT,0 +BARO1_WCF_RGT,0 +BARO1_WCF_UP,0 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/42_system_id_roll.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/42_system_id_roll.param index 5a42c071e..8953eb26b 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/42_system_id_roll.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/42_system_id_roll.param @@ -1,21 +1,21 @@ -ANGLE_MAX,3000 # limit the angle to limit the speed at SID-chirp low-frequencies -ARMING_CHECK,30174 # disable Parameter check because we need to set ATC_RAT_RLL_I out-of-range (was 1) -ATC_ANG_PIT_P,4.5 # reset to default to not interfere with sysID -ATC_ANG_RLL_P,4.5 # reset to default to not interfere with sysID -ATC_ANG_YAW_P,4.5 # reset to default to not interfere with sysID -ATC_RAT_RLL_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal -ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal -FLTMODE6,25 # Activate sysid instead of loiter -LOG_BITMASK,704510 # attitude sample rate at loop rate -LOG_DISARMED,0 # was only needed for wind speed estimation -LOG_REPLAY,0 # was only needed for wind speed estimation -SID_AXIS,10 # Inject chip on the mixer roll signal -SID_F_START_HZ,0.1 -SID_F_STOP_HZ,10 -SID_MAGNITUDE,0.15 -SID_T_FADE_IN,5 -SID_T_FADE_OUT,5 -SID_T_REC,130 -TUNE,0 # System identification magnitude -TUNE_MAX,0.3 # System identification max magnitude -TUNE_MIN,0.05 # System identification min magnitude +ANGLE_MAX,3000 # limit the angle to limit the speed at SID-chirp low-frequencies +ARMING_CHECK,30174 # disable Parameter check because we need to set ATC_RAT_RLL_I out-of-range (was 1) +ATC_ANG_PIT_P,4.5 # reset to default to not interfere with sysID +ATC_ANG_RLL_P,4.5 # reset to default to not interfere with sysID +ATC_ANG_YAW_P,4.5 # reset to default to not interfere with sysID +ATC_RAT_RLL_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +FLTMODE6,25 # Activate sysid instead of loiter +LOG_BITMASK,704510 # attitude sample rate at loop rate +LOG_DISARMED,0 # was only needed for wind speed estimation +LOG_REPLAY,0 # was only needed for wind speed estimation +SID_AXIS,10 # Inject chip on the mixer roll signal +SID_F_START_HZ,0.1 +SID_F_STOP_HZ,10 +SID_MAGNITUDE,0.15 +SID_T_FADE_IN,5 +SID_T_FADE_OUT,5 +SID_T_REC,130 +TUNE,0 # System identification magnitude +TUNE_MAX,0.3 # System identification max magnitude +TUNE_MIN,0.05 # System identification min magnitude diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/43_system_id_pitch.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/43_system_id_pitch.param index 7a37ed6f1..e8d855c71 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/43_system_id_pitch.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/43_system_id_pitch.param @@ -1,10 +1,10 @@ -ATC_RAT_PIT_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal -ATC_RAT_RLL_I,0.155054 # we are not performing system identification on the roll axis, so restore it to the autotuned value -ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal -SID_AXIS,11 # Inject chip on the mixer pitch signal -SID_F_START_HZ,0.1 -SID_F_STOP_HZ,10 -SID_MAGNITUDE,0.15 -SID_T_FADE_IN,5 -SID_T_FADE_OUT,5 -SID_T_REC,130 +ATC_RAT_PIT_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +ATC_RAT_RLL_I,0.155054 # we are not performing system identification on the roll axis, so restore it to the autotuned value +ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +SID_AXIS,11 # Inject chip on the mixer pitch signal +SID_F_START_HZ,0.1 +SID_F_STOP_HZ,10 +SID_MAGNITUDE,0.15 +SID_T_FADE_IN,5 +SID_T_FADE_OUT,5 +SID_T_REC,130 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/44_system_id_yaw.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/44_system_id_yaw.param index 02bc9434f..5c0fd52af 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/44_system_id_yaw.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/44_system_id_yaw.param @@ -1,10 +1,10 @@ -ATC_RAT_PIT_I,0.180513 # we are not performing system identification on the pitch axis, so restore it to the autotuned value -ATC_RAT_YAW_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal -ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal -SID_AXIS,12 # Inject chip on the mixer yaw signal -SID_F_START_HZ,0.1 -SID_F_STOP_HZ,10 -SID_MAGNITUDE,0.55 -SID_T_FADE_IN,5 -SID_T_FADE_OUT,5 -SID_T_REC,130 +ATC_RAT_PIT_I,0.180513 # we are not performing system identification on the pitch axis, so restore it to the autotuned value +ATC_RAT_YAW_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +SID_AXIS,12 # Inject chip on the mixer yaw signal +SID_F_START_HZ,0.1 +SID_F_STOP_HZ,10 +SID_MAGNITUDE,0.55 +SID_T_FADE_IN,5 +SID_T_FADE_OUT,5 +SID_T_REC,130 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/45_system_id_thrust.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/45_system_id_thrust.param index ede128184..f698d14d8 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/45_system_id_thrust.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/45_system_id_thrust.param @@ -1,10 +1,10 @@ -ATC_RAT_YAW_I,0.099616 # we are not performing system identification on the yaw axis, so restore it to the autotuned value -ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal -PSC_ACCZ_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal -SID_AXIS,13 # Inject chip on the mixer thrust signal -SID_F_START_HZ,0.2 -SID_F_STOP_HZ,10 -SID_MAGNITUDE,0.12 -SID_T_FADE_IN,10 -SID_T_FADE_OUT,5 -SID_T_REC,100 +ATC_RAT_YAW_I,0.099616 # we are not performing system identification on the yaw axis, so restore it to the autotuned value +ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +PSC_ACCZ_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +SID_AXIS,13 # Inject chip on the mixer thrust signal +SID_F_START_HZ,0.2 +SID_F_STOP_HZ,10 +SID_MAGNITUDE,0.12 +SID_T_FADE_IN,10 +SID_T_FADE_OUT,5 +SID_T_REC,100 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/46_analytical_pid_optimization.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/46_analytical_pid_optimization.param index 907b3502c..3e032a84d 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/46_analytical_pid_optimization.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/46_analytical_pid_optimization.param @@ -1,4 +1,4 @@ -ARMING_CHECK,1 # Normal state for everyday use -ATC_RATE_FF_ENAB,1 # Restore value now that system identification is done -PSC_ACCZ_I,0.624502 # now that system identification on thrust has been completed, restore it to 2 • MOT_THST_HOVER -SID_AXIS,0 # No more system identification chip injections +ARMING_CHECK,1 # Normal state for everyday use +ATC_RATE_FF_ENAB,1 # Restore value now that system identification is done +PSC_ACCZ_I,0.624502 # now that system identification on thrust has been completed, restore it to 2 • MOT_THST_HOVER +SID_AXIS,0 # No more system identification chip injections diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/47_position_controller.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/47_position_controller.param index 73f3a3d99..699eb890c 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/47_position_controller.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/47_position_controller.param @@ -1,13 +1,13 @@ -ANGLE_MAX,4500 -LOG_BITMASK,145150 # Add Navigation logging -LOIT_ACC_MAX,500 -LOIT_BRK_ACCEL,250 -LOIT_BRK_DELAY,1 -LOIT_BRK_JERK,500 -PSC_VELXY_FF,0 # PSCN.AE/PSCN.VE if you have flown North-South or PSCE.AE/PSCE.VE if you have flown East-West -WPNAV_ACCEL,100 # high speed missions in auto -WPNAV_ACCEL_C,0 # 2 * WPNAV_ACCEL so that the cornering behaviour is mostly controlled by WPNAV_RADIUS https://github.com/ArduPilot/ardupilot/pull/25928 -WPNAV_ACCEL_Z,100 # high speed missions in auto -WPNAV_JERK,1 # high speed missions in auto -WPNAV_SPEED,80 # high speed missions in auto -WPNAV_SPEED_DN,100 # high speed missions in auto +ANGLE_MAX,4500 +LOG_BITMASK,145150 # Add Navigation logging +LOIT_ACC_MAX,500 +LOIT_BRK_ACCEL,250 +LOIT_BRK_DELAY,1 +LOIT_BRK_JERK,500 +PSC_VELXY_FF,0 # PSCN.AE/PSCN.VE if you have flown North-South or PSCE.AE/PSCE.VE if you have flown East-West +WPNAV_ACCEL,100 # high speed missions in auto +WPNAV_ACCEL_C,0 # 2 * WPNAV_ACCEL so that the cornering behaviour is mostly controlled by WPNAV_RADIUS https://github.com/ArduPilot/ardupilot/pull/25928 +WPNAV_ACCEL_Z,100 # high speed missions in auto +WPNAV_JERK,1 # high speed missions in auto +WPNAV_SPEED,80 # high speed missions in auto +WPNAV_SPEED_DN,100 # high speed missions in auto diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/48_guided_operation.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/48_guided_operation.param index 2b5b04079..a1aed6e17 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/48_guided_operation.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/48_guided_operation.param @@ -1,4 +1,4 @@ -FS_GCS_ENABLE,0 -RALLY_INCL_HOME,1 -RALLY_TOTAL,0 -SYSID_MYGCS,255 +FS_GCS_ENABLE,0 +RALLY_INCL_HOME,1 +RALLY_TOTAL,0 +SYSID_MYGCS,255 diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/49_precision_land.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/49_precision_land.param index 43d82cff9..e8c6185df 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/49_precision_land.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/49_precision_land.param @@ -1,27 +1,27 @@ -EK3_RNG_M_NSE,0.5 -EK3_RNG_USE_HGT,-1 -LAND_ALT_LOW,1000 -LAND_SPEED,50 -PLND_ACC_P_NSE,2.5 -PLND_ALT_MAX,8 -PLND_ALT_MIN,0.75 -PLND_BUS,-1 -PLND_CAM_POS_X,0.14 -PLND_CAM_POS_Y,0 -PLND_CAM_POS_Z,0.05 -PLND_ENABLED,0 -PLND_EST_TYPE,0 -PLND_LAG,0.24 -PLND_LAND_OFS_X,0 -PLND_LAND_OFS_Y,0 -PLND_OPTIONS,0 -PLND_RET_BEHAVE,0 -PLND_RET_MAX,4 -PLND_STRICT,1 -PLND_TIMEOUT,4 -PLND_TYPE,1 -PLND_XY_DIST_MAX,0 -PLND_YAW_ALIGN,0 -PSC_POSXY_P,1 -RC10_OPTION,0 # Relay On/Off to activate precision landing light -RC11_OPTION,0 # Precision loiter +EK3_RNG_M_NSE,0.5 +EK3_RNG_USE_HGT,-1 +LAND_ALT_LOW,1000 +LAND_SPEED,50 +PLND_ACC_P_NSE,2.5 +PLND_ALT_MAX,8 +PLND_ALT_MIN,0.75 +PLND_BUS,-1 +PLND_CAM_POS_X,0.14 +PLND_CAM_POS_Y,0 +PLND_CAM_POS_Z,0.05 +PLND_ENABLED,0 +PLND_EST_TYPE,0 +PLND_LAG,0.24 +PLND_LAND_OFS_X,0 +PLND_LAND_OFS_Y,0 +PLND_OPTIONS,0 +PLND_RET_BEHAVE,0 +PLND_RET_MAX,4 +PLND_STRICT,1 +PLND_TIMEOUT,4 +PLND_TYPE,1 +PLND_XY_DIST_MAX,0 +PLND_YAW_ALIGN,0 +PSC_POSXY_P,1 +RC10_OPTION,0 # Relay On/Off to activate precision landing light +RC11_OPTION,0 # Precision loiter diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/50_optical_flow_setup.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/50_optical_flow_setup.param index 8848f7020..5d3f3a4ab 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/50_optical_flow_setup.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/50_optical_flow_setup.param @@ -1,19 +1,19 @@ -EK3_FLOW_DELAY,10 # the optical flow sensor delay -EK3_SRC_OPTIONS,1 # Disable FuseAllVelocities during the calibration flight -EK3_SRC1_POSXY,3 # Use GNSS as a reference during the calibration flight -EK3_SRC1_POSZ,1 # Baro, we will not use GNSS here -EK3_SRC1_VELXY,3 # Use GNSS as a reference during the calibration flight -EK3_SRC1_VELZ,3 # Use GNSS as a reference during the calibration flight -EK3_SRC1_YAW,1 # Use magnetometer as a yaw reference during the calibration flight -EK3_SRC2_POSXY,0 # 0 for optical flow only -EK3_SRC2_POSZ,1 # Baro, we will not use GNSS here -EK3_SRC2_VELXY,0 # Optical flow velocity -EK3_SRC2_VELZ,0 # None, optical flow will not provide Z velocity -EK3_SRC2_YAW,0 # Use magnetometer as a yaw reference during the calibration flight -FLOW_ORIENT_YAW,0 # change this if needed -FLOW_POS_X,0 -FLOW_POS_Y,0 -FLOW_POS_Z,0 -FLOW_TYPE,0 # we have a dronecan flow sensor -RC8_OPTION,0 # Use RC8 channel to enable optical flow calibration -RC9_OPTION,0 # Use RC9 channel to select EKF Pos Source: low is GPS, middle is OpticalFlow, high is unused +EK3_FLOW_DELAY,10 # the optical flow sensor delay +EK3_SRC_OPTIONS,1 # Disable FuseAllVelocities during the calibration flight +EK3_SRC1_POSXY,3 # Use GNSS as a reference during the calibration flight +EK3_SRC1_POSZ,1 # Baro, we will not use GNSS here +EK3_SRC1_VELXY,3 # Use GNSS as a reference during the calibration flight +EK3_SRC1_VELZ,3 # Use GNSS as a reference during the calibration flight +EK3_SRC1_YAW,1 # Use magnetometer as a yaw reference during the calibration flight +EK3_SRC2_POSXY,0 # 0 for optical flow only +EK3_SRC2_POSZ,1 # Baro, we will not use GNSS here +EK3_SRC2_VELXY,0 # Optical flow velocity +EK3_SRC2_VELZ,0 # None, optical flow will not provide Z velocity +EK3_SRC2_YAW,0 # Use magnetometer as a yaw reference during the calibration flight +FLOW_ORIENT_YAW,0 # change this if needed +FLOW_POS_X,0 +FLOW_POS_Y,0 +FLOW_POS_Z,0 +FLOW_TYPE,0 # we have a dronecan flow sensor +RC8_OPTION,0 # Use RC8 channel to enable optical flow calibration +RC9_OPTION,0 # Use RC9 channel to select EKF Pos Source: low is GPS, middle is OpticalFlow, high is unused diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/51_optical_flow_results.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/51_optical_flow_results.param index 8d9b51315..92e2c0289 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/51_optical_flow_results.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/51_optical_flow_results.param @@ -1,3 +1,3 @@ -FLOW_FXSCALER,0 # the FlowCal results -FLOW_FYSCALER,0 # the FlowCal results -FLOW_ORIENT_YAW,0 # change this if needed +FLOW_FXSCALER,0 # the FlowCal results +FLOW_FYSCALER,0 # the FlowCal results +FLOW_ORIENT_YAW,0 # change this if needed diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/52_use_optical_flow_instead_of_gnss.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/52_use_optical_flow_instead_of_gnss.param index 2a1fdc239..410c3fbf5 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/52_use_optical_flow_instead_of_gnss.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/52_use_optical_flow_instead_of_gnss.param @@ -1,8 +1,8 @@ -EK3_SRC_OPTIONS,1 # Disable FuseAllVelocities -EK3_SRC1_POSXY,3 # 0 for optical flow only or 3 to fallback to GNSS -EK3_SRC1_POSZ,1 # Baro, we will not use GNSS here -EK3_SRC1_VELXY,3 # Optical flow is now calibrated, use it -EK3_SRC1_VELZ,3 # None, optical flow will not provide Z velocity -EK3_SRC1_YAW,1 # Use magnetometer as a yaw reference -RC8_OPTION,0 # Disable RC8 switch for safety reasons -RC9_OPTION,0 # Disable RC9 switch for safety reasons +EK3_SRC_OPTIONS,1 # Disable FuseAllVelocities +EK3_SRC1_POSXY,3 # 0 for optical flow only or 3 to fallback to GNSS +EK3_SRC1_POSZ,1 # Baro, we will not use GNSS here +EK3_SRC1_VELXY,3 # Optical flow is now calibrated, use it +EK3_SRC1_VELZ,3 # None, optical flow will not provide Z velocity +EK3_SRC1_YAW,1 # Use magnetometer as a yaw reference +RC8_OPTION,0 # Disable RC8 switch for safety reasons +RC9_OPTION,0 # Disable RC9 switch for safety reasons diff --git a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/53_everyday_use.param b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/53_everyday_use.param index 65f3c407c..4eaf38d36 100644 --- a/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/53_everyday_use.param +++ b/ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/53_everyday_use.param @@ -1,7 +1,7 @@ -ATC_THR_MIX_MAX,0.5 # according to autotune documentation this should be raised up-to 0.9 after the tune -BATT_FS_LOW_ACT,0 # outdoors we want the drone to come back -BATT2_FS_LOW_ACT,0 # outdoors we want the drone to come back -LOG_BITMASK,704510 # 2:GPS,3:System Performance,4:Control Tuning,6:RC input,7:IMU,8:Mission Commands,9:Battery Monitor,12:PID,13:Compass,17:Motors -MIS_OPTIONS,0 -RTL_ALT,1500 # The default is too high for the kind of flights we do. This reduces the altitude for outdoors -RTL_CLIMB_MIN,0 # always rise at least 1 meter as a visual indicator +ATC_THR_MIX_MAX,0.5 # according to autotune documentation this should be raised up-to 0.9 after the tune +BATT_FS_LOW_ACT,0 # outdoors we want the drone to come back +BATT2_FS_LOW_ACT,0 # outdoors we want the drone to come back +LOG_BITMASK,704510 # 2:GPS,3:System Performance,4:Control Tuning,6:RC input,7:IMU,8:Mission Commands,9:Battery Monitor,12:PID,13:Compass,17:Motors +MIS_OPTIONS,0 +RTL_ALT,1500 # The default is too high for the kind of flights we do. This reduces the altitude for outdoors +RTL_CLIMB_MIN,0 # always rise at least 1 meter as a visual indicator diff --git a/scripts/batch_convert_motor_diagrams.py b/scripts/batch_convert_motor_diagrams.py new file mode 100755 index 000000000..22160a651 --- /dev/null +++ b/scripts/batch_convert_motor_diagrams.py @@ -0,0 +1,341 @@ +#!/usr/bin/env python3 +""" +Batch convert all motor diagrams from SVG to PNG. + +Using Firefox rendering to preserve 3D transforms and create a size comparison table. + +The conversion process: +1. Renders SVG to 1200x1200 canvas using Firefox-geckodriver +2. Crops whitespace around the image +3. Removes alpha channel (converts to RGB) +4. Anti-aliasing resize to target size (default 200x200) +5. Saves as PNG without alpha channel + +This file is part of ArduPilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator + +SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas +SPDX-License-Identifier: GPL-3.0-or-later +""" + +import argparse +import csv +import logging +import os +import shutil +from io import BytesIO +from pathlib import Path + +from PIL import Image +from selenium import webdriver +from selenium.webdriver.firefox.options import Options as FirefoxOptions +from selenium.webdriver.firefox.service import Service as FirefoxService +from webdriver_manager.firefox import GeckoDriverManager + +DEFAULT_RESIZE_WIDTH: int = 200 +DEFAULT_RESIZE_HEIGHT: int = 200 + +# Set up logging at module level +logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") +logger = logging.getLogger(__name__) + + +def crop_whitespace(image: Image.Image, margin: int = 5) -> Image.Image: + """Crop whitespace around image, leaving specified margin.""" + # Convert to RGB if needed for cropping + if image.mode == "RGBA": + # Create white background for transparency + background = Image.new("RGB", image.size, (255, 255, 255)) + background.paste(image, mask=image.split()[-1]) + image = background + elif image.mode != "RGB": + image = image.convert("RGB") + + # Find the bounding box of non-white content + # Convert to grayscale for easier processing + gray = image.convert("L") + + # Get bounding box (left, top, right, bottom) of non-white content + # We consider anything not pure white (255) as content + bbox = gray.point(lambda x: 0 if x == 255 else 1, mode="1").getbbox() + + if bbox is None: + # If the image is entirely white, return original with margin + return image + + left, top, right, bottom = bbox + + # Add margin while staying within image bounds + width, height = image.size + left = max(0, left - margin) + top = max(0, top - margin) + right = min(width, right + margin) + bottom = min(height, bottom + margin) + + # Crop the image + return image.crop((left, top, right, bottom)) + + +def get_firefox_service() -> FirefoxService | None: + """Return a FirefoxService using system or fallback geckodriver.""" + try: + geckodriver_path = shutil.which("geckodriver") + if geckodriver_path: + return FirefoxService(executable_path=geckodriver_path) + return FirefoxService(GeckoDriverManager().install()) + except (OSError, RuntimeError): + common_paths = [ + "/usr/bin/geckodriver", + "/usr/local/bin/geckodriver", + "/snap/bin/geckodriver", + "geckodriver", + ] + for path in common_paths: + if os.path.exists(path) or (path == "geckodriver" and shutil.which("geckodriver")): + try: + return FirefoxService(executable_path=path) + except (OSError, RuntimeError) as exc: + logger.warning("Failed to create FirefoxService with %s: %s", path, exc) + continue + return None + + +def process_image(png_data: bytes, resize_width: int, resize_height: int) -> Image.Image: + """Process PNG screenshot: crop, remove alpha, resize to (resize_width, resize_height).""" + image = Image.open(BytesIO(png_data)) + cropped_image = crop_whitespace(image, margin=5) + if cropped_image.mode == "RGBA": + background = Image.new("RGB", cropped_image.size, (255, 255, 255)) + background.paste(cropped_image, mask=cropped_image.split()[-1]) + cropped_image = background + elif cropped_image.mode != "RGB": + cropped_image = cropped_image.convert("RGB") + return cropped_image.resize((resize_width, resize_height), Image.Resampling.LANCZOS) + + +def convert_with_firefox( # pylint: disable=too-many-arguments, too-many-positional-arguments + svg_path: str, + png_path: str, + canvas_width: int = 1200, + canvas_height: int = 1200, + resize_width: int = 200, + resize_height: int = 200, +) -> tuple[bool, str]: + """ + Convert SVG to PNG using Firefox browser with image processing pipeline. + + Pipeline: + 1. Render SVG to large canvas (default 1200x1200) for high quality + 2. Crop whitespace around image content + 3. Remove alpha channel (convert to RGB) + 4. Anti-aliasing resize to target size (default 200x200) + 5. Save as PNG without alpha channel + """ + driver = None + try: + firefox_options = FirefoxOptions() + firefox_options.add_argument("--headless") + firefox_options.add_argument("--no-sandbox") + firefox_options.add_argument("--disable-dev-shm-usage") + + service = get_firefox_service() + if not service: + return False, "Geckodriver not found. Please install geckodriver." + + driver = webdriver.Firefox(service=service, options=firefox_options) + + # Set window size to large canvas for high quality rendering + driver.set_window_size(canvas_width, canvas_height) + + # Convert SVG path to absolute path + svg_abs_path = os.path.abspath(svg_path) + + # Open SVG file + driver.get(f"file://{svg_abs_path}") + + # Take screenshot + png_data = driver.get_screenshot_as_png() + processed_image = process_image(png_data, resize_width, resize_height) + processed_image.save(png_path, "PNG") + return True, "Success" + except (OSError, RuntimeError, ValueError) as e: + return False, str(e) + finally: + if driver: + driver.quit() + + +def print_comparison_table(comparison_data: list[dict], png_path: Path) -> None: # pylint: disable=too-many-locals + """Print the file size comparison table and save to CSV.""" + logger.info("\nFile Size Comparison Table:") + logger.info("=" * 80) + logger.info("%-35s %-12s %-12s %-10s", "Filename", "SVG Size", "PNG Size", "PNG/SVG %") + logger.info("-" * 80) + + total_svg_size = 0 + total_png_size = 0 + + for data in comparison_data: + filename = data["filename"] + svg_size = int(data["svg_size"]) + png_size = int(data["png_size"]) + ratio = data["ratio_percent"] + + # Format sizes + svg_size_str = f"{svg_size:,} B" if svg_size < 1024 else f"{svg_size / 1024:.1f} KB" + png_size_str = f"{png_size:,} B" if png_size < 1024 else f"{png_size / 1024:.1f} KB" + + logger.info("%-35s %-12s %-12s %7.1f%%", filename, svg_size_str, png_size_str, ratio) + total_svg_size += svg_size + total_png_size += png_size + + logger.info("-" * 80) + + # Summary statistics + total_svg_str = f"{total_svg_size:,} B" if total_svg_size < 1024 * 1024 else f"{total_svg_size / (1024 * 1024):.1f} MB" + total_png_str = f"{total_png_size:,} B" if total_png_size < 1024 * 1024 else f"{total_png_size / (1024 * 1024):.1f} MB" + overall_ratio = (total_png_size / total_svg_size) * 100 if total_svg_size > 0 else 0 + + logger.info("%-35s %-12s %-12s %7.1f%%", "TOTAL", total_svg_str, total_png_str, overall_ratio) + avg_svg_kb = total_svg_size / len(comparison_data) / 1024 + avg_png_kb = total_png_size / len(comparison_data) / 1024 + logger.info("%-35s %.1f KB %.1f KB %7.1f%%", "AVERAGE", avg_svg_kb, avg_png_kb, overall_ratio) + + # Save to CSV + csv_file = png_path / "size_comparison.csv" + with open(csv_file, "w", newline="", encoding="utf-8") as f: + writer = csv.DictWriter(f, fieldnames=["filename", "svg_size", "png_size", "ratio_percent"]) + writer.writeheader() + writer.writerows(comparison_data) + + logger.info("\nDetailed comparison saved to: %s", csv_file) + + +def batch_convert_and_compare( # pylint: disable=too-many-locals, too-many-arguments, too-many-positional-arguments + svg_dir: str, + png_dir: str, + canvas_width: int = 1200, + canvas_height: int = 1200, + resize_width: int = 200, + resize_height: int = 200, +) -> None: + """Convert all SVG files with image processing pipeline and create comparison table.""" + svg_path = Path(svg_dir) + png_path = Path(png_dir) + png_path.mkdir(parents=True, exist_ok=True) + + # Find all motor diagram SVG files + svg_files = list(svg_path.glob("m_*.svg")) + svg_files.sort() + + if not svg_files: + logger.warning("No motor diagram SVG files found in %s", svg_dir) + return + + logger.info("Converting %d motor diagram files...", len(svg_files)) + + # Data for comparison table + comparison_data = [] + + success_count = 0 + + for i, svg_file in enumerate(svg_files): + png_file = png_path / (svg_file.stem + ".png") + logger.info("Converting %s (%d/%d)...", svg_file.name, i + 1, len(svg_files)) + success, message = convert_with_firefox( + str(svg_file), str(png_file), canvas_width, canvas_height, resize_width, resize_height + ) + if success: + logger.info("✓ Conversion successful.") + success_count += 1 + + # Get file sizes + svg_size = svg_file.stat().st_size + png_size = png_file.stat().st_size + size_ratio = (png_size / svg_size) * 100 if svg_size > 0 else 0 + + comparison_data.append( + {"filename": svg_file.name, "svg_size": svg_size, "png_size": png_size, "ratio_percent": size_ratio} + ) + else: + logger.error("Conversion failed for %s: %s", svg_file.name, message) + + logger.info("\nConversion complete: %d/%d files successful", success_count, len(svg_files)) + + # Create comparison table + if comparison_data: + print_comparison_table(comparison_data, png_path) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Batch convert all motor diagrams from SVG to PNG using Firefox rendering.") + parser.add_argument( + "--svg-dir", + type=str, + default="../ardupilot_methodic_configurator/images/", + help="Directory containing SVG motor diagrams (default: %(default)s)", + ) + parser.add_argument( + "--png-dir", + type=str, + default="../motor_diagrams_png_200x200/", + help="Directory to save converted PNG images (default: %(default)s)", + ) + parser.add_argument( + "--canvas-width", + type=int, + default=1200, + help="Width of Firefox rendering canvas in pixels (default: %(default)s)", + ) + parser.add_argument( + "--canvas-height", + type=int, + default=1200, + help="Height of Firefox rendering canvas in pixels (default: %(default)s)", + ) + parser.add_argument( + "--resize-width", + type=int, + default=DEFAULT_RESIZE_WIDTH, + help="Width of output PNG images in pixels (default: %(default)s)", + ) + parser.add_argument( + "--resize-height", + type=int, + default=DEFAULT_RESIZE_HEIGHT, + help="Height of output PNG images in pixels (default: %(default)s)", + ) + parser.add_argument( + "--loglevel", + type=str, + choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"], + default="INFO", + help="Set logging level (default: %(default)s)", + ) + + args = parser.parse_args() + + # Update logging level + logger.setLevel(args.loglevel) + + # Convert all motor diagrams with new processing pipeline: + # - Customizable canvas size for high quality rendering + # - Crop whitespace around content + # - Remove alpha channel + # - Anti-aliasing resize to user-specified size + # - Save as optimized PNG + # Note: Output PNGs will be resized to (resize_width, resize_height) + # Example usage: + # python batch_convert_motor_diagrams.py \ + # --svg-dir ./images \ + # --png-dir ./pngs \ + # --resize-width 300 \ + # --resize-height 300 \ + # --loglevel DEBUG + batch_convert_and_compare( + args.svg_dir, + args.png_dir, + canvas_width=args.canvas_width, + canvas_height=args.canvas_height, + resize_width=args.resize_width, + resize_height=args.resize_height, + ) diff --git a/scripts/motor_diagrams_viewer_app.py b/scripts/motor_diagrams_viewer_app.py new file mode 100755 index 000000000..6f74030f6 --- /dev/null +++ b/scripts/motor_diagrams_viewer_app.py @@ -0,0 +1,351 @@ +#!/usr/bin/env python3 +""" +SVG Viewer Application for ArduPilot Motor Diagrams. + +A Tkinter application that allows users to select and view SVG files from the +../ardupilot_methodic_configurator/images directory. The SVG files are rendered +using Firefox-geckodriver and displayed as resized images with antialiasing. + +This file is part of ArduPilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator + +SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas + +SPDX-License-Identifier: GPL-3.0-or-later +""" + +import argparse +import contextlib +import os +import shutil +import tempfile +import time +import tkinter as tk +from pathlib import Path +from tkinter import messagebox, ttk +from typing import Optional + +from batch_convert_motor_diagrams import crop_whitespace +from PIL import Image +from selenium import webdriver +from selenium.webdriver.firefox.options import Options +from selenium.webdriver.firefox.service import Service + +DEFAULT_IMAGE_WIDTH: int = 200 +DEFAULT_IMAGE_HEIGHT: int = 200 + + +class SVGViewerApp: # pylint: disable=too-many-instance-attributes + """Main application class for the SVG viewer.""" + + def __init__( + self, + root: tk.Tk, + image_width: int = DEFAULT_IMAGE_WIDTH, + image_height: int = DEFAULT_IMAGE_HEIGHT, + render_wait: float = 2.0, + ) -> None: + """ + Initialize the SVG viewer application. + + Args: + root (tk.Tk): The Tkinter root window. + image_width (int): The width to resize images to (default: DEFAULT_IMAGE_WIDTH). + image_height (int): The height to resize images to (default: DEFAULT_IMAGE_HEIGHT). + render_wait (float): Seconds to wait for SVG rendering before screenshot (default: 2). + + """ + self.root = root + self.root.title("ArduPilot Motor Diagrams SVG Viewer") + self.root.geometry("400x450") + + # Initialize variables + self.svg_files: list[Path] = [] + self.current_image: Optional[tk.PhotoImage] = None + self.temp_dir = tempfile.mkdtemp() + self.image_width = image_width + self.image_height = image_height + self.render_wait = render_wait + + # Setup UI + self.setup_ui() + + # Load SVG files + self.load_svg_files() + + # Cleanup on close + self.root.protocol("WM_DELETE_WINDOW", self.on_closing) + + def setup_ui(self) -> None: + """Setup the user interface components.""" + # Main frame + main_frame = ttk.Frame(self.root, padding="10") + main_frame.grid(row=0, column=0, sticky="nsew") + + # Configure grid weights + self.root.columnconfigure(0, weight=1) + self.root.rowconfigure(0, weight=1) + main_frame.columnconfigure(1, weight=1) + main_frame.rowconfigure(2, weight=1) + + # Title label + title_label = ttk.Label(main_frame, text="ArduPilot Motor Diagrams", font=("Arial", 14, "bold")) + title_label.grid(row=0, column=0, columnspan=2, pady=(0, 10)) + + # SVG file selection + ttk.Label(main_frame, text="Select SVG File:").grid(row=1, column=0, sticky=tk.W, pady=(0, 5)) + + self.svg_combobox = ttk.Combobox(main_frame, state="readonly", width=40) + self.svg_combobox.grid(row=1, column=1, sticky="ew", pady=(0, 5)) + self.svg_combobox.bind("<>", self.on_svg_selected) + + # Image display frame + image_frame = ttk.LabelFrame(main_frame, text="Motor Diagram", padding="5") + image_frame.grid(row=2, column=0, columnspan=2, sticky="nsew", pady=(10, 0)) + image_frame.columnconfigure(0, weight=1) + image_frame.rowconfigure(0, weight=1) + + # Image label + self.image_label = ttk.Label(image_frame, text="Select an SVG file to view", font=("Arial", 10), anchor="center") + self.image_label.grid(row=0, column=0, sticky="nsew") + + # File size information frame + size_frame = ttk.LabelFrame(main_frame, text="File Size Information", padding="5") + size_frame.grid(row=3, column=0, columnspan=2, sticky="ew", pady=(10, 0)) + + # File size labels + self.size_info_var = tk.StringVar() + self.size_info_var.set("No file selected") + size_info_label = ttk.Label(size_frame, textvariable=self.size_info_var, font=("Arial", 9)) + size_info_label.grid(row=0, column=0, sticky="w") + + # Status bar + self.status_var = tk.StringVar() + self.status_var.set("Ready") + status_bar = ttk.Label(main_frame, textvariable=self.status_var, relief=tk.SUNKEN, anchor=tk.W) + status_bar.grid(row=4, column=0, columnspan=2, sticky="ew", pady=(10, 0)) + + def load_svg_files(self) -> None: + """Load SVG files from the images directory.""" + images_dir = Path("../ardupilot_methodic_configurator/images") + + if not images_dir.exists(): + messagebox.showerror( + "Error", f"Images directory not found: {images_dir}\nPlease ensure you're running from the correct directory." + ) + return + + # Find all SVG files + self.svg_files = sorted(images_dir.glob("*.svg")) + + if not self.svg_files: + messagebox.showwarning("Warning", f"No SVG files found in {images_dir}") + return + + # Populate combobox + svg_names = [svg_file.name for svg_file in self.svg_files] + self.svg_combobox["values"] = svg_names + + self.status_var.set(f"Loaded {len(self.svg_files)} SVG files") + + def on_svg_selected(self, _event: tk.Event) -> None: + """Handle SVG file selection from combobox.""" + selection_index = self.svg_combobox.current() + if selection_index < 0: + return + + selected_svg = self.svg_files[selection_index] + self.render_svg(selected_svg) + + def render_svg(self, svg_path: Path) -> None: + """Render SVG file using Firefox-geckodriver and display it.""" + self.status_var.set(f"Rendering {svg_path.name}...") + self.root.update() + + try: + # Create temporary PNG file + temp_png = Path(self.temp_dir) / f"{svg_path.stem}_temp.png" + + # Render SVG to PNG using Firefox + if self.convert_svg_to_png(str(svg_path), str(temp_png), wait_time=self.render_wait): + # Load and resize image, passing both PNG and original SVG paths + self.display_image(temp_png, svg_path) + self.status_var.set(f"Successfully loaded {svg_path.name}") + else: + messagebox.showerror("Error", f"Failed to render {svg_path.name}") + self.status_var.set("Rendering failed") + self.size_info_var.set("Rendering failed") + + except (OSError, RuntimeError, ValueError) as e: + messagebox.showerror("Error", f"Error rendering {svg_path.name}: {e!s}") + self.status_var.set("Error occurred") + self.size_info_var.set("Error occurred") + + def convert_svg_to_png(self, svg_path: str, png_path: str, wait_time: float = 2.0) -> bool: + """Convert SVG to PNG using Firefox-geckodriver.""" + try: + # Setup Firefox options + options = Options() + options.add_argument("--headless") + options.add_argument("--width=1200") + options.add_argument("--height=1200") + + # Setup service to use system geckodriver + service = Service("/usr/bin/geckodriver") + + # Create WebDriver + driver = webdriver.Firefox(service=service, options=options) + + try: + # Open the SVG file + svg_url = f"file://{os.path.abspath(svg_path)}" + driver.get(svg_url) + + # Wait for rendering + time.sleep(wait_time) + + # Take screenshot + driver.save_screenshot(png_path) + return True + + finally: + driver.quit() + + except (OSError, RuntimeError, ValueError): + # Silently ignore conversion errors - they will be handled by the caller + return False + + def display_image(self, png_path: Path, svg_path: Path) -> None: + """Load image, crop whitespace, resize to selected size, save as PNG, and display.""" + try: + # Open image + original_image = Image.open(png_path) + + # Remove alpha channel if present and crop whitespace + cropped_image = crop_whitespace(original_image, margin=5) + + # Resize with high-quality antialiasing + image_resized = cropped_image.resize((self.image_width, self.image_height), Image.Resampling.LANCZOS) + + # Ensure it's RGB (should already be from crop_whitespace) + if image_resized.mode != "RGB": + image_resized = image_resized.convert("RGB") + + # Save the processed image as PNG + processed_png_path = Path(self.temp_dir) / f"processed_{self.image_width}x{self.image_height}.png" + image_resized.save(processed_png_path, "PNG") + + # Convert to PPM format for Tkinter display (avoids ImageTk issues) + temp_ppm_path = Path(self.temp_dir) / "temp_display.ppm" + image_resized.save(temp_ppm_path, "PPM") + + # Create Tkinter PhotoImage from PPM file + self.current_image = tk.PhotoImage(file=str(temp_ppm_path)) + + # Update image label + self.image_label.configure(image=self.current_image, text="") + + # Calculate and display file sizes (including processed PNG) + self.update_size_info(svg_path, png_path, processed_png_path, temp_ppm_path) + + except (OSError, RuntimeError, ValueError) as e: + messagebox.showerror("Error", f"Error displaying image: {e!s}") + self.size_info_var.set("Error processing image") + + def format_file_size(self, size_bytes: int) -> str: + """Format file size in human readable format.""" + if size_bytes < 1024: + return f"{size_bytes} B" + if size_bytes < 1024 * 1024: + return f"{size_bytes / 1024:.1f} KB" + return f"{size_bytes / (1024 * 1024):.1f} MB" + + def update_size_info(self, svg_path: Path, original_png_path: Path, processed_png_path: Path, ppm_path: Path) -> None: + """Update the file size information display.""" + try: + svg_size = svg_path.stat().st_size + original_png_size = original_png_path.stat().st_size + processed_png_size = processed_png_path.stat().st_size + ppm_size = ppm_path.stat().st_size + + size_text = ( + f"SVG: {self.format_file_size(svg_size)} | " + f"Original PNG: {self.format_file_size(original_png_size)} | " + f"Processed PNG: {self.format_file_size(processed_png_size)} | " + f"PPM: {self.format_file_size(ppm_size)}" + ) + + self.size_info_var.set(size_text) + + except (OSError, RuntimeError, ValueError) as e: + self.size_info_var.set(f"Error reading file sizes: {e!s}") + + def on_closing(self) -> None: + """Handle application closing.""" + # Cleanup temporary files + with contextlib.suppress(Exception): + shutil.rmtree(self.temp_dir, ignore_errors=True) + + self.root.destroy() + + +def main() -> None: + """ + Main function to run the SVG viewer application. + + This application allows you to select and view SVG motor diagram files from the + ../ardupilot_methodic_configurator/images directory. SVGs are rendered using Firefox-geckodriver + and displayed as resized images in a Tkinter GUI. You can select the output image width and height + and the render wait time using command-line arguments. + + Parameters + ---------- + --image-width: Width of the displayed/resized image in pixels (default: DEFAULT_IMAGE_WIDTH) + --image-height: Height of the displayed/resized image in pixels (default: DEFAULT_IMAGE_HEIGHT) + --render-wait: Seconds to wait for SVG rendering before screenshot (default: 2) + + """ + parser = argparse.ArgumentParser( + description="SVG Viewer Application for ArduPilot Motor Diagrams. " + "Renders SVGs using Firefox-geckodriver and displays them as resized images in a Tkinter GUI." + ) + parser.add_argument( + "--image-width", + type=int, + default=DEFAULT_IMAGE_WIDTH, + help="Width of the displayed/resized image in pixels (default: %(default)s)", + ) + parser.add_argument( + "--image-height", + type=int, + default=DEFAULT_IMAGE_HEIGHT, + help="Height of the displayed/resized image in pixels (default: %(default)s)", + ) + parser.add_argument( + "--render-wait", + type=float, + default=2.0, + help="Seconds to wait for SVG rendering before screenshot (default: %(default)s)", + ) + args = parser.parse_args() + + # Check if geckodriver is available + if not os.path.exists("/usr/bin/geckodriver"): + messagebox.showerror( + "Error", + "geckodriver not found at /usr/bin/geckodriver\nPlease install it with: sudo apt install firefox-geckodriver", + ) + return + + # Create and run the application + root = tk.Tk() + SVGViewerApp( + root, + image_width=args.image_width, + image_height=args.image_height, + render_wait=args.render_wait, + ) + root.mainloop() + + +if __name__ == "__main__": + main()