How can I estimate Roll from Position?

I have flight test data where the IMU is junk. The roll and yaw are obviously wrong, while the pitch seems to be correct. [I know the yaw is wrong because it doesn't match the changes in headings, and I know the roll is wrong because the it stays near 0° during horizontal loops where it should be closer to 20°.] The pitch seems ok because it is stays near 5° most of the time, which was the angle of attack for most of the flight.

I also have GPS data that gives me position at a high update rate. I was able to use the position to compute the yaw values. With the position updates I can also estimate speed. With the position I can get a turn radius, and the change in position gives a velocity which can lead to a linear and/or angular momentum.

Now, I'd like to get an estimate of the roll (I say estimate because I figure the computation will require some simplifying assumptions). The resolution for roll that I need is much less than the position data (by a factor of about 1000).

My question is this: given the position of the aircraft, how can I estimate the roll?

The purpose of this is for analysis of flight test data for a product that was tested on the aircraft. The product had (what turned out to be) a poor IMU, and we cannot do another flight test. I need the attitude and position to complete my analysis.

• Does this IMU only have an accelerometer? – Collin Aug 10 '17 at 16:35
• @Collin Yes, the IMU data has an accelerometer (3 values for each time step). – Baller Aug 10 '17 at 19:40

You can, but the accuracy is going to be somewhat poor.

Given the positions you can approximate the path with your favourite line approximation method. The important thing is that it can give you continuous evaluations (no jumps and no discontinuities) of at least the first and second derivative. Third order algebraic splines are a good approach.

Note that you will need to map Latitude and Longitude to some Cartesian representation. Depending on the length of the flight, a "flat earth" approximation might or might not be a good idea.

With these, assuming that each manoeuvre was mostly flat(*), you can compute your local curvature:

$$k = \frac{x'y'' - y'x''}{\sqrt{(x'^2 + y'^2)^3}}$$

Now you can estimate your bank angle $\phi$ with

$$\phi = atan\left( \frac{k \cdot V_{tas}^2}{g} \right)$$

where $g$ is Earth's gravity.

(*) the formula is for a manoeuvre in the x-y plane. You could turn your coordinates so to have a local x-y plane that is coincident with the plane where the aircraft was manoeuvering, but then you could not use the bank angle formula, that is correct only for turns in the horizontal plane (thanks Jan Hudec for correcting)

• Ad turning your coordinates: no, you can't (easily), because the formula is only applicable for plane orthogonal to gravity. It's easier to use the full 3D formula. – Jan Hudec Aug 10 '17 at 17:41
• @Frederico I think this is exactly what I need. The maneuvers are indeed (approximately) at constant altitude. I'll have to crunch the numbers to see if this gives reasonable values, but I like this approach because I don't have to define a turn radius (which would be difficult because planes don't necessarily turn in perfect circles with a constant radius). – Baller Aug 10 '17 at 21:07
• @JanHudec corrected, thanks. – Federico Aug 11 '17 at 6:39
• @Baller (it's FEderico) please note that you are defining a turn radius anyway, $k=1/r$, I am simply giving you a straightforward way of defining it – Federico Aug 11 '17 at 6:41
• @Federico I ran the numbers and all the rolls look quite good. All non-zero roll values occur when the plane turns, clockwise turns yield negative rolls, CCW turns yield positive turns, and the values of the rolls are reasonable. I'm marking this as solved. Thanks! – Baller Aug 14 '17 at 22:28