All Projects → JSBSim-Team → Jsbsim

JSBSim-Team / Jsbsim

Licence: lgpl-2.1
An open source flight dynamics & control software library

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Jsbsim

Inet
INET Framework for the OMNeT++ discrete event simulator
Stars: ✭ 268 (-14.92%)
Mutual labels:  simulation
Openttd
OpenTTD is an open source simulation game based upon Transport Tycoon Deluxe
Stars: ✭ 3,765 (+1095.24%)
Mutual labels:  simulation
Liquidsimulator
Cellular Automaton 2D Liquid Simulator for Unity
Stars: ✭ 302 (-4.13%)
Mutual labels:  simulation
Data Describe
data⎰describe: Pythonic EDA Accelerator for Data Science
Stars: ✭ 269 (-14.6%)
Mutual labels:  pypi
Edalize
An abstraction library for interfacing EDA tools
Stars: ✭ 270 (-14.29%)
Mutual labels:  simulation
Pulsar
Protocol Learning and Stateful Fuzzing
Stars: ✭ 285 (-9.52%)
Mutual labels:  simulation
Exandroidnativeemu
An improved version of AndroidNativeEmu,Allow running android elf on PC
Stars: ✭ 264 (-16.19%)
Mutual labels:  simulation
Gh Action Pypi Publish
GitHub Action, for publishing distribution files to PyPI
Stars: ✭ 317 (+0.63%)
Mutual labels:  pypi
Underscore.py
Python port of underscore.js
Stars: ✭ 277 (-12.06%)
Mutual labels:  pypi
Termplotlib
Plotting on the command line
Stars: ✭ 294 (-6.67%)
Mutual labels:  pypi
Py webauthn
A WebAuthn Python module.
Stars: ✭ 270 (-14.29%)
Mutual labels:  pypi
Starcli
✨ Browse GitHub trending projects from your command line
Stars: ✭ 269 (-14.6%)
Mutual labels:  pypi
Finmath Lib
Mathematical Finance Library: Algorithms and methodologies related to mathematical finance.
Stars: ✭ 293 (-6.98%)
Mutual labels:  simulation
Facet
Human-explainable AI.
Stars: ✭ 269 (-14.6%)
Mutual labels:  simulation
Stuntrally
The main repository containing Stunt Rally sources and game data. A 3D racing game based on VDrift and OGRE with track editor.
Stars: ✭ 314 (-0.32%)
Mutual labels:  simulation
Gprmax
gprMax is open source software that simulates electromagnetic wave propagation using the Finite-Difference Time-Domain (FDTD) method for numerical modelling of Ground Penetrating Radar (GPR)
Stars: ✭ 268 (-14.92%)
Mutual labels:  simulation
Simpeg
Simulation and Parameter Estimation in Geophysics - A python package for simulation and gradient based parameter estimation in the context of geophysical applications.
Stars: ✭ 283 (-10.16%)
Mutual labels:  simulation
Matsim Libs
Multi-Agent Transport Simulation
Stars: ✭ 318 (+0.95%)
Mutual labels:  simulation
Confused
Tool to check for dependency confusion vulnerabilities in multiple package management systems
Stars: ✭ 314 (-0.32%)
Mutual labels:  pypi
Pypinfo
Easily view PyPI download statistics via Google's BigQuery.
Stars: ✭ 295 (-6.35%)
Mutual labels:  pypi

C/C++ build PyPI Conda (channel only)

User Guide | Developer Docs | FAQ | Contact | 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 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.
  • Accurate Earth model including:
  • Configurable data output formats to screen, file, socket, or any combination of those.
  • A Python module which provides the exact same features than the C++ library

In 2015, the 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:

JSBSim is also used in academic and industry research (more than 600 citations referenced by Google Scholar as of November 2020).

User Guide

Installation | Quick Start | User Docs | Interfacing JSBSim with your app

Installation

Windows

A Windows installer JSBSim-1.1.5-setup.exe is available in the release section. It installs the 2 executables along with aircraft data and some example scripts:

  • JSBSim.exe which runs FDM simulations.
  • aeromatic.exe which builds aircraft definitions from Question/Answer interface

Both executables are console line command.

Ubuntu Linux

Debian packages for Ubuntu Linux "Xenial" 16.04 LTS, "Bionic" 18.04 LTS and "Focal" 20.04 LTS for 64 bits platform are also available in the JSBSim project release section. There are 3 packages:

  • JSBSim_1.1.5-277.amd64.deb which installs the executables JSBSim and aeromatic
  • JSBSim-devel_1.1.5-277.amd64.deb which installs the development resources (headers and libraries)
  • python3-JSBSim_1.1.5-277.amd64.deb which installs the Python 3.6 module of JSBSim

Python module

JSBSim provides binary packages for its Python module on Windows, Mac OSX and Linux platforms for several Python versions (3.6, 3.7, 3.8 and 3.9). These can be installed using either pip or conda.

Installation with pip

Binary packages a.k.a. known as 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 ManyLinux packages requirements and as such are compatible with all the major 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 do not provide binaries for platforms other than Windows 64 bits and Ubuntu 64 bits. If you fall in this category you should follow the instructions in the developer docs 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 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 package and make sure the executable is accessible from there.

You can then run an FDM simulation with the following command:

> JSBSim.exe --script=scripts/c1721.xml

More options are available if you run:

> JSBSim.exe --help

User documentation

A first place to look at for JSBSim documentation resources is http://jsbsim.sourceforge.net/documentation.html. This link points to the official JSBSim Reference Manual, 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. 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. 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:

#include <FGFDMExec.h>

int main(int argc, char **argv)
{
  JSBSim::FGFDMExec FDMExec;
  FDMExec.LoadScript(SGPath(argv[1]));
  FDMExec.RunIC();
  bool result = true;
  while (result) result = FDMExec.Run();
}

The API is described in more details in the C++ API documentation

Using the Python module

JSBSim can also be used as a Python module. The following code provides a simple example of how to interface with JSBSim using the Python programming language:

import jsbsim

fdm = jsbsim.FGFDMExec('.', None)
fdm.load_script('scripts/c1721.xml')
fdm.run_ic()

while fdm.run():
  pass

A more elaborate example is JSBSim.py, the Python version of JSBSim.exe.

Frequently Asked Questions

How can I interface JSBSim with FlightGear ?

Q: I would like to visualize the aircraft model in FlightGear while running the FDM with the JSBSim executable. How do I proceed ?

A: We are assuming that FlightGear is installed on your platform. If it is not, please follow the instructions on the FlightGear website.

You will need to launch separately FlightGear and JSBSim from a console. In the example below, you will execute the script ShortS23_2.xml so you might need to install the Short Empire aircraft. This is optional however and any aircraft can be used for visualization even if it does not correspond to the FDM.

First, run FlightGear and tell it that the flight dynamics will be provided thru a socket by an external program. It is assumed that the executable of FlightGear is fgfs (see the FlightGear docs for details on the parameters of --native-fdm argument).

> fgfs --fdm=null --native-fdm=socket,in,60,,5550,udp --aircraft=Short_Empire --airport=SP01

Once FlightGear is launched, you will see the aircraft standing still.

FlightGear is launched

Now we will run JSBSim and tell it that it must send the flight dynamics data to a socket with the FlightGear protocol

> JSBSim scripts/Short_S23_2.xml data_output/flightgear.xml --realtime --nice

The parameters describing the protocol are detailed in data_output/flightgear.xml. The flag --realtime requests JSBSim to execute in real time. Otherwise JSBSim will run as fast as it can and the flight will look like it is played fast forward. The flag --nice tells JSBSim to use as few CPU power as possible. This is an optional flag but since we requested --realtime, JSBSim will spend a considerable amount of time idling, waiting for the next time step.

At the this stage, the two executables are interacting and FlightGear produces the visualization of the flight dynamics simulated by JSBSim.

FlightGear/JSBSim interface running

Contact

For more information on JSBSim, you can contact the development team on the mailing list [email protected] or submit tickets on https://github.com/JSBSim-Team/jsbsim/issues

We are also on Facebook: https://www.facebook.com/jsbsim/

Legal Notice

JSBSim is open source and is licensed under the LGPL 2.1 license. The license is included in the source code in the file COPYING

No proprietary code is included. All code included within JSBSim has been developed on a volunteer basis using publicly available information, and is often directly linked to a particular textbook, for educational reference. In some cases, code of a generic nature has been donated back to the project.

Likewise, the aircraft models included in this project and distribution do not include any proprietary, sensitive, or classified data. All data is derived from textbooks (such as Stevens and Lewis "Aircraft Control and Simulation" and Sutton's "Rocket Propulsion Elements"), freely available technical reports (see: http://ntrs.nasa.gov and http://www.aiaa.org), or other public data (such as the FAA web site). Aircraft models included in the JSBSim distribution and with names corresponding to existing commercial or military aircraft are approximations crafted using publicly available information, and are for educational or entertainment uses only.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].