forked from Archive/PX4-Autopilot
FlightTask StraighLine: check values before dividing
This commit is contained in:
parent
d3d549b8e6
commit
56ea4fa6fa
|
@ -83,7 +83,11 @@ void StraightLine::generateSetpoints(matrix::Vector3f &position_setpoint, matrix
|
|||
float speed_sp = dist_to_target > acc_dec_distance ? _desired_speed : _desired_speed_at_target;
|
||||
float max_acc_dec = speed_sp > speed_sp_prev ? _desired_acceleration : -_desired_deceleration;
|
||||
|
||||
float acc_track = (speed_sp - speed_sp_prev) / _deltatime;
|
||||
float acc_track = 0.0f;
|
||||
|
||||
if (_deltatime > FLT_EPSILON) {
|
||||
acc_track = (speed_sp - speed_sp_prev) / _deltatime;
|
||||
}
|
||||
|
||||
if (fabs(acc_track) > fabs(max_acc_dec)) {
|
||||
// accelerate/decelerate with desired acceleration/deceleration towards target
|
||||
|
@ -192,7 +196,7 @@ void StraightLine::setSpeed(const float &speed)
|
|||
{
|
||||
float vel_max = getMaxVel();
|
||||
|
||||
if (speed > 0 && speed < vel_max) {
|
||||
if (speed > FLT_EPSILON && speed < vel_max) {
|
||||
_desired_speed = speed;
|
||||
|
||||
} else if (speed > vel_max) {
|
||||
|
@ -204,7 +208,7 @@ void StraightLine::setSpeedAtTarget(const float &speed_at_target)
|
|||
{
|
||||
float vel_max = getMaxVel();
|
||||
|
||||
if (speed_at_target > 0 && speed_at_target < vel_max) {
|
||||
if (speed_at_target > FLT_EPSILON && speed_at_target < vel_max) {
|
||||
_desired_speed_at_target = speed_at_target;
|
||||
|
||||
} else if (speed_at_target > vel_max) {
|
||||
|
@ -216,7 +220,7 @@ void StraightLine::setAcceleration(const float &acc)
|
|||
{
|
||||
float acc_max = getMaxVel();
|
||||
|
||||
if (acc > 0 && acc < acc_max) {
|
||||
if (acc > FLT_EPSILON && acc < acc_max) {
|
||||
_desired_acceleration = acc;
|
||||
|
||||
} else if (acc > acc_max) {
|
||||
|
@ -226,7 +230,7 @@ void StraightLine::setAcceleration(const float &acc)
|
|||
|
||||
void StraightLine::setDeceleration(const float &dec)
|
||||
{
|
||||
if (dec > 0 && dec < DECELERATION_MAX) {
|
||||
if (dec > FLT_EPSILON && dec < DECELERATION_MAX) {
|
||||
_desired_deceleration = dec;
|
||||
|
||||
} else if (dec > DECELERATION_MAX) {
|
||||
|
|
Loading…
Reference in New Issue