From 802c68a62ef546286d88ae2ff77bc7cdd5bbbf4b Mon Sep 17 00:00:00 2001 From: xdwgood <1308455330@qq.com> Date: Fri, 30 Oct 2020 09:04:23 +0800 Subject: [PATCH] Do not run transition flight task when not enable altitude control --- .../flight_tasks/tasks/Transition/FlightTaskTransition.cpp | 2 -- .../flight_tasks/tasks/Transition/FlightTaskTransition.hpp | 4 ---- src/modules/flight_mode_manager/FlightModeManager.cpp | 3 ++- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/lib/flight_tasks/tasks/Transition/FlightTaskTransition.cpp b/src/lib/flight_tasks/tasks/Transition/FlightTaskTransition.cpp index e595e310ec..e2737a8e09 100644 --- a/src/lib/flight_tasks/tasks/Transition/FlightTaskTransition.cpp +++ b/src/lib/flight_tasks/tasks/Transition/FlightTaskTransition.cpp @@ -44,8 +44,6 @@ bool FlightTaskTransition::updateInitialize() bool FlightTaskTransition::activate(const vehicle_local_position_setpoint_s &last_setpoint) { - _transition_altitude = PX4_ISFINITE(last_setpoint.z) ? last_setpoint.z : _position(2); - _transition_yaw = PX4_ISFINITE(last_setpoint.yaw) ? last_setpoint.yaw : _yaw; return FlightTask::activate(last_setpoint); } diff --git a/src/lib/flight_tasks/tasks/Transition/FlightTaskTransition.hpp b/src/lib/flight_tasks/tasks/Transition/FlightTaskTransition.hpp index 255ee47f82..ec71772a95 100644 --- a/src/lib/flight_tasks/tasks/Transition/FlightTaskTransition.hpp +++ b/src/lib/flight_tasks/tasks/Transition/FlightTaskTransition.hpp @@ -50,8 +50,4 @@ public: bool activate(const vehicle_local_position_setpoint_s &last_setpoint) override; bool updateInitialize() override; bool update() override; - -private: - float _transition_altitude = 0.0f; - float _transition_yaw = 0.0f; }; diff --git a/src/modules/flight_mode_manager/FlightModeManager.cpp b/src/modules/flight_mode_manager/FlightModeManager.cpp index 993c23a789..43380f350f 100644 --- a/src/modules/flight_mode_manager/FlightModeManager.cpp +++ b/src/modules/flight_mode_manager/FlightModeManager.cpp @@ -171,7 +171,8 @@ void FlightModeManager::start_flight_task() _flight_tasks.switchTask(FlightTaskIndex::None); } - if (_vehicle_status_sub.get().in_transition_mode) { + // Only run transition flight task if altitude control is enabled (e.g. in Altitdue, Position, Auto flight mode) + if (_vehicle_status_sub.get().in_transition_mode && _vehicle_control_mode_sub.get().flag_control_altitude_enabled) { should_disable_task = false; FlightTaskError error = _flight_tasks.switchTask(FlightTaskIndex::Transition);