Jsbsim
An open source flight dynamics & control software library
Install / Use
/learn @JSBSim-Team/JsbsimREADME
Introduction
JSBSim is a multi-platform, general purpose object-oriented Flight Dynamics Model (FDM) written in C++. The FDM is essentially the physics & math model that defines the movement of an aircraft, rocket, etc., under the forces and moments applied to it using the various control mechanisms and from the forces of nature. JSBSim can be run in a standalone batch mode flight simulator (no graphical displays a.k.a. console mode) for testing and study, or integrated with the Unreal engine, FlightGear and many other simulation environments.
Features include:
- Nonlinear 6 DoF (Degree of Freedom)
- Fully configurable flight control system, aerodynamics, propulsion, landing gear arrangement, etc. through XML-based text file format.
- Accurate Earth model including:
- Rotational effects on the equations of motion (Coriolis and centrifugal acceleration modeled).
- Oblate spherical shape and geodetic coordinates according to the WGS84 geodetic system.
- Atmosphere modeled according to the International Standard Atmosphere (1976).
- Configurable data output formats to screen, file, socket, or any combination of those.
JSBSim also includes the following bindings:
- A Python module which provides the exact same features as the C++ library with Python based simulation samples that can be run on Google Colab
- A Matlab S-Function that interfaces JSBSim with MATLAB Simulink.
- An Unreal Engine plugin to build a connection between the flight dynamics model from JSBSim and the entire virtual environment provided by Unreal engine.
In 2015, NASA performed some verification check cases on 7 flight dynamics software including JSBSim (the other 6 being NASA in-house software). The results showed that the 7 simulation tools "were good enough to indicate agreement between a majority of simulation tools for all cases published. Most of the remaining differences are explained and could be reduced with further effort."
Applications and Usages
JSBSim is used in a range of projects among which:
- Unreal Engine's Antoinette Project: tools to create the next generation of flight simulators.
- Flight simulation: FlightGear, OutTerra, Skybolt Engine
- SITL (Software In The Loop) Drone Autopilot testing : ArduPilot, PX4 Autopilot, Paparazzi
- Machine Learning Aircraft control: gym-jsbsim
- DARPA Virtual Air Combat Competition where one of the AI went undefeated in five rounds of mock air combat against an Air Force fighter (see the video on YouTube).
Academic and Industry Research
JSBSim is also used in academic and industry research (more than 1000 citations referenced by Google Scholar as of May 2025).
In 2023 JSBSim was featured in the article "A deep reinforcement learning control approach for high-performance aircraft" , by De Marco et al. (2023), Nonlinear Dynamics, an International Journal of Nonlinear Dynamics and Chaos in Engineering Systems by Springer (doi: 10.1007/s11071-023-08725-y). The open-access article is available as a PDF here https://link.springer.com/content/pdf/10.1007/s11071-023-08725-y.pdf. The work demonstrates an application of Deep Reinforcement Learning (DRL) to flight control and guidance, leveraging the JSBSim interface to MATLAB/Simulink.
Another more advanced application within the field of Deep Reinforcement Learning is presented in the article "Hierarchical Reinforcement Learning for Air Combat at DARPA's AlphaDogfight Trials" by A. P. Pope et al. (2023), IEEE Transactions on Artificial Intelligence (doi: 10.1109/TAI.2022.3222143), featuring a hierarchical reinforcement learning approach. The trained agent was designed alongside of and competed against active fighter pilots, and ultimately defeated a graduate of the United States Air Force's F-16 Weapons Instructor Course in match play. See also the DARPA Virtual Air Combat Competition.
User Guide
Installation
Windows
A Windows installer JSBSim-1.2.4-setup.exe is available in the release section. It installs the 2 executables along with aircraft data and some example scripts:
JSBSim.exewhich runs FDM simulations.aeromatic.exewhich builds aircraft definitions from Question/Answer interface
Both executables are console line commands.
The Windows installer also contains the files needed to build the JSBSim Matlab S-Function (see our MATLAB README for more details about using JSBSim in Matlab).
Ubuntu Linux
Debian packages for Ubuntu Linux "Jammy" 22.04 LTS and "Noble" 24.04 LTS for 64 bits platforms are also available in the JSBSim project release section. There are 3 packages for each platform:
JSBSim_1.2.4-1671.amd64.debwhich installs the executablesJSBSimandaeromaticJSBSim-devel_1.2.4-1671.amd64.debwhich installs the development resources (headers and libraries)python3-JSBSim_1.2.4-1671.amd64.debwhich installs the Python module of JSBSim
Python module
JSBSim provides binary wheel packages for its Python module on Windows, Mac OSX and Linux platforms for several Python versions (3.10, 3.11, 3.12, 3.13 and 3.14). These can be installed using either pip or conda.
Installation with pip
Binary packages a.k.a. wheel packages are available from the Python Package Index (PyPI), a repository of software for the Python programming language.
Installing jsbsim using pip can be achieved with:
> pip install jsbsim
Check the pip documentation for more details.
Note that wheel packages for Linux meet the PEP600 ManyLinux packages requirements and as such are compatible with a majority of Linux distributions.
Installation with conda
Conda is an open-source package management system and environment management system that runs on Windows, macOS, and Linux. The JSBSim conda package is available from conda-forge, a community led collection of recipes, build infrastructure and distributions for the conda package manager.
Installing jsbsim from the conda-forge channel can be achieved by adding conda-forge to your channels with:
> conda config --add channels conda-forge
Once the conda-forge channel has been enabled, jsbsim can be installed with:
> conda install jsbsim
It is possible to list all of the versions of jsbsim available on your platform with:
> conda search jsbsim --channel conda-forge
Other platforms
At the moment, JSBSim does not provide binaries for platforms other than Windows 64 bits and Ubuntu 64 bits. Alternatively, you can use JSBSim wheel packages for Windows, Linux or MacOS. Otherwise you should follow the instructions in the developer docs to build JSBSim on your platform.
Aircraft data and example scripts
JSBSim aircraft data and example scripts are automatically installed if you are using Python wheel packages. Otherwise, you can get aircraft data and example scripts by downloading either the zip package or the tar.gz package.
Quick start
Once you have downloaded (or built) the binaries and unzipped the aircraft data. Go to the root of the data p
