From 89af91dbdb044571f5f96c5f33f84218337cb5f7 Mon Sep 17 00:00:00 2001 From: Silvan Fuhrer Date: Wed, 18 Mar 2026 04:57:29 +0100 Subject: [PATCH] fix(npfg): use NFPG_DAMPING and NPFG_PERIOD to calculate directional p gain (#26765) Signed-off-by: Silvan --- src/lib/npfg/AirspeedDirectionController.hpp | 6 ++++-- .../FwLateralLongitudinalControl.cpp | 2 ++ .../FwLateralLongitudinalControl.hpp | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/npfg/AirspeedDirectionController.hpp b/src/lib/npfg/AirspeedDirectionController.hpp index d0111729ca..c6295792db 100644 --- a/src/lib/npfg/AirspeedDirectionController.hpp +++ b/src/lib/npfg/AirspeedDirectionController.hpp @@ -59,13 +59,15 @@ #ifndef PX4_AIRSPEEDDIRECTIONONTROLLER_HPP #define PX4_AIRSPEEDDIRECTIONONTROLLER_HPP +#include +#include + class AirspeedDirectionController { public: - AirspeedDirectionController(); - + void setPGainFromPeriodAndDamping(float damping, float period) {p_gain_ = 4.f * M_PI_F * damping / math::max(period, FLT_EPSILON);} float controlHeading(const float heading_sp, const float heading, const float airspeed) const; private: diff --git a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp index 9a8e5e3e9a..78d8288ab8 100644 --- a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp +++ b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.cpp @@ -118,6 +118,8 @@ FwLateralLongitudinalControl::parameters_update() _tecs_alt_time_const_slew_rate.setSlewRate(TECS_ALT_TIME_CONST_SLEW_RATE); _tecs_alt_time_const_slew_rate.setForcedValue(_param_fw_t_h_error_tc.get() * _param_fw_thrtc_sc.get()); + + _airspeed_direction_control.setPGainFromPeriodAndDamping(_param_npfg_damping.get(), _param_npfg_period.get()); } void FwLateralLongitudinalControl::Run() diff --git a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.hpp b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.hpp index b2205bd5a1..a77af7d2f6 100644 --- a/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.hpp +++ b/src/modules/fw_lateral_longitudinal_control/FwLateralLongitudinalControl.hpp @@ -171,7 +171,9 @@ private: (ParamFloat) _param_fw_thrtc_sc, (ParamFloat) _param_fw_t_thr_low_hgt, (ParamFloat) _param_fw_wind_arsp_sc, - (ParamFloat) _param_fw_gnd_spd_min + (ParamFloat) _param_fw_gnd_spd_min, + (ParamFloat) _param_npfg_damping, + (ParamFloat) _param_npfg_period ) hrt_abstime _last_time_loop_ran{};