# Simulation-In-Hardware (SIH)
This simulator is community supported and maintained. It may or may not work with current versions of PX4 (known to work in PX4 v1.14).
See Toolchain Installation for information about the environments and tools supported by the core development team.
Simulation-In-Hardware (SIH) is an alternative to Hardware In The Loop simulation (HITL) for quadrotors, fixed-wing vehicles (airplane), and VTOL tailsitters.
SIH can be used by new PX4 users to get familiar with PX4 and the different modes and features, and of course to learn to fly a vehicle using an RC controller in simulation, which is not possible using SITL.
With SIH the whole simulation is running on embedded hardware: the controller, the state estimator, and the simulator. The Desktop computer is only used to display the virtual vehicle.
- SIH is compatible with all Pixhawk-series boards except those based on FMUv2.
- SIH for quadrotor is supported from PX4 v1.9.
- SIH for fixed-wing (airplane) and VTOL tailsitter are supported from PX4 v1.13.
- SIH as SITL (without hardware) from PX4 v1.14.
SIH provides several benefits over HITL:
- It ensures synchronous timing by avoiding the bidirectional connection to the computer. As a result the user does not need such a powerful desktop computer.
- The whole simulation remains inside the PX4 environment. Developers who are familiar with PX4 can more easily incorporate their own mathematical model into the simulator. They can, for instance, modify the aerodynamic model, or noise level of the sensors, or even add a sensor to be simulated.
- The physical parameters representing the vehicle (such as mass, inertia, and maximum thrust force) can easily be modified from the SIH parameters.
To run the SIH, you will need a:
- Flight controller, such as a Pixhawk-series board
- Development computer for displaying the virtual vehicle.
- Manual controller: either a radio control system or a joystick.
From PX4 v1.14 you can run SIH "as SITL", in which case a flight controller is not required.
# Setting up SIH
To set up SIH
- Connect the flight controller to the desktop computer with a USB cable
- Open QGroundControl and wait for the flight controller too boot and connect.
- Open Vehicle Setup > Airframe then select the desired frame:
The autopilot will then reboot. Once restarted the
sih module is started, and the vehicle should be displayed on the ground control station map.
The airplane needs to takeoff in manual mode at full throttle. Also, if the airplane crashes the state estimator might lose its fix.
# Setting up the Display
To display the simulated vehicle:
Close QGroundControl (if open).
Unplug and replug the flight controller (allow a few seconds for it to boot).
Start jMAVSim by calling the script jmavsim_run.sh from a terminal:
./Tools/simulation/jmavsim/jmavsim_run.sh -q -d /dev/ttyACM0 -b 2000000 -o
where the flags are:
-qto allow the communication to QGroundControl (optional).
-dto start the serial device
/dev/ttyACM0on Linux. On macOS this would be
-bto set the serial baud rate to
-oto start jMAVSim in display Only mode (i.e. the physical engine is turned off and jMAVSim only displays the trajectory given by the SIH in real-time).
- add a flag
-ato display an aircraft or '-t' to display a tailsitter. If this flag is not present a quadrotor will be displayed by default.
After few seconds, QGroundControl can be opened again.
At this point, the system can be armed and flown. The vehicle can be observed moving in jMAVSim, and on the QGC Fly view.
# Running the SIH as SITL (without hardware)
SIH can be run as SITL (Software-In-The-Loop) from v1.14. What this means is that the simulation code is executed on the laptop/computer, similar to Gazebo or jMAVSim. In this case you don't need the flight controller hardware.
To run SIH as SITL:
Install the PX4 Development toolchain.
Run the appropriate make command for each vehicle type (at the root of the PX4-Autopilot repository):
make px4_sitl sihsim_quadx
make px4_sitl sihsim_airplane
XVert VTOL tailsitter:
make px4_sitl sihsim_xvert
SITL allows the simulation to be run faster than real time. To run the airplane simulation 10 times faster than real time, run the commandL
PX4_SIM_SPEED_FACTOR=10 make px4_sitl sihsim_airplane
# Dynamic Model
The dynamic models for the various vehicles are:
- Quadrotor: pdf report (opens new window).
- Fixed-wing: Inspired by the PhD thesis: "Dynamics modeling of agile fixed-wing unmanned aerial vehicles." Khan, Waqas, supervised by Nahon, Meyer, McGill University, PhD thesis, 2016.
- Tailsitter: Inspired by the master's thesis: "Modeling and control of a flying wing tailsitter unmanned aerial vehicle." Chiappinelli, Romain, supervised by Nahon, Meyer, McGill University, Masters thesis, 2018.
SIH was originally developed by Coriolis g Corporation. The airplane model and tailsitter models were added by Altitude R&D inc. Both are Canadian companies:
- Coriolis g (opens new window) develops a new type of Vertical Takeoff and Landing (VTOL) vehicles based on passive coupling systems;
- Altitude R&D (opens new window) is specialized in dynamics, control, and real-time simulation.
The simulator is released for free under BSD license.