diff --git a/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.cpp b/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.cpp index 3d2d057881..674770321d 100644 --- a/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.cpp +++ b/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.cpp @@ -56,6 +56,10 @@ bool FlightTaskAuto::initializeSubscriptions(SubscriptionArray &subscription_arr return false; } + if (!subscription_array.get(ORB_ID(vehicle_status), _sub_vehicle_status)) { + return false; + } + return true; } @@ -221,7 +225,7 @@ bool FlightTaskAuto::_evaluateTriplets() _updateAvoidanceWaypoints(); } - if (MPC_OBS_AVOID.get()) { + if (MPC_OBS_AVOID.get() && _sub_vehicle_status->get().is_rotary_wing) { _checkAvoidanceProgress(); } diff --git a/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.hpp b/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.hpp index a82b6353cf..5293eb0a7a 100644 --- a/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.hpp +++ b/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.hpp @@ -44,6 +44,7 @@ #include #include #include +#include #include /** @@ -117,6 +118,7 @@ private: matrix::Vector2f _lock_position_xy{NAN, NAN}; /**< if no valid triplet is received, lock positition to current position */ bool _yaw_lock = false; /**< if within acceptance radius, lock yaw to current yaw */ uORB::Subscription *_sub_triplet_setpoint{nullptr}; + uORB::Subscription *_sub_vehicle_status{nullptr}; matrix::Vector3f _triplet_target; /**< current triplet from navigator which may differ from the intenal one (_target) depending on the vehicle state. */