I've got a set of data that includes:

  • x rate, y rate, z rate (all ENU) which I'll call xd, yd, zd.
  • roll, pitch, yaw (which I'll call ϕ, θ, ψ)
  • roll rates, pitch rates, yaw rates

I'm looking at some math that is meant to convert these values to AoA and AoS, but I'm having trouble understanding exactly what's going on.

As far as I'm aware, this is basically just taking euler angles and making a rotation matrix and using that to find u,v,w. But I'm having trouble verifying the accuracy of this work (it was done by someone who is no longer with the program.)

Rotation Matrix Derivation?

  • $\begingroup$ xd, yd, zd are inertial speeds? How are you accounting for winds then? $\endgroup$
    – JZYL
    Feb 5, 2020 at 13:55
  • $\begingroup$ @JZYL Yes, xd, yd and zd are inertial. And I'm not, I've only got so much data and I'm just curious as to roughly what values I'm looking at. I'll hopefully get some better data in the future. $\endgroup$
    – synchh
    Feb 5, 2020 at 13:59
  • $\begingroup$ You could implement a Kalman filter to estimate AoA and AoS, however, in addition to the inertial measurements you have, you would need ground and wind speed measurements. See for example: Wenz, A., Johansen, T. A., & Cristofaro, A. (2016, June). Combining model-free and model-based angle of attack estimation for small fixed-wing UAVs using a standard sensor suite. In 2016 International Conference on Unmanned Aircraft Systems (ICUAS) (pp. 624-632). $\endgroup$
    – afcdesign
    Feb 7, 2020 at 15:51

1 Answer 1


What you've proposed is a reference frame translation of the aircraft velocity, so instead of the velocity referenced to East, North, and Up (ENU), it's referenced to the direction the aircraft is pointing. That gives you components of aircraft velocity along the nose, across the wing, and towards the ground. (You can find more details on these conversions by Robert Stengel). It seems like using velocity across the wing and along the nose you should be able to figure out sideslip, but this approximation only holds in situations where wind is much smaller than true airspeed.

Relationship of TAS, groundspeed, and tail wind shown using a triangle

You're assuming here that the motion of the aircraft relative to earth equals its motion through the air. That means your equations may give an unusual angle of attack when there's simply an unusual vertical wind component, or may report the drift angle as the sideslip where there is no sideslip. This assumption of zero wind may be valid for rough approximations or in cases of severely limited sensor suites like a low-cost UAV. This approximation is especially good at high true airspeed, low wind, or if you only care about AOA and AOS derivatives (e.g. for yaw damper control). However there are some cases where this approximation clearly isn't reliable:

  • Windshear can result in a dramatically higher angle of attack than expected
  • Gliders use warm rising air to ascend without the loss of energy that would be anticipated if you're looking at only velocity and pitch
  • Horizontal surface winds in many places are over 30 kts, and can be much more in the jet stream. (see a wind map for examples). Many aircraft can land in over 10 knot crosswind component, which your formulas would estimate as a ~10 degree sideslip.

Non-negligible wind is the reason that other methods of estimating AOA are used in practice, such as model-based angle of attack using inertial measurements (sometimes called synthetic air data) is sometimes used instead. This is the reverse of what you typically do in an aerodynamics course- instead of using known angle of attack and airspeed to find normal and longitudinal acceleration, you're using known accelerations to find angle of attack and airspeed. Ardupilot has an option to do this based on this paper by Joseph E. Zeis, Jr. Another potential alternative implemented by Tor A. Johansen, et al, in addition to inertial measurements, uses airspeed during turns to estimate the constant wind.

Keep in mind there aren't a lot of cheap AOA sensors for a reason besides manufacturing costs: angle of attack is important, but has limits on its practical applications as AOA cannot be considered in a vacuum. It's usually more important to know your airspeed or acceleration. For example, at high speed if you attempt a high AOA maneuver, the aircraft will rapidly decelerate, and you'd have to lower the nose to prevent the AOA from going into a stall condition. Other limitations are described here.

  • $\begingroup$ AOA cannot be considered in a vacuum, indeed! :) $\endgroup$
    – Zeus
    Feb 12, 2020 at 0:30
  • $\begingroup$ This was precisely the kind of answer I was hoping to get! I really appreciate it. So, if I'm understanding correctly, the idea behind the "synthetic airdata" is to basically estimate the effect of the wind and apply that to the same type of calculation that I demonstrated above, obviously still resulting in an approximation of AoA/AoS, but a "better" approximation. You simply can't calculate AoA/AoS accurately without wind data. But in the case of a "low-wind" day, these kinds of calculations would give a moderately accurate (depending on your definition of those words) estimation. $\endgroup$
    – synchh
    Feb 12, 2020 at 13:18
  • 1
    $\begingroup$ @synchh I've added to my answer regarding synthetic air data: "This is the reverse of what you typically do in an aerodynamics course- instead of using known angle of attack and airspeed to find normal and longitudinal acceleration, you're using known accelerations to find angle of attack and airspeed.". I've also clarified to answer your other question to indicate that I wouldn't say this is inaccurate, especially when wind is light and true airspeed is high, but like many approximations, you need to understand its limitations. $\endgroup$
    – Cody P
    Feb 12, 2020 at 17:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .