Plane: Move loiter_radius to vehicle

This commit is contained in:
Michael du Breuil 2017-01-30 09:44:35 -08:00 committed by Tom Pittenger
parent 302e80d72c
commit 2326eee9a0
5 changed files with 8 additions and 9 deletions

View File

@ -292,7 +292,7 @@ const AP_Param::Info Plane::var_info[] = {
// @Range: -32767 32767 // @Range: -32767 32767
// @Increment: 1 // @Increment: 1
// @User: Standard // @User: Standard
GSCALAR(loiter_radius, "WP_LOITER_RAD", LOITER_RADIUS_DEFAULT), ASCALAR(loiter_radius, "WP_LOITER_RAD", LOITER_RADIUS_DEFAULT),
// @Param: RTL_RADIUS // @Param: RTL_RADIUS
// @DisplayName: RTL loiter radius // @DisplayName: RTL loiter radius

View File

@ -401,7 +401,6 @@ public:
AP_Int8 waypoint_mode; AP_Int8 waypoint_mode;
AP_Int16 waypoint_radius; AP_Int16 waypoint_radius;
AP_Int16 waypoint_max_radius; AP_Int16 waypoint_max_radius;
AP_Int16 loiter_radius;
AP_Int16 rtl_radius; AP_Int16 rtl_radius;
#if GEOFENCE_ENABLED == ENABLED #if GEOFENCE_ENABLED == ENABLED

View File

@ -70,7 +70,7 @@ void Plane::set_next_WP(const struct Location &loc)
void Plane::set_guided_WP(void) void Plane::set_guided_WP(void)
{ {
if (g.loiter_radius < 0 || guided_WP_loc.flags.loiter_ccw) { if (aparm.loiter_radius < 0 || guided_WP_loc.flags.loiter_ccw) {
loiter.direction = -1; loiter.direction = -1;
} else { } else {
loiter.direction = 1; loiter.direction = 1;

View File

@ -337,7 +337,7 @@ void Plane::do_RTL(int32_t rtl_altitude)
setup_terrain_target_alt(next_WP_loc); setup_terrain_target_alt(next_WP_loc);
set_target_altitude_location(next_WP_loc); set_target_altitude_location(next_WP_loc);
if (g.loiter_radius < 0) { if (aparm.loiter_radius < 0) {
loiter.direction = -1; loiter.direction = -1;
} else { } else {
loiter.direction = 1; loiter.direction = 1;
@ -653,7 +653,7 @@ bool Plane::verify_loiter_unlim()
bool Plane::verify_loiter_time() bool Plane::verify_loiter_time()
{ {
bool result = false; bool result = false;
// mission radius is always g.loiter_radius // mission radius is always aparm.loiter_radius
update_loiter(0); update_loiter(0);
if (loiter.start_time_ms == 0) { if (loiter.start_time_ms == 0) {
@ -861,7 +861,7 @@ bool Plane::verify_within_distance()
void Plane::do_loiter_at_location() void Plane::do_loiter_at_location()
{ {
if (g.loiter_radius < 0) { if (aparm.loiter_radius < 0) {
loiter.direction = -1; loiter.direction = -1;
} else { } else {
loiter.direction = 1; loiter.direction = 1;
@ -1031,7 +1031,7 @@ bool Plane::verify_loiter_heading(bool init)
return true; return true;
} }
if (get_distance(next_WP_loc, next_nav_cmd.content.location) < labs(g.loiter_radius)) { if (get_distance(next_WP_loc, next_nav_cmd.content.location) < labs(aparm.loiter_radius)) {
/* Whenever next waypoint is within the loiter radius, /* Whenever next waypoint is within the loiter radius,
maintaining loiter would prevent us from ever pointing toward the next waypoint. maintaining loiter would prevent us from ever pointing toward the next waypoint.
Hence break out of loiter immediately Hence break out of loiter immediately

View File

@ -143,11 +143,11 @@ void Plane::update_loiter(uint16_t radius)
{ {
if (radius <= 1) { if (radius <= 1) {
// if radius is <=1 then use the general loiter radius. if it's small, use default // if radius is <=1 then use the general loiter radius. if it's small, use default
radius = (abs(g.loiter_radius) <= 1) ? LOITER_RADIUS_DEFAULT : abs(g.loiter_radius); radius = (abs(aparm.loiter_radius) <= 1) ? LOITER_RADIUS_DEFAULT : abs(aparm.loiter_radius);
if (next_WP_loc.flags.loiter_ccw == 1) { if (next_WP_loc.flags.loiter_ccw == 1) {
loiter.direction = -1; loiter.direction = -1;
} else { } else {
loiter.direction = (g.loiter_radius < 0) ? -1 : 1; loiter.direction = (aparm.loiter_radius < 0) ? -1 : 1;
} }
} }