diff --git a/src/lib/FlightTasks/FlightTasks.cpp b/src/lib/FlightTasks/FlightTasks.cpp index 9eb7134daf0b8480f2020b65a2f4f0b1bd6efb38..4c5ec5d8ea7261442d7549f57e563182a1fede93 100644 --- a/src/lib/FlightTasks/FlightTasks.cpp +++ b/src/lib/FlightTasks/FlightTasks.cpp @@ -133,7 +133,7 @@ const char *FlightTasks::errorToString(const int error) void FlightTasks::reActivate() { if (_current_task.task) { - _current_task.task->activate(); + _current_task.task->reActivate(); } } diff --git a/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.cpp b/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.cpp index cbfaa764315d5a2bcf6096c9f272266e4fedef66..026ef7155b3d3ae1818cb4f120dfedba31153bd2 100644 --- a/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.cpp +++ b/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.cpp @@ -52,6 +52,14 @@ bool FlightTaskAutoLineSmoothVel::activate() return ret; } +void FlightTaskAutoLineSmoothVel::reActivate() +{ + // Don't reset during takeoff TODO: Find a proper solution + // The issue here is that with a small increment of velocity setpoint (generated by this flight task), the + // land detector doesn't detect takeoff and without takeoff detection, the + // flight task is always reset. +} + void FlightTaskAutoLineSmoothVel::_setDefaultConstraints() { FlightTaskAuto::_setDefaultConstraints(); diff --git a/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.hpp b/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.hpp index 2e38cb38084be0084292e23b90dab9b48f52041b..bd88398c8c01983a4e37c414617b21a151d480d3 100644 --- a/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.hpp +++ b/src/lib/FlightTasks/tasks/AutoLineSmoothVel/FlightTaskAutoLineSmoothVel.hpp @@ -50,6 +50,7 @@ public: virtual ~FlightTaskAutoLineSmoothVel() = default; bool activate() override; + void reActivate() override; protected: diff --git a/src/lib/FlightTasks/tasks/FlightTask/FlightTask.cpp b/src/lib/FlightTasks/tasks/FlightTask/FlightTask.cpp index fa13927ad22cb8adf26f88ae2b28ce5bb5d6bc15..b314ae0b9507272f0375e0d1beed088a78cc3b53 100644 --- a/src/lib/FlightTasks/tasks/FlightTask/FlightTask.cpp +++ b/src/lib/FlightTasks/tasks/FlightTask/FlightTask.cpp @@ -38,6 +38,11 @@ bool FlightTask::activate() return true; } +void FlightTask::reActivate() +{ + activate(); +} + bool FlightTask::updateInitialize() { _time_stamp_current = hrt_absolute_time(); diff --git a/src/lib/FlightTasks/tasks/FlightTask/FlightTask.hpp b/src/lib/FlightTasks/tasks/FlightTask/FlightTask.hpp index 9501a45359c2b7cf5f0293723a904012b280493b..aa3e68951b6ccda9128beb2a84901e90d46ea038 100644 --- a/src/lib/FlightTasks/tasks/FlightTask/FlightTask.hpp +++ b/src/lib/FlightTasks/tasks/FlightTask/FlightTask.hpp @@ -78,6 +78,11 @@ public: */ virtual bool activate(); + /** + * Call this to reset an active Flight Task + */ + virtual void reActivate(); + /** * To be called to adopt parameters from an arrived vehicle command * @return true if accepted, false if declined