JSBSim Flight Dynamics Model 1.0 (23 February 2013)
An Open Source Flight Dynamics and Control Software Library in C++


An Open Source, Object-Oriented, Cross-Platform Flight Dynamics Model in C++


JSBSim is an open source, multi-platform, object-oriented flight dynamics model (FDM) framework written in the C++ programming language. It is designed to support simulation modeling of any aerospace craft without the need for specific compiled and linked program code, instead relying on a versatile and powerful specification written in an XML format. The format is formally known as JSBSim-ML (JSBSim Markup Language).

JSBSim (www.jsbsim.org) was created initially for the open source FlightGear flight simulator (www.flightgear.org). JSBSim maintains the ability to run as a standalone executable in soft real-time, or batch mode. This is useful for running tests or sets of tests automatically using the internal scripting capability.

JSBSim does not model specific aircraft in program code. The aircraft itself is defined in a file written in an XML-based format where the aircraft mass and geometric properties are specified. Additional statements define such characteristics as:

  • Landing gear location and properties.
  • Pilot eyepoint
  • Additional point masses (passengers, cargo, etc.)
  • Propulsion system (engines, fuel tanks, and "thrusters")
  • Flight control system
  • Autopilot
  • Aerodynamic stability derivatives and coefficients

The configuration file format is set up to be easily comprehensible, for instance featuring textbook-like coefficients, which enables newcomers to become immediately fluent in describing vehicles, and requiring only prior basic theoretical aero knowledge.

One of the more unique features of JSBSim is its method of modeling aircraft systems such as a flight control system, autopilot, electrical, etc. These are modeled by assembling strings of components that represent filters, switches, summers, gains, sensors, and so on.

Another unique feature is displayed in the use of "properties". Properties essentially expose chosen variables as nodes in a tree, in a directory-like hierarchy. This approach facilitates plugging in different FDMs (Flight Dynamics Model) into FlightGear, but it also is a fundamental tool in allowing a wide range of aircraft to be modeled, each having its own unique control system, aerosurfaces, and flight deck instrument panel. The use of properties allows all these items for a craft to be modeled and integrated without the need for specific and unique program source code.

The equations of motion are modeled essentially as they are presented in aerospace textbooks for the benefit of student users, but quaternions are used to track orientation, avoiding "gimbal lock". JSBSim can model the atmospheric flight of an aircraft, or the motion of a spacecraft in orbit. Coriolis and centripetal accelerations are incorporated into the EOM.

JSBSim can output (log) data in a configurable way. Sets of data that are logically related can be selected to be output at a chosen rate, and individual properties can be selected for output. The output can be streamed to the console, and/or to a file (or files), and/or can be transmitted through a socket or sockets, or any combination of the aforementioned methods.

JSBSim has been used in a variety of ways:

  • For developing control laws for a sounding rocket
  • For crafting an aircraft autopilot as part of a thesis project
  • As a flight model for FlightGear
  • As an FDM that drives motion base simulators for some commercial/entertainment simulators


JSBSim has been built on the following platforms:

  • Linux (x86)
  • Windows (MSVC, Cygwin, Mingwin)
  • SGI (native compilers)
  • Mac OS X
  • FreeBSD


JSBSim has no external dependencies at present. No code is autogenerated.


JSBSim is licensed under the terms of the Lesser GPL (LGPL)


For more information, see the JSBSim web site: www.jsbsim.org.