From 7c068e47abe83e3c64a5cdfde24f22296f5d1205 Mon Sep 17 00:00:00 2001 From: MaEtUgR Date: Thu, 12 Jul 2018 11:48:04 +0200 Subject: [PATCH] FlightTaskOrbit: fix acceleration limit inverting velocity The formula only calculated the absolute value of the velocity and the sign (rotation direction) got lost in that case. --- src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp b/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp index 0cc92c2884..7129af4218 100644 --- a/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp +++ b/src/lib/FlightTasks/tasks/FlightTaskOrbit.cpp @@ -60,9 +60,9 @@ bool FlightTaskOrbit::applyCommandParameters(const vehicle_command_s &command) bool FlightTaskOrbit::setRadius(const float r) { if (math::isInRange(r, _radius_min, _radius_max)) { - // radius is more important than velocity for safety + // small radius is more important than high velocity for safety if (!checkAcceleration(r, _v, _acceleration_max)) { - _v = sqrtf(_acceleration_max * r); + _v = math::sign(_v) * sqrtf(_acceleration_max * r); } _r = r;