New Julia Package for F16 Aircraft Model

F16Model.jl is a Julia package for a nonlinear model of the F16 aircraft. The aerodynamics included in this model come from the NASA Technical Report 1538, Simulator Study of Stall/Post-Stall Characteristics of a Fighter Airplane with Relaxed Longitudinal Static Stability , by Nguyen, Ogburn, Gilbert, Kibler, Brown, and Deal, Dec 1979. The model is based on Aircraft Control and Simulations , by Brian Stevens and Frank Lewis, Wiley Inter-Science, New York, 1992.

This Julia package is inspired by the MATLAB/Simulink package, and currently has the following features:

  1. Nonlinear dynamics for simulations.
  2. Trim routine for various flight conditions.
  3. Linearization about a trim point (x0,u0) using ForwardDiff.

These capabilities allow users to perform high fidelity aircraft simulations and test flight control algorithms. More features will be added as we continue to develop this package.


You seem to have forgotten to provide a link to your package.

1 Like

Thanks for pointing that out. :slight_smile:
I have edited the post to include the link.

Hey, this is awesome! I wonder if it could be interfaced with/adapted to ModelingToolkit.jl.

Do you have plans to extend this, e.g. to implement controllers etc?

1 Like

Right now it is standalone, it gives you \dot{x}=f(x,u), where x are the F16 states and u are the control inputs, which can be used to design feedback controllers u:= g(x) and simulate the closed-loop system using DifferentialEquations.jl. Not sure how ModelingToolkit.jl will be useful here. It will be cool to interconnect subsystems like in Simulink. Can ModelingToolkit.jl help here?

Yes I believe that’s one of the objectives of that project and a reason I’m interested in it. There’s some mention of Simulink in the docs: ModelingToolkit.jl/ at 90540bb36bf8e7a7d6b0c2334814bbf273b9e9aa · SciML/ModelingToolkit.jl · GitHub

That is great! Looking forward to seeing some activity in that direction.

1 Like

Very nice, thanks for this package! One thing that would be nice (but probably quite a bit of work) is to add support for Unitful.jl, so all quantities have units attached and users can easily choose between metric and imperial units.

1 Like

Yes that is a good idea. I will try to incorporate it in a future version.

1 Like

Just found out that ModelingToolkit.jl allows Composing Ordinary Differential Equations. So I think this can be used to interconnect control systems.

I think you may be interested in Modeling Spacecraft Separation Dynamics in Julia - Jonathan Diegelman - YouTube

1 Like


Are you aware of more similar talks? I’m interested in anything Julia + GNC related!