fix(npfg): use NFPG_DAMPING and NPFG_PERIOD to calculate directional p gain (#26765)

Signed-off-by: Silvan <silvan@auterion.com>
This commit is contained in:
Silvan Fuhrer
2026-03-18 04:57:29 +01:00
committed by GitHub
parent 3b28390a2e
commit 89af91dbdb
3 changed files with 9 additions and 3 deletions

View File

@@ -59,13 +59,15 @@
#ifndef PX4_AIRSPEEDDIRECTIONONTROLLER_HPP
#define PX4_AIRSPEEDDIRECTIONONTROLLER_HPP
#include <matrix/math.hpp>
#include <lib/mathlib/mathlib.h>
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:

View File

@@ -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()

View File

@@ -171,7 +171,9 @@ private:
(ParamFloat<px4::params::FW_LND_THRTC_SC>) _param_fw_thrtc_sc,
(ParamFloat<px4::params::FW_T_THR_LOW_HGT>) _param_fw_t_thr_low_hgt,
(ParamFloat<px4::params::FW_WIND_ARSP_SC>) _param_fw_wind_arsp_sc,
(ParamFloat<px4::params::FW_GND_SPD_MIN>) _param_fw_gnd_spd_min
(ParamFloat<px4::params::FW_GND_SPD_MIN>) _param_fw_gnd_spd_min,
(ParamFloat<px4::params::NPFG_DAMPING>) _param_npfg_damping,
(ParamFloat<px4::params::NPFG_PERIOD>) _param_npfg_period
)
hrt_abstime _last_time_loop_ran{};