ArduPilot / ardupilot

ArduPlane, ArduCopter, ArduRover, ArduSub source
http://ardupilot.org/
GNU General Public License v3.0
11.01k stars 17.56k forks source link

GSF failiures on fixed wing #23224

Open tridge opened 1 year ago

tridge commented 1 year ago

The GSF yaw estimator can sometimes produce a very bad yaw. This particularly affects fixed wing aircraft with no compass. EKF3 initialises after launch using GSF and can result in the EKF getting bad roll/pitch estimates. This issue is to collect examples and work on a fix Ideally we would get an example with replay logging enabled to be able to analyse properly. That requires LOG_DISARMED=1 and LOG_REPLAY=1

Examples:

image image

Possible ideas:

priseborough commented 1 year ago

Log http://uav.tridgell.net/GSF-failures/00000071.BIN has higher than usual levels of GPS velocity noise. I've requested access to the other log. I will try adjusting the GSF use thresholds first. Use of a GPS velocity vector for yaw can give bad results with low wing loading aircraft that are had launched on wind days as the aircraft can go sideways after launch.

It's not clear to me how the use of an airspeed sensor to bound yaw error can work without requiring assumptions about launching into wind.

tridge commented 1 year ago

@priseborough if we waited longer to gain more ground speed for init then using GPS velocity vector for yaw would perhaps be more reasonable?

priseborough commented 1 year ago

@tridge That also gives more time for the plane to start turning which will cause ground track and heading to differ if it is windy.

priseborough commented 1 year ago

I'm working on a fix for this that will allow the special cases such as planes that don't wish to use the GSF, eg those hand launching without a compass or those that need to do aerobatics to not use the GSF by setting the EK3_GSF_USE_MASK parameter to zero. This is a work in progress and still requires a patch that will do a sanity check of GPS velocity innovations after the yaw reset to verify that the yaw reset was successful.

Flight testing of the aerobatics scripting has highlighted the limitations of the GSF yaw estimators simplified horizontal motion model.

https://github.com/priseborough/ardupilot/commits/pr-ekf3PlaneYawReset