From 127f29cb01da67564fada0f1ca2cbc1d63548b6e Mon Sep 17 00:00:00 2001 From: "Dr.-Ing. Amilcar do Carmo Lucas" Date: Mon, 13 May 2024 21:53:06 +0200 Subject: [PATCH] IMPROVEMENT: Update 4.3.8 and 4.4.4 templates with new components --- ...02_imu_temperature_calibration_setup.param | 14 +- .../4.3.8-params/05_remote_controller.param | 15 - .../4.3.8-params/07_esc.param | 291 +----- .../4.3.8-params/10_gnss.param | 29 - .../11_mp_setup_mandatory_hardware.param | 792 +--------------- .../12_general_configuration.param | 11 +- .../4.3.8-params/16_remote_id.param | 25 - .../4.3.8-params/17_notch_filter_setup.param | 91 +- .../18_notch_filter_results.param | 52 +- .../4.3.8-params/19_throttle_controller.param | 24 - .../4.3.8-params/20_quick_tune_setup.param | 2 +- ...23_inflight_magnetometer_fit_results.param | 149 +-- .../4.3.8-params/25_quick_tune_results.param | 81 +- .../4.3.8-params/28_autotune_roll_setup.param | 4 +- .../29_autotune_roll_results.param | 10 +- .../30_autotune_pitch_setup.param | 4 +- .../31_autotune_pitch_results.param | 10 +- .../4.3.8-params/32_autotune_yaw_setup.param | 4 +- .../33_autotune_yaw_results.param | 10 +- .../4.3.8-params/34_autotune_yawd_setup.param | 6 +- .../35_autotune_yawd_results.param | 10 +- .../36_autotune_roll_pitch_retune_setup.param | 4 +- ...7_autotune_roll_pitch_retune_results.param | 20 +- .../38_windspeed_estimation.param | 10 +- .../4.3.8-params/40_system_id_roll.param | 26 +- .../44_analytical_pid_optimization.param | 6 +- .../4.3.8-params/45_everyday_use.param | 2 +- ...02_imu_temperature_calibration_setup.param | 14 +- .../4.4.4-params/04_board_orientation.param | 4 +- .../4.4.4-params/05_remote_controller.param | 15 - .../4.4.4-params/07_esc.param | 317 +------ .../4.4.4-params/08_batt1.param | 2 +- .../4.4.4-params/10_gnss.param | 61 +- .../11_mp_setup_mandatory_hardware.param | 894 ++---------------- .../12_general_configuration.param | 15 +- .../4.4.4-params/13_logging.param | 4 +- .../4.4.4-params/16_remote_id.param | 26 - .../4.4.4-params/17_notch_filter_setup.param | 91 +- .../18_notch_filter_results.param | 52 +- .../4.4.4-params/19_throttle_controller.param | 24 - .../4.4.4-params/20_quick_tune_setup.param | 2 +- .../4.4.4-params/21_quick_tune_results.param | 67 ++ ...23_inflight_magnetometer_fit_results.param | 149 +-- .../4.4.4-params/24_quick_tune_setup.param | 66 ++ .../4.4.4-params/25_quick_tune_results.param | 81 +- .../4.4.4-params/28_autotune_roll_setup.param | 4 +- .../29_autotune_roll_results.param | 10 +- .../30_autotune_pitch_setup.param | 4 +- .../31_autotune_pitch_results.param | 10 +- .../4.4.4-params/32_autotune_yaw_setup.param | 4 +- .../33_autotune_yaw_results.param | 10 +- .../4.4.4-params/34_autotune_yawd_setup.param | 6 +- .../35_autotune_yawd_results.param | 10 +- .../36_autotune_roll_pitch_retune_setup.param | 4 +- ...7_autotune_roll_pitch_retune_results.param | 20 +- .../38_windspeed_estimation.param | 10 +- .../4.4.4-params/40_system_id_roll.param | 26 +- .../44_analytical_pid_optimization.param | 6 +- .../4.4.4-params/vehicle.jpg | Bin 0 -> 126547 bytes 59 files changed, 792 insertions(+), 2918 deletions(-) create mode 100644 vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/vehicle.jpg diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/02_imu_temperature_calibration_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/02_imu_temperature_calibration_setup.param index 15daae5..6e6869f 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/02_imu_temperature_calibration_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/02_imu_temperature_calibration_setup.param @@ -3,7 +3,7 @@ # Bitmask: 0:IMU1,1:IMU2,2:IMU3 # RebootRequired: True # Default: 0 -INS_LOG_BAT_MASK,3 # the Matek H743 fligth controller only has two IMUs +INS_LOG_BAT_MASK,3 # the Matek H743 fligth controller only has two IMUs # Enable temperature calibration # Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and @@ -13,7 +13,7 @@ INS_LOG_BAT_MASK,3 # the Matek H743 fligth controller only has two IMUs # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL1_ENABLE,2 # Activates the temperature calibration for IMU 1 at the next start +INS_TCAL1_ENABLE,2 # Activates the temperature calibration for IMU 1 at the next start # Temperature calibration max # The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN @@ -22,7 +22,7 @@ INS_TCAL1_ENABLE,2 # Activates the temperature calibration for IMU 1 at the next # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL1_TMAX,60 # our H7 processor acts as a heater and heats up the board to almost 60 deg +INS_TCAL1_TMAX,60 # our H7 processor acts as a heater and heats up the board to almost 60 deg # Enable temperature calibration # Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and @@ -32,7 +32,7 @@ INS_TCAL1_TMAX,60 # our H7 processor acts as a heater and heats up the board to # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL2_ENABLE,2 # Activates the temperature calibration for IMU 2 at the next start +INS_TCAL2_ENABLE,2 # Activates the temperature calibration for IMU 2 at the next start # Temperature calibration max # The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN @@ -41,14 +41,14 @@ INS_TCAL2_ENABLE,2 # Activates the temperature calibration for IMU 2 at the next # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL2_TMAX,60 # our H7 processor acts as a heater and heats up the board to almost 60 deg +INS_TCAL2_TMAX,60 # our H7 processor acts as a heater and heats up the board to almost 60 deg # Log bitmask # Bitmap of what on-board log types to enable. This value is made up of the sum of each of the log types # you want to be saved. It is usually best just to enable all basiclog types by setting this to 65535. # Bitmask: 0:Fast Attitude,1:Medium Attitude,2:GPS,3:System Performance,4:Control Tuning,5:Navigation Tuning,6:RC input,7:IMU,8:Mission Commands,9:Battery Monitor,10:RC output,11:Optical Flow,12:PID,13:Compass,15:Camera,17:Motors,18:Fast IMU,19:Raw IMU,20:Video Stabilization,21:Fast harmonic notch logging # Default: 176126 -LOG_BITMASK,524416 # Only for IMU and Raw-IMU +LOG_BITMASK,524416 # Only for IMU and Raw-IMU # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled while disarmed. This can make for very large @@ -56,4 +56,4 @@ LOG_BITMASK,524416 # Only for IMU and Raw-IMU # 0: Disabled # 1: Enabled # Default: 0 -LOG_DISARMED,1 # to gather data for the offline IMU temperature compensation while the FC is disarmed +LOG_DISARMED,1 # Gather data for the offline IMU temperature compensation while the FC is disarmed diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/05_remote_controller.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/05_remote_controller.param index 454e0e7..a356df7 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/05_remote_controller.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/05_remote_controller.param @@ -274,21 +274,6 @@ RC9_OPTION,300 # Used to jump to the next waypoint # Default: 0 RSSI_TYPE,3 # TBS Crossfire protocol provides RSSI -# Telemetry 2 Baud Rate -# The baud rate of the Telem2 port. Most stm32-based boards can support rates of up to 1500. If you setup a -# rate you cannot support and then can't connect to your board you should load a firmware from a different -# vehicle type. That will reset all your parameters to defaults. -# 1: 1200 115: 115200 -# 2: 2400 230: 230400 -# 4: 4800 256: 256000 -# 9: 9600 460: 460800 -# 19: 19200 500: 500000 -# 38: 38400 921: 921600 -# 57: 57600 1500: 1500000 -# 111: 111100 -# Default: 57 -SERIAL2_BAUD,115 # For Mavlink over crossfire - # Serial7 protocol selection # Control what protocol Serial7 port should be used for. Note that the Frsky options require external # converter hardware. See the wiki for details. diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/07_esc.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/07_esc.param index c62f799..538c626 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/07_esc.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/07_esc.param @@ -1,318 +1,29 @@ -# Pitch slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 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 - -# Roll slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 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 - -# Yaw slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 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 - -# Output PWM type -# This selects the output PWM type, allowing for normal PWM continuous output, OneShot, brushed or DShot -# motor output -# RebootRequired: True -# 0: Normal -# 1: OneShot -# 2: OneShot125 -# 3: Brushed -# 4: DShot150 -# 5: DShot300 -# 6: DShot600 -# 7: DShot1200 -# 8: PWMRange -# Default: 0 MOT_PWM_TYPE,6 # the most recomended speed for ArduCopter - -# Buzzer Driver Types -# Controls what types of Buzzer will be enabled -# Bitmask: 0:Built-in buzzer, 1:DShot, 2:DroneCAN -# Default: 5 NTF_BUZZ_TYPES,3 # the 4-in-1 ESC uses this - -# LED Driver Types -# Controls what types of LEDs will be enabled -# Bitmask: 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI -# Default: 123079 NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Matek H743 slim v3), and DShot (4-in-1 ESC) - -# Accel (vertical) slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 PSC_ACCZ_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html - -# Serial 5 Baud Rate -# The baud rate used for Serial5. Most stm32-based boards can support rates of up to 1500. If you setup a -# rate you cannot support and then can't connect to your board you should load a firmware from a different -# vehicle type. That will reset all your parameters to defaults. -# 1: 1200 115: 115200 -# 2: 2400 230: 230400 -# 4: 4800 256: 256000 -# 9: 9600 460: 460800 -# 19: 19200 500: 500000 -# 38: 38400 921: 921600 -# 57: 57600 1500: 1500000 -# 111: 111100 -# Default: 115 SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in1 ESC V2 - -# Serial5 protocol selection -# Control what protocol Serial5 port should be used for. Note that the Frsky options require external -# converter hardware. See the wiki for details. -# RebootRequired: True -# -1: None 24: EFI Serial -# 1: MAVLink1 25: LTM -# 2: MAVLink2 26: RunCam -# 3: Frsky D 27: HottTelem -# 4: Frsky SPort 28: Scripting -# 5: GPS 29: Crossfire VTX -# 7: Alexmos Gimbal Serial 30: Generator -# 8: SToRM32 Gimbal Serial 31: Winch -# 9: Rangefinder 32: MSP -# 10: FrSky SPort Passthrough (OpenTX) 33: DJI FPV -# 11: Lidar360 34: AirSpeed -# 13: Beacon 35: ADSB -# 14: Volz servo out 36: AHRS -# 15: SBus servo out 37: SmartAudio -# 16: ESC Telemetry 38: FETtecOneWire -# 17: Devo Telemetry 39: Torqeedo -# 18: OpticalFlow 40: AIS -# 19: RobotisServo 41: CoDevESC -# 20: NMEA Output 42: DisplayPort -# 21: WindVane 43: MAVLink High Latency -# 22: SLCAN 44: IRC Tramp -# 23: RCIN -# Default: -1 SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 - -# BLHeli pass-thru auto-enable for multicopter motors -# If set to 1 this auto-enables BLHeli pass-thru support for all multicopter motors -# RebootRequired: True -# 0: Disabled -# 1: Enabled -# Default: 0 SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru - -# BLHeli bitmask of bi-directional dshot channels -# Mask of channels which support bi-directional dshot. This is used for ESCs which have firmware that -# supports bi-directional dshot allowing fast rpm telemetry values to be returned for the harmonic notch. -# Bitmask: 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16, 16:Channel 17, 17: Channel 18, 18: Channel 19, 19: Channel 20, 20: Channel 21, 21: Channel 22, 22: Channel 23, 23: Channel 24, 24: Channel 25, 25: Channel 26, 26: Channel 27, 27: Channel 28, 28: Channel 29, 29: Channel 30, 30: Channel 31, 31: Channel 32 -# RebootRequired: True -# Default: 0 SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot - -# BLHeli Motor Poles -# This allows calculation of true RPM from ESC's eRPM. The default is 14. -# Range: 1 127 -# RebootRequired: True -# Default: 14 -SERVO_BLH_POLES,14 # Number of T-Motor 1507 3800kv motor's magnetic poles - -# BLHeli telemetry rate -# This sets the rate in Hz for requesting telemetry from ESCs. It is the rate per ESC. Setting to zero -# disables telemetry requests -# Units: Hz (hertz) -# Range: 0 500 -# Default: 10 +SERVO_BLH_POLES,14 # Specified in component editor window SERVO_BLH_TRATE,5 # Set to a low value because the RPM telemetry uses bi-directional DShot telemetry instead of this UART telemetry - -# Servo DShot ESC type -# This sets the DShot ESC type for all outputs. The ESC type affects the range of DShot commands available. -# None means that no dshot commands will be executed. -# 0: None -# 1: BLHeli32/Kiss -# 2: BLHeli_S -# Default: 0 SERVO_DSHOT_ESC,1 # BLHeli32 - -# Servo DShot output rate -# This sets the DShot output rate for all outputs as a multiple of the loop rate. 0 sets the output rate to -# be fixed at 1Khz for low loop rates. This value should never be set below 500Hz. -# 0: 1Khz -# 1: loop-rate -# 2: double loop-rate -# 3: triple loop-rate -# 4: quadruple loop rate -# Default: 0 SERVO_DSHOT_RATE,2 # Sends DShot control signals to the ESC twice per control loop - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 SERVO1_MAX,2000 # Use the full available 1000-2000 DShot range - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 SERVO1_MIN,1000 # Use the full available 1000-2000 DShot range - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 SERVO1_TRIM,1000 # Use the full available 1000-2000 DShot range - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 SERVO13_FUNCTION,120 # For matek H743Slim v3 board - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 SERVO2_MAX,2000 # Use the full available 1000-2000 DShot range - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 SERVO2_MIN,1000 # Use the full available 1000-2000 DShot range - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 SERVO2_TRIM,1000 # Use the full available 1000-2000 DShot range - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 SERVO3_MAX,2000 # Use the full available 1000-2000 DShot range - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 SERVO3_MIN,1000 # Use the full available 1000-2000 DShot range - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 SERVO3_TRIM,1000 # Use the full available 1000-2000 DShot range - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 SERVO4_MAX,2000 # Use the full available 1000-2000 DShot range - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 SERVO4_MIN,1000 # Use the full available 1000-2000 DShot range - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 SERVO4_TRIM,1000 # Use the full available 1000-2000 DShot range - -# Takeoff Check RPM minimum -# Takeoff is not permitted until motors report at least this RPM. Set to zero to disable check -# Range: 0 10000 -# Default: 0 TKOFF_RPM_MIN,1400 # Our motors should idle at around 1400 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/10_gnss.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/10_gnss.param index 61810c0..c0feb6e 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/10_gnss.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/10_gnss.param @@ -90,35 +90,6 @@ GPS_TYPE,2 # set it explicit to uBlox, instead of guessing which GNSS receiver # Default: 5 SERIAL3_PROTOCOL,5 # GNSS receiver is connected to serial3 -# Serial4 protocol selection -# Control what protocol Serial4 port should be used for. Note that the Frsky options require external -# converter hardware. See the wiki for details. -# RebootRequired: True -# -1: None 24: EFI Serial -# 1: MAVLink1 25: LTM -# 2: MAVLink2 26: RunCam -# 3: Frsky D 27: HottTelem -# 4: Frsky SPort 28: Scripting -# 5: GPS 29: Crossfire VTX -# 7: Alexmos Gimbal Serial 30: Generator -# 8: SToRM32 Gimbal Serial 31: Winch -# 9: Rangefinder 32: MSP -# 10: FrSky SPort Passthrough (OpenTX) 33: DJI FPV -# 11: Lidar360 34: AirSpeed -# 13: Beacon 35: ADSB -# 14: Volz servo out 36: AHRS -# 15: SBus servo out 37: SmartAudio -# 16: ESC Telemetry 38: FETtecOneWire -# 17: Devo Telemetry 39: Torqeedo -# 18: OpticalFlow 40: AIS -# 19: RobotisServo 41: CoDevESC -# 20: NMEA Output 42: DisplayPort -# 21: WindVane 43: MAVLink High Latency -# 22: SLCAN 44: IRC Tramp -# 23: RCIN -# Default: 5 -SERIAL4_PROTOCOL,-1 # No GNSS connected to serial4, so disable it - # Waypoint Radius # Defines the distance from a waypoint, that when crossed indicates the wp has been hit. # Units: cm (centimeters) diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/11_mp_setup_mandatory_hardware.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/11_mp_setup_mandatory_hardware.param index 40a3038..8d6c4c4 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/11_mp_setup_mandatory_hardware.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/11_mp_setup_mandatory_hardware.param @@ -1,819 +1,79 @@ -# AHRS Trim Roll -# Compensates for the roll angle difference between the control board and the frame. Positive values make -# the vehicle roll right. -# Units: rad (radians) -# Range: -0.1745 +0.1745 -# Increment: 0.01 -# Default: 0 -AHRS_TRIM_X,-0.007751919 - -# AHRS Trim Pitch -# Compensates for the pitch angle difference between the control board and the frame. Positive values make -# the vehicle pitch up/back. -# Units: rad (radians) -# Range: -0.1745 +0.1745 -# Increment: 0.01 -# Default: 0 -AHRS_TRIM_Y,0.01101564 - -# Acceleration Max for Pitch -# Maximum acceleration in pitch axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 180000 -# Increment: 1000 -# 0: Disabled -# 30000: VerySlow -# 72000: Slow -# 108000: Medium -# 162000: Fast -# Default: 110000 +AHRS_TRIM_X,0.005101477261632681 +AHRS_TRIM_Y,0.010856986045837402 ATC_ACCEL_P_MAX,193500.0 - -# Acceleration Max for Roll -# Maximum acceleration in roll axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 180000 -# Increment: 1000 -# 0: Disabled -# 30000: VerySlow -# 72000: Slow -# 108000: Medium -# 162000: Fast -# Default: 110000 ATC_ACCEL_R_MAX,193500.0 - -# Acceleration Max for Yaw -# Maximum acceleration in yaw axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 72000 -# Increment: 1000 -# 0: Disabled -# 9000: VerySlow -# 18000: Slow -# 36000: Medium -# 54000: Fast -# Default: 27000 ATC_ACCEL_Y_MAX,33300.0 - -# Pitch axis rate controller derivative frequency in Hz -# Pitch axis rate controller derivative frequency in Hz -# Range: 0 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 ATC_RAT_PIT_FLTD,57.5 # INS_GYRO_FILTER / 2 - -# Pitch axis rate controller target frequency in Hz -# Pitch axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 ATC_RAT_PIT_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Roll axis rate controller derivative frequency in Hz -# Roll axis rate controller derivative frequency in Hz -# Range: 0 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 ATC_RAT_RLL_FLTD,57.5 # INS_GYRO_FILTER / 2 - -# Roll axis rate controller target frequency in Hz -# Roll axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 ATC_RAT_RLL_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Yaw axis rate controller error frequency in Hz -# Yaw axis rate controller error frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 2.5 ATC_RAT_YAW_FLTE,2.0 - -# Yaw axis rate controller target frequency in Hz -# Yaw axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 ATC_RAT_YAW_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Compass is attached via an external cable -# Configure compass so it is attached externally. This is auto-detected on most boards. Set to 1 if the -# compass is externally connected. When externally connected the COMPASS_ORIENT option operates -# independently of the AHRS_ORIENTATION board orientation option. If set to 0 or 1 then auto-detection by -# bus connection can override the value. If set to 2 then auto-detection will be disabled. -# 0: Internal -# 1: External -# 2: ForcedExternal -# Default: 0 -COMPASS_EXTERNAL,1.0 - -# Compass orientation -# The orientation of the first external compass relative to the vehicle frame. This value will be ignored -# unless this compass is set as an external compass. When set correctly in the northern hemisphere, -# pointing the nose and right side down should increase the MagX and MagY values respectively. Rolling the -# vehicle upside down should decrease the MagZ value. For southern hemisphere, switch increase and -# decrease. NOTE: For internal compasses, AHRS_ORIENT is used. The label for each option is specified in -# the order of rotations for that orientation. Firmware versions 4.2 and prior can use a CUSTOM (100) -# rotation to set the COMPASS_CUS_ROLL/PIT/YAW angles for Compass orientation. Later versions provide two -# general custom rotations which can be used, Custom 1 and Custom 2, with CUST_1_ROLL/PIT/YAW or -# CUST_2_ROLL/PIT/YAW angles. -# 0: None 16: Roll90 32: Pitch180Roll270 -# 1: Yaw45 17: Yaw45Roll90 33: Pitch270Roll90 -# 2: Yaw90 18: Yaw90Roll90 34: Pitch270Roll180 -# 3: Yaw135 19: Yaw135Roll90 35: Pitch270Roll270 -# 4: Yaw180 20: Roll270 36: Yaw90Pitch180Roll90 -# 5: Yaw225 21: Yaw45Roll270 37: Yaw270Roll90 -# 6: Yaw270 22: Yaw90Roll270 38: Yaw293Pitch68Roll180 -# 7: Yaw315 23: Yaw135Roll270 39: Pitch315 -# 8: Roll180 24: Pitch90 40: Pitch315Roll90 -# 9: Yaw45Roll180 25: Pitch270 42: Roll45 -# 10: Yaw90Roll180 26: Yaw90Pitch180 43: Roll315 -# 11: Yaw135Roll180 27: Yaw270Pitch180 100: Custom 4.1 and older -# 12: Pitch180 28: Pitch90Roll90 101: Custom 1 -# 13: Yaw225Roll180 29: Pitch90Roll180 102: Custom 2 -# 14: Yaw270Roll180 30: Pitch90Roll270 -# 15: Yaw315Roll180 31: Pitch180Roll90 -# Default: 0 +COMPASS_EXTERNAL,0.0 COMPASS_ORIENT,6.0 - -# Compass device id with 1st order priority -# Compass device id with 1st order priority, set automatically if 0. Reboot required after change. -# RebootRequired: True -# Default: 0 COMPASS_PRIO1_ID,658953.0 - -# Compass2 used for yaw -# Enable or disable the secondary compass for determining heading. -# 0: Disabled -# 1: Enabled -# Default: 1 COMPASS_USE2,0.0 - -# Compass3 used for yaw -# Enable or disable the tertiary compass for determining heading. -# 0: Disabled -# 1: Enabled -# Default: 1 COMPASS_USE3,0.0 - -# Fence Action -# What action should be taken when fence is breached -# 0: Report Only -# 1: RTL or Land -# 2: Always Land -# 3: SmartRTL or RTL or Land -# 4: Brake or Land -# 5: SmartRTL or Land -# Default: 1 FENCE_ACTION,3.0 - -# Fence Maximum Altitude -# Maximum altitude allowed before geofence triggers -# Units: m (meters) -# Range: 10 1000 -# Increment: 1 -# Default: 100 FENCE_ALT_MAX,80.0 - -# Fence enable/disable -# Allows you to enable (1) or disable (0) the fence functionality -# 0: Disabled -# 1: Enabled -# Default: 0 -FENCE_ENABLE,1.0 - -# Circular Fence Radius -# Circle fence radius which when breached will cause an RTL -# Units: m (meters) -# Range: 30 10000 -# Default: 300 +FENCE_ENABLE,0.0 FENCE_RADIUS,150.0 - -# Flight Mode 1 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is <= 1230 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 FLTMODE1,0.0 - -# Flight Mode 2 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1230, <= 1360 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 FLTMODE2,2.0 - -# Flight Mode 3 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1360, <= 1490 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 FLTMODE3,5.0 - -# Flight Mode 4 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1490, <= 1620 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 FLTMODE4,3.0 - -# Flight Mode 5 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1620, <= 1749 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE5,6.0 - -# Flight Mode 6 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >=1750 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE6,15.0 - -# Frame Class -# Controls major frame class for multicopter component -# RebootRequired: True -# 0: Undefined 6: Heli 12: DodecaHexa -# 1: Quad 7: Tri 13: HeliQuad -# 2: Hexa 8: SingleCopter 14: Deca -# 3: Octa 9: CoaxCopter 15: Scripting Matrix -# 4: OctaQuad 10: BiCopter 16: 6DoF Scripting -# 5: Y6 11: Heli_Dual 17: Dynamic Scripting Matrix -# Default: 0 +FLTMODE5,15.0 +FLTMODE6,6.0 FRAME_CLASS,1.0 - -# Frame Type (+, X, V, etc) -# Controls motor mixing for multicopters. Not used for Tri or Traditional Helicopters. -# RebootRequired: True -# 0: Plus 11: Y6F -# 1: X 12: BetaFlightX -# 2: V 13: DJIX -# 3: H 14: ClockwiseX -# 4: V-Tail 15: I -# 5: A-Tail 18: BetaFlightXReversed -# 10: Y6B 19: Y4 -# Default: 1 FRAME_TYPE,1.0 - -# Calibration temperature for 1st accelerometer -# Temperature that the 1st accelerometer was calibrated at -# Units: degC (degrees Celsius) -# Calibration: 1 -# Default: -300 -INS_ACC1_CALTEMP,39.97585 - -# Calibration temperature for 2nd accelerometer -# Temperature that the 2nd accelerometer was calibrated at -# Units: degC (degrees Celsius) -# Calibration: 1 -# Default: -300 -INS_ACC2_CALTEMP,40.94203 - -# Accelerometer2 scaling of X axis -# Accelerometer2 scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_X,0.9974412 - -# Accelerometer2 scaling of Y axis -# Accelerometer2 scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_Y,0.9977408 - -# Accelerometer2 scaling of Z axis -# Accelerometer2 scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_Z,0.9998143 - -# Accelerometer3 scaling of X axis -# Accelerometer3 scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 +INS_ACC1_CALTEMP,55.434783935546875 +INS_ACC2_CALTEMP,55.917877197265625 +INS_ACC2SCAL_X,0.9978519678115845 +INS_ACC2SCAL_Y,0.9963401556015015 +INS_ACC2SCAL_Z,0.9967923164367676 INS_ACC3SCAL_X,0.0 - -# Accelerometer3 scaling of Y axis -# Accelerometer3 scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 INS_ACC3SCAL_Y,0.0 - -# Accelerometer3 scaling of Z axis -# Accelerometer3 scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 INS_ACC3SCAL_Z,0.0 - -# Accelerometer scaling of X axis -# Accelerometer scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_X,0.9991518 - -# Accelerometer scaling of Y axis -# Accelerometer scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_Y,0.9994594 - -# Accelerometer scaling of Z axis -# Accelerometer scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_Z,0.998758 - -# Gyro filter cutoff frequency -# Filter cutoff frequency for gyroscopes. This can be set to a lower value to try to cope with very high -# vibration levels in aircraft. A value of zero means no filtering (not recommended!) -# Units: Hz (hertz) -# Range: 0 256 -# Default: 20 +INS_ACCSCAL_X,0.9986425638198853 +INS_ACCSCAL_Y,1.000264048576355 +INS_ACCSCAL_Z,0.996766984462738 INS_GYRO_FILTER,115.0 - -# Use third IMU for attitude, velocity and position estimates -# Use third IMU for attitude, velocity and position estimates -# 0: Disabled -# 1: Enabled -# Default: 1 -INS_USE3,0.0 - -# Battery voltage compensation maximum voltage -# Battery voltage compensation maximum voltage (voltage above this will have no additional scaling effect -# on thrust). Recommend 4.2 * cell count, 0 = Disabled -# Range: 6 53 -# Units: V (volt) -# Default: 0 -MOT_BAT_VOLT_MAX,16.8 - -# Battery voltage compensation minimum voltage -# Battery voltage compensation minimum voltage (voltage below this will have no additional scaling effect -# on thrust). Recommend 3.3 * cell count, 0 = Disabled -# Range: 6 42 -# Units: V (volt) -# Default: 0 -MOT_BAT_VOLT_MIN,13.2 - -# Motor Spin armed -# Point at which the motors start to spin expressed as a number from 0 to 1 in the entire output range. -# Should be lower than MOT_SPIN_MIN. -# 0.0: Low -# 0.1: Default -# 0.2: High -# Default: 0.1 -MOT_SPIN_ARM,0.01 - -# Motor Spin maximum -# Point at which the thrust saturates expressed as a number from 0 to 1 in the entire output range -# 0.9: Low -# 0.95: Default -# 1.0: High -# Default: 0.95 -MOT_SPIN_MAX,0.95 - -# Motor Spin minimum -# Point at which the thrust starts expressed as a number from 0 to 1 in the entire output range. Should be -# higher than MOT_SPIN_ARM. -# 0.0: Low -# 0.15: Default -# 0.25: High -# Default: 0.15 -MOT_SPIN_MIN,0.04 - -# Thrust Curve Expo -# Motor thrust curve exponent (0.0 for linear to 1.0 for second order curve) -# Range: -1.0 1.0 -# Default: 0.65 -MOT_THST_EXPO,0.48 - -# Thrust Hover Value -# Motor thrust needed to hover expressed as a number from 0 to 1 -# Range: 0.2 0.8 -# Default: 0.35 -MOT_THST_HOVER,0.2 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 +INS_USE3,1.0 +MOT_BAT_VOLT_MAX,16.799999237060547 +MOT_BAT_VOLT_MIN,13.199999809265137 +MOT_SPIN_ARM,0.019999999552965164 +MOT_SPIN_MAX,0.949999988079071 +MOT_SPIN_MIN,0.05000000074505806 +MOT_THST_EXPO,0.47999998927116394 +MOT_THST_HOVER,0.20000000298023224 RC1_MAX,2011.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 RC1_MIN,988.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 RC1_TRIM,1500.0 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 RC2_MAX,2011.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 RC2_MIN,988.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 RC2_TRIM,1500.0 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 RC3_MAX,2011.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 RC3_MIN,988.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC3_TRIM,1466.0 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 +RC3_TRIM,988.0 RC4_MAX,2011.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 RC4_MIN,988.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 RC4_TRIM,1500.0 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC5_MAX,1856.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC5_MIN,1143.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC5_TRIM,1143.0 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 +RC5_MAX,1857.0 +RC5_MIN,1141.0 +RC5_TRIM,1570.0 RC6_MAX,2011.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 RC6_MIN,988.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 RC6_TRIM,988.0 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 RC7_MAX,2011.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 RC7_MIN,988.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 RC7_TRIM,988.0 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 RC8_MAX,2011.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 RC8_MIN,988.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 RC8_TRIM,988.0 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 RC9_MAX,2011.0 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 RC9_MIN,988.0 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 RC9_TRIM,988.0 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 SERVO1_FUNCTION,33.0 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 SERVO2_FUNCTION,34.0 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 SERVO3_FUNCTION,35.0 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 SERVO4_FUNCTION,36.0 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/12_general_configuration.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/12_general_configuration.param index c462886..225186c 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/12_general_configuration.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/12_general_configuration.param @@ -1,3 +1,12 @@ +# Arm Checks to Perform (bitmask) +# Checks prior to arming motor. This is a bitmask of checks that will be performed before allowing arming. +# For most users it is recommended to leave this at the default of 1 (all checks enabled). You can select +# whatever checks you prefer by adding together the values of each check type to set this parameter. For +# example, to only allow arming when you have GPS lock and no RC failsafe you would set ARMING_CHECK to 72. +# Bitmask: 0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder,16:Camera,17:AuxAuth,18:VisualOdometry,19:FFT +# Default: 1 +ARMING_CHECK,1 # perform all arming checks. If you have a problem fix it's source. Do NOT change this + # Timezone offset from UTC # Adds offset in +- minutes from UTC to calculate local time # Range: -720 +840 @@ -110,4 +119,4 @@ SCHED_LOOP_RATE,800 # On our vehicle the propellers rotate at speeds higher tha # 0: None # 1: Lua Scripts # Default: 0 -SCR_ENABLE,1 # For MagFit automation and Windspeed Estimation automation +SCR_ENABLE,1 # For VTOL-Quicktune, MagFit automation and Windspeed Estimation automation diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/16_remote_id.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/16_remote_id.param index 693baba..768edb1 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/16_remote_id.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/16_remote_id.param @@ -1,29 +1,4 @@ -# DroneCAN driver number -# DroneCAN driver index, 0 to disable DroneCAN -# 0: Disabled -# 1: Driver1 -# 2: Driver2 DID_CANDRIVER,0 - -# Enable ODID subsystem -# Enable ODID subsystem -# 0: Disabled -# 1: Enabled DID_ENABLE,0 # Our RemoteID module does not communicate with ArduPilot - -# MAVLink serial port -# Serial port number to send OpenDroneID MAVLink messages to. Can be -1 if using DroneCAN. -# -1: Disabled -# 0: Serial0 -# 1: Serial1 -# 2: Serial2 -# 3: Serial3 -# 4: Serial4 -# 5: Serial5 -# 6: Serial6 DID_MAVPORT,2 # The serial port attached to the OpenDroneID module - -# OpenDroneID options -# Options for OpenDroneID subsystem -# Bitmask: 0:EnforceArming, 1:AllowNonGPSPosition DID_OPTIONS,0 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/17_notch_filter_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/17_notch_filter_setup.param index 46e9e54..1d26dae 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/17_notch_filter_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/17_notch_filter_setup.param @@ -1,99 +1,10 @@ -# Fast sampling mask -# Mask of IMUs to enable fast sampling on, if available -# Bitmask: 0:FirstIMU,1:SecondIMU,2:ThirdIMU -# Default: 1 INS_FAST_SAMPLE,3 # Both IMUs can run fast on the Matek H743 Slim flight controller - -# Gyro rate for IMUs with Fast Sampling enabled -# Gyro rate for IMUs with fast sampling enabled. The gyro rate is the sample rate at which the IMU filters -# operate and needs to be at least double the maximum filter frequency. If the sensor does not support the -# selected rate the next highest supported rate will be used. For IMUs which do not support fast sampling -# this setting is ignored and the default gyro rate of 1Khz is used. -# RebootRequired: True -# 0: 1kHz -# 1: 2kHz -# 2: 4kHz -# 3: 8kHz -# Default: 1 INS_GYRO_RATE,2 # The Matek H743 Slim can do 4KHz here - -# Harmonic Notch Filter attenuation -# Harmonic Notch Filter attenuation in dB. Values greater than 40dB will typically produce a hard notch -# rather than a modest attenuation of motor noise. -# Range: 5 50 -# Units: dB (decibel) -# Default: 40 INS_HNTCH_ATT,20 # this is just a hunch, it must be improved after the first flight (by the next file) - -# Harmonic Notch Filter bandwidth -# Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of -# base frequency to bandwidth determines the notch quality factor and is fixed across harmonics. -# Range: 5 250 -# Units: Hz (hertz) -# Default: 40 INS_HNTCH_BW,20 # this is just a hunch, it must be improved after the first flight (by the next file) - -# Harmonic Notch Filter enable -# Harmonic Notch Filter enable -# 0: Disabled -# 1: Enabled -# Default: 0 INS_HNTCH_ENABLE,1 # the first notch filter will be used to filter the noise created by the motors/propellers - -# Harmonic Notch Filter base frequency -# Harmonic Notch Filter base center frequency in Hz. This should be set at most half the backend gyro rate -# (which is typically 1Khz). For helicopters using RPM sensor to dynamically set the notch frequency, use -# this parameter to provide a lower limit to the dynamic notch filter. Recommend setting it to half the -# operating rotor speed in Hz. -# Range: 10 495 -# Units: Hz (hertz) -# Default: 80 -INS_HNTCH_FREQ,160 # Start with 1.4 • INS_GYRO_FILTER - -# Harmonic Notch Filter harmonics -# Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next -# reboot. A value of 0 disables this filter. The first harmonic refers to the base frequency. -# Bitmask: 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic -# RebootRequired: True -# Default: 1 +INS_HNTCH_FREQ,161 # Use 1.4 * INS_GYRO_FILTER as a first guess INS_HNTCH_HMNCS,1 # start with a single frequency - -# Harmonic Notch Filter dynamic frequency tracking mode -# Harmonic Notch Filter dynamic frequency tracking mode. Dynamic updates can be throttle, RPM sensor, ESC -# telemetry or dynamic FFT based. Throttle-based updates should only be used with multicopters. -# Range: 0 4 -# 0: Disabled -# 1: Throttle -# 2: RPM Sensor -# 3: ESC Telemetry -# 4: Dynamic FFT -# 5: Second RPM Sensor -# Default: 1 INS_HNTCH_MODE,3 # Use the BDshot600 RPM telemetry to dynamicaly track noise created by the motors/propellers - -# Harmonic Notch Filter options -# Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider -# bandwidth with reduced latency than single notches and are suitable for larger aircraft. Dynamic -# harmonics attaches a harmonic notch to each detected noise frequency instead of simply being multiples of -# the base frequency, in the case of FFT it will attach notches to each of three detected noise peaks, in -# the case of ESC it will attach notches to each of four motor RPM values. Loop rate update changes the -# notch center frequency at the scheduler loop rate rather than at the default of 200Hz. If both double and -# triple notches are specified only double notches will take effect. -# Bitmask: 0:Double notch,1:Dynamic harmonic,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch -# RebootRequired: True -# Default: 0 INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate - -# Harmonic Notch Filter reference value -# A reference value of zero disables dynamic updates on the Harmonic Notch Filter and a positive value -# enables dynamic updates on the Harmonic Notch Filter. For throttle-based scaling, this parameter is the -# reference value associated with the specified frequency to facilitate frequency scaling of the Harmonic -# Notch Filter. For RPM and ESC telemetry based tracking, this parameter is set to 1 to enable the Harmonic -# Notch Filter using the RPM sensor or ESC telemetry set to measure rotor speed. The sensor data is -# converted to Hz automatically for use in the Harmonic Notch Filter. This reference value may also be -# used to scale the sensor data, if required. For example, rpm sensor data is required to measure heli -# motor RPM. Therefore the reference value can be used to scale the RPM sensor to the rotor RPM. -# Range: 0.0 1.0 -# RebootRequired: True -# Default: 0 INS_HNTCH_REF,1 # Use the BDshot600 RPM telemetry to dynamicaly track noise created by the motors/propellers diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/18_notch_filter_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/18_notch_filter_results.param index 49309f1..2a0805f 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/18_notch_filter_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/18_notch_filter_results.param @@ -1,56 +1,6 @@ -# Harmonic Notch Filter attenuation -# Harmonic Notch Filter attenuation in dB. Values greater than 40dB will typically produce a hard notch -# rather than a modest attenuation of motor noise. -# Range: 5 50 -# Units: dB (decibel) -# Default: 40 INS_HNTCH_ATT,30 # just enough to filter the noise created by the motors/propellers - -# Harmonic Notch Filter bandwidth -# Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of -# base frequency to bandwidth determines the notch quality factor and is fixed across harmonics. -# Range: 5 250 -# Units: Hz (hertz) -# Default: 40 INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propellers - -# Throttle notch min freqency ratio -# The minimum ratio below the configured frequency to take throttle based notch filters when flying at a -# throttle level below the reference throttle. Note that lower frequency notch filters will have more phase -# lag. If you want throttle based notch filtering to be effective at a throttle up to 30% below the -# configured notch frequency then set this parameter to 0.7. The default of 1.0 means the notch will not go -# below the frequency in the FREQ parameter. -# Range: 0.1 1.0 -# Default: 1 INS_HNTCH_FM_RAT,1 # Allowed undercutting of the base frequency of the first notch filter - -# Harmonic Notch Filter base frequency -# Harmonic Notch Filter base center frequency in Hz. This should be set at most half the backend gyro rate -# (which is typically 1Khz). For helicopters using RPM sensor to dynamically set the notch frequency, use -# this parameter to provide a lower limit to the dynamic notch filter. Recommend setting it to half the -# operating rotor speed in Hz. -# Range: 10 495 -# Units: Hz (hertz) -# Default: 80 -INS_HNTCH_FREQ,180 # the minimum frequency that the motors are expected to operate at - -# Harmonic Notch Filter harmonics -# Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next -# reboot. A value of 0 disables this filter. The first harmonic refers to the base frequency. -# Bitmask: 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic -# RebootRequired: True -# Default: 1 +INS_HNTCH_FREQ,115 # the minimum frequency that the motors are expected to operate at INS_HNTCH_HMNCS,3 # the motors produce secondary harmonics on this vehicle - -# Harmonic Notch Filter options -# Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider -# bandwidth with reduced latency than single notches and are suitable for larger aircraft. Dynamic -# harmonics attaches a harmonic notch to each detected noise frequency instead of simply being multiples of -# the base frequency, in the case of FFT it will attach notches to each of three detected noise peaks, in -# the case of ESC it will attach notches to each of four motor RPM values. Loop rate update changes the -# notch center frequency at the scheduler loop rate rather than at the default of 200Hz. If both double and -# triple notches are specified only double notches will take effect. -# Bitmask: 0:Double notch,1:Dynamic harmonic,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch -# RebootRequired: True -# Default: 0 INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/19_throttle_controller.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/19_throttle_controller.param index c8b676c..e36cde7 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/19_throttle_controller.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/19_throttle_controller.param @@ -1,27 +1,3 @@ -# Throttle Mix Manual -# Throttle vs attitude control prioritisation used during manual flight (higher values mean we prioritise -# attitude control over throttle) -# Range: 0.1 0.9 -# Default: 0.1 ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value - -# Thrust Hover Value -# Motor thrust needed to hover expressed as a number from 0 to 1 -# Range: 0.2 0.8 -# Default: 0.35 -MOT_THST_HOVER,0.2 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 - -# Acceleration (vertical) controller I gain -# Acceleration (vertical) controller I gain. Corrects long-term difference in desired vertical -# acceleration and actual acceleration -# Range: 0.000 3.000 -# Default: 1 PSC_ACCZ_I,0.4 # 2 • MOT_THST_HOVER - -# Acceleration (vertical) controller P gain -# Acceleration (vertical) controller P gain. Converts the difference between desired vertical acceleration -# and actual acceleration into a motor output -# Range: 0.200 1.500 -# Increment: 0.05 -# Default: 0.5 PSC_ACCZ_P,0.2 # MOT_THST_HOVER diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/20_quick_tune_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/20_quick_tune_setup.param index 9844569..e576b10 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/20_quick_tune_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/20_quick_tune_setup.param @@ -2,7 +2,7 @@ QUIK_AUTO_FILTER,1.0 QUIK_AUTO_SAVE,0.0 QUIK_AXES,7 QUIK_DOUBLE_TIME,10.0 -QUIK_ENABLE,1 # enables quiktune script +QUIK_ENABLE,1 # Use VTOL-Quicktune lua script to estimate a good PID starting values QUIK_GAIN_MARGIN,60.0 QUIK_MAX_REDUCE,20.0 QUIK_OPTIONS,0.0 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/23_inflight_magnetometer_fit_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/23_inflight_magnetometer_fit_results.param index 6002ecb..7232a80 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/23_inflight_magnetometer_fit_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/23_inflight_magnetometer_fit_results.param @@ -1,110 +1,139 @@ +# Compass offsets in milligauss on the X axis +# Offset to be added to the compass x-axis values to compensate for metal in the frame +# Range: -400 400 +# Units: mGauss (milligauss) +# Increment: 1 +# Calibration: 1 +# Default: 0 +COMPASS_OFS_X,76.89418 + +# Compass offsets in milligauss on the Y axis +# Offset to be added to the compass y-axis values to compensate for metal in the frame +# Range: -400 400 +# Units: mGauss (milligauss) +# Increment: 1 +# Calibration: 1 +# Default: 0 +COMPASS_OFS_Y,-108.94388 + +# Compass offsets in milligauss on the Z axis +# Offset to be added to the compass z-axis values to compensate for metal in the frame +# Range: -400 400 +# Units: mGauss (milligauss) +# Increment: 1 +# Default: 0 +COMPASS_OFS_Z,295.8105 + # Compass soft-iron diagonal X component # DIA_X in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Calibration: 1 # Default: 1 -COMPASS_DIA_X,1.033 # Diagonal X component for static compensation of metal in the frame +COMPASS_DIA_X,1.0596071 # Compass soft-iron diagonal Y component # DIA_Y in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Calibration: 1 # Default: 1 -COMPASS_DIA_Y,1.032 # Diagonal Y component for static compensation of metal in the frame +COMPASS_DIA_Y,1.0279562 # Compass soft-iron diagonal Z component # DIA_Z in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Default: 1 -COMPASS_DIA_Z,0.842 # Diagonal Z component for static compensation of metal in the frame - -# Motor interference compensation for body frame X axis -# Multiplied by the current throttle and added to the compass's x-axis values to compensate for motor -# interference (Offset per Amp or at Full Throttle) -# Range: -1000 1000 -# Units: mGauss/A (milligauss per ampere) -# Increment: 1 -# Calibration: 1 -# Default: 0 -COMPASS_MOT_X,0.195 # Correction value for motor currents in X direction - -# Motor interference compensation for body frame Y axis -# Multiplied by the current throttle and added to the compass's y-axis values to compensate for motor -# interference (Offset per Amp or at Full Throttle) -# Range: -1000 1000 -# Units: mGauss/A (milligauss per ampere) -# Increment: 1 -# Calibration: 1 -# Default: 0 -COMPASS_MOT_Y,0.394 # Correction value for motor currents in Y direction - -# Motor interference compensation for body frame Z axis -# Multiplied by the current throttle and added to the compass's z-axis values to compensate for motor -# interference (Offset per Amp or at Full Throttle) -# Range: -1000 1000 -# Units: mGauss/A (milligauss per ampere) -# Increment: 1 -# Default: 0 -COMPASS_MOT_Z,-1.366 # Correction value for motor currents in Z direction - -# Motor interference compensation type -# Set motor interference compensation type to disabled, throttle or current. Do not change manually. -# Calibration: 1 -# 0: Disabled -# 1: Use Throttle -# 2: Use Current -# Default: 0 -COMPASS_MOTCT,2 # Type of interference compensation; two means current-based compensation +COMPASS_DIA_Z,0.9124366 # Compass soft-iron off-diagonal X component # ODI_X in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Calibration: 1 # Default: 0 -COMPASS_ODI_X,0.001 # Off-diagonal X component for static compensation of metal in the frame +COMPASS_ODI_X,-0.0022481442 # Compass soft-iron off-diagonal Y component # ODI_Y in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Calibration: 1 # Default: 0 -COMPASS_ODI_Y,-0.070 # Off-diagonal Y component for static compensation of metal in the frame +COMPASS_ODI_Y,-0.022540506 # Compass soft-iron off-diagonal Z component # ODI_Z in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Default: 0 -COMPASS_ODI_Z,0.083 # Off-diagonal Z component for static compensation of metal in the frame +COMPASS_ODI_Z,-0.021016626 -# Compass offsets in milligauss on the X axis -# Offset to be added to the compass x-axis values to compensate for metal in the frame -# Range: -400 400 -# Units: mGauss (milligauss) +# Motor interference compensation for body frame X axis +# Multiplied by the current throttle and added to the compass's x-axis values to compensate for motor +# interference (Offset per Amp or at Full Throttle) +# Range: -1000 1000 +# Units: mGauss/A (milligauss per ampere) # Increment: 1 # Calibration: 1 # Default: 0 -COMPASS_OFS_X,313 # Lateral compass offset to the X axis for static compensation of metal in the frame +COMPASS_MOT_X,0 -# Compass offsets in milligauss on the Y axis -# Offset to be added to the compass y-axis values to compensate for metal in the frame -# Range: -400 400 -# Units: mGauss (milligauss) +# Motor interference compensation for body frame Y axis +# Multiplied by the current throttle and added to the compass's y-axis values to compensate for motor +# interference (Offset per Amp or at Full Throttle) +# Range: -1000 1000 +# Units: mGauss/A (milligauss per ampere) # Increment: 1 # Calibration: 1 # Default: 0 -COMPASS_OFS_Y,-42 # Lateral compass offset to the Y axis for static compensation of metal in the frame +COMPASS_MOT_Y,0 -# Compass offsets in milligauss on the Z axis -# Offset to be added to the compass z-axis values to compensate for metal in the frame -# Range: -400 400 -# Units: mGauss (milligauss) +# Motor interference compensation for body frame Z axis +# Multiplied by the current throttle and added to the compass's z-axis values to compensate for motor +# interference (Offset per Amp or at Full Throttle) +# Range: -1000 1000 +# Units: mGauss/A (milligauss per ampere) # Increment: 1 # Default: 0 -COMPASS_OFS_Z,214 # Lateral compass offset to the Z axis for static compensation of metal in the frame +COMPASS_MOT_Z,0 # Compass1 scale factor # Scaling factor for first compass to compensate for sensor scaling errors. If this is 0 then no scaling is # done # Range: 0 1.3 # Default: 0 -COMPASS_SCALE,1.00 # Scaling factor for compensation +COMPASS_SCALE,0.96805 + +# Compass orientation +# The orientation of the first external compass relative to the vehicle frame. This value will be ignored +# unless this compass is set as an external compass. When set correctly in the northern hemisphere, +# pointing the nose and right side down should increase the MagX and MagY values respectively. Rolling the +# vehicle upside down should decrease the MagZ value. For southern hemisphere, switch increase and +# decrease. NOTE: For internal compasses, AHRS_ORIENT is used. The label for each option is specified in +# the order of rotations for that orientation. Firmware versions 4.2 and prior can use a CUSTOM (100) +# rotation to set the COMPASS_CUS_ROLL/PIT/YAW angles for Compass orientation. Later versions provide two +# general custom rotations which can be used, Custom 1 and Custom 2, with CUST_1_ROLL/PIT/YAW or +# CUST_2_ROLL/PIT/YAW angles. +# 0: None 16: Roll90 32: Pitch180Roll270 +# 1: Yaw45 17: Yaw45Roll90 33: Pitch270Roll90 +# 2: Yaw90 18: Yaw90Roll90 34: Pitch270Roll180 +# 3: Yaw135 19: Yaw135Roll90 35: Pitch270Roll270 +# 4: Yaw180 20: Roll270 36: Yaw90Pitch180Roll90 +# 5: Yaw225 21: Yaw45Roll270 37: Yaw270Roll90 +# 6: Yaw270 22: Yaw90Roll270 38: Yaw293Pitch68Roll180 +# 7: Yaw315 23: Yaw135Roll270 39: Pitch315 +# 8: Roll180 24: Pitch90 40: Pitch315Roll90 +# 9: Yaw45Roll180 25: Pitch270 42: Roll45 +# 10: Yaw90Roll180 26: Yaw90Pitch180 43: Roll315 +# 11: Yaw135Roll180 27: Yaw270Pitch180 100: Custom 4.1 and older +# 12: Pitch180 28: Pitch90Roll90 101: Custom 1 +# 13: Yaw225Roll180 29: Pitch90Roll180 102: Custom 2 +# 14: Yaw270Roll180 30: Pitch90Roll270 +# 15: Yaw315Roll180 31: Pitch180Roll90 +# Default: 0 +COMPASS_ORIENT,6 + +# Motor interference compensation type +# Set motor interference compensation type to disabled, throttle or current. Do not change manually. +# Calibration: 1 +# 0: Disabled +# 1: Use Throttle +# 2: Use Current +# Default: 0 +COMPASS_MOTCT,0 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/25_quick_tune_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/25_quick_tune_results.param index 20a5edb..9073357 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/25_quick_tune_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/25_quick_tune_results.param @@ -1,10 +1,77 @@ -ATC_RAT_PIT_D,0.006590242 -ATC_RAT_PIT_I,0.4121751 -ATC_RAT_PIT_P,0.4121751 -ATC_RAT_RLL_D,0.00362229 -ATC_RAT_RLL_I,0.2512255 -ATC_RAT_RLL_P,0.2512255 +# Pitch axis rate controller D gain +# Pitch axis rate controller D gain. Compensates for short-term change in desired pitch rate vs actual +# pitch rate +# Range: 0.0 0.03 +# Increment: 0.001 +# Default: 0.0036 +ATC_RAT_PIT_D,0.005729 + +# Pitch axis rate controller I gain +# Pitch axis rate controller I gain. Corrects long-term difference in desired pitch rate vs actual pitch +# rate +# Range: 0.0 0.6 +# Increment: 0.01 +# Default: 0.135 +ATC_RAT_PIT_I,0.41322 + +# Pitch axis rate controller P gain +# Pitch axis rate controller P gain. Corrects in proportion to the difference between the desired pitch +# rate vs actual pitch rate +# Range: 0.0 0.35 +# Increment: 0.005 +# Default: 0.135 +ATC_RAT_PIT_P,0.41322 + +# Roll axis rate controller D gain +# Roll axis rate controller D gain. Compensates for short-term change in desired roll rate vs actual roll +# rate +# Range: 0.0 0.03 +# Increment: 0.001 +# Default: 0.0036 +ATC_RAT_RLL_D,0.003674 + +# Roll axis rate controller I gain +# Roll axis rate controller I gain. Corrects long-term difference in desired roll rate vs actual roll rate +# Range: 0.0 0.6 +# Increment: 0.01 +# Default: 0.135 +ATC_RAT_RLL_I,0.247436 + +# Roll axis rate controller P gain +# Roll axis rate controller P gain. Corrects in proportion to the difference between the desired roll rate +# vs actual roll rate +# Range: 0.0 0.35 +# Increment: 0.005 +# Default: 0.135 +ATC_RAT_RLL_P,0.247436 + +# Yaw axis rate controller D gain +# Yaw axis rate controller D gain. Compensates for short-term change in desired yaw rate vs actual yaw +# rate +# Range: 0.000 0.02 +# Increment: 0.001 +# Default: 0 ATC_RAT_YAW_D,0.01 + +# Yaw axis rate controller derivative frequency in Hz +# Yaw axis rate controller derivative frequency in Hz +# Range: 0 50 +# Increment: 1 +# Units: Hz (hertz) +# Default: 0 ATC_RAT_YAW_FLTD,57.5 + +# Yaw axis rate controller I gain +# Yaw axis rate controller I gain. Corrects long-term difference in desired yaw rate vs actual yaw rate +# Range: 0.01 0.2 +# Increment: 0.01 +# Default: 0.018 ATC_RAT_YAW_I,0.05 -ATC_RAT_YAW_P,0.5 \ No newline at end of file + +# Yaw axis rate controller P gain +# Yaw axis rate controller P gain. Corrects in proportion to the difference between the desired yaw rate +# vs actual yaw rate +# Range: 0.180 0.60 +# Increment: 0.005 +# Default: 0.18 +ATC_RAT_YAW_P,0.5 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/28_autotune_roll_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/28_autotune_roll_setup.param index 5fecc2e..0092932 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/28_autotune_roll_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/28_autotune_roll_setup.param @@ -2,10 +2,10 @@ # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,1 # Autotune on roll axis +AUTOTUNE_AXES,1 # Autotune roll axis diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/29_autotune_roll_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/29_autotune_roll_results.param index 5488ccf..cd56c0e 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/29_autotune_roll_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/29_autotune_roll_results.param @@ -9,14 +9,14 @@ # 108000: Medium # 162000: Fast # Default: 110000 -ATC_ACCEL_R_MAX,507500 +ATC_ACCEL_R_MAX,523377.3125 # Roll axis angle controller P gain # Roll axis angle controller P gain. Converts the error between the desired roll angle and actual angle to # a desired roll rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_RLL_P,36 # higher value mean a tighter tune +ATC_ANG_RLL_P,36 # higher value mean a tighter tune # Roll axis rate controller D gain # Roll axis rate controller D gain. Compensates for short-term change in desired roll rate vs actual roll @@ -24,14 +24,14 @@ ATC_ANG_RLL_P,36 # higher value mean a tighter tune # Range: 0.0 0.03 # Increment: 0.001 # Default: 0.0036 -ATC_RAT_RLL_D,0.005008578 +ATC_RAT_RLL_D,0.002438 # Roll axis rate controller I gain # Roll axis rate controller I gain. Corrects long-term difference in desired roll rate vs actual roll rate # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_RLL_I,0.2908089 +ATC_RAT_RLL_I,0.125126 # Roll axis rate controller P gain # Roll axis rate controller P gain. Converts the difference between desired roll rate and actual roll rate @@ -39,4 +39,4 @@ ATC_RAT_RLL_I,0.2908089 # Range: 0.0 0.35 # Increment: 0.005 # Default: 0.135 -ATC_RAT_RLL_P,0.2908089 +ATC_RAT_RLL_P,0.125126 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/30_autotune_pitch_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/30_autotune_pitch_setup.param index d14c86f..33b7eb4 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/30_autotune_pitch_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/30_autotune_pitch_setup.param @@ -2,10 +2,10 @@ # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,2 # Autotune on pitch axis +AUTOTUNE_AXES,2 # Autotune pitch axis diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/31_autotune_pitch_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/31_autotune_pitch_results.param index 1749256..80ab659 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/31_autotune_pitch_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/31_autotune_pitch_results.param @@ -9,14 +9,14 @@ # 108000: Medium # 162000: Fast # Default: 110000 -ATC_ACCEL_P_MAX,360201.2 +ATC_ACCEL_P_MAX,401666.40625 # Pitch axis angle controller P gain # Pitch axis angle controller P gain. Converts the error between the desired pitch angle and actual angle # to a desired pitch rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_PIT_P,28.51195 # higher value mean a tighter tune +ATC_ANG_PIT_P,34.656452 # higher value mean a tighter tune # Pitch axis rate controller D gain # Pitch axis rate controller D gain. Compensates for short-term change in desired pitch rate vs actual @@ -24,7 +24,7 @@ ATC_ANG_PIT_P,28.51195 # higher value mean a tighter tune # Range: 0.0 0.03 # Increment: 0.001 # Default: 0.0036 -ATC_RAT_PIT_D,0.009135851 +ATC_RAT_PIT_D,0.004433 # Pitch axis rate controller I gain # Pitch axis rate controller I gain. Corrects long-term difference in desired pitch rate vs actual pitch @@ -32,7 +32,7 @@ ATC_RAT_PIT_D,0.009135851 # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_PIT_I,0.5622395 +ATC_RAT_PIT_I,0.282138 # Pitch axis rate controller P gain # Pitch axis rate controller P gain. Converts the difference between desired pitch rate and actual pitch @@ -40,4 +40,4 @@ ATC_RAT_PIT_I,0.5622395 # Range: 0.0 0.35 # Increment: 0.005 # Default: 0.135 -ATC_RAT_PIT_P,0.5622395 +ATC_RAT_PIT_P,0.282138 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/32_autotune_yaw_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/32_autotune_yaw_setup.param index 8e42632..891ff6c 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/32_autotune_yaw_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/32_autotune_yaw_setup.param @@ -10,10 +10,10 @@ ATC_RAT_YAW_FLTD,28.75 # INS_GYRO_FILTER / 4 # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default value because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,4 # Autotune on yaw axis +AUTOTUNE_AXES,4 # Autotune yaw axis diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/33_autotune_yaw_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/33_autotune_yaw_results.param index 243a0ed..66aa780 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/33_autotune_yaw_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/33_autotune_yaw_results.param @@ -9,14 +9,14 @@ # 36000: Medium # 54000: Fast # Default: 27000 -ATC_ACCEL_Y_MAX,57198.53 +ATC_ACCEL_Y_MAX,206781.046875 # Yaw axis angle controller P gain # Yaw axis angle controller P gain. Converts the error between the desired yaw angle and actual angle to a # desired yaw rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_YAW_P,8.714352 # higher value mean a tighter tune +ATC_ANG_YAW_P,25.796528 # higher value mean a tighter tune # Yaw axis rate controller error frequency in Hz # Yaw axis rate controller error frequency in Hz @@ -24,14 +24,14 @@ ATC_ANG_YAW_P,8.714352 # higher value mean a tighter tune # Increment: 1 # Units: Hz (hertz) # Default: 2.5 -ATC_RAT_YAW_FLTE,2.316456 +ATC_RAT_YAW_FLTE,1.986072 # Yaw axis rate controller I gain # Yaw axis rate controller I gain. Corrects long-term difference in desired yaw rate vs actual yaw rate # Range: 0.01 0.2 # Increment: 0.01 # Default: 0.018 -ATC_RAT_YAW_I,0.1023194 +ATC_RAT_YAW_I,0.073779 # Yaw axis rate controller P gain # Yaw axis rate controller P gain. Converts the difference between desired yaw rate and actual yaw rate @@ -39,4 +39,4 @@ ATC_RAT_YAW_I,0.1023194 # Range: 0.180 0.60 # Increment: 0.005 # Default: 0.18 -ATC_RAT_YAW_P,1.023194 +ATC_RAT_YAW_P,0.737788 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/34_autotune_yawd_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/34_autotune_yawd_setup.param index e969220..484fbd4 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/34_autotune_yawd_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/34_autotune_yawd_setup.param @@ -2,16 +2,16 @@ # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,8 # Autotune on yaw D axis +AUTOTUNE_AXES,8 # Autotune yaw D axis # AutoTune minimum D # Defines the minimum D gain # Range: 0.001 0.006 # Default: 0.001 -AUTOTUNE_MIN_D,0.0001 # small copters need small D parameters +AUTOTUNE_MIN_D,0.0001 # small copters need small D parameters diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/35_autotune_yawd_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/35_autotune_yawd_results.param index 6eda8d1..82ffb29 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/35_autotune_yawd_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/35_autotune_yawd_results.param @@ -9,14 +9,14 @@ # 36000: Medium # 54000: Fast # Default: 27000 -ATC_ACCEL_Y_MAX,91119.27 +ATC_ACCEL_Y_MAX,305912.25 # Autotuned in a windless hangar # Yaw axis angle controller P gain # Yaw axis angle controller P gain. Converts the error between the desired yaw angle and actual angle to a # desired yaw rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_YAW_P,14.52818 +ATC_ANG_YAW_P,29.631269 # Autotuned in a windless hangar # Yaw axis rate controller D gain # Yaw axis rate controller D gain. Compensates for short-term change in desired yaw rate vs actual yaw @@ -24,14 +24,14 @@ ATC_ANG_YAW_P,14.52818 # Range: 0.000 0.02 # Increment: 0.001 # Default: 0 -ATC_RAT_YAW_D,0.003507904 # if == to AUTOTUNE_MIN_D, autotune failed +ATC_RAT_YAW_D,0.017587 # if == to AUTOTUNE_MIN_D, autotune failed # Yaw axis rate controller I gain # Yaw axis rate controller I gain. Corrects long-term difference in desired yaw rate vs actual yaw rate # Range: 0.01 0.2 # Increment: 0.01 # Default: 0.018 -ATC_RAT_YAW_I,0.09050494 +ATC_RAT_YAW_I,0.061538 # Autotuned in a windless hangar # Yaw axis rate controller P gain # Yaw axis rate controller P gain. Converts the difference between desired yaw rate and actual yaw rate @@ -39,4 +39,4 @@ ATC_RAT_YAW_I,0.09050494 # Range: 0.180 0.60 # Increment: 0.005 # Default: 0.18 -ATC_RAT_YAW_P,0.9050494 +ATC_RAT_YAW_P,0.615382 # Autotuned in a windless hangar diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/36_autotune_roll_pitch_retune_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/36_autotune_roll_pitch_retune_setup.param index 294c365..7fe1fd2 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/36_autotune_roll_pitch_retune_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/36_autotune_roll_pitch_retune_setup.param @@ -2,10 +2,10 @@ # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,3 # Autotune on roll and pitch axis +AUTOTUNE_AXES,3 # Autotune roll and pitch axis diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/37_autotune_roll_pitch_retune_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/37_autotune_roll_pitch_retune_results.param index 740a277..6ff3dd1 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/37_autotune_roll_pitch_retune_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/37_autotune_roll_pitch_retune_results.param @@ -9,7 +9,7 @@ # 108000: Medium # 162000: Fast # Default: 110000 -ATC_ACCEL_P_MAX,339368.9 +ATC_ACCEL_P_MAX,363812.1875 # Autotuned in a windless hangar # Acceleration Max for Roll # Maximum acceleration in roll axis @@ -22,21 +22,21 @@ ATC_ACCEL_P_MAX,339368.9 # 108000: Medium # 162000: Fast # Default: 110000 -ATC_ACCEL_R_MAX,490096.8 +ATC_ACCEL_R_MAX,495292.5625 # Autotuned in a windless hangar # Pitch axis angle controller P gain # Pitch axis angle controller P gain. Converts the error between the desired pitch angle and actual angle # to a desired pitch rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_PIT_P,31.19081 # higher value mean a tighter tune +ATC_ANG_PIT_P,36 # higher value mean a tighter tune # Roll axis angle controller P gain # Roll axis angle controller P gain. Converts the error between the desired roll angle and actual angle to # a desired roll rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_RLL_P,36 # higher value mean a tighter tune +ATC_ANG_RLL_P,36 # higher value mean a tighter tune # Pitch axis rate controller D gain # Pitch axis rate controller D gain. Compensates for short-term change in desired pitch rate vs actual @@ -44,7 +44,7 @@ ATC_ANG_RLL_P,36 # higher value mean a tighter tune # Range: 0.0 0.03 # Increment: 0.001 # Default: 0.0036 -ATC_RAT_PIT_D,0.006667002 +ATC_RAT_PIT_D,0.003774 # Autotuned in a windless hangar # Pitch axis rate controller I gain # Pitch axis rate controller I gain. Corrects long-term difference in desired pitch rate vs actual pitch @@ -52,7 +52,7 @@ ATC_RAT_PIT_D,0.006667002 # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_PIT_I,0.3464575 +ATC_RAT_PIT_I,0.193122 # Autotuned in a windless hangar # Pitch axis rate controller P gain # Pitch axis rate controller P gain. Converts the difference between desired pitch rate and actual pitch @@ -60,7 +60,7 @@ ATC_RAT_PIT_I,0.3464575 # Range: 0.0 0.35 # Increment: 0.005 # Default: 0.135 -ATC_RAT_PIT_P,0.3464575 +ATC_RAT_PIT_P,0.193122 # Autotuned in a windless hangar # Roll axis rate controller D gain # Roll axis rate controller D gain. Compensates for short-term change in desired roll rate vs actual roll @@ -68,14 +68,14 @@ ATC_RAT_PIT_P,0.3464575 # Range: 0.0 0.03 # Increment: 0.001 # Default: 0.0036 -ATC_RAT_RLL_D,0.004972266 +ATC_RAT_RLL_D,0.00242 # Autotuned in a windless hangar # Roll axis rate controller I gain # Roll axis rate controller I gain. Corrects long-term difference in desired roll rate vs actual roll rate # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_RLL_I,0.286474 +ATC_RAT_RLL_I,0.12357 # Autotuned in a windless hangar # Roll axis rate controller P gain # Roll axis rate controller P gain. Converts the difference between desired roll rate and actual roll rate @@ -83,4 +83,4 @@ ATC_RAT_RLL_I,0.286474 # Range: 0.0 0.35 # Increment: 0.005 # Default: 0.135 -ATC_RAT_RLL_P,0.286474 +ATC_RAT_RLL_P,0.12357 # Autotuned in a windless hangar diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/38_windspeed_estimation.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/38_windspeed_estimation.param index 48d86ee..3ea2583 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/38_windspeed_estimation.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/38_windspeed_estimation.param @@ -7,7 +7,7 @@ # Range: 0.0 1000.0 # Units: kg/m/m (kilograms per square meter) # Default: 0 -EK3_DRAG_BCOEF_X,51.0399 # 0.56 kg / 0.01097 m² +EK3_DRAG_BCOEF_X,54.6857 # 0.600 kg / 0.01097 m² # Ballistic coefficient for Y axis drag # Ratio of mass to drag coefficient measured along the Y body axis. This parameter enables estimation of @@ -18,7 +18,7 @@ EK3_DRAG_BCOEF_X,51.0399 # 0.56 kg / 0.01097 m² # Range: 50.0 1000.0 # Units: kg/m/m (kilograms per square meter) # Default: 0 -EK3_DRAG_BCOEF_Y,38.4798 # 0.56 kg / 0.01455 m² +EK3_DRAG_BCOEF_Y,41.2284 # 0.600 kg / 0.01455 m² # Momentum coefficient for propeller drag # This parameter is used to predict the drag produced by the rotors when flying a multi-copter, enabling @@ -35,7 +35,7 @@ EK3_DRAG_BCOEF_Y,38.4798 # 0.56 kg / 0.01455 m² # Increment: 0.01 # Units: 1/s (per second) # Default: 0 -EK3_DRAG_MCOEF,0.5127 +EK3_DRAG_MCOEF,0.5195 # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled while disarmed. This can make for very large @@ -43,7 +43,7 @@ EK3_DRAG_MCOEF,0.5127 # 0: Disabled # 1: Enabled # Default: 0 -LOG_DISARMED,1 # allow post flight tuning with Replay +LOG_DISARMED,1 # allow post flight tuning with Replay # Enable logging of information needed for Replay # If LOG_REPLAY is set to 1 then the EKF2 state estimator will log detailed information needed for @@ -52,4 +52,4 @@ LOG_DISARMED,1 # allow post flight tuning with Replay # 0: Disabled # 1: Enabled # Default: 0 -LOG_REPLAY,1 # allow post flight tuning with Replay +LOG_REPLAY,1 # allow post flight tuning with Replay diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/40_system_id_roll.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/40_system_id_roll.param index e257124..24a7e81 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/40_system_id_roll.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/40_system_id_roll.param @@ -20,14 +20,26 @@ ARMING_CHECK,540126 # disable Parameter check because we need to set ATC_RAT_RL # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_RLL_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +ATC_RAT_RLL_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal # Rate Feedforward Enable # Controls whether body-frame rate feedfoward is enabled or disabled # 0: Disabled # 1: Enabled # Default: 1 -ATC_RATE_FF_ENAB,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 + +# Flight Mode 5 +# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1620, <= 1749 +# 0: Stabilize 7: Circle 17: Brake 24: ZigZag +# 1: Acro 9: Land 18: Throw 25: SystemID +# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate +# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL +# 4: Guided 14: Flip 21: Smart_RTL +# 5: Loiter 15: AutoTune 22: FlowHold +# 6: RTL 16: PosHold 23: Follow +# Default: 0 +FLTMODE5,25 # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled while disarmed. This can make for very large @@ -35,7 +47,7 @@ ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of # 0: Disabled # 1: Enabled # Default: 0 -LOG_DISARMED,0 # was only needed for wind speed estimation +LOG_DISARMED,0 # was only needed for wind speed estimation # Enable logging of information needed for Replay # If LOG_REPLAY is set to 1 then the EKF2 state estimator will log detailed information needed for @@ -44,7 +56,7 @@ LOG_DISARMED,0 # was only needed for wind speed estimation # 0: Disabled # 1: Enabled # Default: 0 -LOG_REPLAY,0 # was only needed for wind speed estimation +LOG_REPLAY,0 # was only needed for wind speed estimation # System identification axis # Controls which axis are being excited. Set to non-zero to see more parameters @@ -56,7 +68,7 @@ LOG_REPLAY,0 # was only needed for wind speed estimation # 5: Recovery Pitch Angle 12: Mixer Yaw # 6: Recovery Yaw Angle 13: Mixer Thrust # Default: 0 -SID_AXIS,10 +SID_AXIS,10 # Inject chip on the mixer roll signal # System identification Start Frequency # Frequency at the start of the sweep @@ -107,13 +119,13 @@ SID_T_REC,130.0 # 14: AltHold kP 13: Heli Ext Gyro 58: SysID Magnitude # 7: Throttle Rate kP 38: Declination # Default: 0 -TUNE,58 # System identification magnitude +TUNE,0 # System identification magnitude # Tuning maximum # Maximum value that the parameter currently being tuned with the transmitter's channel 6 knob will be set # to # Default: 0 -TUNE_MAX,0.40 # System identification max magnitude +TUNE_MAX,0.4 # System identification max magnitude # Tuning minimum # Minimum value that the parameter currently being tuned with the transmitter's channel 6 knob will be set diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/44_analytical_pid_optimization.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/44_analytical_pid_optimization.param index c034521..fa5c2ff 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/44_analytical_pid_optimization.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/44_analytical_pid_optimization.param @@ -5,14 +5,14 @@ # example, to only allow arming when you have GPS lock and no RC failsafe you would set ARMING_CHECK to 72. # Bitmask: 0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder,16:Camera,17:AuxAuth,18:VisualOdometry,19:FFT # Default: 1 -ARMING_CHECK,0 # normal state for every day use +ARMING_CHECK,1 # Normal state for everyday use # Rate Feedforward Enable # Controls whether body-frame rate feedfoward is enabled or disabled # 0: Disabled # 1: Enabled # Default: 1 -ATC_RATE_FF_ENAB,1 # restore value now that system identification is done +ATC_RATE_FF_ENAB,1 # Restore value now that system identification is done # Acceleration (vertical) controller I gain # Acceleration (vertical) controller I gain. Corrects long-term difference in desired vertical @@ -31,4 +31,4 @@ PSC_ACCZ_I,0.816 # now that system identification on thrust has been completed, # 5: Recovery Pitch Angle 12: Mixer Yaw # 6: Recovery Yaw Angle 13: Mixer Thrust # Default: 0 -SID_AXIS,0 +SID_AXIS,0 # No more system identification chip injections diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/45_everyday_use.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/45_everyday_use.param index 5deae6f..fefd82f 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/45_everyday_use.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/45_everyday_use.param @@ -34,7 +34,7 @@ BATT2_FS_LOW_ACT,2 # outdoors we want the drone to come back # you want to be saved. It is usually best just to enable all basiclog types by setting this to 65535. # Bitmask: 0:Fast Attitude,1:Medium Attitude,2:GPS,3:System Performance,4:Control Tuning,5:Navigation Tuning,6:RC input,7:IMU,8:Mission Commands,9:Battery Monitor,10:RC output,11:Optical Flow,12:PID,13:Compass,15:Camera,17:Motors,18:Fast IMU,19:Raw IMU,20:Video Stabilization,21:Fast harmonic notch logging # Default: 176126 -LOG_BITMASK,2241500 # 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,21:Fast harmonic notch logging +LOG_BITMASK,144348 # 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 # RTL Altitude # The minimum alt above home the vehicle will climb to before returning. If the vehicle is flying higher diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/02_imu_temperature_calibration_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/02_imu_temperature_calibration_setup.param index 2a086e2..2e36ac6 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/02_imu_temperature_calibration_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/02_imu_temperature_calibration_setup.param @@ -3,7 +3,7 @@ # Bitmask: 0:IMU1,1:IMU2,2:IMU3 # RebootRequired: True # Default: 0 -INS_LOG_BAT_MASK,3 # the Matek H743 fligth controller only has two IMUs +INS_LOG_BAT_MASK,3 # the Matek H743 fligth controller only has two IMUs # Enable temperature calibration # Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and @@ -13,7 +13,7 @@ INS_LOG_BAT_MASK,3 # the Matek H743 fligth controller only has two IMUs # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL1_ENABLE,2 # Activates the temperature calibration for IMU 1 at the next start +INS_TCAL1_ENABLE,2 # Activates the temperature calibration for IMU 1 at the next start # Temperature calibration max # The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN @@ -22,7 +22,7 @@ INS_TCAL1_ENABLE,2 # Activates the temperature calibration for IMU 1 at the next # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL1_TMAX,60 # our H7 processor acts as a heater and heats up the board to almost 60 deg +INS_TCAL1_TMAX,60 # our H7 processor acts as a heater and heats up the board to almost 60 deg # Enable temperature calibration # Enable the use of temperature calibration parameters for this IMU. For automatic learning set to 2 and @@ -32,7 +32,7 @@ INS_TCAL1_TMAX,60 # our H7 processor acts as a heater and heats up the board to # 1: Enabled # 2: LearnCalibration # Default: 0 -INS_TCAL2_ENABLE,2 # Activates the temperature calibration for IMU 2 at the next start +INS_TCAL2_ENABLE,2 # Activates the temperature calibration for IMU 2 at the next start # Temperature calibration max # The maximum temperature that the calibration is valid for. This must be at least 10 degrees above TMIN @@ -41,14 +41,14 @@ INS_TCAL2_ENABLE,2 # Activates the temperature calibration for IMU 2 at the next # Units: degC (degrees Celsius) # Calibration: 1 # Default: 70 -INS_TCAL2_TMAX,60 # our H7 processor acts as a heater and heats up the board to almost 60 deg +INS_TCAL2_TMAX,60 # our H7 processor acts as a heater and heats up the board to almost 60 deg # Log bitmask # Bitmap of what on-board log types to enable. This value is made up of the sum of each of the log types # you want to be saved. It is usually best just to enable all basiclog types by setting this to 65535. # Bitmask: 0:Fast Attitude,1:Medium Attitude,2:GPS,3:System Performance,4:Control Tuning,5:Navigation Tuning,6:RC input,7:IMU,8:Mission Commands,9:Battery Monitor,10:RC output,11:Optical Flow,12:PID,13:Compass,15:Camera,17:Motors,18:Fast IMU,19:Raw IMU,20:Video Stabilization,21:Fast harmonic notch logging # Default: 176126 -LOG_BITMASK,524416 # Only for IMU and Raw-IMU +LOG_BITMASK,524416 # Only for IMU and Raw-IMU # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled at all times including when disarmed. Logging @@ -64,4 +64,4 @@ LOG_BITMASK,524416 # Only for IMU and Raw-IMU # 2: Disabled on USB connection # 3: Discard log on reboot if never armed # Default: 0 -LOG_DISARMED,1 # to gather data for the offline IMU temperature compensation while the FC is disarmed +LOG_DISARMED,1 # Gather data for the offline IMU temperature compensation while the FC is disarmed diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/04_board_orientation.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/04_board_orientation.param index df32256..a5aae39 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/04_board_orientation.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/04_board_orientation.param @@ -23,7 +23,7 @@ # 14: Yaw270Roll180 30: Pitch90Roll270 # 15: Yaw315Roll180 31: Pitch180Roll90 # Default: 0 -AHRS_ORIENTATION,0 +AHRS_ORIENTATION,0 # Point forward in the direction of travel # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled at all times including when disarmed. Logging @@ -39,4 +39,4 @@ AHRS_ORIENTATION,0 # 2: Disabled on USB connection # 3: Discard log on reboot if never armed # Default: 0 -LOG_DISARMED,0 # Log disarmed was only required for offline IMU temperature calibration +LOG_DISARMED,0 # Log disarmed was only required for offline IMU temperature calibration diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/05_remote_controller.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/05_remote_controller.param index 5e5dd09..218f4a9 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/05_remote_controller.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/05_remote_controller.param @@ -284,21 +284,6 @@ RC9_OPTION,300 # Used to jump to the next waypoint # Default: 0 RSSI_TYPE,3 # TBS Crossfire protocol provides RSSI -# Telemetry 2 Baud Rate -# The baud rate of the Telem2 port. Most stm32-based boards can support rates of up to 1500. If you setup a -# rate you cannot support and then can't connect to your board you should load a firmware from a different -# vehicle type. That will reset all your parameters to defaults. -# 1: 1200 115: 115200 -# 2: 2400 230: 230400 -# 4: 4800 256: 256000 -# 9: 9600 460: 460800 -# 19: 19200 500: 500000 -# 38: 38400 921: 921600 -# 57: 57600 1500: 1500000 -# 111: 111100 2000: 2000000 -# Default: 57 -SERIAL2_BAUD,115 # For Mavlink over crossfire - # Serial7 protocol selection # Control what protocol Serial7 port should be used for. Note that the Frsky options require external # converter hardware. See the wiki for details. diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/07_esc.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/07_esc.param index 58bd3e8..538c626 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/07_esc.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/07_esc.param @@ -1,318 +1,29 @@ -# Pitch slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 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 - -# Roll slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 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 - -# Yaw slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 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 - -# Output PWM type -# This selects the output PWM type, allowing for normal PWM continuous output, OneShot, brushed or DShot -# motor output -# RebootRequired: True -# 0: Normal -# 1: OneShot -# 2: OneShot125 -# 3: Brushed -# 4: DShot150 -# 5: DShot300 -# 6: DShot600 -# 7: DShot1200 -# 8: PWMRange -# Default: 0 MOT_PWM_TYPE,6 # the most recomended speed for ArduCopter - -# Buzzer Driver Types -# Controls what types of Buzzer will be enabled -# Bitmask: 0:Built-in buzzer, 1:DShot, 2:DroneCAN -# Default: 5 NTF_BUZZ_TYPES,3 # the 4-in-1 ESC uses this - -# LED Driver Types -# Controls what types of LEDs will be enabled -# Bitmask: 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI, 13:LP5562 External, 14: LP5562 Internal, 15:IS31FL3195 External, 16: IS31FL3195 Internal -# Default: 123079 NTF_LED_TYPES,2369 # Built-in LED, NCP5623 External (Holybro F9P), Neopixel (Matek H743 slim v3), and DShot (4-in-1 ESC) - -# Accel (vertical) slew rate limit -# Sets an upper limit on the slew rate produced by the combined P and D gains. If the amplitude of the -# control action produced by the rate feedback exceeds this value, then the D+P gain is reduced to respect -# the limit. This limits the amplitude of high frequency oscillations caused by an excessive gain. The -# limit should be set to no more than 25% of the actuators maximum slew rate to allow for load effects. -# Note: The gain will not be reduced to less than 10% of the nominal value. A value of zero will disable -# this feature. -# Range: 0 200 -# Increment: 0.5 -# Default: 0 PSC_ACCZ_SMAX,25 # limit the slew rate to prevent possible ESC desync - https://ardupilot.org/copter/docs/common-servo-limit-cycle-detection.html - -# Serial 5 Baud Rate -# The baud rate used for Serial5. Most stm32-based boards can support rates of up to 1500. If you setup a -# rate you cannot support and then can't connect to your board you should load a firmware from a different -# vehicle type. That will reset all your parameters to defaults. -# 1: 1200 115: 115200 -# 2: 2400 230: 230400 -# 4: 4800 256: 256000 -# 9: 9600 460: 460800 -# 19: 19200 500: 500000 -# 38: 38400 921: 921600 -# 57: 57600 1500: 1500000 -# 111: 111100 2000: 2000000 -# Default: 115 SERIAL5_BAUD,115 # bi-directional DShot telemetry data rate from T-Motor F45 4in1 ESC V2 - -# Serial5 protocol selection -# Control what protocol Serial5 port should be used for. Note that the Frsky options require external -# converter hardware. See the wiki for details. -# RebootRequired: True -# -1: None 24: EFI Serial -# 1: MAVLink1 25: LTM -# 2: MAVLink2 26: RunCam -# 3: Frsky D 27: HottTelem -# 4: Frsky SPort 28: Scripting -# 5: GPS 29: Crossfire VTX -# 7: Alexmos Gimbal Serial 30: Generator -# 8: Gimbal 31: Winch -# 9: Rangefinder 32: MSP -# 10: FrSky SPort Passthrough (OpenTX) 33: DJI FPV -# 11: Lidar360 34: AirSpeed -# 13: Beacon 35: ADSB -# 14: Volz servo out 36: AHRS -# 15: SBus servo out 37: SmartAudio -# 16: ESC Telemetry 38: FETtecOneWire -# 17: Devo Telemetry 39: Torqeedo -# 18: OpticalFlow 40: AIS -# 19: RobotisServo 41: CoDevESC -# 20: NMEA Output 42: DisplayPort -# 21: WindVane 43: MAVLink High Latency -# 22: SLCAN 44: IRC Tramp -# 23: RCIN -# Default: -1 SERIAL5_PROTOCOL,16 # bi-directional DShot telemetry pin is connected to SERIAL5 - -# BLHeli pass-thru auto-enable for multicopter motors -# If set to 1 this auto-enables BLHeli pass-thru support for all multicopter motors -# RebootRequired: True -# 0: Disabled -# 1: Enabled -# Default: 0 SERVO_BLH_AUTO,1 # Enables BLHeli pass-thru - -# BLHeli bitmask of bi-directional dshot channels -# Mask of channels which support bi-directional dshot. This is used for ESCs which have firmware that -# supports bi-directional dshot allowing fast rpm telemetry values to be returned for the harmonic notch. -# Bitmask: 0:Channel1,1:Channel2,2:Channel3,3:Channel4,4:Channel5,5:Channel6,6:Channel7,7:Channel8,8:Channel9,9:Channel10,10:Channel11,11:Channel12,12:Channel13,13:Channel14,14:Channel15,15:Channel16, 16:Channel 17, 17: Channel 18, 18: Channel 19, 19: Channel 20, 20: Channel 21, 21: Channel 22, 22: Channel 23, 23: Channel 24, 24: Channel 25, 25: Channel 26, 26: Channel 27, 27: Channel 28, 28: Channel 29, 29: Channel 30, 30: Channel 31, 31: Channel 32 -# RebootRequired: True -# Default: 0 SERVO_BLH_BDMASK,15 # All four of our ESC support bi-directional DShot - -# BLHeli Motor Poles -# This allows calculation of true RPM from ESC's eRPM. The default is 14. -# Range: 1 127 -# RebootRequired: True -# Default: 14 -SERVO_BLH_POLES,14 # Number of T-Motor 1507 3800kv motor's magnetic poles - -# BLHeli telemetry rate -# This sets the rate in Hz for requesting telemetry from ESCs. It is the rate per ESC. Setting to zero -# disables telemetry requests -# Units: Hz (hertz) -# Range: 0 500 -# Default: 10 +SERVO_BLH_POLES,14 # Specified in component editor window SERVO_BLH_TRATE,5 # Set to a low value because the RPM telemetry uses bi-directional DShot telemetry instead of this UART telemetry - -# Servo DShot ESC type -# This sets the DShot ESC type for all outputs. The ESC type affects the range of DShot commands available. -# None means that no dshot commands will be executed. -# 0: None -# 1: BLHeli32/Kiss -# 2: BLHeli_S -# Default: 0 -SERVO_DSHOT_ESC,1 - -# Servo DShot output rate -# This sets the DShot output rate for all outputs as a multiple of the loop rate. 0 sets the output rate to -# be fixed at 1Khz for low loop rates. This value should never be set below 500Hz. -# 0: 1Khz -# 1: loop-rate -# 2: double loop-rate -# 3: triple loop-rate -# 4: quadruple loop rate -# Default: 0 +SERVO_DSHOT_ESC,1 # BLHeli32 SERVO_DSHOT_RATE,2 # Sends DShot control signals to the ESC twice per control loop - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 -SERVO1_MAX,2000 - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO1_MIN,1000 - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO1_TRIM,1000 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 +SERVO1_MAX,2000 # Use the full available 1000-2000 DShot range +SERVO1_MIN,1000 # Use the full available 1000-2000 DShot range +SERVO1_TRIM,1000 # Use the full available 1000-2000 DShot range SERVO13_FUNCTION,120 # For matek H743Slim v3 board - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 -SERVO2_MAX,2000 - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO2_MIN,1000 - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO2_TRIM,1000 - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 -SERVO3_MAX,2000 - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO3_MIN,1000 - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO3_TRIM,1000 - -# Maximum PWM -# maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 2000 -SERVO4_MAX,2000 - -# Minimum PWM -# minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO4_MIN,1000 - -# Trim PWM -# Trim PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is upper -# limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1000 -SERVO4_TRIM,1000 - -# Takeoff Check RPM minimum -# Takeoff is not permitted until motors report at least this RPM. Set to zero to disable check -# Range: 0 10000 -# Default: 0 +SERVO2_MAX,2000 # Use the full available 1000-2000 DShot range +SERVO2_MIN,1000 # Use the full available 1000-2000 DShot range +SERVO2_TRIM,1000 # Use the full available 1000-2000 DShot range +SERVO3_MAX,2000 # Use the full available 1000-2000 DShot range +SERVO3_MIN,1000 # Use the full available 1000-2000 DShot range +SERVO3_TRIM,1000 # Use the full available 1000-2000 DShot range +SERVO4_MAX,2000 # Use the full available 1000-2000 DShot range +SERVO4_MIN,1000 # Use the full available 1000-2000 DShot range +SERVO4_TRIM,1000 # Use the full available 1000-2000 DShot range TKOFF_RPM_MIN,1400 # Our motors should idle at around 1400 RPM, see https://ardupilot.org/copter/docs/tkoff-rpm-min.html diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/08_batt1.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/08_batt1.param index cd64ff6..bb6ad79 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/08_batt1.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/08_batt1.param @@ -4,7 +4,7 @@ # Current sensor monitors, this is the maximum, full throttle current draw. # Units: A/V (ampere per volt) # Default: 40 -BATT_AMP_PERVLT,57 +BATT_AMP_PERVLT,158.4 # new calibrated value for Mamba F45_128k 4in1 ESC # Required arming voltage # Battery voltage level which is required to arm the aircraft. Set to 0 to allow arming at any voltage. diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/10_gnss.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/10_gnss.param index 1787285..1604af7 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/10_gnss.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/10_gnss.param @@ -14,7 +14,7 @@ BRD_SAFETY_DEFLT,0 # Matek H743 Slim has no safety switch # Bitmask for what GNSS system to use on the first GPS (all unchecked or zero to leave GPS as configured) # Bitmask: 0:GPS,1:SBAS,2:Galileo,3:Beidou,4:IMES,5:QZSS,6:GLONASS # Default: 0 -GPS_GNSS_MODE,7 # limit the constalations to ensure an update rate higher than 5Hz +GPS_GNSS_MODE,7 # limit the constalations to ensure an update rate higher than 5Hz # Antenna X position offset # X position of the first GPS antenna in body frame. Positive X is forward of the origin. Use antenna phase @@ -23,7 +23,7 @@ GPS_GNSS_MODE,7 # limit the constalations to ensure an update rate higher than 5 # Range: -5 5 # Increment: 0.01 # Default: 0 -GPS_POS1_X,0.056 # HX-CH7604A GNSS antenna pahse center location relative to CG +GPS_POS1_X,0.056 # HX-CH7604A GNSS antenna pahse center location relative to CG # Antenna Y position offset # Y position of the first GPS antenna in body frame. Positive Y is to the right of the origin. Use antenna @@ -32,7 +32,7 @@ GPS_POS1_X,0.056 # HX-CH7604A GNSS antenna pahse center location relative to CG # Range: -5 5 # Increment: 0.01 # Default: 0 -GPS_POS1_Y,0.0 # HX-CH7604A GNSS antenna pahse center location relative to CG +GPS_POS1_Y,0 # HX-CH7604A GNSS antenna pahse center location relative to CG # Antenna Z position offset # Z position of the first GPS antenna in body frame. Positive Z is down from the origin. Use antenna phase @@ -41,7 +41,7 @@ GPS_POS1_Y,0.0 # HX-CH7604A GNSS antenna pahse center location relative to CG # Range: -5 5 # Increment: 0.01 # Default: 0 -GPS_POS1_Z,-0.070 # HX-CH7604A GNSS antenna pahse center location relative to CG +GPS_POS1_Z,-0.07 # HX-CH7604A GNSS antenna pahse center location relative to CG # 1st GPS type # GPS type of 1st GPS @@ -59,36 +59,37 @@ GPS_POS1_Z,-0.070 # HX-CH7604A GNSS antenna pahse center location relative to CG # 13: ERB 25: UnicoreMovingBaselineNMEA # 14: MAV # Default: 1 -GPS_TYPE,2 +GPS_TYPE,2 # Defined in component editor -# Serial4 protocol selection -# Control what protocol Serial4 port should be used for. Note that the Frsky options require external +# Serial 3 (GPS) protocol selection +# Control what protocol Serial 3 (GPS) should be used for. Note that the Frsky options require external # converter hardware. See the wiki for details. # RebootRequired: True -# -1: None 24: EFI Serial -# 1: MAVLink1 25: LTM -# 2: MAVLink2 26: RunCam -# 3: Frsky D 27: HottTelem -# 4: Frsky SPort 28: Scripting -# 5: GPS 29: Crossfire VTX -# 7: Alexmos Gimbal Serial 30: Generator -# 8: Gimbal 31: Winch -# 9: Rangefinder 32: MSP -# 10: FrSky SPort Passthrough (OpenTX) 33: DJI FPV -# 11: Lidar360 34: AirSpeed -# 13: Beacon 35: ADSB -# 14: Volz servo out 36: AHRS -# 15: SBus servo out 37: SmartAudio -# 16: ESC Telemetry 38: FETtecOneWire -# 17: Devo Telemetry 39: Torqeedo -# 18: OpticalFlow 40: AIS -# 19: RobotisServo 41: CoDevESC -# 20: NMEA Output 42: DisplayPort -# 21: WindVane 43: MAVLink High Latency -# 22: SLCAN 44: IRC Tramp -# 23: RCIN +# -1: None 25: LTM +# 1: MAVLink1 26: RunCam +# 2: MAVLink2 27: HottTelem +# 3: Frsky D 28: Scripting +# 4: Frsky SPort 29: Crossfire VTX +# 5: GPS 30: Generator +# 7: Alexmos Gimbal Serial 31: Winch +# 8: Gimbal 32: MSP +# 9: Rangefinder 33: DJI FPV +# 10: FrSky SPort Passthrough (OpenTX) 34: AirSpeed +# 11: Lidar360 35: ADSB +# 13: Beacon 36: AHRS +# 14: Volz servo out 37: SmartAudio +# 15: SBus servo out 38: FETtecOneWire +# 16: ESC Telemetry 39: Torqeedo +# 17: Devo Telemetry 40: AIS +# 18: OpticalFlow 41: CoDevESC +# 19: RobotisServo 42: DisplayPort +# 20: NMEA Output 43: MAVLink High Latency +# 21: WindVane 44: IRC Tramp +# 22: SLCAN 45: DDS XRCE +# 23: RCIN 46: IMUDATA +# 24: EFI Serial # Default: 5 -SERIAL4_PROTOCOL,-1 +SERIAL3_PROTOCOL,5 # GNSS receiver is connected to serial3 # Waypoint Radius # Defines the distance from a waypoint, that when crossed indicates the wp has been hit. diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/11_mp_setup_mandatory_hardware.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/11_mp_setup_mandatory_hardware.param index 90149ad..8d6c4c4 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/11_mp_setup_mandatory_hardware.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/11_mp_setup_mandatory_hardware.param @@ -1,819 +1,79 @@ -# AHRS Trim Roll -# Compensates for the roll angle difference between the control board and the frame. Positive values make -# the vehicle roll right. -# Units: rad (radians) -# Range: -0.1745 +0.1745 -# Increment: 0.01 -# Default: 0 -AHRS_TRIM_X,-0.007751919 - -# AHRS Trim Pitch -# Compensates for the pitch angle difference between the control board and the frame. Positive values make -# the vehicle pitch up/back. -# Units: rad (radians) -# Range: -0.1745 +0.1745 -# Increment: 0.01 -# Default: 0 -AHRS_TRIM_Y,0.01101564 - -# Acceleration Max for Pitch -# Maximum acceleration in pitch axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 180000 -# Increment: 1000 -# 0: Disabled -# 30000: VerySlow -# 72000: Slow -# 108000: Medium -# 162000: Fast -# Default: 110000 -ATC_ACCEL_P_MAX,193500 - -# Acceleration Max for Roll -# Maximum acceleration in roll axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 180000 -# Increment: 1000 -# 0: Disabled -# 30000: VerySlow -# 72000: Slow -# 108000: Medium -# 162000: Fast -# Default: 110000 -ATC_ACCEL_R_MAX,193500 - -# Acceleration Max for Yaw -# Maximum acceleration in yaw axis -# Units: cdeg/s/s (centidegrees per square second) -# Range: 0 72000 -# Increment: 1000 -# 0: Disabled -# 9000: VerySlow -# 18000: Slow -# 36000: Medium -# 54000: Fast -# Default: 27000 -ATC_ACCEL_Y_MAX,33300 - -# Pitch axis rate controller derivative frequency in Hz -# Pitch axis rate controller derivative frequency in Hz -# Range: 0 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_PIT_FLTD,57.5 # INS_GYRO_FILTER / 2 - -# Pitch axis rate controller target frequency in Hz -# Pitch axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_PIT_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Roll axis rate controller derivative frequency in Hz -# Roll axis rate controller derivative frequency in Hz -# Range: 0 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_RLL_FLTD,57.5 # INS_GYRO_FILTER / 2 - -# Roll axis rate controller target frequency in Hz -# Roll axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_RLL_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Yaw axis rate controller error frequency in Hz -# Yaw axis rate controller error frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 2.5 -ATC_RAT_YAW_FLTE,2 - -# Yaw axis rate controller target frequency in Hz -# Yaw axis rate controller target frequency in Hz -# Range: 5 50 -# Increment: 1 -# Units: Hz (hertz) -# Default: 20 -ATC_RAT_YAW_FLTT,57.5 # INS_GYRO_FILTER / 2 - -# Compass is attached via an external cable -# Configure compass so it is attached externally. This is auto-detected on most boards. Set to 1 if the -# compass is externally connected. When externally connected the COMPASS_ORIENT option operates -# independently of the AHRS_ORIENTATION board orientation option. If set to 0 or 1 then auto-detection by -# bus connection can override the value. If set to 2 then auto-detection will be disabled. -# 0: Internal -# 1: External -# 2: ForcedExternal -# Default: 0 -COMPASS_EXTERNAL,1 - -# Compass orientation -# The orientation of the first external compass relative to the vehicle frame. This value will be ignored -# unless this compass is set as an external compass. When set correctly in the northern hemisphere, -# pointing the nose and right side down should increase the MagX and MagY values respectively. Rolling the -# vehicle upside down should decrease the MagZ value. For southern hemisphere, switch increase and -# decrease. NOTE: For internal compasses, AHRS_ORIENT is used. The label for each option is specified in -# the order of rotations for that orientation. Firmware versions 4.2 and prior can use a CUSTOM (100) -# rotation to set the COMPASS_CUS_ROLL/PIT/YAW angles for Compass orientation. Later versions provide two -# general custom rotations which can be used, Custom 1 and Custom 2, with CUST_1_ROLL/PIT/YAW or -# CUST_2_ROLL/PIT/YAW angles. -# 0: None 16: Roll90 32: Pitch180Roll270 -# 1: Yaw45 17: Yaw45Roll90 33: Pitch270Roll90 -# 2: Yaw90 18: Yaw90Roll90 34: Pitch270Roll180 -# 3: Yaw135 19: Yaw135Roll90 35: Pitch270Roll270 -# 4: Yaw180 20: Roll270 36: Yaw90Pitch180Roll90 -# 5: Yaw225 21: Yaw45Roll270 37: Yaw270Roll90 -# 6: Yaw270 22: Yaw90Roll270 38: Yaw293Pitch68Roll180 -# 7: Yaw315 23: Yaw135Roll270 39: Pitch315 -# 8: Roll180 24: Pitch90 40: Pitch315Roll90 -# 9: Yaw45Roll180 25: Pitch270 42: Roll45 -# 10: Yaw90Roll180 26: Yaw90Pitch180 43: Roll315 -# 11: Yaw135Roll180 27: Yaw270Pitch180 100: Custom 4.1 and older -# 12: Pitch180 28: Pitch90Roll90 101: Custom 1 -# 13: Yaw225Roll180 29: Pitch90Roll180 102: Custom 2 -# 14: Yaw270Roll180 30: Pitch90Roll270 -# 15: Yaw315Roll180 31: Pitch180Roll90 -# Default: 0 -COMPASS_ORIENT,6 - -# Compass device id with 1st order priority -# Compass device id with 1st order priority, set automatically if 0. Reboot required after change. -# RebootRequired: True -# Default: 0 -COMPASS_PRIO1_ID,658953 - -# Compass2 used for yaw -# Enable or disable the secondary compass for determining heading. -# 0: Disabled -# 1: Enabled -# Default: 1 -COMPASS_USE2,0 - -# Compass3 used for yaw -# Enable or disable the tertiary compass for determining heading. -# 0: Disabled -# 1: Enabled -# Default: 1 -COMPASS_USE3,0 - -# Fence Action -# What action should be taken when fence is breached -# 0: Report Only -# 1: RTL or Land -# 2: Always Land -# 3: SmartRTL or RTL or Land -# 4: Brake or Land -# 5: SmartRTL or Land -# Default: 1 -FENCE_ACTION,3 - -# Fence Maximum Altitude -# Maximum altitude allowed before geofence triggers -# Units: m (meters) -# Range: 10 1000 -# Increment: 1 -# Default: 100 +AHRS_TRIM_X,0.005101477261632681 +AHRS_TRIM_Y,0.010856986045837402 +ATC_ACCEL_P_MAX,193500.0 +ATC_ACCEL_R_MAX,193500.0 +ATC_ACCEL_Y_MAX,33300.0 +ATC_RAT_PIT_FLTD,57.5 # INS_GYRO_FILTER / 2 +ATC_RAT_PIT_FLTT,57.5 # INS_GYRO_FILTER / 2 +ATC_RAT_RLL_FLTD,57.5 # INS_GYRO_FILTER / 2 +ATC_RAT_RLL_FLTT,57.5 # INS_GYRO_FILTER / 2 +ATC_RAT_YAW_FLTE,2.0 +ATC_RAT_YAW_FLTT,57.5 # INS_GYRO_FILTER / 2 +COMPASS_EXTERNAL,0.0 +COMPASS_ORIENT,6.0 +COMPASS_PRIO1_ID,658953.0 +COMPASS_USE2,0.0 +COMPASS_USE3,0.0 +FENCE_ACTION,3.0 FENCE_ALT_MAX,80.0 - -# Fence enable/disable -# Allows you to enable (1) or disable (0) the fence functionality -# 0: Disabled -# 1: Enabled -# Default: 0 -FENCE_ENABLE,1 - -# Circular Fence Radius -# Circle fence radius which when breached will cause an RTL -# Units: m (meters) -# Range: 30 10000 -# Default: 300 +FENCE_ENABLE,0.0 FENCE_RADIUS,150.0 - -# Flight Mode 1 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is <= 1230 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE1,0 - -# Flight Mode 2 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1230, <= 1360 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE2,2 - -# Flight Mode 3 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1360, <= 1490 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE3,5 - -# Flight Mode 4 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1490, <= 1620 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE4,3 - -# Flight Mode 5 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1620, <= 1749 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE5,6 - -# Flight Mode 6 -# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >=1750 -# 0: Stabilize 7: Circle 17: Brake 24: ZigZag -# 1: Acro 9: Land 18: Throw 25: SystemID -# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate -# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL -# 4: Guided 14: Flip 21: Smart_RTL -# 5: Loiter 15: AutoTune 22: FlowHold -# 6: RTL 16: PosHold 23: Follow -# Default: 0 -FLTMODE6,15 - -# Frame Class -# Controls major frame class for multicopter component -# RebootRequired: True -# 0: Undefined 6: Heli 12: DodecaHexa -# 1: Quad 7: Tri 13: HeliQuad -# 2: Hexa 8: SingleCopter 14: Deca -# 3: Octa 9: CoaxCopter 15: Scripting Matrix -# 4: OctaQuad 10: BiCopter 16: 6DoF Scripting -# 5: Y6 11: Heli_Dual 17: Dynamic Scripting Matrix -# Default: 0 -FRAME_CLASS,1 - -# Frame Type (+, X, V, etc) -# Controls motor mixing for multicopters. Not used for Tri or Traditional Helicopters. -# RebootRequired: True -# 0: Plus 11: Y6F -# 1: X 12: BetaFlightX -# 2: V 13: DJIX -# 3: H 14: ClockwiseX -# 4: V-Tail 15: I -# 5: A-Tail 18: BetaFlightXReversed -# 10: Y6B 19: Y4 -# Default: 1 -FRAME_TYPE,1 - -# Calibration temperature for 1st accelerometer -# Temperature that the 1st accelerometer was calibrated at -# Units: degC (degrees Celsius) -# Calibration: 1 -# Default: -300 -INS_ACC1_CALTEMP,39.97585 - -# Calibration temperature for 2nd accelerometer -# Temperature that the 2nd accelerometer was calibrated at -# Units: degC (degrees Celsius) -# Calibration: 1 -# Default: -300 -INS_ACC2_CALTEMP,40.94203 - -# Accelerometer2 scaling of X axis -# Accelerometer2 scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_X,0.9974412 - -# Accelerometer2 scaling of Y axis -# Accelerometer2 scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_Y,0.9977408 - -# Accelerometer2 scaling of Z axis -# Accelerometer2 scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC2SCAL_Z,0.9998143 - -# Accelerometer3 scaling of X axis -# Accelerometer3 scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC3SCAL_X,0 - -# Accelerometer3 scaling of Y axis -# Accelerometer3 scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC3SCAL_Y,0 - -# Accelerometer3 scaling of Z axis -# Accelerometer3 scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACC3SCAL_Z,0 - -# Accelerometer scaling of X axis -# Accelerometer scaling of X axis. Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_X,0.9991518 - -# Accelerometer scaling of Y axis -# Accelerometer scaling of Y axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_Y,0.9994594 - -# Accelerometer scaling of Z axis -# Accelerometer scaling of Z axis Calculated during acceleration calibration routine -# Range: 0.8 1.2 -# Calibration: 1 -# Default: 1 -INS_ACCSCAL_Z,0.998758 - -# Gyro filter cutoff frequency -# Filter cutoff frequency for gyroscopes. This can be set to a lower value to try to cope with very high -# vibration levels in aircraft. A value of zero means no filtering (not recommended!) -# Units: Hz (hertz) -# Range: 0 256 -# Default: 20 -INS_GYRO_FILTER,115 - -# Use third IMU for attitude, velocity and position estimates -# Use third IMU for attitude, velocity and position estimates -# 0: Disabled -# 1: Enabled -# Default: 1 -INS_USE3,0 - -# Battery voltage compensation maximum voltage -# Battery voltage compensation maximum voltage (voltage above this will have no additional scaling effect -# on thrust). Recommend 4.2 * cell count, 0 = Disabled -# Range: 6 53 -# Units: V (volt) -# Default: 0 -MOT_BAT_VOLT_MAX,16.8 - -# Battery voltage compensation minimum voltage -# Battery voltage compensation minimum voltage (voltage below this will have no additional scaling effect -# on thrust). Recommend 3.3 * cell count, 0 = Disabled -# Range: 6 42 -# Units: V (volt) -# Default: 0 -MOT_BAT_VOLT_MIN,13.2 - -# Motor Spin armed -# Point at which the motors start to spin expressed as a number from 0 to 1 in the entire output range. -# Should be lower than MOT_SPIN_MIN. -# 0.0: Low -# 0.1: Default -# 0.2: High -# Default: 0.1 -MOT_SPIN_ARM,0.01 - -# Motor Spin maximum -# Point at which the thrust saturates expressed as a number from 0 to 1 in the entire output range -# 0.9: Low -# 0.95: Default -# 1.0: High -# Default: 0.95 -MOT_SPIN_MAX,0.95 - -# Motor Spin minimum -# Point at which the thrust starts expressed as a number from 0 to 1 in the entire output range. Should be -# higher than MOT_SPIN_ARM. -# 0.0: Low -# 0.15: Default -# 0.25: High -# Default: 0.15 -MOT_SPIN_MIN,0.04 - -# Thrust Curve Expo -# Motor thrust curve exponent (0.0 for linear to 1.0 for second order curve) -# Range: -1.0 1.0 -# Default: 0.65 -MOT_THST_EXPO,0.48 - -# Thrust Hover Value -# Motor thrust needed to hover expressed as a number from 0 to 1 -# Range: 0.2 0.8 -# Default: 0.35 -MOT_THST_HOVER,0.2 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC1_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC1_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC1_TRIM,1500 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC2_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC2_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC2_TRIM,1500 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC3_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC3_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC3_TRIM,1466 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC4_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC4_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC4_TRIM,1500 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC5_MAX,1856 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC5_MIN,1143 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC5_TRIM,1143 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC6_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC6_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC6_TRIM,988 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC7_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC7_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC7_TRIM,988 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC8_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC8_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC8_TRIM,988 - -# RC max PWM -# RC maximum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1900 -RC9_MAX,2011 - -# RC min PWM -# RC minimum PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and 2000 is -# upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1100 -RC9_MIN,988 - -# RC trim PWM -# RC trim (neutral) PWM pulse width in microseconds. Typically 1000 is lower limit, 1500 is neutral and -# 2000 is upper limit. -# Units: PWM (PWM in microseconds) -# Range: 800 2200 -# Increment: 1 -# Default: 1500 -RC9_TRIM,988 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 -SERVO1_FUNCTION,33 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 -SERVO2_FUNCTION,34 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 -SERVO3_FUNCTION,35 - -# Servo output function -# Function assigned to this servo. Setting this to Disabled(0) will setup this output for control by auto -# missions or MAVLink servo set commands. any other value will enable the corresponding function -# RebootRequired: True -# -1: GPIO 40: Motor8 90: CameraISO 127: RateYaw -# 0: Disabled 51: RCIN1 91: CameraAperture 129: ProfiLED1 -# 1: RCPassThru 52: RCIN2 92: CameraFocus 130: ProfiLED2 -# 6: Mount1Yaw 53: RCIN3 93: CameraShutterSpeed 131: ProfiLED3 -# 7: Mount1Pitch 54: RCIN4 94: Script1 132: ProfiLEDClock -# 8: Mount1Roll 55: RCIN5 95: Script2 133: Winch Clutch -# 9: Mount1Retract 56: RCIN6 96: Script3 134: SERVOn_MIN -# 10: CameraTrigger 57: RCIN7 97: Script4 135: SERVOn_TRIM -# 12: Mount2Yaw 58: RCIN8 98: Script5 136: SERVOn_MAX -# 13: Mount2Pitch 59: RCIN9 99: Script6 138: Alarm -# 14: Mount2Roll 60: RCIN10 100: Script7 139: Alarm Inverted -# 15: Mount2Retract 61: RCIN11 101: Script8 140: RCIN1Scaled -# 22: SprayerPump 62: RCIN12 102: Script9 141: RCIN2Scaled -# 23: SprayerSpinner 63: RCIN13 103: Script10 142: RCIN3Scaled -# 27: Parachute 64: RCIN14 104: Script11 143: RCIN4Scaled -# 28: Gripper 65: RCIN15 105: Script12 144: RCIN5Scaled -# 29: LandingGear 66: RCIN16 106: Script13 145: RCIN6Scaled -# 30: EngineRunEnable 73: ThrottleLeft 107: Script14 146: RCIN7Scaled -# 31: HeliRSC 74: ThrottleRight 108: Script15 147: RCIN8Scaled -# 32: HeliTailRSC 75: TiltMotorFrontLeft 109: Script16 148: RCIN9Scaled -# 33: Motor1 76: TiltMotorFrontRight 120: NeoPixel1 149: RCIN10Scaled -# 34: Motor2 81: BoostThrottle 121: NeoPixel2 150: RCIN11Scaled -# 35: Motor3 82: Motor9 122: NeoPixel3 151: RCIN12Scaled -# 36: Motor4 83: Motor10 123: NeoPixel4 152: RCIN13Scaled -# 37: Motor5 84: Motor11 124: RateRoll 153: RCIN14Scaled -# 38: Motor6 85: Motor12 125: RatePitch 154: RCIN15Scaled -# 39: Motor7 88: Winch 126: RateThrust 155: RCIN16Scaled -# Default: 0 -SERVO4_FUNCTION,36 +FLTMODE1,0.0 +FLTMODE2,2.0 +FLTMODE3,5.0 +FLTMODE4,3.0 +FLTMODE5,15.0 +FLTMODE6,6.0 +FRAME_CLASS,1.0 +FRAME_TYPE,1.0 +INS_ACC1_CALTEMP,55.434783935546875 +INS_ACC2_CALTEMP,55.917877197265625 +INS_ACC2SCAL_X,0.9978519678115845 +INS_ACC2SCAL_Y,0.9963401556015015 +INS_ACC2SCAL_Z,0.9967923164367676 +INS_ACC3SCAL_X,0.0 +INS_ACC3SCAL_Y,0.0 +INS_ACC3SCAL_Z,0.0 +INS_ACCSCAL_X,0.9986425638198853 +INS_ACCSCAL_Y,1.000264048576355 +INS_ACCSCAL_Z,0.996766984462738 +INS_GYRO_FILTER,115.0 +INS_USE3,1.0 +MOT_BAT_VOLT_MAX,16.799999237060547 +MOT_BAT_VOLT_MIN,13.199999809265137 +MOT_SPIN_ARM,0.019999999552965164 +MOT_SPIN_MAX,0.949999988079071 +MOT_SPIN_MIN,0.05000000074505806 +MOT_THST_EXPO,0.47999998927116394 +MOT_THST_HOVER,0.20000000298023224 +RC1_MAX,2011.0 +RC1_MIN,988.0 +RC1_TRIM,1500.0 +RC2_MAX,2011.0 +RC2_MIN,988.0 +RC2_TRIM,1500.0 +RC3_MAX,2011.0 +RC3_MIN,988.0 +RC3_TRIM,988.0 +RC4_MAX,2011.0 +RC4_MIN,988.0 +RC4_TRIM,1500.0 +RC5_MAX,1857.0 +RC5_MIN,1141.0 +RC5_TRIM,1570.0 +RC6_MAX,2011.0 +RC6_MIN,988.0 +RC6_TRIM,988.0 +RC7_MAX,2011.0 +RC7_MIN,988.0 +RC7_TRIM,988.0 +RC8_MAX,2011.0 +RC8_MIN,988.0 +RC8_TRIM,988.0 +RC9_MAX,2011.0 +RC9_MIN,988.0 +RC9_TRIM,988.0 +SERVO1_FUNCTION,33.0 +SERVO2_FUNCTION,34.0 +SERVO3_FUNCTION,35.0 +SERVO4_FUNCTION,36.0 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/12_general_configuration.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/12_general_configuration.param index be99c49..225186c 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/12_general_configuration.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/12_general_configuration.param @@ -1,14 +1,23 @@ +# Arm Checks to Perform (bitmask) +# Checks prior to arming motor. This is a bitmask of checks that will be performed before allowing arming. +# For most users it is recommended to leave this at the default of 1 (all checks enabled). You can select +# whatever checks you prefer by adding together the values of each check type to set this parameter. For +# example, to only allow arming when you have GPS lock and no RC failsafe you would set ARMING_CHECK to 72. +# Bitmask: 0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder,16:Camera,17:AuxAuth,18:VisualOdometry,19:FFT +# Default: 1 +ARMING_CHECK,1 # perform all arming checks. If you have a problem fix it's source. Do NOT change this + # Timezone offset from UTC # Adds offset in +- minutes from UTC to calculate local time # Range: -720 +840 # Default: 0 -BRD_RTC_TZ_MIN,60 +BRD_RTC_TZ_MIN,60 # Berlin time zone # Fence Type # Enabled fence types held as bitmask # Bitmask: 0:Max altitude,1:Circle,2:Polygon,3:Min altitude # Default: 7 -FENCE_TYPE,11 +FENCE_TYPE,7 # cylinder and max altitude, to obey local regulations and safety measures # Accel filter cutoff frequency # Filter cutoff frequency for accelerometers. This can be set to a lower value to try to cope with very @@ -110,4 +119,4 @@ SCHED_LOOP_RATE,800 # On our vehicle the propellers rotate at speeds higher tha # 0: None # 1: Lua Scripts # Default: 0 -SCR_ENABLE,1 # For MagFit automation and Windspeed Estimation automation +SCR_ENABLE,1 # For VTOL-Quicktune, MagFit automation and Windspeed Estimation automation diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/13_logging.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/13_logging.param index 306603a..467957e 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/13_logging.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/13_logging.param @@ -16,7 +16,7 @@ INS_LOG_BAT_OPT,4 # Logs measured data both before and after the filters for Fi # you want to be saved. It is usually best just to enable all basiclog types by setting this to 65535. # Bitmask: 0:Fast Attitude,1:Medium Attitude,2:GPS,3:System Performance,4:Control Tuning,5:Navigation Tuning,6:RC input,7:IMU,8:Mission Commands,9:Battery Monitor,10:RC output,11:Optical Flow,12:PID,13:Compass,15:Camera,17:Motors,18:Fast IMU,19:Raw IMU,20:Video Stabilization,21:Fast harmonic notch logging # Default: 176126 -LOG_BITMASK,145372 # Defines the logged signals +LOG_BITMASK,2242524 # Logs Notch filter data and other control signals # Stop logging to current file on disarm # When set, the current log file is closed when the vehicle is disarmed. If LOG_DISARMED is set then a @@ -24,4 +24,4 @@ LOG_BITMASK,145372 # Defines the logged signals # 0: Disabled # 1: Enabled # Default: 0 -LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot +LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/16_remote_id.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/16_remote_id.param index 8c5ba19..768edb1 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/16_remote_id.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/16_remote_id.param @@ -1,30 +1,4 @@ -# DroneCAN driver number -# DroneCAN driver index, 0 to disable DroneCAN -# 0: Disabled -# 1: Driver1 -# 2: Driver2 DID_CANDRIVER,0 - -# Enable ODID subsystem -# Enable ODID subsystem -# 0: Disabled -# 1: Enabled DID_ENABLE,0 # Our RemoteID module does not communicate with ArduPilot - - -# MAVLink serial port -# Serial port number to send OpenDroneID MAVLink messages to. Can be -1 if using DroneCAN. -# -1: Disabled -# 0: Serial0 -# 1: Serial1 -# 2: Serial2 -# 3: Serial3 -# 4: Serial4 -# 5: Serial5 -# 6: Serial6 DID_MAVPORT,2 # The serial port attached to the OpenDroneID module - -# OpenDroneID options -# Options for OpenDroneID subsystem -# Bitmask: 0:EnforceArming, 1:AllowNonGPSPosition, 2:LockUASIDOnFirstBasicIDRx DID_OPTIONS,0 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/17_notch_filter_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/17_notch_filter_setup.param index 27f4c4d..1d26dae 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/17_notch_filter_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/17_notch_filter_setup.param @@ -1,99 +1,10 @@ -# Fast sampling mask -# Mask of IMUs to enable fast sampling on, if available -# Bitmask: 0:FirstIMU,1:SecondIMU,2:ThirdIMU -# Default: 1 INS_FAST_SAMPLE,3 # Both IMUs can run fast on the Matek H743 Slim flight controller - -# Gyro rate for IMUs with Fast Sampling enabled -# Gyro rate for IMUs with fast sampling enabled. The gyro rate is the sample rate at which the IMU filters -# operate and needs to be at least double the maximum filter frequency. If the sensor does not support the -# selected rate the next highest supported rate will be used. For IMUs which do not support fast sampling -# this setting is ignored and the default gyro rate of 1Khz is used. -# RebootRequired: True -# 0: 1kHz -# 1: 2kHz -# 2: 4kHz -# 3: 8kHz -# Default: 1 INS_GYRO_RATE,2 # The Matek H743 Slim can do 4KHz here - -# Harmonic Notch Filter attenuation -# Harmonic Notch Filter attenuation in dB. Values greater than 40dB will typically produce a hard notch -# rather than a modest attenuation of motor noise. -# Range: 5 50 -# Units: dB (decibel) -# Default: 40 INS_HNTCH_ATT,20 # this is just a hunch, it must be improved after the first flight (by the next file) - -# Harmonic Notch Filter bandwidth -# Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of -# base frequency to bandwidth determines the notch quality factor and is fixed across harmonics. -# Range: 5 250 -# Units: Hz (hertz) -# Default: 40 INS_HNTCH_BW,20 # this is just a hunch, it must be improved after the first flight (by the next file) - -# Harmonic Notch Filter enable -# Harmonic Notch Filter enable -# 0: Disabled -# 1: Enabled -# Default: 0 INS_HNTCH_ENABLE,1 # the first notch filter will be used to filter the noise created by the motors/propellers - -# Harmonic Notch Filter base frequency -# Harmonic Notch Filter base center frequency in Hz. This is the center frequency for static notches, the -# center frequency for Throttle based notches at the reference thrust value, and the minimum limit of -# center frequency variation for all other notch types. This should always be set lower than half the -# backend gyro rate (which is typically 1Khz). -# Range: 10 495 -# Units: Hz (hertz) -# Default: 80 -INS_HNTCH_FREQ,160 # Start with 1.4 • INS_GYRO_FILTER - -# Harmonic Notch Filter harmonics -# Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next -# reboot. A value of 0 disables this filter. The first harmonic refers to the base frequency. -# Bitmask: 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic -# RebootRequired: True -# Default: 1 +INS_HNTCH_FREQ,161 # Use 1.4 * INS_GYRO_FILTER as a first guess INS_HNTCH_HMNCS,1 # start with a single frequency - -# Harmonic Notch Filter dynamic frequency tracking mode -# Harmonic Notch Filter dynamic frequency tracking mode. Dynamic updates can be throttle, RPM sensor, ESC -# telemetry or dynamic FFT based. Throttle-based updates should only be used with multicopters. -# Range: 0 4 -# 0: Disabled -# 1: Throttle -# 2: RPM Sensor -# 3: ESC Telemetry -# 4: Dynamic FFT -# 5: Second RPM Sensor -# Default: 1 INS_HNTCH_MODE,3 # Use the BDshot600 RPM telemetry to dynamicaly track noise created by the motors/propellers - -# Harmonic Notch Filter options -# Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider -# bandwidth with reduced latency than single notches and are suitable for larger aircraft. Dynamic -# harmonics attaches a harmonic notch to each detected noise frequency instead of simply being multiples of -# the base frequency, in the case of FFT it will attach notches to each of three detected noise peaks, in -# the case of ESC it will attach notches to each of four motor RPM values. Loop rate update changes the -# notch center frequency at the scheduler loop rate rather than at the default of 200Hz. If both double and -# triple notches are specified only double notches will take effect. -# Bitmask: 0:Double notch,1:Dynamic harmonic,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch -# RebootRequired: True -# Default: 0 INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate - -# Harmonic Notch Filter reference value -# A reference value of zero disables dynamic updates on the Harmonic Notch Filter and a positive value -# enables dynamic updates on the Harmonic Notch Filter. For throttle-based scaling, this parameter is the -# reference value associated with the specified frequency to facilitate frequency scaling of the Harmonic -# Notch Filter. For RPM and ESC telemetry based tracking, this parameter is set to 1 to enable the Harmonic -# Notch Filter using the RPM sensor or ESC telemetry set to measure rotor speed. The sensor data is -# converted to Hz automatically for use in the Harmonic Notch Filter. This reference value may also be -# used to scale the sensor data, if required. For example, rpm sensor data is required to measure heli -# motor RPM. Therefore the reference value can be used to scale the RPM sensor to the rotor RPM. -# Range: 0.0 1.0 -# RebootRequired: True -# Default: 0 INS_HNTCH_REF,1 # Use the BDshot600 RPM telemetry to dynamicaly track noise created by the motors/propellers diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/18_notch_filter_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/18_notch_filter_results.param index 534f940..2a0805f 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/18_notch_filter_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/18_notch_filter_results.param @@ -1,56 +1,6 @@ -# Harmonic Notch Filter attenuation -# Harmonic Notch Filter attenuation in dB. Values greater than 40dB will typically produce a hard notch -# rather than a modest attenuation of motor noise. -# Range: 5 50 -# Units: dB (decibel) -# Default: 40 INS_HNTCH_ATT,30 # just enough to filter the noise created by the motors/propellers - -# Harmonic Notch Filter bandwidth -# Harmonic Notch Filter bandwidth in Hz. This is typically set to half the base frequency. The ratio of -# base frequency to bandwidth determines the notch quality factor and is fixed across harmonics. -# Range: 5 250 -# Units: Hz (hertz) -# Default: 40 INS_HNTCH_BW,30 # just enough to filter the noise created by the motors/propellers - -# Throttle notch min freqency ratio -# The minimum ratio below the configured frequency to take throttle based notch filters when flying at a -# throttle level below the reference throttle. Note that lower frequency notch filters will have more phase -# lag. If you want throttle based notch filtering to be effective at a throttle up to 30% below the -# configured notch frequency then set this parameter to 0.7. The default of 1.0 means the notch will not go -# below the frequency in the FREQ parameter. -# Range: 0.1 1.0 -# Default: 1 INS_HNTCH_FM_RAT,1 # Allowed undercutting of the base frequency of the first notch filter - -# Harmonic Notch Filter base frequency -# Harmonic Notch Filter base center frequency in Hz. This is the center frequency for static notches, the -# center frequency for Throttle based notches at the reference thrust value, and the minimum limit of -# center frequency variation for all other notch types. This should always be set lower than half the -# backend gyro rate (which is typically 1Khz). -# Range: 10 495 -# Units: Hz (hertz) -# Default: 80 -INS_HNTCH_FREQ,180 # the minimum frequency that the motors are expected to operate at - -# Harmonic Notch Filter harmonics -# Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next -# reboot. A value of 0 disables this filter. The first harmonic refers to the base frequency. -# Bitmask: 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic -# RebootRequired: True -# Default: 1 +INS_HNTCH_FREQ,115 # the minimum frequency that the motors are expected to operate at INS_HNTCH_HMNCS,3 # the motors produce secondary harmonics on this vehicle - -# Harmonic Notch Filter options -# Harmonic Notch Filter options. Triple and double-notches can provide deeper attenuation across a wider -# bandwidth with reduced latency than single notches and are suitable for larger aircraft. Dynamic -# harmonics attaches a harmonic notch to each detected noise frequency instead of simply being multiples of -# the base frequency, in the case of FFT it will attach notches to each of three detected noise peaks, in -# the case of ESC it will attach notches to each of four motor RPM values. Loop rate update changes the -# notch center frequency at the scheduler loop rate rather than at the default of 200Hz. If both double and -# triple notches are specified only double notches will take effect. -# Bitmask: 0:Double notch,1:Dynamic harmonic,2:Update at loop rate,3:EnableOnAllIMUs,4:Triple notch -# RebootRequired: True -# Default: 0 INS_HNTCH_OPTS,6 # One Notch per motor, update at loop rate diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/19_throttle_controller.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/19_throttle_controller.param index c8b676c..e36cde7 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/19_throttle_controller.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/19_throttle_controller.param @@ -1,27 +1,3 @@ -# Throttle Mix Manual -# Throttle vs attitude control prioritisation used during manual flight (higher values mean we prioritise -# attitude control over throttle) -# Range: 0.1 0.9 -# Default: 0.1 ATC_THR_MIX_MAN,0.5 # because we have learned the MOT_THST_HOVER value - -# Thrust Hover Value -# Motor thrust needed to hover expressed as a number from 0 to 1 -# Range: 0.2 0.8 -# Default: 0.35 -MOT_THST_HOVER,0.2 # Automatically learned "hover throttle" in ALTHOLD flight mode and HOVER_LEARN == 2 - -# Acceleration (vertical) controller I gain -# Acceleration (vertical) controller I gain. Corrects long-term difference in desired vertical -# acceleration and actual acceleration -# Range: 0.000 3.000 -# Default: 1 PSC_ACCZ_I,0.4 # 2 • MOT_THST_HOVER - -# Acceleration (vertical) controller P gain -# Acceleration (vertical) controller P gain. Converts the difference between desired vertical acceleration -# and actual acceleration into a motor output -# Range: 0.200 1.500 -# Increment: 0.05 -# Default: 0.5 PSC_ACCZ_P,0.2 # MOT_THST_HOVER diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/20_quick_tune_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/20_quick_tune_setup.param index 9844569..e576b10 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/20_quick_tune_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/20_quick_tune_setup.param @@ -2,7 +2,7 @@ QUIK_AUTO_FILTER,1.0 QUIK_AUTO_SAVE,0.0 QUIK_AXES,7 QUIK_DOUBLE_TIME,10.0 -QUIK_ENABLE,1 # enables quiktune script +QUIK_ENABLE,1 # Use VTOL-Quicktune lua script to estimate a good PID starting values QUIK_GAIN_MARGIN,60.0 QUIK_MAX_REDUCE,20.0 QUIK_OPTIONS,0.0 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/21_quick_tune_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/21_quick_tune_results.param index 71a2549..1239c0f 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/21_quick_tune_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/21_quick_tune_results.param @@ -1,10 +1,77 @@ +# Pitch axis rate controller D gain +# Pitch axis rate controller D gain. Compensates for short-term change in desired pitch rate vs actual +# pitch rate +# Range: 0.0 0.03 +# Increment: 0.001 +# Default: 0.0036 ATC_RAT_PIT_D,0.00659 # Tuned in a Hangar + +# Pitch axis rate controller I gain +# Pitch axis rate controller I gain. Corrects long-term difference in desired pitch rate vs actual pitch +# rate +# Range: 0.0 0.6 +# Increment: 0.01 +# Default: 0.135 ATC_RAT_PIT_I,0.412175 # Tuned in a Hangar + +# Pitch axis rate controller P gain +# Pitch axis rate controller P gain. Corrects in proportion to the difference between the desired pitch +# rate vs actual pitch rate +# Range: 0.0 0.35 +# Increment: 0.005 +# Default: 0.135 ATC_RAT_PIT_P,0.412175 # Tuned in a Hangar + +# Roll axis rate controller D gain +# Roll axis rate controller D gain. Compensates for short-term change in desired roll rate vs actual roll +# rate +# Range: 0.0 0.03 +# Increment: 0.001 +# Default: 0.0036 ATC_RAT_RLL_D,0.003622 # Tuned in a Hangar + +# Roll axis rate controller I gain +# Roll axis rate controller I gain. Corrects long-term difference in desired roll rate vs actual roll rate +# Range: 0.0 0.6 +# Increment: 0.01 +# Default: 0.135 ATC_RAT_RLL_I,0.251225 # Tuned in a Hangar + +# Roll axis rate controller P gain +# Roll axis rate controller P gain. Corrects in proportion to the difference between the desired roll rate +# vs actual roll rate +# Range: 0.0 0.35 +# Increment: 0.005 +# Default: 0.135 ATC_RAT_RLL_P,0.251225 # Tuned in a Hangar + +# Yaw axis rate controller D gain +# Yaw axis rate controller D gain. Compensates for short-term change in desired yaw rate vs actual yaw +# rate +# Range: 0.000 0.02 +# Increment: 0.001 +# Default: 0 ATC_RAT_YAW_D,0.01 # Tuned in a Hangar + +# Yaw axis rate controller derivative frequency in Hz +# Yaw axis rate controller derivative frequency in Hz +# Range: 0 50 +# Increment: 1 +# Units: Hz (hertz) +# Default: 0 ATC_RAT_YAW_FLTD,57.5 # Tuned in a Hangar + +# Yaw axis rate controller I gain +# Yaw axis rate controller I gain. Corrects long-term difference in desired yaw rate vs actual yaw rate +# Range: 0.01 0.2 +# Increment: 0.01 +# Default: 0.018 ATC_RAT_YAW_I,0.05 # Tuned in a Hangar + +# Yaw axis rate controller P gain +# Yaw axis rate controller P gain. Corrects in proportion to the difference between the desired yaw rate +# vs actual yaw rate +# Range: 0.180 0.60 +# Increment: 0.005 +# Default: 0.18 ATC_RAT_YAW_P,0.5 # Tuned in a Hangar diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/23_inflight_magnetometer_fit_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/23_inflight_magnetometer_fit_results.param index 6002ecb..7232a80 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/23_inflight_magnetometer_fit_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/23_inflight_magnetometer_fit_results.param @@ -1,110 +1,139 @@ +# Compass offsets in milligauss on the X axis +# Offset to be added to the compass x-axis values to compensate for metal in the frame +# Range: -400 400 +# Units: mGauss (milligauss) +# Increment: 1 +# Calibration: 1 +# Default: 0 +COMPASS_OFS_X,76.89418 + +# Compass offsets in milligauss on the Y axis +# Offset to be added to the compass y-axis values to compensate for metal in the frame +# Range: -400 400 +# Units: mGauss (milligauss) +# Increment: 1 +# Calibration: 1 +# Default: 0 +COMPASS_OFS_Y,-108.94388 + +# Compass offsets in milligauss on the Z axis +# Offset to be added to the compass z-axis values to compensate for metal in the frame +# Range: -400 400 +# Units: mGauss (milligauss) +# Increment: 1 +# Default: 0 +COMPASS_OFS_Z,295.8105 + # Compass soft-iron diagonal X component # DIA_X in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Calibration: 1 # Default: 1 -COMPASS_DIA_X,1.033 # Diagonal X component for static compensation of metal in the frame +COMPASS_DIA_X,1.0596071 # Compass soft-iron diagonal Y component # DIA_Y in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Calibration: 1 # Default: 1 -COMPASS_DIA_Y,1.032 # Diagonal Y component for static compensation of metal in the frame +COMPASS_DIA_Y,1.0279562 # Compass soft-iron diagonal Z component # DIA_Z in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Default: 1 -COMPASS_DIA_Z,0.842 # Diagonal Z component for static compensation of metal in the frame - -# Motor interference compensation for body frame X axis -# Multiplied by the current throttle and added to the compass's x-axis values to compensate for motor -# interference (Offset per Amp or at Full Throttle) -# Range: -1000 1000 -# Units: mGauss/A (milligauss per ampere) -# Increment: 1 -# Calibration: 1 -# Default: 0 -COMPASS_MOT_X,0.195 # Correction value for motor currents in X direction - -# Motor interference compensation for body frame Y axis -# Multiplied by the current throttle and added to the compass's y-axis values to compensate for motor -# interference (Offset per Amp or at Full Throttle) -# Range: -1000 1000 -# Units: mGauss/A (milligauss per ampere) -# Increment: 1 -# Calibration: 1 -# Default: 0 -COMPASS_MOT_Y,0.394 # Correction value for motor currents in Y direction - -# Motor interference compensation for body frame Z axis -# Multiplied by the current throttle and added to the compass's z-axis values to compensate for motor -# interference (Offset per Amp or at Full Throttle) -# Range: -1000 1000 -# Units: mGauss/A (milligauss per ampere) -# Increment: 1 -# Default: 0 -COMPASS_MOT_Z,-1.366 # Correction value for motor currents in Z direction - -# Motor interference compensation type -# Set motor interference compensation type to disabled, throttle or current. Do not change manually. -# Calibration: 1 -# 0: Disabled -# 1: Use Throttle -# 2: Use Current -# Default: 0 -COMPASS_MOTCT,2 # Type of interference compensation; two means current-based compensation +COMPASS_DIA_Z,0.9124366 # Compass soft-iron off-diagonal X component # ODI_X in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Calibration: 1 # Default: 0 -COMPASS_ODI_X,0.001 # Off-diagonal X component for static compensation of metal in the frame +COMPASS_ODI_X,-0.0022481442 # Compass soft-iron off-diagonal Y component # ODI_Y in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Calibration: 1 # Default: 0 -COMPASS_ODI_Y,-0.070 # Off-diagonal Y component for static compensation of metal in the frame +COMPASS_ODI_Y,-0.022540506 # Compass soft-iron off-diagonal Z component # ODI_Z in the compass soft-iron calibration matrix: [[DIA_X, ODI_X, ODI_Y], [ODI_X, DIA_Y, ODI_Z], [ODI_Y, # ODI_Z, DIA_Z]] # Default: 0 -COMPASS_ODI_Z,0.083 # Off-diagonal Z component for static compensation of metal in the frame +COMPASS_ODI_Z,-0.021016626 -# Compass offsets in milligauss on the X axis -# Offset to be added to the compass x-axis values to compensate for metal in the frame -# Range: -400 400 -# Units: mGauss (milligauss) +# Motor interference compensation for body frame X axis +# Multiplied by the current throttle and added to the compass's x-axis values to compensate for motor +# interference (Offset per Amp or at Full Throttle) +# Range: -1000 1000 +# Units: mGauss/A (milligauss per ampere) # Increment: 1 # Calibration: 1 # Default: 0 -COMPASS_OFS_X,313 # Lateral compass offset to the X axis for static compensation of metal in the frame +COMPASS_MOT_X,0 -# Compass offsets in milligauss on the Y axis -# Offset to be added to the compass y-axis values to compensate for metal in the frame -# Range: -400 400 -# Units: mGauss (milligauss) +# Motor interference compensation for body frame Y axis +# Multiplied by the current throttle and added to the compass's y-axis values to compensate for motor +# interference (Offset per Amp or at Full Throttle) +# Range: -1000 1000 +# Units: mGauss/A (milligauss per ampere) # Increment: 1 # Calibration: 1 # Default: 0 -COMPASS_OFS_Y,-42 # Lateral compass offset to the Y axis for static compensation of metal in the frame +COMPASS_MOT_Y,0 -# Compass offsets in milligauss on the Z axis -# Offset to be added to the compass z-axis values to compensate for metal in the frame -# Range: -400 400 -# Units: mGauss (milligauss) +# Motor interference compensation for body frame Z axis +# Multiplied by the current throttle and added to the compass's z-axis values to compensate for motor +# interference (Offset per Amp or at Full Throttle) +# Range: -1000 1000 +# Units: mGauss/A (milligauss per ampere) # Increment: 1 # Default: 0 -COMPASS_OFS_Z,214 # Lateral compass offset to the Z axis for static compensation of metal in the frame +COMPASS_MOT_Z,0 # Compass1 scale factor # Scaling factor for first compass to compensate for sensor scaling errors. If this is 0 then no scaling is # done # Range: 0 1.3 # Default: 0 -COMPASS_SCALE,1.00 # Scaling factor for compensation +COMPASS_SCALE,0.96805 + +# Compass orientation +# The orientation of the first external compass relative to the vehicle frame. This value will be ignored +# unless this compass is set as an external compass. When set correctly in the northern hemisphere, +# pointing the nose and right side down should increase the MagX and MagY values respectively. Rolling the +# vehicle upside down should decrease the MagZ value. For southern hemisphere, switch increase and +# decrease. NOTE: For internal compasses, AHRS_ORIENT is used. The label for each option is specified in +# the order of rotations for that orientation. Firmware versions 4.2 and prior can use a CUSTOM (100) +# rotation to set the COMPASS_CUS_ROLL/PIT/YAW angles for Compass orientation. Later versions provide two +# general custom rotations which can be used, Custom 1 and Custom 2, with CUST_1_ROLL/PIT/YAW or +# CUST_2_ROLL/PIT/YAW angles. +# 0: None 16: Roll90 32: Pitch180Roll270 +# 1: Yaw45 17: Yaw45Roll90 33: Pitch270Roll90 +# 2: Yaw90 18: Yaw90Roll90 34: Pitch270Roll180 +# 3: Yaw135 19: Yaw135Roll90 35: Pitch270Roll270 +# 4: Yaw180 20: Roll270 36: Yaw90Pitch180Roll90 +# 5: Yaw225 21: Yaw45Roll270 37: Yaw270Roll90 +# 6: Yaw270 22: Yaw90Roll270 38: Yaw293Pitch68Roll180 +# 7: Yaw315 23: Yaw135Roll270 39: Pitch315 +# 8: Roll180 24: Pitch90 40: Pitch315Roll90 +# 9: Yaw45Roll180 25: Pitch270 42: Roll45 +# 10: Yaw90Roll180 26: Yaw90Pitch180 43: Roll315 +# 11: Yaw135Roll180 27: Yaw270Pitch180 100: Custom 4.1 and older +# 12: Pitch180 28: Pitch90Roll90 101: Custom 1 +# 13: Yaw225Roll180 29: Pitch90Roll180 102: Custom 2 +# 14: Yaw270Roll180 30: Pitch90Roll270 +# 15: Yaw315Roll180 31: Pitch180Roll90 +# Default: 0 +COMPASS_ORIENT,6 + +# Motor interference compensation type +# Set motor interference compensation type to disabled, throttle or current. Do not change manually. +# Calibration: 1 +# 0: Disabled +# 1: Use Throttle +# 2: Use Current +# Default: 0 +COMPASS_MOTCT,0 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/24_quick_tune_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/24_quick_tune_setup.param index 9844569..59f5a38 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/24_quick_tune_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/24_quick_tune_setup.param @@ -1,14 +1,80 @@ +# Quicktune auto filter enable +# When enabled the PID filter settings are automatically set based on INS_GYRO_FILTER +# 0: Disabled +# 1: Enabled QUIK_AUTO_FILTER,1.0 + +# Quicktune auto save +# Number of seconds after completion of tune to auto-save. This is useful when using a 2 position switch +# for quicktune +# Units: s (seconds) QUIK_AUTO_SAVE,0.0 + +# Quicktune axes +# axes to tune +# Bitmask: 0:Roll,1:Pitch,2:Yaw QUIK_AXES,7 + +# Quicktune doubling time +# Time to double a tuning parameter. Raise this for a slower tune. +# Range: 5 20 +# Units: s (seconds) QUIK_DOUBLE_TIME,10.0 + +# Quicktune enable +# Enable quicktune system +# 0: Disabled +# 1: Enabled QUIK_ENABLE,1 # enables quiktune script + +# Quicktune gain margin +# Reduction in gain after oscillation detected. Raise this number to get a more conservative tune +# Range: 20 80 +# Units: % (percent) QUIK_GAIN_MARGIN,60.0 + +# Quicktune maximum gain reduction +# This controls how much quicktune is allowed to lower gains from the original gains. If the vehicle +# already has a reasonable tune and is not oscillating then you can set this to zero to prevent gain +# reductions. The default of 20% is reasonable for most vehicles. Using a maximum gain reduction lowers the +# chance of an angle P oscillation happening if quicktune gets a false positive oscillation at a low gain, +# which can result in very low rate gains and a dangerous angle P oscillation. +# Units: % (percent) +# Range: 0 100 QUIK_MAX_REDUCE,20.0 + +# Quicktune options +# Additional options. When the Two Position Switch option is enabled then a high switch position will start +# the tune, low will disable the tune. you should also set a QUIK_AUTO_SAVE time so that you will be able +# to save the tune. +# Bitmask: 0:UseTwoPositionSwitch QUIK_OPTIONS,0.0 + +# Quicktune oscillation rate threshold +# Threshold for oscillation detection. A lower value will lead to a more conservative tune. +# Range: 1 10 QUIK_OSC_SMAX,5.0 + +# Quicktune RC function +# RCn_OPTION number to use to control tuning stop/start/save QUIK_RC_FUNC,300 # the script uses this value to listen to RC switch + +# Quicktune roll/pitch PI ratio +# Ratio between P and I gains for roll and pitch. Raise this to get a lower I gain +# Range: 0.5 1.0 QUIK_RP_PI_RATIO,1.0 + +# Quicktune Yaw PI ratio +# Ratio between P and I gains for yaw. Raise this to get a lower I gain +# Range: 0.5 20 QUIK_Y_PI_RATIO,10.0 + +# Quicktune Yaw D max +# Maximum value for yaw D gain +# Range: 0.001 1 QUIK_YAW_D_MAX,0.01 + +# Quicktune Yaw P max +# Maximum value for yaw P gain +# Range: 0.1 3 QUIK_YAW_P_MAX,0.5 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/25_quick_tune_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/25_quick_tune_results.param index 20a5edb..9073357 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/25_quick_tune_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/25_quick_tune_results.param @@ -1,10 +1,77 @@ -ATC_RAT_PIT_D,0.006590242 -ATC_RAT_PIT_I,0.4121751 -ATC_RAT_PIT_P,0.4121751 -ATC_RAT_RLL_D,0.00362229 -ATC_RAT_RLL_I,0.2512255 -ATC_RAT_RLL_P,0.2512255 +# Pitch axis rate controller D gain +# Pitch axis rate controller D gain. Compensates for short-term change in desired pitch rate vs actual +# pitch rate +# Range: 0.0 0.03 +# Increment: 0.001 +# Default: 0.0036 +ATC_RAT_PIT_D,0.005729 + +# Pitch axis rate controller I gain +# Pitch axis rate controller I gain. Corrects long-term difference in desired pitch rate vs actual pitch +# rate +# Range: 0.0 0.6 +# Increment: 0.01 +# Default: 0.135 +ATC_RAT_PIT_I,0.41322 + +# Pitch axis rate controller P gain +# Pitch axis rate controller P gain. Corrects in proportion to the difference between the desired pitch +# rate vs actual pitch rate +# Range: 0.0 0.35 +# Increment: 0.005 +# Default: 0.135 +ATC_RAT_PIT_P,0.41322 + +# Roll axis rate controller D gain +# Roll axis rate controller D gain. Compensates for short-term change in desired roll rate vs actual roll +# rate +# Range: 0.0 0.03 +# Increment: 0.001 +# Default: 0.0036 +ATC_RAT_RLL_D,0.003674 + +# Roll axis rate controller I gain +# Roll axis rate controller I gain. Corrects long-term difference in desired roll rate vs actual roll rate +# Range: 0.0 0.6 +# Increment: 0.01 +# Default: 0.135 +ATC_RAT_RLL_I,0.247436 + +# Roll axis rate controller P gain +# Roll axis rate controller P gain. Corrects in proportion to the difference between the desired roll rate +# vs actual roll rate +# Range: 0.0 0.35 +# Increment: 0.005 +# Default: 0.135 +ATC_RAT_RLL_P,0.247436 + +# Yaw axis rate controller D gain +# Yaw axis rate controller D gain. Compensates for short-term change in desired yaw rate vs actual yaw +# rate +# Range: 0.000 0.02 +# Increment: 0.001 +# Default: 0 ATC_RAT_YAW_D,0.01 + +# Yaw axis rate controller derivative frequency in Hz +# Yaw axis rate controller derivative frequency in Hz +# Range: 0 50 +# Increment: 1 +# Units: Hz (hertz) +# Default: 0 ATC_RAT_YAW_FLTD,57.5 + +# Yaw axis rate controller I gain +# Yaw axis rate controller I gain. Corrects long-term difference in desired yaw rate vs actual yaw rate +# Range: 0.01 0.2 +# Increment: 0.01 +# Default: 0.018 ATC_RAT_YAW_I,0.05 -ATC_RAT_YAW_P,0.5 \ No newline at end of file + +# Yaw axis rate controller P gain +# Yaw axis rate controller P gain. Corrects in proportion to the difference between the desired yaw rate +# vs actual yaw rate +# Range: 0.180 0.60 +# Increment: 0.005 +# Default: 0.18 +ATC_RAT_YAW_P,0.5 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/28_autotune_roll_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/28_autotune_roll_setup.param index 5fecc2e..0092932 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/28_autotune_roll_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/28_autotune_roll_setup.param @@ -2,10 +2,10 @@ # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,1 # Autotune on roll axis +AUTOTUNE_AXES,1 # Autotune roll axis diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/29_autotune_roll_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/29_autotune_roll_results.param index 0a0c131..40952ef 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/29_autotune_roll_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/29_autotune_roll_results.param @@ -9,14 +9,14 @@ # 108000: Medium # 162000: Fast # Default: 110000 -ATC_ACCEL_R_MAX,507500 +ATC_ACCEL_R_MAX,523377.3125 # Roll axis angle controller P gain # Roll axis angle controller P gain. Converts the error between the desired roll angle and actual angle to # a desired roll rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_RLL_P,36 # higher value mean a tighter tune +ATC_ANG_RLL_P,36 # higher value mean a tighter tune # Roll axis rate controller D gain # Roll axis rate controller D gain. Compensates for short-term change in desired roll rate vs actual roll @@ -24,14 +24,14 @@ ATC_ANG_RLL_P,36 # higher value mean a tighter tune # Range: 0.0 0.03 # Increment: 0.001 # Default: 0.0036 -ATC_RAT_RLL_D,0.005008578 +ATC_RAT_RLL_D,0.002438 # Roll axis rate controller I gain # Roll axis rate controller I gain. Corrects long-term difference in desired roll rate vs actual roll rate # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_RLL_I,0.2908089 +ATC_RAT_RLL_I,0.125126 # Roll axis rate controller P gain # Roll axis rate controller P gain. Corrects in proportion to the difference between the desired roll rate @@ -39,4 +39,4 @@ ATC_RAT_RLL_I,0.2908089 # Range: 0.0 0.35 # Increment: 0.005 # Default: 0.135 -ATC_RAT_RLL_P,0.2908089 +ATC_RAT_RLL_P,0.125126 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/30_autotune_pitch_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/30_autotune_pitch_setup.param index d14c86f..33b7eb4 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/30_autotune_pitch_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/30_autotune_pitch_setup.param @@ -2,10 +2,10 @@ # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,2 # Autotune on pitch axis +AUTOTUNE_AXES,2 # Autotune pitch axis diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/31_autotune_pitch_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/31_autotune_pitch_results.param index 7a502e1..469dee3 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/31_autotune_pitch_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/31_autotune_pitch_results.param @@ -9,14 +9,14 @@ # 108000: Medium # 162000: Fast # Default: 110000 -ATC_ACCEL_P_MAX,360201.2 +ATC_ACCEL_P_MAX,401666.40625 # Pitch axis angle controller P gain # Pitch axis angle controller P gain. Converts the error between the desired pitch angle and actual angle # to a desired pitch rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_PIT_P,28.51195 # higher value mean a tighter tune +ATC_ANG_PIT_P,34.656452 # higher value mean a tighter tune # Pitch axis rate controller D gain # Pitch axis rate controller D gain. Compensates for short-term change in desired pitch rate vs actual @@ -24,7 +24,7 @@ ATC_ANG_PIT_P,28.51195 # higher value mean a tighter tune # Range: 0.0 0.03 # Increment: 0.001 # Default: 0.0036 -ATC_RAT_PIT_D,0.009135851 +ATC_RAT_PIT_D,0.004433 # Pitch axis rate controller I gain # Pitch axis rate controller I gain. Corrects long-term difference in desired pitch rate vs actual pitch @@ -32,7 +32,7 @@ ATC_RAT_PIT_D,0.009135851 # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_PIT_I,0.5622395 +ATC_RAT_PIT_I,0.282138 # Pitch axis rate controller P gain # Pitch axis rate controller P gain. Corrects in proportion to the difference between the desired pitch @@ -40,4 +40,4 @@ ATC_RAT_PIT_I,0.5622395 # Range: 0.0 0.35 # Increment: 0.005 # Default: 0.135 -ATC_RAT_PIT_P,0.5622395 +ATC_RAT_PIT_P,0.282138 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/32_autotune_yaw_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/32_autotune_yaw_setup.param index 8e42632..891ff6c 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/32_autotune_yaw_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/32_autotune_yaw_setup.param @@ -10,10 +10,10 @@ ATC_RAT_YAW_FLTD,28.75 # INS_GYRO_FILTER / 4 # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default value because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,4 # Autotune on yaw axis +AUTOTUNE_AXES,4 # Autotune yaw axis diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/33_autotune_yaw_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/33_autotune_yaw_results.param index ad12cb4..bf17fcd 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/33_autotune_yaw_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/33_autotune_yaw_results.param @@ -9,14 +9,14 @@ # 36000: Medium # 54000: Fast # Default: 27000 -ATC_ACCEL_Y_MAX,57198.53 +ATC_ACCEL_Y_MAX,206781.046875 # Yaw axis angle controller P gain # Yaw axis angle controller P gain. Converts the error between the desired yaw angle and actual angle to a # desired yaw rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_YAW_P,8.714352 # higher value mean a tighter tune +ATC_ANG_YAW_P,25.796528 # higher value mean a tighter tune # Yaw axis rate controller error frequency in Hz # Yaw axis rate controller error frequency in Hz @@ -24,14 +24,14 @@ ATC_ANG_YAW_P,8.714352 # higher value mean a tighter tune # Increment: 1 # Units: Hz (hertz) # Default: 2.5 -ATC_RAT_YAW_FLTE,2.316456 +ATC_RAT_YAW_FLTE,1.986072 # Yaw axis rate controller I gain # Yaw axis rate controller I gain. Corrects long-term difference in desired yaw rate vs actual yaw rate # Range: 0.01 0.2 # Increment: 0.01 # Default: 0.018 -ATC_RAT_YAW_I,0.1023194 +ATC_RAT_YAW_I,0.073779 # Yaw axis rate controller P gain # Yaw axis rate controller P gain. Corrects in proportion to the difference between the desired yaw rate @@ -39,4 +39,4 @@ ATC_RAT_YAW_I,0.1023194 # Range: 0.180 0.60 # Increment: 0.005 # Default: 0.18 -ATC_RAT_YAW_P,1.023194 +ATC_RAT_YAW_P,0.737788 diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/34_autotune_yawd_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/34_autotune_yawd_setup.param index e969220..484fbd4 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/34_autotune_yawd_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/34_autotune_yawd_setup.param @@ -2,16 +2,16 @@ # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,8 # Autotune on yaw D axis +AUTOTUNE_AXES,8 # Autotune yaw D axis # AutoTune minimum D # Defines the minimum D gain # Range: 0.001 0.006 # Default: 0.001 -AUTOTUNE_MIN_D,0.0001 # small copters need small D parameters +AUTOTUNE_MIN_D,0.0001 # small copters need small D parameters diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/35_autotune_yawd_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/35_autotune_yawd_results.param index 0a8b977..d3366ee 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/35_autotune_yawd_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/35_autotune_yawd_results.param @@ -9,14 +9,14 @@ # 36000: Medium # 54000: Fast # Default: 27000 -ATC_ACCEL_Y_MAX,91119.27 +ATC_ACCEL_Y_MAX,305912.25 # Autotuned in a windless hangar # Yaw axis angle controller P gain # Yaw axis angle controller P gain. Converts the error between the desired yaw angle and actual angle to a # desired yaw rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_YAW_P,14.52818 +ATC_ANG_YAW_P,29.631269 # Autotuned in a windless hangar # Yaw axis rate controller D gain # Yaw axis rate controller D gain. Compensates for short-term change in desired yaw rate vs actual yaw @@ -24,14 +24,14 @@ ATC_ANG_YAW_P,14.52818 # Range: 0.000 0.02 # Increment: 0.001 # Default: 0 -ATC_RAT_YAW_D,0.003507904 # if == to AUTOTUNE_MIN_D, autotune failed +ATC_RAT_YAW_D,0.017587 # if == to AUTOTUNE_MIN_D, autotune failed # Yaw axis rate controller I gain # Yaw axis rate controller I gain. Corrects long-term difference in desired yaw rate vs actual yaw rate # Range: 0.01 0.2 # Increment: 0.01 # Default: 0.018 -ATC_RAT_YAW_I,0.09050494 +ATC_RAT_YAW_I,0.061538 # Autotuned in a windless hangar # Yaw axis rate controller P gain # Yaw axis rate controller P gain. Corrects in proportion to the difference between the desired yaw rate @@ -39,4 +39,4 @@ ATC_RAT_YAW_I,0.09050494 # Range: 0.180 0.60 # Increment: 0.005 # Default: 0.18 -ATC_RAT_YAW_P,0.9050494 +ATC_RAT_YAW_P,0.615382 # Autotuned in a windless hangar diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/36_autotune_roll_pitch_retune_setup.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/36_autotune_roll_pitch_retune_setup.param index 294c365..7fe1fd2 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/36_autotune_roll_pitch_retune_setup.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/36_autotune_roll_pitch_retune_setup.param @@ -2,10 +2,10 @@ # Autotune aggressiveness. Defines the bounce back used to detect size of the D term. # Range: 0.05 0.10 # Default: 0.1 -AUTOTUNE_AGGR,0.10 # Use the default for now +AUTOTUNE_AGGR,0.085 # Use smaller than default because there is no wind in the Hangar # Autotune axis bitmask # 1-byte bitmap of axes to autotune # Bitmask: 0:Roll,1:Pitch,2:Yaw # Default: 7 -AUTOTUNE_AXES,3 # Autotune on roll and pitch axis +AUTOTUNE_AXES,3 # Autotune roll and pitch axis diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/37_autotune_roll_pitch_retune_results.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/37_autotune_roll_pitch_retune_results.param index 5c02c36..450cd42 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/37_autotune_roll_pitch_retune_results.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/37_autotune_roll_pitch_retune_results.param @@ -9,7 +9,7 @@ # 108000: Medium # 162000: Fast # Default: 110000 -ATC_ACCEL_P_MAX,339368.9 +ATC_ACCEL_P_MAX,363812.1875 # Autotuned in a windless hangar # Acceleration Max for Roll # Maximum acceleration in roll axis @@ -22,21 +22,21 @@ ATC_ACCEL_P_MAX,339368.9 # 108000: Medium # 162000: Fast # Default: 110000 -ATC_ACCEL_R_MAX,490096.8 +ATC_ACCEL_R_MAX,495292.5625 # Autotuned in a windless hangar # Pitch axis angle controller P gain # Pitch axis angle controller P gain. Converts the error between the desired pitch angle and actual angle # to a desired pitch rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_PIT_P,31.19081 # higher value mean a tighter tune +ATC_ANG_PIT_P,36 # higher value mean a tighter tune # Roll axis angle controller P gain # Roll axis angle controller P gain. Converts the error between the desired roll angle and actual angle to # a desired roll rate # Range: 3.000 12.000 # Default: 4.5 -ATC_ANG_RLL_P,36 # higher value mean a tighter tune +ATC_ANG_RLL_P,36 # higher value mean a tighter tune # Pitch axis rate controller D gain # Pitch axis rate controller D gain. Compensates for short-term change in desired pitch rate vs actual @@ -44,7 +44,7 @@ ATC_ANG_RLL_P,36 # higher value mean a tighter tune # Range: 0.0 0.03 # Increment: 0.001 # Default: 0.0036 -ATC_RAT_PIT_D,0.006667002 +ATC_RAT_PIT_D,0.003774 # Autotuned in a windless hangar # Pitch axis rate controller I gain # Pitch axis rate controller I gain. Corrects long-term difference in desired pitch rate vs actual pitch @@ -52,7 +52,7 @@ ATC_RAT_PIT_D,0.006667002 # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_PIT_I,0.3464575 +ATC_RAT_PIT_I,0.193122 # Autotuned in a windless hangar # Pitch axis rate controller P gain # Pitch axis rate controller P gain. Corrects in proportion to the difference between the desired pitch @@ -60,7 +60,7 @@ ATC_RAT_PIT_I,0.3464575 # Range: 0.0 0.35 # Increment: 0.005 # Default: 0.135 -ATC_RAT_PIT_P,0.3464575 +ATC_RAT_PIT_P,0.193122 # Autotuned in a windless hangar # Roll axis rate controller D gain # Roll axis rate controller D gain. Compensates for short-term change in desired roll rate vs actual roll @@ -68,14 +68,14 @@ ATC_RAT_PIT_P,0.3464575 # Range: 0.0 0.03 # Increment: 0.001 # Default: 0.0036 -ATC_RAT_RLL_D,0.004972266 +ATC_RAT_RLL_D,0.00242 # Autotuned in a windless hangar # Roll axis rate controller I gain # Roll axis rate controller I gain. Corrects long-term difference in desired roll rate vs actual roll rate # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_RLL_I,0.286474 +ATC_RAT_RLL_I,0.12357 # Autotuned in a windless hangar # Roll axis rate controller P gain # Roll axis rate controller P gain. Corrects in proportion to the difference between the desired roll rate @@ -83,4 +83,4 @@ ATC_RAT_RLL_I,0.286474 # Range: 0.0 0.35 # Increment: 0.005 # Default: 0.135 -ATC_RAT_RLL_P,0.286474 +ATC_RAT_RLL_P,0.12357 # Autotuned in a windless hangar diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/38_windspeed_estimation.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/38_windspeed_estimation.param index 50b57e5..0819e89 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/38_windspeed_estimation.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/38_windspeed_estimation.param @@ -7,7 +7,7 @@ # Range: 0.0 1000.0 # Units: kg/m/m (kilograms per square meter) # Default: 0 -EK3_DRAG_BCOEF_X,51.0399 # 0.56 kg / 0.01097 m² +EK3_DRAG_BCOEF_X,54.6857 # 0.600 kg / 0.01097 m² # Ballistic coefficient for Y axis drag # Ratio of mass to drag coefficient measured along the Y body axis. This parameter enables estimation of @@ -18,7 +18,7 @@ EK3_DRAG_BCOEF_X,51.0399 # 0.56 kg / 0.01097 m² # Range: 50.0 1000.0 # Units: kg/m/m (kilograms per square meter) # Default: 0 -EK3_DRAG_BCOEF_Y,38.4798 # 0.56 kg / 0.01455 m² +EK3_DRAG_BCOEF_Y,41.2284 # 0.600 kg / 0.01455 m² # Momentum coefficient for propeller drag # This parameter is used to predict the drag produced by the rotors when flying a multi-copter, enabling @@ -35,7 +35,7 @@ EK3_DRAG_BCOEF_Y,38.4798 # 0.56 kg / 0.01455 m² # Increment: 0.01 # Units: 1/s (per second) # Default: 0 -EK3_DRAG_MCOEF,0.5127 +EK3_DRAG_MCOEF,0.5195 # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled at all times including when disarmed. Logging @@ -51,7 +51,7 @@ EK3_DRAG_MCOEF,0.5127 # 2: Disabled on USB connection # 3: Discard log on reboot if never armed # Default: 0 -LOG_DISARMED,1 # allow post flight tuning with Replay +LOG_DISARMED,1 # allow post flight tuning with Replay # Enable logging of information needed for Replay # If LOG_REPLAY is set to 1 then the EKF2 and EKF3 state estimators will log detailed information needed @@ -62,4 +62,4 @@ LOG_DISARMED,1 # allow post flight tuning with Replay # 0: Disabled # 1: Enabled # Default: 0 -LOG_REPLAY,1 # allow post flight tuning with Replay +LOG_REPLAY,1 # allow post flight tuning with Replay diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/40_system_id_roll.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/40_system_id_roll.param index 2f46027..51bd5cc 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/40_system_id_roll.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/40_system_id_roll.param @@ -20,14 +20,26 @@ ARMING_CHECK,540126 # disable Parameter check because we need to set ATC_RAT_RL # Range: 0.0 0.6 # Increment: 0.01 # Default: 0.135 -ATC_RAT_RLL_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal +ATC_RAT_RLL_I,0 # prevent the rate controllers from compensating too much of the frequency-sweep signal # Rate Feedforward Enable # Controls whether body-frame rate feedfoward is enabled or disabled # 0: Disabled # 1: Enabled # Default: 1 -ATC_RATE_FF_ENAB,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 + +# Flight Mode 5 +# Flight mode when pwm of Flightmode channel(FLTMODE_CH) is >1620, <= 1749 +# 0: Stabilize 7: Circle 17: Brake 24: ZigZag +# 1: Acro 9: Land 18: Throw 25: SystemID +# 2: AltHold 11: Drift 19: Avoid_ADSB 26: Heli_Autorotate +# 3: Auto 13: Sport 20: Guided_NoGPS 27: Auto RTL +# 4: Guided 14: Flip 21: Smart_RTL +# 5: Loiter 15: AutoTune 22: FlowHold +# 6: RTL 16: PosHold 23: Follow +# Default: 0 +FLTMODE5,25 # Enable logging while disarmed # If LOG_DISARMED is set to 1 then logging will be enabled at all times including when disarmed. Logging @@ -43,7 +55,7 @@ ATC_RATE_FF_ENAB,0 # prevent the rate controllers from compensating too much of # 2: Disabled on USB connection # 3: Discard log on reboot if never armed # Default: 0 -LOG_DISARMED,0 # was only needed for wind speed estimation +LOG_DISARMED,0 # was only needed for wind speed estimation # Enable logging of information needed for Replay # If LOG_REPLAY is set to 1 then the EKF2 and EKF3 state estimators will log detailed information needed @@ -54,7 +66,7 @@ LOG_DISARMED,0 # was only needed for wind speed estimation # 0: Disabled # 1: Enabled # Default: 0 -LOG_REPLAY,0 # was only needed for wind speed estimation +LOG_REPLAY,0 # was only needed for wind speed estimation # System identification axis # Controls which axis are being excited. Set to non-zero to see more parameters @@ -66,7 +78,7 @@ LOG_REPLAY,0 # was only needed for wind speed estimation # 5: Recovery Pitch Angle 12: Mixer Yaw # 6: Recovery Yaw Angle 13: Mixer Thrust # Default: 0 -SID_AXIS,10 +SID_AXIS,10 # Inject chip on the mixer roll signal # System identification Start Frequency # Frequency at the start of the sweep @@ -117,13 +129,13 @@ SID_T_REC,130.0 # 14: AltHold kP 13: Heli Ext Gyro 58: SysID Magnitude # 7: Throttle Rate kP 38: Declination 59: PSC Angle Max # Default: 0 -TUNE,58 # System identification magnitude +TUNE,0 # System identification magnitude # Tuning maximum # Maximum value that the parameter currently being tuned with the transmitter's channel 6 knob will be set # to # Default: 0 -TUNE_MAX,0.40 # System identification max magnitude +TUNE_MAX,0.4 # System identification max magnitude # Tuning minimum # Minimum value that the parameter currently being tuned with the transmitter's channel 6 knob will be set diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/44_analytical_pid_optimization.param b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/44_analytical_pid_optimization.param index c034521..fa5c2ff 100644 --- a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/44_analytical_pid_optimization.param +++ b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/44_analytical_pid_optimization.param @@ -5,14 +5,14 @@ # example, to only allow arming when you have GPS lock and no RC failsafe you would set ARMING_CHECK to 72. # Bitmask: 0:All,1:Barometer,2:Compass,3:GPS lock,4:INS,5:Parameters,6:RC Channels,7:Board voltage,8:Battery Level,10:Logging Available,11:Hardware safety switch,12:GPS Configuration,13:System,14:Mission,15:Rangefinder,16:Camera,17:AuxAuth,18:VisualOdometry,19:FFT # Default: 1 -ARMING_CHECK,0 # normal state for every day use +ARMING_CHECK,1 # Normal state for everyday use # Rate Feedforward Enable # Controls whether body-frame rate feedfoward is enabled or disabled # 0: Disabled # 1: Enabled # Default: 1 -ATC_RATE_FF_ENAB,1 # restore value now that system identification is done +ATC_RATE_FF_ENAB,1 # Restore value now that system identification is done # Acceleration (vertical) controller I gain # Acceleration (vertical) controller I gain. Corrects long-term difference in desired vertical @@ -31,4 +31,4 @@ PSC_ACCZ_I,0.816 # now that system identification on thrust has been completed, # 5: Recovery Pitch Angle 12: Mixer Yaw # 6: Recovery Yaw Angle 13: Mixer Thrust # Default: 0 -SID_AXIS,0 +SID_AXIS,0 # No more system identification chip injections diff --git a/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/vehicle.jpg b/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/vehicle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5b4926e61659f003dfe99531bc9a146984612c99 GIT binary patch literal 126547 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