diff --git a/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.cpp b/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.cpp index eb0bb1b950..6e9b24e91b 100644 --- a/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.cpp +++ b/src/lib/FlightTasks/tasks/Auto/FlightTaskAuto.cpp @@ -262,10 +262,12 @@ void FlightTaskAuto::_set_heading_from_mode() if (v.length() > NAV_ACC_RAD.get()) { _compute_heading_from_2D_vector(_yaw_setpoint, v); _yaw_lock = false; + } else { if (!_yaw_lock) { _yaw_setpoint = _yaw; _yaw_lock = true; + } } } else { diff --git a/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.cpp b/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.cpp index c386259861..68ebd7e3f1 100644 --- a/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.cpp +++ b/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.cpp @@ -37,8 +37,10 @@ #include "FlightTaskManual.hpp" #include #include +#include using namespace matrix; +using namespace time_literals; bool FlightTaskManual::initializeSubscriptions(SubscriptionArray &subscription_array) { @@ -67,8 +69,10 @@ bool FlightTaskManual::updateInitialize() bool FlightTaskManual::_evaluateSticks() { + hrt_abstime rc_timeout = (COM_RC_LOSS_T.get() * 1.5f) * 1_s; + /* Sticks are rescaled linearly and exponentially to [-1,1] */ - if ((_time_stamp_current - _sub_manual_control_setpoint->get().timestamp) < _timeout) { + if ((_time_stamp_current - _sub_manual_control_setpoint->get().timestamp) < rc_timeout) { /* Linear scale */ _sticks(0) = _sub_manual_control_setpoint->get().x; /* NED x, "pitch" [-1,1] */ diff --git a/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.hpp b/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.hpp index d4a08b1c75..fa3df95434 100644 --- a/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.hpp +++ b/src/lib/FlightTasks/tasks/Manual/FlightTaskManual.hpp @@ -76,6 +76,7 @@ private: (ParamFloat) _z_vel_man_expo, /**< ratio of exponential curve for stick input in z direction */ (ParamFloat) - _yaw_expo /**< ratio of exponential curve for stick input in yaw for modes except acro */ + _yaw_expo, /**< ratio of exponential curve for stick input in yaw for modes except acro */ + (ParamFloat) COM_RC_LOSS_T /**< time at which commander considers RC lost */ ) };