Main Content

Setting Up the Controller Model and QGroundControl for Running in Hardware-in-the-Loop (HITL) Mode with jMAVSim Simulator

The UAV Toolbox Support Package for PX4® Autopilots provides the option to deploy the controller on the PX4 Autopilot and verify the algorithm by running Hardware-in-the-Loop (HITL) simulation. The workflow is based on Hardware in the Loop Simulation (HITL).


The UAV Toolbox Support Package for PX4 Autopilots supports enabling Hardware-in-the-loop (HITL) simulation mode in which the Simulink generated code integrated with PX4 firmware is run on real flight controller hardware. This feature helps you in testing most of the actual flight code on the real hardware.

Setting up HITL Workflow for jMAVsim

Perform these steps, which are a part of the Hardware Setup process in the UAV Toolbox Support Package for PX4 Autopilots, to enable the PX4 Autopilot for HITL simulation.

  1. In the Select a PX4 Autopilot and Build Target Hardware Setup screen, select any Pixhawk Series board as the Hardware board. For example, PX4 Pixhawk 1. Click Next.


    This feature supports only Pixhawk Series board and does not support PX4 Host Target.

  2. In the Select System Startup Script in PX4 Hardware Setup screen, select Use default startup script(rcS) and click Next.

  3. In the Download QGroundControl Hardware Setup screen, download and install QGC. After installation, click Verify Installation and then click Next

  4. Proceed with the subsequent steps in the Hardware Setup process to build the firmware and verify that the build is successful.

Prepare PX4 Controller Model in Simulink

After completing the Hardware setup process, prepare the flight controller algorithm using the Simulink blocks available in the UAV Toolbox Support Package for PX4 Autopilots.

  1. In the Modeling tab, click Model Settings.

  2. In the Configuration Parameters dialog box, choose any Pixhawk Series board.

  3. Click HITL and then select Enable HITL Mode. Enabling HITL mode ensures that the jMAVSim simulator is automatically configured and launched to run along with the Simulink model.

  4. Click External mode and select /dev/ttyS6 as the Hardware board serial port.


    If you select PX4 Pixhawk 1 hardware board, then configure /dev/ttyS6 tab. If you select any other Pixhawk Series board, configure the appropriate /dev/tty tab.

    For more information, see Using External Mode over FTDI with Pixhawk 1.

  5. Clear the Use the same host serial port for External mode as used for firmware upload option.

  6. In the Host Serial port parameter, enter the host serial port number on the host computer for External mode communication.

  7. Click MAVLink and ensure that Enable MAVLink on /dev/ttyACM0 option is selected.

  8. Click /dev/ttyS6 and set the Baud rate to 115200. Do not change any other parameters.

  9. Click Apply and then click OK.

Setting Up QGC

Perform these steps to configure and setup QGroundControl (QGC).

  1. Upload PX4 v1.10.2 released firmware to the Pixhawk autopilot. Ensure that the cmake file is not modified to exclude PX4 controllers and the custom rc.txt is not present. To download firmware for your PX4 board go to PX4 Firmware. For example, download px4_fmu-v2_default.px4 for Pixhawk 1 board.


    The PX4 firmware version supported for R2021b is PX4 v1.10.2. However as v1.10.2 firmware image is not available for download in PX4 repository, use v1.10.1 for the setup process.

  2. In the QGC, navigate to Vehicle Setup > Firmware. Select Advanced settings and choose Custom firmware file from the drop-down list. In Firmware Setup option, click Ok and Continue with the onscreen instructions to install the firmware.

    QGC Firmware

  3. Connect the autopilot to QGC via USB.

  4. Enable HITL mode.

    1. Navigate to Setup > Safety section.

    2. Select Enabled from the HITL Enabled list.

  5. Select Airframe.

    1. Navigate to Setup > Airframes.

    2. Select HIL QuadCopter and then click Apply and Restart on top-right of the Airframe Setup page.

  6. Setup UDP.

    1. In the General tab of the settings menu, clear all AutoConnect options except UDP.


      This selection is done only for HITL mode. Later, if you want to connect to a non HITL hardware, return to this settings menu and select Pixhawk option also.

  7. Select Virtual Joystick.

    1. In the General tab, from Fly View of the settings menu, select Virtual Joystick option.

  8. Configure Joystick and Failsafe. Set the following parameters to use a joystick instead of an RC remote control transmitter:

    • COM_RC_IN_MODE to Joystick/No RC Checks. This allows joystick input and disables RC input checks.

    • NAV_RCL_ACT to Disabled. This ensures that no RC failsafe actions interfere when not running HITL with a radio control.

  9. Ensure there are no warnings in the Vehicle Settings tab of QGC. Only the Power tab can be in red (with warning). If you see warnings for the Flight Modes tab, set it up by picking a mode for each of the channels. Sometimes, the Sensor Calibration tab can be in red. You can go ahead with it.


    Ensure that SD card is inserted in the hardware for the mission upload from QGC to work.

  10. Close the QGC.

See Also