diff --git a/src/modules/commander/ModeUtil/mode_requirements.cpp b/src/modules/commander/ModeUtil/mode_requirements.cpp index 555b564d97..5be3ac4712 100644 --- a/src/modules/commander/ModeUtil/mode_requirements.cpp +++ b/src/modules/commander/ModeUtil/mode_requirements.cpp @@ -95,7 +95,6 @@ void getModeRequirements(uint8_t vehicle_type, failsafe_flags_s &flags) setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_angular_velocity); setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_attitude); setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_position); - setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_global_position); setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_alt); setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_wind_and_flight_time_compliance); diff --git a/src/modules/navigator/mission_block.cpp b/src/modules/navigator/mission_block.cpp index 1b05628a6c..4587290acf 100644 --- a/src/modules/navigator/mission_block.cpp +++ b/src/modules/navigator/mission_block.cpp @@ -736,11 +736,20 @@ MissionBlock::setLoiterItemFromCurrentPositionWithBraking(struct mission_item_s { setLoiterItemCommonFields(item); - _navigator->preproject_stop_point(item->lat, item->lon); + auto global = _navigator->get_global_position(); - item->altitude = _navigator->get_global_position()->alt; - item->loiter_radius = _navigator->get_loiter_radius(); - item->yaw = NAN; + if (global->lat_lon_valid && global->alt_valid) { + _navigator->preproject_stop_point(item->lat, item->lon); + item->altitude = global->alt; + item->loiter_radius = _navigator->get_loiter_radius(); + item->yaw = NAN; + + } else { + item->lat = NAN; + item->lon = NAN; + item->altitude = NAN; + item->loiter_radius = NAN; + } } void