Plane: added auto fence enable on VTOL takeoff

fixes issue#724
This commit is contained in:
Andrew Tridgell 2016-08-29 18:04:42 +10:00
parent c81d8364ac
commit 33f17588b2
4 changed files with 21 additions and 9 deletions

View File

@ -1012,6 +1012,7 @@ private:
void takeoff_calc_pitch(void); void takeoff_calc_pitch(void);
int8_t takeoff_tail_hold(void); int8_t takeoff_tail_hold(void);
int16_t get_takeoff_pitch_min_cd(void); int16_t get_takeoff_pitch_min_cd(void);
void complete_auto_takeoff(void);
void print_hit_enter(); void print_hit_enter();
void ahrs_update(); void ahrs_update();
void update_speed_height(void); void update_speed_height(void);

View File

@ -548,15 +548,7 @@ bool Plane::verify_takeoff()
auto_state.takeoff_complete = true; auto_state.takeoff_complete = true;
next_WP_loc = prev_WP_loc = current_loc; next_WP_loc = prev_WP_loc = current_loc;
#if GEOFENCE_ENABLED == ENABLED plane.complete_auto_takeoff();
if (g.fence_autoenable > 0) {
if (! geofence_set_enabled(true, AUTO_TOGGLED)) {
gcs_send_text(MAV_SEVERITY_NOTICE, "Enable fence failed (cannot autoenable");
} else {
gcs_send_text(MAV_SEVERITY_INFO, "Fence enabled (autoenabled)");
}
}
#endif
// don't cross-track on completion of takeoff, as otherwise we // don't cross-track on completion of takeoff, as otherwise we
// can end up doing too sharp a turn // can end up doing too sharp a turn

View File

@ -1684,6 +1684,9 @@ bool QuadPlane::verify_vtol_takeoff(const AP_Mission::Mission_Command &cmd)
} }
transition_state = TRANSITION_AIRSPEED_WAIT; transition_state = TRANSITION_AIRSPEED_WAIT;
plane.TECS_controller.set_pitch_max_limit(transition_pitch_max); plane.TECS_controller.set_pitch_max_limit(transition_pitch_max);
plane.complete_auto_takeoff();
return true; return true;
} }

View File

@ -225,3 +225,19 @@ return_zero:
return 0; return 0;
} }
/*
called when an auto-takeoff is complete
*/
void Plane::complete_auto_takeoff(void)
{
#if GEOFENCE_ENABLED == ENABLED
if (g.fence_autoenable > 0) {
if (! geofence_set_enabled(true, AUTO_TOGGLED)) {
gcs_send_text(MAV_SEVERITY_NOTICE, "Enable fence failed (cannot autoenable");
} else {
gcs_send_text(MAV_SEVERITY_INFO, "Fence enabled (autoenabled)");
}
}
#endif
}