diff --git a/libraries/AP_InertialSensor/AP_InertialSensor.cpp b/libraries/AP_InertialSensor/AP_InertialSensor.cpp index 0d8e6029e81c9..24f2c51287c99 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor.cpp +++ b/libraries/AP_InertialSensor/AP_InertialSensor.cpp @@ -1006,6 +1006,16 @@ AP_InertialSensor::init(uint16_t loop_rate) #endif #if AP_INERTIALSENSOR_HARMONICNOTCH_ENABLED + +#if APM_BUILD_TYPE(APM_BUILD_Heli) + // Throttle tracking does not make sense with heli because "throttle" is actually collective position in AP_MotorsHeli + for (auto ¬ch : harmonic_notches) { + if (notch.params.enabled() && notch.params.tracking_mode() == HarmonicNotchDynamicMode::UpdateThrottle) { + AP_BoardConfig::config_error("Throttle notch unavailable with heli"); + } + } +#endif + // the center frequency of the harmonic notch is always taken from the calculated value so that it can be updated // dynamically, the calculated value is always some multiple of the configured center frequency, so start with the // configured value diff --git a/libraries/Filter/HarmonicNotchFilter.cpp b/libraries/Filter/HarmonicNotchFilter.cpp index c98a50eeac4ea..5a3cc84760af5 100644 --- a/libraries/Filter/HarmonicNotchFilter.cpp +++ b/libraries/Filter/HarmonicNotchFilter.cpp @@ -21,6 +21,7 @@ #include "HarmonicNotchFilter.h" #include #include +#include #define HNF_MAX_FILTERS HAL_HNF_MAX_FILTERS // must be even for double-notch filters @@ -48,6 +49,13 @@ */ #define NOTCHFILTER_ATTENUATION_CUTOFF 0.25 +#if APM_BUILD_TYPE(APM_BUILD_Heli) + // We cannot use throttle based notch on helis + #define NOTCHFILTER_DEFAULT_MODE 0 // fixed +#else + #define NOTCHFILTER_DEFAULT_MODE 1 // throttle based +#endif + // table of user settable parameters const AP_Param::GroupInfo HarmonicNotchFilterParams::var_info[] = { @@ -120,7 +128,7 @@ const AP_Param::GroupInfo HarmonicNotchFilterParams::var_info[] = { // @Range: 0 5 // @Values: 0:Fixed,1:Throttle,2:RPM Sensor,3:ESC Telemetry,4:Dynamic FFT,5:Second RPM Sensor // @User: Advanced - AP_GROUPINFO("MODE", 7, HarmonicNotchFilterParams, _tracking_mode, int8_t(HarmonicNotchDynamicMode::UpdateThrottle)), + AP_GROUPINFO("MODE", 7, HarmonicNotchFilterParams, _tracking_mode, NOTCHFILTER_DEFAULT_MODE), // @Param: OPTS // @DisplayName: Harmonic Notch Filter options