From 9fe69d4f3313451319d585164c28515db1c0bc8d Mon Sep 17 00:00:00 2001 From: Jaeyoung Lim Date: Fri, 9 Jan 2026 06:37:34 -0800 Subject: [PATCH] Make flap slew rate configurable (#26240) * Make flap slew rate configurable * Dynamically update params --- .../ActuatorEffectivenessControlSurfaces.cpp | 5 ++++- .../ActuatorEffectivenessControlSurfaces.hpp | 4 +++- src/modules/control_allocator/module.yaml | 9 +++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp index f6e216b855..093185e240 100644 --- a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp +++ b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.cpp @@ -59,7 +59,7 @@ ActuatorEffectivenessControlSurfaces::ActuatorEffectivenessControlSurfaces(Modul _param_handles[i].scale_spoiler = param_find(buffer); } - _flaps_setpoint_with_slewrate.setSlewRate(kFlapSlewRate); + _flaps_setpoint_with_slewrate.setSlewRate(_param_ca_flap_slew.get()); _spoilers_setpoint_with_slewrate.setSlewRate(kSpoilersSlewRate); _count_handle = param_find("CA_SV_CS_COUNT"); @@ -75,6 +75,9 @@ void ActuatorEffectivenessControlSurfaces::updateParams() return; } + // Update flap slewrates + _flaps_setpoint_with_slewrate.setSlewRate(_param_ca_flap_slew.get()); + // Helper to check if a PWM center parameter is enabled, and clamp it to valid range auto check_pwm_center = [](const char *prefix, int channel) -> bool { char param_name[20]; diff --git a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.hpp b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.hpp index 5e64e5a738..8a77a08080 100644 --- a/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.hpp +++ b/src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessControlSurfaces.hpp @@ -38,7 +38,6 @@ #include #include -static constexpr float kFlapSlewRate = 0.5f; // slew rate for normalized flaps setpoint [1/s] static constexpr float kSpoilersSlewRate = 0.5f; // slew rate for normalized spoilers setpoint [1/s] class ActuatorEffectivenessControlSurfaces : public ModuleParams, public ActuatorEffectiveness @@ -111,4 +110,7 @@ private: SlewRate _flaps_setpoint_with_slewrate; SlewRate _spoilers_setpoint_with_slewrate; + DEFINE_PARAMETERS( + (ParamFloat) _param_ca_flap_slew + ) }; diff --git a/src/modules/control_allocator/module.yaml b/src/modules/control_allocator/module.yaml index dd36a2d070..23405466a6 100644 --- a/src/modules/control_allocator/module.yaml +++ b/src/modules/control_allocator/module.yaml @@ -336,6 +336,15 @@ parameters: instance_start: 0 default: 0 + CA_SV_FLAP_SLEW: + description: + short: Control Surface slew rate for normalized flaps setpoint + type: float + decimal: 1 + min: 0.0 + max: 5.0 + default: 0.5 + CA_SV_CS${i}_SPOIL: description: short: Control Surface ${i} configuration as spoiler