Skip to content

Commit

Permalink
rtl_direct: skip loiter altitude items for multicopter without RTL la…
Browse files Browse the repository at this point in the history
…nd delay (#23689)

This was already done before the refactor and was assumed to not be necessary.
The problem is that these mission items result in a strang looking vertical slow down directly followed
by an acceleration during the landing phase.
  • Loading branch information
MaEtUgR authored Sep 23, 2024
1 parent e0f8642 commit f60bb2c
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions src/modules/navigator/rtl_direct.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,10 @@ void RtlDirect::setRtlPosition(PositionYawSetpoint rtl_position, loiter_point_s

void RtlDirect::_updateRtlState()
{
// RTL_LAND_DELAY > 0 -> wait seconds, < 0 wait indefinitely
const bool wait_at_rtl_descend_alt = fabsf(_param_rtl_land_delay.get()) > FLT_EPSILON;
const bool is_multicopter = (_vehicle_status_sub.get().vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING);

RTLState new_state{RTLState::IDLE};

switch (_rtl_state) {
Expand All @@ -165,7 +169,13 @@ void RtlDirect::_updateRtlState()
break;

case RTLState::MOVE_TO_LOITER:
new_state = RTLState::LOITER_DOWN;
if (!is_multicopter || wait_at_rtl_descend_alt) {
new_state = RTLState::LOITER_DOWN;

} else {
new_state = RTLState::LAND;
}

break;

case RTLState::LOITER_DOWN:
Expand Down Expand Up @@ -206,7 +216,6 @@ void RtlDirect::_updateRtlState()
}

_rtl_state = new_state;

}


Expand Down

0 comments on commit f60bb2c

Please sign in to comment.