diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp index 0455629503..4f0ff7c064 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp @@ -1373,7 +1373,7 @@ FixedwingPositionControl::control_auto_takeoff(const hrt_abstime &now, const flo // set the altitude to something above the clearance altitude to ensure the vehicle climbs past the value // (navigator will accept the takeoff as complete once crossing the clearance altitude) - const float altitude_setpoint_amsl = clearance_altitude_amsl + _param_nav_fw_alt_rad.get(); + const float altitude_setpoint_amsl = clearance_altitude_amsl + kClearanceAltitudeBuffer; Vector2f local_2D_position{_local_pos.x, _local_pos.y}; diff --git a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp index 708c096eb3..62b3f2ef70 100644 --- a/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp +++ b/src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp @@ -148,6 +148,10 @@ static constexpr float AIR_DENSITY_STANDARD_ATMOS_5000_AMSL = 0.7363f; // [rad] minimum pitch while airspeed has not yet reached a controllable value in manual position controlled takeoff modes static constexpr float MIN_PITCH_DURING_MANUAL_TAKEOFF = 0.0f; +// [m] arbitrary buffer altitude added to clearance altitude setpoint during takeoff to ensure aircraft passes the clearance +// altitude while waiting for navigator to flag it exceeded +static constexpr float kClearanceAltitudeBuffer = 10.0f; + class FixedwingPositionControl final : public ModuleBase, public ModuleParams, public px4::WorkItem {