diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/1030_plane b/ROMFS/px4fmu_common/init.d-posix/airframes/1030_plane index a5394c12b4..49293fdd8c 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/1030_plane +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/1030_plane @@ -8,7 +8,6 @@ param set-default EKF2_MAG_ACCLIM 0 param set-default EKF2_MAG_YAWLIM 0 -param set-default FW_LND_AIRSPD_SC 1 param set-default FW_LND_ANG 8 param set-default FW_L1_PERIOD 12 diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/1033_rascal b/ROMFS/px4fmu_common/init.d-posix/airframes/1033_rascal index c61e4cac65..d7d667932b 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/1033_rascal +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/1033_rascal @@ -5,7 +5,6 @@ . ${R}etc/init.d/rc.fw_defaults -param set-default FW_LND_AIRSPD_SC 1.1 param set-default FW_LND_ANG 5 param set-default FW_LND_FL_PMIN 9.5 param set-default FW_LND_FL_PMAX 20 diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/1034_rascal-electric b/ROMFS/px4fmu_common/init.d-posix/airframes/1034_rascal-electric index c61e4cac65..d7d667932b 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/1034_rascal-electric +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/1034_rascal-electric @@ -5,7 +5,6 @@ . ${R}etc/init.d/rc.fw_defaults -param set-default FW_LND_AIRSPD_SC 1.1 param set-default FW_LND_ANG 5 param set-default FW_LND_FL_PMIN 9.5 param set-default FW_LND_FL_PMAX 20 diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/1035_techpod b/ROMFS/px4fmu_common/init.d-posix/airframes/1035_techpod index 39860cc420..6f9a4bb2af 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/1035_techpod +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/1035_techpod @@ -8,7 +8,6 @@ param set-default EKF2_MAG_ACCLIM 0 param set-default EKF2_MAG_YAWLIM 0 -param set-default FW_LND_AIRSPD_SC 1 param set-default FW_LND_ANG 8 param set-default FW_L1_PERIOD 15 diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/1036_malolo b/ROMFS/px4fmu_common/init.d-posix/airframes/1036_malolo index 37ae5bd0d8..8c540c81c6 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/1036_malolo +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/1036_malolo @@ -5,7 +5,6 @@ . ${R}etc/init.d/rc.fw_defaults -param set-default FW_LND_AIRSPD_SC 1.1 param set-default FW_LND_ANG 5 param set-default FW_LND_FL_PMIN 9.5 param set-default FW_LND_FL_PMAX 20 diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/1037_believer b/ROMFS/px4fmu_common/init.d-posix/airframes/1037_believer index 4cf8a325ae..38b482aff1 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/1037_believer +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/1037_believer @@ -8,7 +8,6 @@ param set-default EKF2_MAG_ACCLIM 0 param set-default EKF2_MAG_YAWLIM 0 -param set-default FW_LND_AIRSPD_SC 1 param set-default FW_LND_ANG 8 param set-default FW_L1_PERIOD 12 diff --git a/ROMFS/px4fmu_common/init.d-posix/airframes/1039_advanced_plane b/ROMFS/px4fmu_common/init.d-posix/airframes/1039_advanced_plane index cccb1bf50b..795cfcf2e2 100644 --- a/ROMFS/px4fmu_common/init.d-posix/airframes/1039_advanced_plane +++ b/ROMFS/px4fmu_common/init.d-posix/airframes/1039_advanced_plane @@ -8,7 +8,6 @@ param set-default EKF2_MAG_ACCLIM 0 param set-default EKF2_MAG_YAWLIM 0 -param set-default FW_LND_AIRSPD_SC 1 param set-default FW_LND_ANG 8 param set-default FW_THR_LND_MAX 0 diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp index ecf7adae28..2952bdfb5b 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp @@ -1328,7 +1328,7 @@ FixedwingPositionControl::control_auto_loiter(const float control_interval, cons // landing airspeed and potentially tighter altitude control) already such that we don't // have to do this switch (which can cause significant altitude errors) close to the ground. _tecs.set_height_error_time_constant(_param_fw_thrtc_sc.get() * _param_fw_t_h_error_tc.get()); - airspeed_sp = _param_fw_lnd_airspd_sc.get() * _param_fw_airspd_min.get(); + airspeed_sp = (_param_fw_lnd_airspd.get() > FLT_EPSILON) ? _param_fw_lnd_airspd.get() : _param_fw_airspd_min.get(); _att_sp.apply_flaps = vehicle_attitude_setpoint_s::FLAPS_LAND; _att_sp.apply_spoilers = vehicle_attitude_setpoint_s::SPOILERS_LAND; @@ -1655,7 +1655,8 @@ FixedwingPositionControl::control_auto_landing(const hrt_abstime &now, const flo local_land_point = calculateTouchdownPosition(control_interval, local_land_point); const Vector2f landing_approach_vector = calculateLandingApproachVector(); - const float airspeed_land = _param_fw_lnd_airspd_sc.get() * _param_fw_airspd_min.get(); + const float airspeed_land = (_param_fw_lnd_airspd.get() > FLT_EPSILON) ? _param_fw_lnd_airspd.get() : + _param_fw_airspd_min.get(); float adjusted_min_airspeed = _param_fw_airspd_min.get(); if (airspeed_land < _param_fw_airspd_min.get()) { diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp index d692935713..92b9dd3047 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp @@ -803,7 +803,7 @@ private: (ParamFloat) _param_npfg_switch_distance_multiplier, (ParamFloat) _param_npfg_period_safety_factor, - (ParamFloat) _param_fw_lnd_airspd_sc, + (ParamFloat) _param_fw_lnd_airspd, (ParamFloat) _param_fw_lnd_ang, (ParamFloat) _param_fw_lnd_fl_pmax, (ParamFloat) _param_fw_lnd_fl_pmin, diff --git a/src/modules/fw_pos_control_l1/fw_pos_control_l1_params.c b/src/modules/fw_pos_control_l1/fw_pos_control_l1_params.c index 2ebd68c49e..522a9a0898 100644 --- a/src/modules/fw_pos_control_l1/fw_pos_control_l1_params.c +++ b/src/modules/fw_pos_control_l1/fw_pos_control_l1_params.c @@ -477,20 +477,19 @@ PARAM_DEFINE_FLOAT(FW_LND_FL_PMIN, 2.5f); PARAM_DEFINE_FLOAT(FW_LND_FL_PMAX, 15.0f); /** - * Min. airspeed scaling factor for landing + * Landing airspeed * - * Multiplying this factor with the minimum airspeed of the plane - * gives the target airspeed the landing approach. - * FW_AIRSPD_MIN * FW_LND_AIRSPD_SC + * The calibrated airspeed setpoint during landing. * - * @unit norm - * @min 1.0 - * @max 1.5 - * @decimal 2 - * @increment 0.01 + * If set <= 0.0, landing airspeed = FW_AIRSPD_MIN by default. + * + * @unit m/s + * @min -1.0 + * @decimal 1 + * @increment 0.1 * @group FW Auto Landing */ -PARAM_DEFINE_FLOAT(FW_LND_AIRSPD_SC, 1.3f); +PARAM_DEFINE_FLOAT(FW_LND_AIRSPD, -1.f); /** * Altitude time constant factor for landing