Airspeed, angle of attack, sideslip and flight path vector estimated in real time on APM!

We have been working for some time on a way to estimate and display important flight parameters such as angle of attack, estimated airspeed (on UAVs that do not have Pitot tubes), side slip angle or flight path vector (FPV) using a simple, robust dynamical model of the UAV and a computational method that is both fast and has computational time guarantees.

Using a hybrid systems approach, the problem boils down to finding a set of analytical solutions to least squares problems, and to identify which solution is the most likely based on an analysis of the residuals. The method executes in real time, at 50 Hz, on an APM. We tested it using hardware-in-the-loop simulation (with X-Plane). As you can see from the video, the real and estimated airspeed closely match (we added some noise to the X-Plane generated IMU data to simulate the actual performance of the APM's IMU), and the FPV/AOA/sideslip evolve realistically.

Because the dynamical model used in this algorithm is fairly robust, it requires only a small number of parameters to work. More details on our WIP paper at RTAS 2014:

Views: 4913

Comment by Justin Martin on April 29, 2014 at 2:08pm
Very interesting! On this topic I am very amazed that no one has come out with a slip, or AOA vane to tell the APM in real time what the actualy AOA is.

You will notice that the newer airliners, and all military aircraft fly AOA. Airspeed is just about irrelevant when you can instead determine AOA. Military aircraft, specifically fighters, rarely focus on airspeed for stall, and more often then not "fly angle of attack"

Most recently A5 amphib plane has introduced their own AOA system for easier pilot workload.

If aircraft were fitted with an AOA sensor/vane, programming the APM for that aircrafts specific stall would be as simple as a manual flight and a purposeful stall. The APM could recognize the nose down dove directly after a stall and record the AOA transducers position just prior to. It could then program this position as default and would be more capable of avoiding dangerous flight parameters.

Comment by Andrew Tridgell on April 29, 2014 at 2:17pm

Hi Christian,

Nice to see this sort of work on the APM platform!

If you plan on continuing with this work then I would highly recommend you not use HIL any more. HIL adds a lot of lag, and produces a very unrealistic model of a real aircraft. I know HIL is tempting, but it just isn't good enough for this type of analytics.

Instead I'd recommend you use SITL, which provides much more accurate simulation and avoids the huge control and sensor lag that HIL has. If you fly a plane in HIL you will find you need control gains of about 20% of the gains you need for the real aircraft you are simulating. This is because in HIL the sensor and control lag means you cannot tune the plane to anything like its real performance. In SITL you can use much more normal tuning gains. SITL also has a lot more control over the simulation environment (have a look at all of the SIM_* parameters for an idea of what you can control).

The second comment I'd make is that you should try to compare the output of your system to the output of the existing estimators in the ardupilot code. For example, I'm not sure if you realise that ardupilot already has two different methods for estimating airspeed without a pitot tube. One is in the DCM code and the other is part of the new EKF code. If you disable the airspeed sensor then you will still see airspeed numbers in telemetry coming from these algorithms.

Cheers, Tridge

Comment by ikrase on April 29, 2014 at 3:13pm
I think it's really hard to make an aoa vane on this scale.
Comment by Justin Martin on April 29, 2014 at 3:22pm
Ikrase it would actually be rather simple. The conventional AoA vane would not work, however a semi-radial pitot system would work. It could have 5 or so inlets and calculate AoA on each inlets differential pressure.

This has been used on full scale as well, as an alternative to the traditional vane.
Comment by Mustafa TULU on April 30, 2014 at 1:09am

Very cool job, great work.

Comment by Hugues on April 30, 2014 at 4:20am

looks interesting and certainly smart . But what is this thing all about, why do we need to calculate AOA-sideslips & other chinese params,  in a few words ? (for dummies like me)

Comment by Georacer on April 30, 2014 at 4:33am

Such parameters are important for both control and identification.

In the first case, for example, angle-of-attack is the primary indicator of a stall. Additionally, since a basic piloting goal is to eliminate sideslip at all flying manoeuvres, you have to know it, in order to control it.

As for identification, the dynamic response of the airframe is strongly dependent upon these parameters. One could go as far as completely characterise (model) the airframe, by knowing these parameters, and, of course, an IMU.

Generally, knowing these parameters in a small UAV is hard, because you cannot mount a large airspeed probe on it, which measures them directly. Instead, you usually try to estimate these values by observing other values, such as airspeed, pitch, yaw, heading and path angle. However, this isn't reliable nor accurate, and efforts to improve on such algorithms extend to Kalman filtering, neural networks etc.

Comment by Ted Van Slyck on April 30, 2014 at 8:22am
It would be cool to see stall protection built into the code. Ie APM would gently lower the nose instead of entering a stall.
Comment by Christian Claudel on April 30, 2014 at 12:11pm

Thanks all for your comments.

The estimation method we use is not based on Kalman filtering or artificial neural networks. It is actually much faster than these methods, since the solutions are analytical (each time step requires you to compute a fixed matrix times a vector, and to find the resulting vector of least norm). To make it more accurate, we plan to use L1 regularization for instance, to have a "sparser" result. We'll keep you posted on these developments. Right now our objective is to make the code as compact, fast and easy to install as possible, and accuracy is already pretty good (with less than 1m/s error in the airspeed in average)

Also, the algorithm we use is fundamentally different from the EKF/complementary filter that is built in, in the sense that the estimated airspeed, angle of attack and sideslip is not obtained from position measurements (in fact our algorithm doesn't use the GPS data nor the magnetometer data at all. It only relies on IMU data: accelerometers and gyros, as well as elevator, aileron, rudder and throttle settings). These estimates are obtained using a dynamical model of the UAV, i.e. the input-output characterization of the UAV (thrust model, aerodynamic force model). Therefore this method captures the real time effects of the wind (i.e. gusts), which are averaged out in the GPS based methods. The GPS based method also assume zero sideslip, which we do not here (you can see the sideslip estimates on the video (also from the FPV), and as you can see in steep turns the plane slips inside the turn).

And yes, it would be cool to add stall protection, it shouldn't be too difficult: you could modify the elevator response in the code so that elevator inputs commands an angle of attack (less than the stall angle) rather than a servo position past some angle of attack threshold (like in Airbus A320-330-340-380). This would work much better than the pitch and bank angle limits.

Comment by Justin Martin on April 30, 2014 at 1:18pm

Hugues, I will attempt to make this as simple as possible.

First, lets explain why there is a stall speed and why it is incorrect. First off, a wing stalls at a certain angle of attack. This generally can vary very slightly with speed, but we are talking less than 1/2 a degree. So in general it is safe to say that wings will always stall at a certain Angle of attack. Of course, as the angle of attack goes up, the more lift a wing makes, all the way up until the stall threshold. This being said, lets say your aircraft weighs 20 pounds, at 80 mph it might make plenty of lift at 1 degree AoA, however at 25mph it might need to be at 6 or 7 degrees angle of attack to make up for the lack in speed (yet still maintain enough lift to carry that 20 pounds). Therefore to maintain level flight, carrying a set weight, you must adjust angle of attack. This "generally" translates into a stall "speed" because at a certain weight, and a certain speed, you need "x" angle of attack to maintain flight. The aforementioned notion is entirely wrong, however. A stall can also be forced on an aircraft. The best example are fighter or aerobatic aircraft that can sustain extreme "G' forces in a turn, as the AoA increases in a sharp turn, it could easily stall the wing at 10x over the stall speed. THAT is why military aircraft, and most airliners, fly AoA instead of airspeed.

I hope this helps.


You need to be a member of DIY Drones to add comments!

Join DIY Drones


Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service