Browse Source

FlightTask StraightLine: set origin and target at the same time

This avoids issues with reseting/calculating the max vel/acc
sbg
ChristophTobler 7 years ago committed by Lorenz Meier
parent
commit
ccd8a47015
  1. 13
      src/lib/FlightTasks/tasks/Utility/StraightLine.cpp
  2. 3
      src/lib/FlightTasks/tasks/Utility/StraightLine.hpp

13
src/lib/FlightTasks/tasks/Utility/StraightLine.cpp

@ -176,23 +176,18 @@ void StraightLine::setAllDefaults() @@ -176,23 +176,18 @@ void StraightLine::setAllDefaults()
_desired_deceleration = DECELERATION_MAX;
}
void StraightLine::setTarget(const matrix::Vector3f &target)
void StraightLine::setLineFromTo(const matrix::Vector3f &origin, const matrix::Vector3f &target)
{
if (PX4_ISFINITE(target(0)) && PX4_ISFINITE(target(1)) && PX4_ISFINITE(target(2))) {
if (PX4_ISFINITE(target(0)) && PX4_ISFINITE(target(1)) && PX4_ISFINITE(target(2)) &&
PX4_ISFINITE(origin(0)) && PX4_ISFINITE(origin(1)) && PX4_ISFINITE(origin(2))) {
_target = target;
_origin = origin;
// set all parameters to their default value (depends on the direction)
setAllDefaults();
}
}
void StraightLine::setOrigin(const matrix::Vector3f &origin)
{
if (PX4_ISFINITE(origin(0)) && PX4_ISFINITE(origin(1)) && PX4_ISFINITE(origin(2))) {
_origin = origin;
}
}
void StraightLine::setSpeed(const float &speed)
{
float vel_max = getMaxVel();

3
src/lib/FlightTasks/tasks/Utility/StraightLine.hpp

@ -51,8 +51,7 @@ public: @@ -51,8 +51,7 @@ public:
~StraightLine() = default;
// setter functions
void setTarget(const matrix::Vector3f &target);
void setOrigin(const matrix::Vector3f &origin);
void setLineFromTo(const matrix::Vector3f &origin, const matrix::Vector3f &target);
void setSpeed(const float &speed);
void setSpeedAtTarget(const float &speed_at_target);
void setAcceleration(const float &acc);

Loading…
Cancel
Save