JSBSim was conceived in 1996 as a lightweight, data-driven, non-linear, six degree-of-freedom, batch simulation application aimed at modeling flight dynamics and control for aircraft. Since the earliest versions, JSBSim has benefited from the open sourcedevelopment environment it has grown within, and the wide variety of users that have contributed ideas for its continued improvement. It has been incorporated into larger, full-featured, flight simulation applications and architectures, and has been used as a batch simulation tool in industry and academia. As an example of ease of use, the following code illustrates how JSBSim could be called by a small program, with execution being controlled by a script:
include
int main
The above application works when built with the JSBSim library, and it only needs to be supplied with an aircraft configuration file, an initial conditions file, and a script file that controls execution. All of these files are defined using XML. JSBSim is perhaps the first flight dynamics model to employ XML to describe an aircraft for simulation. An example of an aerodynamic definition is shown below: aero/qbar-area
When running JSBSim in a standalone mode using the basic driver program, one only needs to supply a script name. Control inputs can be supplied to JSBSim from within the script. If the aircraft configuration file contains an input port specification, the user can also telnet into JSBSim. From within the telnet interface, values of many parameters internal to JSBSim can be both read and set. The simulation itself can also be paused and resumed. The telnet feature, of course, is most valuable for running JSBSim in real-time. The sample standalone application included with the JSBSim distribution supports running in soft real-time. JSBSim can be directed to output logically grouped sets of data to the console, to a file, or to a socket. Output can simultaneously be directed out through any number of channels, where each channel can contain any set of data or single specific parameter, can be directed towards any file or socket, and can be output at any rate. A utility included with JSBSim takes the whole data file output by JSBSim and creates a complete set of plots in PDF format, using the open source plotting tool, gnuplot.
JSBSim allows a flight control system or autopilot to be constructed from individual components. The suite now includes: filters, conditional switch, summer, sensor, and gain components. Additionally, there is a function component that can be defined by the user. A sample flight control systemblock diagram is seen below in the flight control system editor for the separate open source project, JSBSim Commander.
Aerodynamics Modeling
JSBSim uses a coefficient build-up method for modeling the aerodynamic characteristics of aircraft. Any number of forces and moments can be defined for each of the axes. Each force/moment specification includes a definition comment, and a specification of the function that calculates the force or moment. The function definition can be a simple value, or a complicated function that includes trigonometric and logarithmic functions, and a one-, two-, or three-dimensional table lookup.
Propulsion Modeling
JSBSim includes generic piston/propeller, rocket/nozzle, turbine, and turboprop models. The models are not detailed engineering models, but they allow engines to be added easily. Any number of engines can be added to an aircraft model, at any location and orientation, and different engine types can be mixed.
Equations of Motion
JSBSim is a full, six degree-of-freedom flight dynamics model. It provides the capability to specify initial conditions, and to trim the aircraft in several ways prior to startup. Specific integrators can be chosen for propagating each of the translational and rotational velocities and positions. Currently, 3rd order Adams-Bashforth is the default.
Extensibility
JSBSim is designed to be extensible. The key objects are implemented as base classes with a simple interface. Specific, new engines can be modeled by creating new classes derived from the base classes. New flight control components can be created in the same manner.
Notable uses
JSBSim is the default flight model used with the FlightGear open source simulator. Along with FlightGear, JSBSim is used to drive the motion base simulator at the University of Naples in Italy. JSBSim is included as a driving application for the OpenEaagles simulation environment. JSBSim has been used to model the flight of rockets. It has been used to model the flight of UAVs—including the ARES vehicle designed to fly in the Martian atmosphere. It has been used as part of an air traffic control study. JSBSim has been used together with MATLAB and Simulink, has been compiled as a DLL, and has been ported to C#. The C# port is out of date and is no longer publicly available.
Future plans
Development continues on JSBSim itself. Additional tools that work with JSBSim are also emerging. A freely available tool called DATCOM+ outputs an aerodynamic specification directly in JSBSim-ML format. JSBSim Commander is under development as an editor for creating and modifying JSBSim models.