**[User Guide](#user-guide)** | **[Developer Docs](doc/DevelopersDocs.md)** | **[FAQ](#frequently-asked-questions)** | **[Contact](#contact)** | **[Legal notice](#legal-notice)** --- # 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) for testing and study, or integrated with [FlightGear](https://www.flightgear.org/) or other flight simulator. 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. * Rotational earth effects on the equations of motion (Coriolis and centrifugal acceleration modeled). * The earth atmosphere is modeled according to the [International Standard Atmosphere (1976)](https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19770009539.pdf) * Configurable data output formats to screen, file, socket, or any combination of those. * A [Python](https://www.python.org) module which provides the exact same features than the C++ library More information on JSBSim can be found at the JSBSim home page here: http://www.jsbsim.org # User Guide **[Installation](#installation)** | **[Quick Start](#quick-start)** | **[User Docs](#user-documentation)** | **[Interfacing JSBSim with your app](#interfacing-jsbsim-with-your-application)** --- ## Installation ### Windows Win*** executables for JSBSim are available in the [JSBSim project release section](https://github.com/JSBSim-Team/jsbsim/releases). There are 2 executables: * `JSBSim.exe` which runs FDM simulations. * `aeromatic.exe` which builds aircraft definitions from Question/Answer interface Both executables should be used from the console. ### Ubuntu Linux Debian packages for Ubuntu Linux "Xenial" 16.04 LTS on *** bits platform are also available in the [JSBSim project release section](https://github.com/JSBSim-Team/jsbsim/releases). There are 3 packages: * `JSBSim_1.0.0-xxx.xenial.amd***.deb` which installs the executables `JSBSim` and `aeromatic` * `JSBSim-devel_1.0.0-xxx.xenial.amd***.deb` which installs the development resources (headers and libraries) * `pythonX-JSBSim_1.0.0-xxx.xenial.amd***.deb` which installs the Python module of JSBSim (for python 2.7 if the package name starts with **python2** or 3.6 if it starts with **python3**) ### Python module JSBSim provides binary packages (a.k.a. known as [wheel packages](https://www.python.org/dev/peps/pep-0427)) for its Python module on Windows and Linux platforms for several Python versions (3.5, 3.6, 3.7 and 3.8). The module is installed with the `pip` command line (check the [pip documentation](https://packaging.python.org/tutorials/installing-packages) for more details): ```bash > pip install jsbsim --no-index -f https://github.com/JSBSim-Team/jsbsim/releases/download/Rolling-release-v2019/JSBSim-1.1.0.dev1-cp37-cp37m-manylinux1_x86_***.whl ``` The example above downloads and installs JSBSim for Python 3.7 on a Linux platform directly from the JSBSim GitHub project page. The package corresponding to your platform and Python version must be picked among all the available JSBSim wheel packages that are listed in the [Releases page](https://github.com/JSBSim-Team/jsbsim/releases/tag/Rolling-release-v2019). Note that wheel packages for Linux meet the [ManyLinux packages requirements](https://www.python.org/dev/peps/pep-0513) and as such are compatible with all the major Linux distributions. ### Other platforms At the moment, JSBSim do not provide binaries for platforms other than Windows *** bits and Ubuntu 16.04 *** bits. If you fall in this category you should follow the instructions in the [developer docs](doc/DevelopersDocs.md) to build JSBSim on your platform. ### Aircraft data and example scripts You can get aircraft data and example scripts by downloading either the [zip package](https://github.com/JSBSim-Team/jsbsim/archive/Release_Candidate_v1.0.0.zip) or the [tar.gz package](https://github.com/JSBSim-Team/jsbsim/archive/Release_Candidate_v1.0.0.tar.gz). ## Quick start Once you have downloaded (or built) the binaries and unzipped the [aircraft data](#aircraft-data-and-example-scripts). Go to the root of the data package and make sure the executable is accessible from there. You can then run an FDM simulation with the following command: ```bash > JSBSim.exe --script=scripts/c1721.xml ``` More options are available if you run: ```bash > JSBSim.exe --help ``` ## User documentation A first place to look at for JSBSim documentation resources is [http://jsbsim.sourceforge.net/documentation.html](http://jsbsim.sourceforge.net/documentation.html). This link points to the official [JSBSim Reference Manual](http://jsbsim.sourceforge.net/JSBSimReferenceManual.pdf), a PDF which is the best source of information for users and developers. However, due to the nature of the development of the project (JSBSim sources are updated often, sometimes even daily), several new features that are available in the software are not yet documented in the reference manual. Starting from March 2018 a new effort is underway to deliver an up-to-date documentation web site. You can browse the new *JSBSim Online Reference Manual* by going to: [https://jsbsim-team.github.io/jsbsim-reference-manual](https://jsbsim-team.github.io/jsbsim-reference-manual). The online manual is under construction and as a first milestone it will incorporate all the non-outdated material contained in the original PDF Reference Manual. The online manual web site is based on the GitHub Pages technology and its sources are available [here](https://github.com/JSBSim-Team/jsbsim-reference-manual). Eventually, the PDF Reference Manual will be superseded by the online manual, which is designed to be updated collaboratively as well as in efficient and timely fashion. ## Interfacing JSBSim with your application ### Using the C++ API JSBSim can be interfaced or integrated to your application via a C++ API. The following code illustrates how JSBSim could be called by a small program, with execution being controlled by a script: ```c++ #include