# Software In The Loop

In "software-in-loop" simulation (SITL or SIL) mode the firmware runs in your computer as opposed to separate board. This is generally fine except that now you are not touching any code paths that are specific to your device. Also, none of your code now runs with real time clock usually provided by specialized hardware board. For well designed flight controllers with software clock, these are usually not concerning issues.

Architecture

* Platforms
  * Several
  * * x86
* Flight Dynamics Model (FDM)
  * <https://github.com/tridge/jsbsim>

Projects

* Gazebo
* jMAVSim
* AirSim
* XPlane
* DroneKit SITL

## Hardware In The Loop

Hardware-in-Loop (HITL or HIL) means flight controller runs in actual hardware such as Naze32 or Pixhawk chip. You than connect this hardware to PC using USB port. Simulator talks to the device to retrieve actuator signals and send it simulated sensor data. This is obviously as close as you can get to real thing. However it typically requires more steps to set up and usually hard to debug. One big issue is that simulator clock and device clock runs on their own speed and accuracy. Also, USB connection (which is usually only USB 2.0) may not be enough for real time communication.
