diff --git a/libraries/AP_Landing/AP_Landing.h b/libraries/AP_Landing/AP_Landing.h index 71d7f6c760..672f00fc53 100644 --- a/libraries/AP_Landing/AP_Landing.h +++ b/libraries/AP_Landing/AP_Landing.h @@ -21,6 +21,7 @@ #include #include #include "AP_Landing_Deepstall.h" +#include /// @class AP_Landing /// @brief Class managing ArduPlane landing methods diff --git a/libraries/AP_Landing/AP_Landing_Deepstall.cpp b/libraries/AP_Landing/AP_Landing_Deepstall.cpp index 42d56c4e8a..6301e132c6 100644 --- a/libraries/AP_Landing/AP_Landing_Deepstall.cpp +++ b/libraries/AP_Landing/AP_Landing_Deepstall.cpp @@ -21,6 +21,7 @@ #include #include #include +#include // table of user settable parameters for deepstall const AP_Param::GroupInfo AP_Landing_Deepstall::var_info[] = { @@ -278,7 +279,7 @@ bool AP_Landing_Deepstall::verify_land(const Location &prev_WP_loc, Location &ne const float travel_distance = predict_travel_distance(landing.ahrs.wind_estimate(), height_above_target, false); memcpy(&entry_point, &landing_point, sizeof(Location)); - location_update(entry_point, target_heading_deg + 180.0, travel_distance); + entry_point.offset_bearing(target_heading_deg + 180.0, travel_distance); if (!location_passed_point(current_loc, arc_exit, entry_point)) { if (location_passed_point(current_loc, arc_exit, extended_approach)) { @@ -488,7 +489,7 @@ void AP_Landing_Deepstall::build_approach_path(bool use_current_heading) memcpy(&arc_exit, &landing_point, sizeof(Location)); //extend the approach point to 1km away so that there is always a navigational target - location_update(extended_approach, target_heading_deg, 1000.0); + extended_approach.offset_bearing(target_heading_deg, 1000.0); float expected_travel_distance = predict_travel_distance(wind, is_zero(approach_alt_offset) ? landing_point.alt * 0.01f : approach_alt_offset, false); @@ -498,13 +499,13 @@ void AP_Landing_Deepstall::build_approach_path(bool use_current_heading) // decent chance to be misaligned on final approach approach_extension_m = MAX(approach_extension_m, loiter_radius_m_abs * 0.5f); - location_update(arc_exit, target_heading_deg + 180, approach_extension_m); + arc_exit.offset_bearing(target_heading_deg + 180, approach_extension_m); memcpy(&arc, &arc_exit, sizeof(Location)); memcpy(&arc_entry, &arc_exit, sizeof(Location)); float arc_heading_deg = target_heading_deg + (landing_point.loiter_ccw ? -90.0f : 90.0f); - location_update(arc, arc_heading_deg, loiter_radius_m_abs); - location_update(arc_entry, arc_heading_deg, loiter_radius_m_abs * 2); + arc.offset_bearing(arc_heading_deg, loiter_radius_m_abs); + arc_entry.offset_bearing(arc_heading_deg, loiter_radius_m_abs * 2); #ifdef DEBUG_PRINTS // TODO: Send this information via a MAVLink packet diff --git a/libraries/AP_Landing/AP_Landing_Slope.cpp b/libraries/AP_Landing/AP_Landing_Slope.cpp index 6fe1f7647b..c15712f1be 100644 --- a/libraries/AP_Landing/AP_Landing_Slope.cpp +++ b/libraries/AP_Landing/AP_Landing_Slope.cpp @@ -138,9 +138,7 @@ bool AP_Landing::type_slope_verify_land(const Location &prev_WP_loc, Location &n struct Location land_WP_loc = next_WP_loc; int32_t land_bearing_cd = prev_WP_loc.get_bearing_to(next_WP_loc); - location_update(land_WP_loc, - land_bearing_cd*0.01f, - prev_WP_loc.get_distance(current_loc) + 200); + land_WP_loc.offset_bearing(land_bearing_cd * 0.01f, prev_WP_loc.get_distance(current_loc) + 200); nav_controller->update_waypoint(prev_WP_loc, land_WP_loc); // once landed and stationary, post some statistics @@ -294,11 +292,11 @@ void AP_Landing::type_slope_setup_landing_glide_slope(const Location &prev_WP_lo // now calculate our aim point, which is before the landing // point and above it Location loc = next_WP_loc; - location_update(loc, land_bearing_cd*0.01f, -flare_distance); + loc.offset_bearing(land_bearing_cd * 0.01f, -flare_distance); loc.alt += aim_height*100; // calculate point along that slope 500m ahead - location_update(loc, land_bearing_cd*0.01f, land_projection); + loc.offset_bearing(land_bearing_cd * 0.01f, land_projection); loc.alt -= slope * land_projection * 100; // setup the offset_cm for set_target_altitude_proportion()