|
|
@ -28,7 +28,7 @@ bool ModeRTL::_enter() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
sent_notification = false; |
|
|
|
sent_notification = false; |
|
|
|
|
|
|
|
_loitering = false; |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -46,20 +46,22 @@ void ModeRTL::update() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// we have reached the destination
|
|
|
|
// we have reached the destination
|
|
|
|
// boats loiters, rovers stop
|
|
|
|
// boats loiter, rovers stop
|
|
|
|
if (!rover.is_boat()) { |
|
|
|
if (!rover.is_boat()) { |
|
|
|
stop_vehicle(); |
|
|
|
stop_vehicle(); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// if not loitering yet, start loitering
|
|
|
|
// if not loitering yet, start loitering
|
|
|
|
if (!_rtl_loiter) { |
|
|
|
if (!_loitering) { |
|
|
|
if (!start_loiter()) { |
|
|
|
_loitering = rover.mode_loiter.enter(); |
|
|
|
stop_vehicle(); |
|
|
|
} |
|
|
|
} |
|
|
|
// update stop or loiter
|
|
|
|
|
|
|
|
if (_loitering) { |
|
|
|
|
|
|
|
rover.mode_loiter.update(); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
stop_vehicle(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// update the loiter
|
|
|
|
|
|
|
|
rover.mode_loiter.update(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// update distance to destination
|
|
|
|
// update distance to destination
|
|
|
|
_distance_to_destination = rover.current_loc.get_distance(g2.wp_nav.get_destination()); |
|
|
|
_distance_to_destination = rover.current_loc.get_distance(g2.wp_nav.get_destination()); |
|
|
|
} |
|
|
|
} |
|
|
@ -79,13 +81,3 @@ bool ModeRTL::reached_destination() const |
|
|
|
{ |
|
|
|
{ |
|
|
|
return g2.wp_nav.reached_destination(); |
|
|
|
return g2.wp_nav.reached_destination(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool ModeRTL::start_loiter() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (rover.mode_loiter.enter()) { |
|
|
|
|
|
|
|
_rtl_loiter = true; |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
_rtl_loiter= false; |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|