bool ModeSmartRTL::_enter() { // SmartRTL requires EKF (not DCM) Location ekf_origin; if (!ahrs.get_origin(ekf_origin)) { return false; } // refuse to enter SmartRTL if smart RTL's home has not been set if (!g2.smart_rtl.is_active()) { return false; } // initialise waypoint speed set_desired_speed_to_default(true); // init location target set_desired_location(rover.current_loc); // RTL never reverses rover.set_reverse(false); // init state smart_rtl_state = SmartRTL_WaitForPathCleanup; _reached_destination = false; return true; }
bool ModeGuided::_enter() { // initialise waypoint speed set_desired_speed_to_default(); // set desired location to reasonable stopping point calc_stopping_location(_destination); set_desired_location(_destination); return true; }
bool ModeGuided::_enter() { // initialise waypoint speed set_desired_speed_to_default(); // when entering guided mode we set the target as the current location. _desired_lat_accel = 0.0f; set_desired_location(rover.current_loc); // guided mode never travels in reverse rover.set_reverse(false); return true; }
bool ModeRTL::_enter() { // refuse RTL if home has not been set if (rover.home_is_set == HOME_UNSET) { return false; } // initialise waypoint speed set_desired_speed_to_default(true); // set destination set_desired_location(rover.home); // RTL never reverses rover.set_reverse(false); return true; }
bool ModeRTL::_enter() { // refuse RTL if home has not been set if (!AP::ahrs().home_is_set()) { return false; } // initialise waypoint speed set_desired_speed_to_default(true); // set target to the closest rally point or home #if AP_RALLY == ENABLED set_desired_location(rover.g2.rally.calc_best_rally_or_home_location(rover.current_loc, ahrs.get_home().alt)); #else // set destination set_desired_location(rover.home); #endif return true; }