# JSBSim Simulation

[JSBSim](http://jsbsim.sourceforge.net/index.html) is a open source flight simulator ("flight dynamics model (FDM)") that runs on Microsoft Windows, Apple Macintosh, Linux, IRIX, Cygwin (Unix on Windows), etc. Its features include: fully configurable aerodynamics and a propulsion system that can model complex flight dynamics of an aircraft. Rotational earth effects are also modeled into the dynamics.

**Supported Vehicles:** Plane, Quadrotor, Hexarotor

@[youtube](https://youtu.be/y5azVNmIVyw)

:::note See [Simulation](https://px4.gitbook.io/px4-user-guide/development/simulation) for general information about simulators, the simulation environment, and simulation configuration (e.g. supported vehicles). :::

## Installation (Ubuntu Linux)

:::note These instructions were tested on Ubuntu 18.04 :::

1. Install the usual [Development Environment on Ubuntu LTS / Debian Linux](https://px4.gitbook.io/px4-user-guide/development/getting_started/dev_env/dev_env_linux_ubuntu).
2. Install a JSBSim release from the [release page](https://github.com/JSBSim-Team/jsbsim/releases/tag/Linux):

   ```sh
   dpkg -i JSBSim-devel_1.1.0.dev1-<release-number>.bionic.amd64.deb
   ```
3. (Optional) FlightGear may (optionally) be used for visualisation. To install FlightGear, refer to the [FlightGear installation instructions](https://px4.gitbook.io/px4-user-guide/development/simulation/flightgear)).

## Running the Simulation

JSBSim SITL simulation can be conveniently run through a `make` command as shown below:

```sh
cd /path/to/PX4-Autopilot
make px4_sitl jsbsim
```

This will run both the PX4 SITL instance and the FlightGear UI (for visualization). If you want to run without the FlightGear UI, you can add `HEADLESS=1` to the front of the `make` command.

The supported vehicles and `make` commands are listed below (click on the links to see the vehicle images).

| Vehicle        | Command                            |
| -------------- | ---------------------------------- |
| Standard Plane | `make px4_sitl jsbsim_rascal`      |
| Quadrotor      | `make px4_sitl jsbsim_quadrotor_x` |
| Hexarotor      | `make px4_sitl jsbsim_hexarotor_x` |

The commands above launch a single vehicle with the full UI. *QGroundControl* should be able to automatically connect to the simulated vehicle.

## Running JSBSim with ROS

To run JSBSim with ROS:

1. Clone the `px4-jsbsim-bridge` package into your catkin workspace:

   ```
   cd <path_to_catkin_ws>/src
   git clone https://github.com/Auterion/px4-jsbsim-bridge.git
   ```
2. Build the `jsbsim_bridge` catkin package:

   ```
   catkin build jsbsim_bridge
   ```

   :::note You must have already set MAVROS in your workspace (if not, follow the instructions in the [MAVROS installation guide](https://px4.gitbook.io/px4-user-guide/robotics/ros/ros1/mavros_installation)). :::
3. So start JSBSim through ROS using the launch file as shown:

   ```
   roslaunch jsbsim_bridge px4_jsbsim_bridge.launch
   ```

## Further Information

* [px4-jsbsim-bridge readme](https://github.com/Auterion/px4-jsbsim-bridge)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://px4.gitbook.io/px4-user-guide/development/simulation/jsbsim.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
