Browse Source

FlightTaskOrbit: clip radius to range

sbg
Matthias Grob 6 years ago
parent
commit
3d42c495aa
  1. 17
      src/lib/FlightTasks/tasks/Orbit/FlightTaskOrbit.cpp

17
src/lib/FlightTasks/tasks/Orbit/FlightTaskOrbit.cpp

@ -117,19 +117,18 @@ bool FlightTaskOrbit::sendTelemetry() @@ -117,19 +117,18 @@ bool FlightTaskOrbit::sendTelemetry()
return true;
}
bool FlightTaskOrbit::setRadius(const float r)
bool FlightTaskOrbit::setRadius(float r)
{
if (math::isInRange(r, _radius_min, _radius_max)) {
// small radius is more important than high velocity for safety
if (!checkAcceleration(r, _v, _acceleration_max)) {
_v = math::sign(_v) * sqrtf(_acceleration_max * r);
}
// clip the radius to be within range
r = math::constrain(r, _radius_min, _radius_max);
_r = r;
return true;
// small radius is more important than high velocity for safety
if (!checkAcceleration(r, _v, _acceleration_max)) {
_v = math::sign(_v) * sqrtf(_acceleration_max * r);
}
return false;
_r = r;
return true;
}
bool FlightTaskOrbit::setVelocity(const float v)

Loading…
Cancel
Save