Browse Source

RTL: during climb, set NAV_CMD_WAYPOINT for RW modes, NAV_CMD_LOITER_TO_ALT for FW

Do not use LOITER_TO_ALT for rotary wing mode as it would then always climb to
at least MIS_LTRMIN_ALT, even if current clib altitude is below
(e.g. RTL immediately after take off)

Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
release/1.12
Silvan Fuhrer 4 years ago committed by Lorenz Meier
parent
commit
92634e7549
  1. 10
      src/modules/navigator/rtl.cpp

10
src/modules/navigator/rtl.cpp

@ -319,7 +319,15 @@ void RTL::set_rtl_item() @@ -319,7 +319,15 @@ void RTL::set_rtl_item()
switch (_rtl_state) {
case RTL_STATE_CLIMB: {
_mission_item.nav_cmd = NAV_CMD_LOITER_TO_ALT;
// do not use LOITER_TO_ALT for rotary wing mode as it would then always climb to at least MIS_LTRMIN_ALT,
// even if current climb altitude is below (e.g. RTL immediately after take off)
if (_navigator->get_vstatus()->vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING) {
_mission_item.nav_cmd = NAV_CMD_WAYPOINT;
} else {
_mission_item.nav_cmd = NAV_CMD_LOITER_TO_ALT;
}
_mission_item.lat = gpos.lat;
_mission_item.lon = gpos.lon;
_mission_item.altitude = _rtl_alt;

Loading…
Cancel
Save