Browse Source

FW bug in checking if landing point has been passed

* the bearing difference between the waypoints and aircraft to landing point should be wrap_pi'ed
sbg
Alvar Martti 6 years ago committed by Daniel Agar
parent
commit
63651da309
  1. 2
      src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp
  2. 1
      src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp

2
src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp

@ -1463,7 +1463,7 @@ FixedwingPositionControl::control_landing(const Vector2f &curr_pos, const Vector @@ -1463,7 +1463,7 @@ FixedwingPositionControl::control_landing(const Vector2f &curr_pos, const Vector
/* calculate a waypoint distance value which is 0 when the aircraft is behind the waypoint */
float wp_distance_save = wp_distance;
if (fabsf(bearing_airplane_currwp - bearing_lastwp_currwp) >= radians(90.0f)) {
if (fabsf(wrap_pi(bearing_airplane_currwp - bearing_lastwp_currwp)) >= radians(90.0f)) {
wp_distance_save = 0.0f;
}

1
src/modules/fw_pos_control_l1/FixedwingPositionControl.hpp

@ -97,6 +97,7 @@ using matrix::Eulerf; @@ -97,6 +97,7 @@ using matrix::Eulerf;
using matrix::Quatf;
using matrix::Vector2f;
using matrix::Vector3f;
using matrix::wrap_pi;
using uORB::Subscription;

Loading…
Cancel
Save