Hello,
I’m investigation one issue. I have a mission ending with MAV_CMD_NAV_LAND mission item. I also read MISSION_STATE field from MISSION_CURRENT message to know what mission state of mission. The problem after copter landed is disarmed but mission is still marked as active. What’s more current mission item is again set to 1 (take off item).
I’ve found a code responsible for that and it seems that it works as expected:
retval = copter.ap.land_complete && (motors->get_spool_state() == AP_Motors::SpoolState::GROUND_IDLE);
if (retval && !mission.continue_after_land_check_for_takeoff() && copter.motors->armed()) {
/*
we want to stop mission processing on land
completion. Disarm now, then return false. This
leaves mission state machine in the current NAV_LAND
mission item. After disarming the mission will reset
*/
copter.arming.disarm(AP_Arming::Method::LANDED);
retval = false;
}
Can anybody explain this?