fix position hold logic

This commit is contained in:
tumbili
2015-11-02 16:11:24 +01:00
parent 7f242d7170
commit a567b9956f
@@ -710,12 +710,12 @@ MulticopterPositionControl::control_manual(float dt)
/* check for pos. hold */ /* check for pos. hold */
if (fabsf(req_vel_sp(0)) < _params.hold_xy_dz && fabsf(req_vel_sp(1)) < _params.hold_xy_dz) if (fabsf(req_vel_sp(0)) < _params.hold_xy_dz && fabsf(req_vel_sp(1)) < _params.hold_xy_dz)
{ {
if (!_pos_hold_engaged && (_params.hold_max_xy < FLT_EPSILON || if (!_pos_hold_engaged) {
(fabsf(_vel(0)) < _params.hold_max_xy && fabsf(_vel(1)) < _params.hold_max_xy))) if (_params.hold_max_xy < FLT_EPSILON || (fabsf(_vel(0)) < _params.hold_max_xy && fabsf(_vel(1)) < _params.hold_max_xy)) {
{ _pos_hold_engaged = true;
_pos_hold_engaged = true; } else {
} else { _pos_hold_engaged = false;
_pos_hold_engaged = false; }
} }
} }
else { else {