APM: added some comments related to hold_course
hold_course is either -1 (for disabled) or a course to hold for takeoff/landing. This makes the code a bit clearer. It also resets hold_course in all non-auto modes, to ensure it isn't used
This commit is contained in:
parent
3e7cc2499b
commit
330ff5dc8b
@ -979,7 +979,7 @@ static void update_current_flight_mode(void)
|
||||
|
||||
switch(nav_command_ID){
|
||||
case MAV_CMD_NAV_TAKEOFF:
|
||||
if (hold_course > -1) {
|
||||
if (hold_course != -1) {
|
||||
calc_nav_roll();
|
||||
} else {
|
||||
nav_roll = 0;
|
||||
@ -1012,12 +1012,16 @@ static void update_current_flight_mode(void)
|
||||
nav_pitch = landing_pitch; // pitch held constant
|
||||
}
|
||||
|
||||
if (land_complete){
|
||||
if (land_complete) {
|
||||
// we are in the final stage of a landing - force
|
||||
// zero throttle
|
||||
g.channel_throttle.servo_out = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// we are doing normal AUTO flight, the special cases
|
||||
// are for takeoff and landing
|
||||
hold_course = -1;
|
||||
calc_nav_roll();
|
||||
calc_nav_pitch();
|
||||
@ -1025,11 +1029,13 @@ static void update_current_flight_mode(void)
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
// hold_course is only used in takeoff and landing
|
||||
hold_course = -1;
|
||||
|
||||
switch(control_mode){
|
||||
case RTL:
|
||||
case LOITER:
|
||||
case GUIDED:
|
||||
hold_course = -1;
|
||||
crash_checker();
|
||||
calc_nav_roll();
|
||||
calc_nav_pitch();
|
||||
|
@ -276,7 +276,7 @@ static void do_loiter_time()
|
||||
static bool verify_takeoff()
|
||||
{
|
||||
if (g_gps->ground_speed > 300){
|
||||
if(hold_course == -1){
|
||||
if (hold_course == -1) {
|
||||
// save our current course to take off
|
||||
if(g.compass_enabled) {
|
||||
hold_course = dcm.yaw_sensor;
|
||||
@ -286,7 +286,7 @@ static bool verify_takeoff()
|
||||
}
|
||||
}
|
||||
|
||||
if(hold_course > -1){
|
||||
if (hold_course != -1) {
|
||||
// recalc bearing error with hold_course;
|
||||
nav_bearing = hold_course;
|
||||
// recalc bearing error
|
||||
@ -302,9 +302,15 @@ static bool verify_takeoff()
|
||||
}
|
||||
}
|
||||
|
||||
// we are executing a landing
|
||||
static bool verify_land()
|
||||
{
|
||||
// we don't verify landing - we never go to a new Nav command after Land
|
||||
// we don't 'verify' landing in the sense that it never completes,
|
||||
// so we don't verify command completion. Instead we use this to
|
||||
// adjust final landing parameters
|
||||
|
||||
// Set land_complete if we are within 2 seconds distance or within
|
||||
// 3 meters altitude of the landing point
|
||||
if (((wp_distance > 0) && (wp_distance <= (2*g_gps->ground_speed/100)))
|
||||
|| (current_loc.alt <= next_WP.alt + 300)){
|
||||
|
||||
@ -318,7 +324,7 @@ static bool verify_land()
|
||||
}
|
||||
}
|
||||
|
||||
if(hold_course > -1){
|
||||
if (hold_course != -1){
|
||||
// recalc bearing error with hold_course;
|
||||
nav_bearing = hold_course;
|
||||
// recalc bearing error
|
||||
|
Loading…
Reference in New Issue
Block a user