Flight envelope protection: better stall prevention based on airspeed and g-load

(from my facebook post, I repost here so one is able to find it in the future)

Here I draw a typical V-n-Diagram for an average Arduplane with stall speed of 10 m/s positive, 14 m/s negative, top speed of 20 m/s and load limit of (quite low) 3g.

As one can see there is an positive and negative area where a stall happens, even if you are still over the “stall speed” of 10 m/s. The normal level flight is marked in green with “Cruise”.

Also I draw in orange text marker where Arduplane is limiting your flight at the moment (to my understanding) with the following numbers:
(1) FBW min speed
(2) TECS_VERT_ACC of the stock ± 0.7g
(3) Automatic bank angle limit based on airspeed. Note here that this is only limiting the force through bank, but not through elevator pull (!!!)
(4) FBW max speed

As one can see there is a lot more area where one could operate, but without implementation of the proposed logic we can not use it.

What I propose is that we should implement this in the plane firmware and have a way in MP to visualize the actual state.
In a further state we can automatically determine this parameters.


I could do you a quick Matlab script to draw this out based on the 4 parameters. Not sure how usefull this would be tho. Matlab is not free, you could do it in excel i guess.

Not sure what you could do on the aircraft side, I guess you could fly round in manual and try and cover the range of the flight envelope. A script could then derive the parameters from the logs that would give ardupilot the same flight envelope.

http://www.octave.org/ is a good alternative, with compatible syntax

I can do R script (RStudio) using ggplot2 (Data Visualization) and Shiny (for web client output). If someone would the logic (flowchart) and workflow for this V-n-Diagram. It is all FREE and everybody can use it in Windows, MacOS and Linux. https://www.rstudio.com/

I have done a matlab code that plots the flight envelope from the three parameters. Its not very complicated if anyone wants to translate it to another language.

The negative g limit is dashed because the code doesn’t consider negative g forces so it doesn’t handle it that way. In fact it looks like it just imposes a hard limit of -1.1g. Although for inverted flight for example the limit is just tuned off. Also the stall prevention code would also alter the flight envelope if enabled.

The g limit code is here if anyone is interested.