Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/modules/mavlink/mavlink_mission.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1471,7 +1471,9 @@ MavlinkMissionManager::parse_mavlink_mission_item(const mavlink_mission_item_t *

case MAV_CMD_NAV_LAND:
mission_item->nav_cmd = NAV_CMD_LAND;
// TODO: abort alt param1
// param1 is the minimum abort altitude above the landing point (0 = use the
// MIS_LND_ABRT_ALT default). Carry it in the otherwise-unused time_inside field.
mission_item->time_inside = mavlink_mission_item->param1;
Comment thread
hamishwillee marked this conversation as resolved.
Outdated
mission_item->yaw = wrap_2pi(math::radians(mavlink_mission_item->param4));
mission_item->land_precision = mavlink_mission_item->param2;
break;
Expand Down Expand Up @@ -1802,7 +1804,7 @@ MavlinkMissionManager::format_mavlink_mission_item(const struct mission_item_s *
break;

case NAV_CMD_LAND:
// TODO: param1 abort alt
mavlink_mission_item->param1 = mission_item->time_inside; // minimum abort altitude (0 = default)
Comment thread
hamishwillee marked this conversation as resolved.
Outdated
mavlink_mission_item->param2 = mission_item->land_precision;
mavlink_mission_item->param4 = math::degrees(mission_item->yaw);
break;
Expand Down
12 changes: 10 additions & 2 deletions src/modules/navigator/mission_base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -873,8 +873,16 @@ MissionBase::do_abort_landing()
}

const float alt_landing = get_absolute_altitude_for_item(_mission_item);
const float alt_sp = math::max(alt_landing + _navigator->get_landing_abort_min_alt(),
_global_pos_sub.get().alt);

// Use the landing item's per-item abort altitude (NAV_CMD_LAND param1, carried in time_inside)
// if specified, otherwise fall back to the global MIS_LND_ABRT_ALT parameter.
float abort_min_alt = _navigator->get_landing_abort_min_alt();

if (_mission_item.time_inside > FLT_EPSILON) {
Comment thread
hamishwillee marked this conversation as resolved.
Outdated
abort_min_alt = _mission_item.time_inside;
}

const float alt_sp = math::max(alt_landing + abort_min_alt, _global_pos_sub.get().alt);

// turn current landing waypoint into an indefinite loiter
_mission_item.nav_cmd = NAV_CMD_LOITER_UNLIMITED;
Expand Down
2 changes: 2 additions & 0 deletions src/modules/navigator/mission_params.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ parameters:
long: |-
Minimum altitude above landing point that the vehicle will climb to after an aborted landing.
Then vehicle will loiter in this altitude until further command is received.
Used as the default when the landing mission item does not specify its own abort altitude
(MAV_CMD_NAV_LAND param1).
Only applies to fixed-wing vehicles.
type: int32
default: 30
Expand Down
Loading