mirror of https://github.com/ArduPilot/ardupilot
APM: changed hold_course for landing to be based on yaw_sensor
when we are in the final stages of a landing (less than 2 seconds from landing waypoint, or less than 3m above landing altitude) we switch the navigation to use a fixed course. The code previously used the crosstrack_bearing for this, but this can lead to a large nav_roll in this final stage of the approach, which can put a wing into the runway. In autotest we were seeing a nav_roll value of -45 degrees as we crossed the transition point for the landing, which often led to a crash. This changes the code to use the current yaw_sensor value instead, which is much less likely to lead to large rolls in the final landing stages.
This commit is contained in:
parent
c6b6320b43
commit
2dcb594f4a
|
@ -314,13 +314,19 @@ static bool verify_land()
|
||||||
if (((wp_distance > 0) && (wp_distance <= (2*g_gps->ground_speed/100)))
|
if (((wp_distance > 0) && (wp_distance <= (2*g_gps->ground_speed/100)))
|
||||||
|| (current_loc.alt <= next_WP.alt + 300)){
|
|| (current_loc.alt <= next_WP.alt + 300)){
|
||||||
|
|
||||||
land_complete = 1; //Set land_complete if we are within 2 seconds distance or within 3 meters altitude
|
land_complete = 1;
|
||||||
|
|
||||||
if(hold_course == -1){
|
if(hold_course == -1) {
|
||||||
// save our current course to land
|
// we have just reached the threshold of 2 seconds or 3
|
||||||
//hold_course = yaw_sensor;
|
// meters to landing. We now don't want to do any radical
|
||||||
// save the course line of the runway to land
|
// turns, as rolling could put the wings into the runway.
|
||||||
hold_course = crosstrack_bearing;
|
// To prevent further turns we set hold_course to the
|
||||||
|
// current heading. Previously we set this to
|
||||||
|
// crosstrack_bearing, but the xtrack bearing can easily
|
||||||
|
// be quite large at this point, and that could induce a
|
||||||
|
// sudden large roll correction which is very nasty at
|
||||||
|
// this point in the landing.
|
||||||
|
hold_course = dcm.yaw_sensor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue