A Survey of Open-Source UAV Flight Controllers and Flight Simulators
, Martin Skriver, Kristian Husum Terkildsen, Kjeld Jensen, Ulrik Pagh Schultz
SDU UAS Center, University of Southern Denmark,
Campusvej 55, Odense, Denmark
The current disruptive innovation in civilian drone (UAV) applications has led to an increased need for research and development
in UAV technology. The key challenges currently being addressed are related to UAV platform properties such as functionality,
reliability, fault tolerance, and endurance, which all are tightly linked to the UAV ﬂight controller hardware and software. The
lack of standardization of ﬂight controller architectures and the use of proprietary closed-source ﬂight controllers on many UAV
platforms however complicates this work: solutions developed for one ﬂight controller may be difﬁcult to port to another without
substantial extra development and testing. Using open-source ﬂight controllers mitigates some of these challenges and enables
other researchers to validate and build upon existing research.
This paper presents a survey of the publicly available open-source drone platform elements that can be used for research and
development. The survey covers open-source hardware, software, and simulation drone platforms and compares their main features.
Keywords: Unmanned Aerial Vehicle (UAV), Drones, Flight Controllers, Drone Simulators, Open Platforms, Survey.
The current disruptive innovation in civilian drone
(Unmanned Aerial Vehicle, UAV) applications and the
associated growth in the drone industry has led to an increased
need for research and development in UAV technology. While5
applications such as aerial ﬁlming, mapping and inspection
can be accomplished within the current legal framework and
using technology already available on the market, the industry
is pushing to break down the barriers which will enable
entirely new markets in logistics, e-commerce, surveillance10
etc. Examples of these barriers are Beyond Visual Line
of Sight (BVLOS) ﬂights, which by many stakeholders is
considered to be the next game-changer in the UAV business,
autonomous operations not supervised by a pilot, and long
range ﬂights using small UAVs. Industry and academia are15
collaborating on solving the associated challenges, which
are related to UAV platform properties such as functionality,
reliability, fault tolerance, and endurance, which all are tightly
linked to the UAV ﬂight controller hardware and software.
The lack of standardization of ﬂight controller architectures20
and the use of proprietary closed-source ﬂight controllers
on many UAV platforms however complicates this work, as
solutions developed for one ﬂight controller may be difﬁcult
to port to another without substantial extra development and
testing if at all legally possible. Using open-source ﬂight25
controllers mitigates some of these challenges and enables
other researchers to validate and build upon existing research.
Email address: firstname.lastname@example.org (Emad Ebeid)
In this work we present a survey on open-source ﬂight con-
trollers designed for UAVs. The survey is based on 20+ ﬂight
controllers public available on the web. We relate ﬂight con-30
troller hardware (Section 2) to ﬂight controller software (Sec-
tion 3) and compare features, speciﬁcations, license types etc.
of each controller and software. Simulation is often used for
software functionality experiments tests before performing ac-
tual ﬂight tests, especially in ﬂight controller research and de-35
velopment which can minimize the risk of loss of control dur-
ing test ﬂights and save time. We include a survey of open-
source simulation systems (Section 4), some of which support
hardware-in-the-loop or software-in-the-loop simulation. Cur-
rently UAVs are under constant and rapid technological devel-40
opment, and the reader should note that the information de-
scribed in this paper is as of February 2018.
1.1. Related work
In 2010 Cao et al. presented a survey of autopilot systems
for small or micro UAVs systems with the objective of provid-45
ing a summary of the available commercial, open-source and re-
search autopilot systems in the market at that moment for poten-
tial users of small UAV . In 2011 M´
os surveyed open-
source hardware and software for ﬁxed-wing UAV platforms,
including a design of a small ﬁxed-wing UAV based on one of50
the presented systems with its ﬁrst ﬁeld test . In 2012 Lim et
al. surveyed public available open-source projects for quadrotor
UAV systems, presenting eight quadrotors with descriptions of
their avionics, sensor composition, analysis of attitude estima-
tion and control algorithms, and comparison of their additional55
features . In 2016 Sabikan and Nawawi presented a general
view of the implementation of an open-source quadcopter plat-
form to develop a quadcopter research testbed , with the aim
Preprint submitted to Journal of Microprocessors and Microsystems: Embedded Hardware Design February 20, 2018
of making the proposed platform expendable and usable in any
application area; they brieﬂy mention a couple of open-source60
ﬂight controller platforms, of which one of them has been used
in their work
1.2. Unmanned Aerial Vehicles
For an introduction to the basics of UAV systems we refer
the interested reader to the textbook by Fahlstrom and Glea-65
son . We however note that compared to control systems
for other advanced autonomous systems such as robotics, the
control of UAVs presents two unique challenges. First, UAVs
have severe constraints in terms of Size, Weight, and Power
(SWaP)  not found to the same extent in robotics in gen-70
eral. Second, UAV control systems are in practice almost al-
ways safety-critical systems due to the primary purpose of the
UAV being operation in open-ended environments where hu-
mans may be present .
In addition, each UAV platform comes with a license for75
governing the use or redistribution. We refer to the reader to
the article by Christopher Vendome  for its coverage of the
software license (e.g., Berkeley Software Distribution (BSD),
The GNU General Public License (GPL), Massachusetts Insti-
tute of Technology (MIT), etc.).80
The information presented in this paper is to a large extent
based on public available information from the web pages of the
corresponding open-source projects developing the software.
This includes manual inspection of schematics and source code85
by the authors in many cases. This approach however implies
that missing information about the presence of a speciﬁc fea-
ture in a speciﬁc artifact is a threat to our validity. Manually
experimenting with all of the documented projects was how-
ever deemed untractable.90
2. Open-Source Hardware Platforms
This section explores different Open-Source Hardware
(OSH) platforms and summarizes their features. For OSH
platforms, the hardware design such as mechanical drawings,
schematics, bills of materials, Printed Circuit Board (PCB)95
layouts, Hardware Description Language (HDL) source
code and integrated circuit layout data are all released under
free/libre terms .
Table 1 shows a comparison of the OSH ﬂight controller100
platforms in terms of the MCU, built-in sensors, license, and
interfaces; Table 2 compares the platforms in terms of dimen-
sions, weight, power consumption, and fault tolerance features.
With the exception of APM, all platforms use 32-bit MCUs
based on the ARM architecture (ignoring discontinued plat-105
forms). All platforms have IMUs and support UART, PWM,
and I2C interfaces. There is signiﬁcant variation in the inter-
faces supported and the physical dimensions. Only a few plat-
forms from the Pixhawk series of platforms support fault toler-
Table 1: Comparison of MCUs, sensors and licenses for OSH ﬂight controller
platforms. Sensors: all platforms have IMUs. Interfaces: all platforms support
UART, PWM and I2C.
Platform MCU Sensors License Interfaces
Pixhawk  STM32F427 b, m BSD c, s, a, pp, sb, ds
Pixhawk 2  STM32F427 b, m CC-BYSA-3.0 c, s, a, pp, sb, ds
PixRacer  STM32F427 b, m CC-BY 4.0 c, pp, sb, ds
Pixhawk 3 Pro  STM32F427 b, m CC BY 4.0 c, s, pp, sb, ds
PX4 FMUv5 and v6  STM32F427 b, m CC BY 4.0 c, s, a, pp, sb, ds
Sparky2  STM32F405 b, m CC BY-NC-SA 4.0 c, pp, sb, ds, da
Chimera  STM32F767 b, m, p GPLv2 c, s, a, da, pp, sb, ds, x, au
CC3D  STM32F103 None GPLv3 pp, ds, sb
Atom  STM32F103 None GPLv3 pp, ds, sb
APM 2.8  ATmega2560 b GPLv3 pp, a
FlyMaple  STM32F103 b, m GPLv3 None
Erle-Brain 3  Raspberry Pi b, m CC BY-NC-SA a
PXFmini  Raspberry Pi b, m CC BY-NC-SA a
AeroQuad[d] STM32F407 b, m GPLv2 -
Mikrokopter[d] ATmega644 b - s, pp
MatrixPilot[d] dsPIC33FJ256 None GPLv3 None
b: barometer, m: magnetometer, p: pitot tube sensor, c: CAN, s: SPI, a: ADC, pp: PPM,
sb: S.BUS, ds: DSM, da: DAC, x: XBEE, au: AUX, [d]: discontinued.
Table 2: Comparison between OSH ﬂight controller platforms.
Platform Dimensions (mm) Weight (g) Fault tolerance features
Pixhawk  81.5x50x15.5 38 c, IMU
Pixhawk 2  38.5x38.5x23 39 trp
PixRacer  36x36* 10.9 c, trp, tri
Pixhawk 3 Pro  71x49x23 45 i
PX4 FMUv5 and v6  71x49x23 45 -
Sparky2  36x36* 13.5 None
Chimera  89x60* ? tsp
CC3D  36x36* 8 None
Atom  15x7* 4 None
APM 2.8  70.5x45x13.5 31 None
FlyMaple  50x50x12 15 None
Erle-Brain 3  95x70x23.8 100 None
PXFmini  31x73* 15 None
AeroQuad [d] - - None
Mikrokopter [d] - - None
MatrixPilot [d] - - None
*: Board without enclosure. Height is the height of the PCB components.
c: co-processor, trp: triple-redundant power supply, tri: triple-redundant IMU, i: IMU,
tsp: twin switching power supply, [d]: discontinued.
2.2. Pixhawk series
The Pixhawk ﬂight controller started at the Computer
Vision and Geometry Lab of ETH Zurich, before becoming an
independent OSH platform project . Pixhawk collaborates
with several partners, including the Linux Foundation115
DroneCode project . It is based on the PX4-Flight
Management Unit (FMU) and multiple versions have been
2.2.1. Pixhawk Autopilot
The original Pixhawk combines the PX4 FMUv2 with the120
PX4 IOv2 IO board. It runs on an STM32F427 processor with
an STM32F103 failsafe co-processor and has 256 KB RAM. A
binary-compatible derivative called Pixfalcon has also been de-
veloped. It is a more lightweight, FPV optimized version with
less IOs. Figure 1a shows the Pixhawk along with its derivative125
shown in Figure 1b.
(a) PIXHAWK (b) Pixfalcon (c) Pixhawk 2
(d) PIXHAWK mini (e) PixRacer (f) PIXHAWK 3 Pro
Figure 1: Autopilot ﬂight controllers
2.2.2. Pixhawk 2 Autopilot
The Pixhawk 2 was originally designed for the quadcopter
3DR Solo, while a standalone version was later released. It is
built on the PX4 FMUv3 and designed by the Pixhawk com-130
munity in colaboration with 3D Robotics. The form factor has
changed into a cube, which features triple redundant IMUs, two
barometers and the ability to connect up to three GNSS mod-
ules. The cube connects to a carrier board through a single
DF17 connector. The standard carrier board provides several135
IOs, similar to the original Pixhawk mentioned above. In addi-
tion, a version of the carrier board is available which has an in-
terface for the Intel Edison, which is meant to run as a compan-
ion computer. Other companion computers can be connected
through the IOs. A derivative of the Pixhawk 2, called Pixhawk140
Mini has been made, which is an evolution of the Pixfalcon.
Figure 1c shows the Pixhawk 2 and the Pixhawk Mini is seen
on Figure 1d.
2.2.3. PixRacer Autopilot and Pixhawk 3 Pro
The PixRacer is built on the PX4 FMUv4 and is designed145
for racing UAVs. It has built-in wiﬁ, which enables wireless
ﬁrmware updating, system setup and telemetry. The PixRacer
was evolved into the Pixhawk 3 Pro, which has received an up-
grade of processors and sensors for better performance. Fig-
ure 1e shows the PixRacer and the Pixhawk 3 Pro is shown on150
2.2.4. PX4 FMUv5 and v6
With more than 390 contributors, the PX4 hardware has
evolved to FMUv5 at the end of 2017. For PX4 FMUv5, the
processor is updated to STM32F7 with double-precision ﬂoat-155
ing point unit (FPU) and higher accuracy attitude calculations
based on the Bosch BMI055 IMU. In addition, Dronecode has
announced that the PX4 FMUv6 will be released in 2018 with
an upgrade of the main processor to the STM32H7.
The Sparky2 is an OSH platform from TauLabs . It
is based on the STM32F405 Microcontroller Unit (MCU) and
published under the CC BY-NC-SA 4.0 license. Figure 2 shows
the Sparky2 ﬂight controller.
Figure 2: The Sparky2 ﬂight controller from TauLabs.
Paparazzi is an OSH UAV platform which was founded in
2003. Paparazzi is developed at Ecole Nationale de l’Aviation
Civil (ENAC) UAV Lab . It encompasses autopilot systems
and ground station software for multi-rotors, ﬁxed-wing, heli-
copters and hybrid aircraft . In March 2017, ENAC Lab170
released a new autopilot named Chimera which is based on the
latest STM32F7 MCU. Figure 3 shows the Paparazzi Chimera
Figure 3: The STM-based Paparazzi Chimera ﬂight controller
2.5. CC3D & Atom
The CC3D and Atom ﬂight controllers have the same func-175
tionality, but differ in form factor. They are developed by Li-
brePilot, previously known as OpenPilot. They run the LibrePi-
lot ﬁrmware, which is further discussed in Section 3.3.1. The
ﬂight controllers supports multiple airframes, and their hard-
ware is available under the GPLv3 license. Figure 4 shows the180
CC3D and Atom ﬂight controllers.
Figure 4: Flight controller boards: (a) CC3D (b) Atom.
2.6. ArduPilot Mega (APM)
The APM is an Arduino Mega-based autopilot, which has
been developed by the DIY Drones community. APM runs the
ArduPilot software, which is described in Section 3.4 and sup-185
ports multiple vehicles. Figure 5 shows the ArduPilot Mega
Figure 5: ArduPilot Mega (APM) 2.8 autopilot.
FlyMaple is a ﬂightcontroller which is based on the Maple
project. FlyMaple is based on an Arduino style APM processor.190
Figure 6 shows Flymaple ﬂight controller board.
Figure 6: FlyMaple ﬂight controller board
2.8. Erle-Brain 3
The Erle-Brain is a Linux-based ﬂight controller developed
by Erle Robotics located in Spain. Erle-Brain combines an
embedded Linux board (a Raspberry Pi), with a PXFmini195
board, which contains sensors, IO and power electronics.
The PXFmini is an open hardware shield designed for the
Raspberry Pi. The Erle-Brain builds on the DroneCode
foundation (see Section 3.5). Figure 7 shows the Erle-Brain 3
autopilot and its accessory parts.200
Figure 7: Erle-Brain autopilot: (a) Erle-Brain 3 (b) PXFmini on top of a Rasp-
2.9. Inactive OSH projects
AeroQuad was an Arduino-based platform, which was dis-
continued in 2015. However, the software is still available .
Mikrokopter v2.5 is based on the ATmega1284P-AU MCU.
The schematics are availabe at . The v3.0 is focusing on re-205
dundant systems. However, at the time of writing, the schemat-
ics are not open-source. MatrixPilot was designed for ﬁxed-
wing UAV and controlled by the UAV Development Board v3
from Sparkfun. The board has since been discontinued.
3. Open-Source Software Platforms210
This section explores selected Open-Source Soft-
ware (OSS) ﬂight controllers. We observe that a signiﬁcant
number of projects have been discontinued (detailed in
Section 3.7), but that in general the codebase of discontinued
projects has been forked and is used in active projects.215
Tables 3 and 4 show a comparison of OSS ﬂight controller
platforms in terms of key properties such as the kind of air-
frames supported, support for autonomous ﬂight, availability
of links for C2 and telemetry, fault detection and handling, li-220
censing, source lines of code (SLOC), programming language,
and operating system. (Projects no longer in active develop-
ment are not included.) All active platforms support multirotor
airframes, similarly ﬁxed-wing airframes are supported by all
but one (Hack ﬂight). Autonomous ﬂight is supported by most225
platforms, as are C2 and telemetry links. Fault detection and
handling features are present in most platforms, with PX4 as a
notable exception. There is a strong preference for GPL-based
licenses, with PX4 as a notable exception. The PX4 use of the
BSD 3-Clause license is a signiﬁcant advantage for its use in230
Table 3: Collection of but not limited to, supported features for OSS ﬂight controller platforms.
Platform Airframes Autonomous
Flight Communication Fault detection
and handling Features
Hack ﬂight mr(4) - pm,sb,ds,msp - -
Cleanﬂight mr(1-8)/fw sph,swp sb,ib,sd,sh,pm,pw,cf,jeb,ds,xbu,fs,sp,ht,lt,ml,sl,msp c2k,bvw g,bm,dl,rth,hf,ts,at
Betaﬂight mr(1-8)/fw sph,swp sb,ib,sd,sh,pm,pw,cf,jeb,ds,xbu,fs,sp,ht,lt,ml,sl,msp c2l,c2k,bvw g,bm,dl,rth,hf,ts,at
INAV mr(1-8)/fw fm,swp,sph sb,ib,sd,sh,pm,pw,cf,jeb,ds,xbu,fs,sp,ht,lt,ml,msp c2l,c2k,bvw,c2rl g,at,bm,dl,rth,at
LibrePilot**** mr(3-8)/fw sph, swp, atl sb,ib,sd,sh,pm,pw,xbu,fs,ht,ml,sl,msp c2k g,rth,bac,bm
dRonin**** mr(*)/fw sph sb,fs,ht,ml,ut,msp pa bm,dl,at,rth
ArduPilot mr(1-8)/fw svnf,sph,swp sb,pm,ds,fs,ml ar,sw,apr,sc,c2rl,c2l,c2k,bll,gf g,rlg,loa,bm,rth, ***
PX4 mr(1-8)/fw sph,swp,fm sb,sd,ds,fs,sp,ht,ml,ir gf ,c2k,c2l,c2rl,sc,apr g,rth,bm,dl,rlg,loa,**
Paparazzi mr(+)/fw sph,swp,atl,fw,svnf pm,sb,xbe,ml ar,sw,apr,sc,c2rl,c2l,c2k,bll,gf g,pa,rth,bm,dl,hf,ts,at,rlg,loa,bac
*: Not found in documentation; **: See parameters for more features ; ***: See parameters for more ; ****: Low source reliability; +: Limited by hardware;
Airframes mr: multirotor (number of propellers); fw: ﬁxed wings
Autonomous Flight sph: Satelite position hold; swp: Satelite way point navigation; atl: automatic take off and landing; fm:: Follow me; svnf: Stereo vision navigation functions;
Communication sb: SBus; ib: iBus; sd: SumD; sh: SumH; pm: PPM; pw: PWM; cf: CRSF; jeb: JetiExBus; ds: DSM; xbu: XBUS; xbe: XBee; fs: FrSky; sp: SmartPort (s.port); ht:
HoTT; lt: LTM; ml: MavLink; sl: SRXL; ut: UAVTalk; msp: Multiwii serial protocol; ir: Iridium SBD;
Fault detection and handling ar: ADS-B receiver support; c2l: Landing when missing C2 link; c2rl: Return to launch or home after missing C2 link; c2k: Kill supply for motors after
missing C2 link; bvw: Battery voltage warning; ada: Auto disarm after timeout; apr: Automatic parachute release; sw: Safety switch to en-/disable output to motors; bll: Land or return to
launch if battery low; gf: Geofence; sc: Pre-Arm Safety Check for sensor error;
Features g: gimbal compatible; pa: Prevent arming when battery low; rth: Return to home; bm: Battery monitoring; dl: Data logging to ﬂash; hf: Head free moving (yaw ﬁxed); ts:
Transponder support; at: PID autotune; rlg: Supports retractable landing gear; loa: Lidar obstacle avoidance; bac: Battery mAh count;
Table 4: Comparison of source code and availability for OSS ﬂight controller
FC/doc/conf. tool SLOC+ Language OS
Hack ﬂight g/-/lg 3.3k *C++ None
Cleanﬂight g/-/g 96.3k C Scheduler
Betaﬂight g/-/g 107k C Scheduler
INAV g/-/g 93.1k C Scheduler
LibrePilot g/cbs/g **87.6k C FreeRTOS 
dRonin g/tbd/ **97.6k C ***PiOS
ArduPilot g/cbs/g ****242.1k C/C++ ChibiOS /NuttX /Linux
PX4 b/CC BY 4.0/g ****211.8 C/C++ NuttX 
Paparazzi g/gf/g 2106k(C) C/Python ChibiOS /Scheduler
*: C++ header only code, **:ﬂight dir without PiOS; ***:PiOS Pilot Operating System;
****:ArduPilot repository(cpp only) without Ardusub and APMrover; +:Source Lines Of
License b: BSD; lg: GPLv3; lg: Lesser GPLv3; cbs: CC-BY-SA 3.0; tbd: To be
determined; gf: GNU Free Documentation License (GFDL);
3.2. Multiwii series
The ﬁrst ﬂight control software  of the Multiwii se-
ries (Figure 8) was developed by Alexandre Dupus for low-
cost hardware. The initial goal was to control a tricopter with235
an Arduino Pro Mini using Nintendo Wii motion sensors .
The original implementation language was Arduino C but later
changed to C++; comparing its 12.5k Source Lines Of Code
(SLOC) with the platform in Table 4, we observe that it is a rel-
atively small software package. The development has stopped240
but the source code is still available along with a Java-based
conﬁguration tool . Baseﬂight  changed the Multiwii
implementation language to C, evolved to processor support
from 8-bit to 32-bit, and made an internet-browser-based con-
ﬁguration tool [37, 38]. Raceﬂight  also has its roots in245
the Multiwii ﬂight controller and have been optimized for UAV
racing and acrobatics, but development has also stopped.
3.2.1. Hack ﬂight
Hack ﬂight is derived from Baseﬂight, but the source 
seems completely rewritten. It supports the STM32L4 based250
Figure 8: Development history originating from the original Multiwii ﬂight
Ladybug ﬂight controller and it has a wiki  that contains in-
formation about how to setup the controller with receivers and
motors. In addition to the ﬂight code, the repository consists
of a Python-based Ground Control Station (GCS) for reading
sensor values and an Android application for showing altitude.255
Based on statements on the README ﬁle, this platform seems
suitable for smaller projects where people want hands-on de-
velopment without too much complexity.
The ﬁrst version of the Cleanﬂight  source code 260
was forked from Baseﬂight, but since then functionality has
been inherited from INAV and Betaﬂight or developed in
Cleanﬂight. Cleanﬂight has documented setup guides for
elements such as sensors, ﬂight setup, and for 15 different
ﬂight controller boards, all with ARM-based STM32 F1, F3,265
F4 or F7 MCUs, although the F1 series will not be supported
in future releases. The software contains a browser-based
conﬁguration tool  from where the UAV can be conﬁgured,
sensors can be read, and parameter tuning performed.
Cleanﬂight has its origin in Baseﬂight and the conﬁguration270
tool can be added to Google Chrome .
Figure 9: Development history from the original OpenPilot ﬂight controller
Betaﬂight source code  and documentation is related
to INAV (Section 3.2.4) and Cleanﬂight (Section 3.2.2) .
This is visible if comparing software and source repository,275
but Betaﬂight differs according to the readme ﬁle, by devel-
oping with focus on creating high performance, leading-edge
feature additions, and wide target support . Cleanﬂight is
suggesting this platform for people who want to work with ex-
perimental new features . The documentation section de-280
scribes 17 ﬂight controller boards among those the CC3D (Sec-
tion 2.5). The conﬁguration tool is like for Cleanﬂight, avail-
able for Google Chrome add  and the source code is avail-
INAV  is forked from an earlier version of
Cleanﬂight (Section 3.2.2). INAV has improved navigation
functionalities  compared to Betaﬂight and Cleanﬂight
with “follow me” functionality and support for GCS with
mission planner running on Windows, Linux, IOS and290
Android. The documentation directory describes setup for
25 ﬂight controller boards. The source repository  has a
Google Chrome browser add-on conﬁguration tool  similar
to Betaﬂight and Cleanﬂight.
3.3. OpenPilot series295
OpenPilot is a ﬂight controller software package that has
been developed through many projects and by different devel-
opers, as illustrated in Figure 9. OpenPilot was the original
ﬂight controller software in this series, but development was
stopped in 2015. Parts of its wiki  is still functional and300
the source code  is still available. The ﬂight control soft-
ware supports among others the CC3D (Section 2.5) board and
it can control ﬁxed-wing and multirotor UAVs. Similarly Tau
Labs  is an inactive ﬂight controller platform from this se-
ries where the source code remains available . The individ-305
ual projects that still are in active development are described in
The LibrePilot  project started in July 2015 with
focus on research and development of software and hardware310
to be used in a variety of applications, including vehicle
control and stabilization of unmanned autonomous vehicles
and robotics . The source code  builds on the
OpenPilot project and it runs on various platforms such as
Sparky2 (Section 2.3) and CC3D (Section 2.5). There is315
online documentation  for setting up the software for the
supported boards, UAV conﬁguration, and using sensors and
dRonin  forked their source code  from the Tau Labs320
repository. dRonin has online documentation , an online fo-
rum , a wiki , and additional documentation as repos-
itory ﬁles. The code can be used with several ﬂight controller
boards, including Sparky2 (Section 2.3), AeroQuad, and Rasp-
berry Pi with FlyingPIO sensor extension . dRonin can be325
linked to an Android application  for sensor readings and
ArduPilot  is capable of controlling a wide range
of vehicle including ﬁxed-wing airplanes, multirotors,330
helicopters, boats, and submarines . The software was
originally developed for 8-bit ARM-based MCUs running
on its own board ArduPilot. This board was however
replaced by ArduPilot Mega (APM) (Section 2.6) and the
software has evolved to be optimized for use with 32-bit335
ARM-based MCUs. Nevertheless the controller can run
under Linux, enabling it to be used on a large class of
electronics from single-board computers all the way up to a
full PC system. ArduPilot has a desktop GCS for mission
planning , calibration, and vehicle setup for Windows,340
Linux and Mac OSX. Different setups of the AutoPilot system
and installation manuals are available from the ArduPilot web
The PX4 ﬂight stack and autopilot , are a part of the345
DroneCode collaborative project  which covers both GCS,
hardware platforms and simulation . PX4 works with many
different airframes for using multirotor, ﬁxed-wing, gliders,
copters and VTOL technology. PX4 is compatible with the
QGroundControl GCSs , from where parameters are set,350
sensors read, and autonomous ﬂight conﬁgured. Performance
of the ﬂight stack is presented by Meier et al. . The use
of the BSD license and the high level of completeness makes
this ﬂight stack attractive for commercial companies . The
documentation is online  for developers and users and355
covers both ﬂight controller and GCS setup.
3.6. Paparazzi software
The Paparazzi project works on a complete UAV system
including electronics (Section 2.4), ﬂight controller soft-
ware , autopilot, GCS and simulation (Section 4.6) .360
The Paparazzi ﬂight controller can be conﬁgured to control
ﬁxed-wing, ﬂapping-wing, hybrid and multirotor airframes in
different conﬁgurations, as well as multiUAV systems .
From the Paparazzi GCS it is possible to setup parameters,
ﬂight type and conﬁguration, read sensor, data setup a365
ﬂight plan including custom guidance, navigation and
cohntrol algorithms . Paparazzi has a source code
documentation  for developers as well as a wiki-based
guide  for setting up the ﬂight controller.
3.7. Inactive OSS projects370
AutoQuad  is a product series that includes UAV
components like Electronic Speed Controller (ESC)s, which
are based on open-source hardware and ﬂight controllers based
on open-source software . The ﬂight controller has been
developed through product generations for more than 6 years.375
The ﬁrmware is written for the STM32F4 series MCUs and
supports up to 14 Brushless DC motor (BLDC)s, and it is
compatible with QGroundControl. The source code is still
available but future development seems to be on hold or
JAviator  was a research project of the Computational
Systems Group at the Department of Computer Sciences of the
University of Salzburg, Austria [86, 87]. The project was run-
ning from 2006 to 2013 and the project delivered three lay-
ers of software; JAviator Plant (JAP), Flight Control System385
(FCS), and GCS. The FCS software is written in C, runs on
a Robostix-Gumstix stack, and implements the ﬂight control
algorithms. This project however does not seem to be active
The AeroQuad  ﬂight controller software is written in390
Arduino/C  and supports Atmel powered boards, among
those their own developed AeroQuad (Section 2.9). The ﬂight
controller has a desktop conﬁguration tool for setting up param-
eters. AeroQuad supports multirotors UAVs, but there have not
been updates to the source code since 2013.395
As described earlier, the MultiWii, Baseﬂight, RaceFlight,
OpenPilot and TauLabs are also among the OSS projects where
development has stopped.
4. Open-Source Simulation Platforms
This section explores selected OSSIM platforms and sum-400
marizes their features.
Table 5 shows a comparison of selected OSSIM UAV plat-
forms, including the implementation language, supported op-
erating system, and licensing terms. C and C++ are the most405
popular implementation languages, with Python and Java as no-
table exceptions for Morse and jMAVSim. All projects support
Linux, some additionally support MacOS and/or Windows.
Aerial Informatics and Robotics Platform (AirSim) was de-410
veloped by Microsoft in 2017 . AirSim aims to support the
development and testing of algorithms for autonomous vehicle
applications, such as deep learning, computer vision, and re-
inforcement learning algorithms. The AirSim physics engine
is based on Unreal Engine 4 (UE4)  and can operate at a415
high frequency for real-time Hardware-in-the-Loop (HIL) sim-
ulations with support for popular protocols (e.g. MavLink).
The simulator follows modular design architecture with an em-
phasis on extensibility. The only supported UAVs are Iris in a
MultiRotor model and in an X-conﬁguration for PX4 quadrotor.420
Figure 10a shows a screenshot of AirSim.
Gazebo  was originally developed at the University
of Southern California, USA in 2002 and later at Open
Source Robotics Foundation (OSRF). Gazebo is the default425
simulator included with ROS, making it one of the most
popular 3D dynamics multi-robot simulator with a very active
community . Gazebo allows the use of different physics
engines and sensor models, and supports easy creation of 3D
worlds, enabling testing of robot designs and algorithms,430
regression testing, and training of AI systems using realistic
scenarios. Gazebo uses a distributed architecture with
separate libraries for physics simulation, rendering, user
interface, communication, and sensor generation. In order
to simulate UAVss in Gazebo, J. Meyer et al. presented a435
framework to simulate a quadrotor using Robot Operating
System (ROS). The framework provides a Gazebo ROS
package named Hector Quadrotor  that aims at simulating
diverse quadrotor UAV aspects such as ﬂight dynamics,
onboard sensors like IMUs, external imaging sensors and440
complex environments. Supported UAVss include Quad (Iris
and Solo), Hex (Typhoon H480), Generic quad delta VTOL,
Tailsitter, Plane, and Rover. Figure 10b shows a snapshot of
a quadrotor UAV outdoor simulation in Gazebo. Although
Gazebo is a feature-rich platform, the rendering techniques are445
not as advanced as, e.g., Unreal Engine  or Unity .
In addition, the Hector package lacks support for protocols
such as MavLink and Hardware platforms such as Pixhawk
Modular Open Robots Simulation Engine (MORSE) is a
generic simulator for research in robotics that is developed
jointly at Laboratory for Analysis and Architecture of Systems
(LAAS) and Ofﬁce National d’Etudes et de Recherches
Arospatiales (ONERA)  since 2011. MORSE relies455
on Blender  for physics simulation and for a realistic
display of the simulated environment. MORSE is designed
as a general purpose, modular system simulation of multiple
moving robots in many different kinds of environments .
MORSE relies on a component-based architecture. Each460
MORSE component consists of a Blender and a Python ﬁle.
The Blender ﬁle expresses the physical and visual properties
of the object in the simulated world. The Python ﬁle deﬁnes
an object class for the component type . The MORSE
component library provides quadrotor dynamic which is465
a simple deﬁnition of a quadrotor with a rigid body. Figure 10c
shows a screenshot of a quadrotor UAV simulated in MORSE.
MORSE lacks graphical user interface since it only provides
a command line one. MORSE does not embed any advanced
algorithms (e.g., path planning) since it expects to run such470
algorithms in the simulated software stack of the desired
Table 5: Comparison between Open-Source Simulator (OSSIM) drone platforms.
Platform Implementation Language Supported Operating System License
AirSim  C++ Windows, Linux MIT
Gazebo  C++ Linux, MacOS Apache V2.0
Morse  Python Linux BSD
jMAVSim  Java Linux, MacOS, Windows BSD 3
New Paparazzi Simulator  C Linux, MacOS GPLv2
HackﬂightSim  C++ Windows, Linux GPL
Java Micro Air Vehicle Simulator (jMAVSim) is a
simple and lightweight multirotor simulator developed by475
the PIXHAWK engineering team (Section 2.2) [103, 75].
jMAVSim supports the MAVLink protocol, uses the Java3D
library for visualization, and connects directly to the HIL via a
serial connection or to Software-in-the-Loop (SIL) via User
Datagram Protocol (UDP) communication to the autopilot.480
Figure 10d shows a screenshot of a quadrotor UAV application
in jMAVSim. The implementation of jMAVSim is as a single
component based on a relatively simple object-oriented design
with no explicitly documented architecture .
4.6. New Paparazzi Simulator485
New Paparazzi Simulator (NPS) is an advanced simulator
with sensor models developed at Ecole Nationale de l’Aviation
Civil (ENAC) UAV Lab (Section 2.4). The default ﬂight model
in NPS is JSBSim which supports a range of relatively complex
airframes. NPS however allows the use of different Flight Dy-490
namic Model (FDM) backends, enabling developers to choose
their own FDM model, for example connecting the simulator to
an FDM expressed in MATLAB Simulink. Different visualiza-
tion options are available, including FlightGear and the Morse
(Section 4.4) simulator. Figure 10e shows a screenshot of the495
simulator running using the Paparazzi GCS. Supported UAVs
include rotorcraft and ﬁxed-wing airframes.
HackﬂightSim is a simple cross-platform quadcopter
simulator developed by Simon D. Levy, Washington and500
Lee University Lexington, USA in 2017. HackﬂightSim is
implemented in C++, uses Unreal Engine 4, and is based on the
Hackﬂight ﬁrmware which is a Simple C++ quadcopter ﬂight
control ﬁrmware for Arduino. The project is similar to AirSim
(Section 4.2) however, it focuses only on quadcopter ﬁrmware.505
Figure 10f shows a screenshot of a quadrotor UAV application
in HackﬂightSim. The implementation of HackﬂightSim
is as a single component that uses the Unreal Engine for
visualization, similarly to jMAVSim (Section 4.5) the main
component is based on a relatively simple object-oriented510
design with no explicitly documented architecture .
4.8. Inactive OSSIM projects
Python Quad Simulator (PyQuadSim) is an open-source
quadrotor simulator in Python for Linux that is stopped in
5. Conclusions and Future Work
This paper has presented UAV basics and reviewed more
than 20 different open-source hardware, software, and simula-
tion UAV platforms appropriate for use in a wide range of set-
tings, ranging from basic academic research to serving as the520
foundation for a commercial product. Overall we observe that
open-source ﬂight controller hardware is generally based on
32-bit ARM MCUs but otherwise varies signiﬁcantly in terms
of interfaces supported and physical dimensions. Support for
fault tolerance features is in general limited, and there is lit-525
tle documentation regarding power consumption. For open-
source ﬂight controller software most projects use a GPL li-
cense, and although some projects have been discontinued, their
codebase is generally still being used in other active projects.
We however note that similarly to the case for ﬁeld robots ,530
there is a lack of use of relevant industrial standards for safety-
critical software in the development of open-source ﬂight con-
troller software, which is an issue for use in real-world scenar-
ios. Open-source ﬂight simulator software is generally imple-
mented in C or C++ and in general supports Linux, with some535
use of languages such as Python and Java, and some support for
MacOS and Windows.
Future work will be focusing on a deep analysis of the
power consumption of a combined software and hardware
platforms along with relative costs calculations of the hardware540
This work is supported and partly funded by the Innova-
tionfund Denmark (IFD) Free the Drones (FreeD) project and
from the European Union’s Horizon2020 research and inno-545
vation programme under grand agreement No. 779882 (Team-
 H. Chao, Y. Cao, Y. Chen, Autopilots for small unmanned aerial vehi-
cles: A survey, International Journal of Control, Automation and Sys-550
tems 8 (1) (2010) 36–44. doi:10.1007/s12555-010-0105- z.
URL http://dx.doi.org/10.1007/s12555-010- 0105-z
 J. M´
os, Aerial surveying uav based on open-source hardware and
software, International Archives of the Photogrammetry, Remote Sens-
ing and Spatial Information Sciences 37 (2011) 1.555
 H. Lim, J. Park, D. Lee, H. J. Kim, Build your own quadrotor: Open-
source projects on unmanned aerial vehicles, IEEE Robotics & Automa-
tion Magazine 19 (3) (2012) 33–45.
(a) AirSim (b) Gazebo
(c) Morse (d) jMAVSim
(e) New Paparazzi Simulator (f) HackﬂightSim
Figure 10: Simulator screenshots
 S. Sabikan, S. W. Nawawi, Akademia baru open-source project ( osps )
platform for outdoor quadcopter, Akademia Baru 24 (1) (2016) 13–27.560
 P. Fahlstrom, T. Gleason, Introduction to UAV systems, John Wiley &
 C. Howard, Uav command, control & communications, Military &
Aerospace Electronics, militaryaerospace. com.
 I. Sadeghzadeh, Y. Zhang, A review on fault-tolerant control for un-565
manned aerial vehicles (uavs), in: Infotech@ Aerospace 2011, 2011, p.
 C. Vendome, A large scale study of license usage on github, in: 2015
IEEE/ACM 37th IEEE International Conference on Software Engineer-
ing, Vol. 2, 2015, pp. 772–774.570
 D. M. German, M. D. Penta, J. Davies, Understanding and auditing the
licensing of open source software distributions, in: 2010 IEEE 18th In-
ternational Conference on Program Comprehension, 2010, pp. 84–93.
 px4dev, Pixhawk web page.575
 ProﬁCNC, ProﬁCNC.
 N. Arsov, P. Kocmoud, L. Meier, D. Sidrane, L. Hall, Pixracer autopilot.
 P. D. Team, Pixhawk 3 pro.
 pixhawk.org, Px4fmu autopilot / ﬂight management unit.
 T. Labs, Sparky2.
 Paparazzi development team, Paparazzi web page.
 LibrePilot/OpenPilot community, CC3D web page.
 ArduPilot Mega team, ArduPilot Mega.
 DFRobot, Flymaple — a ﬂight controller with 10 dof imu.
 Erle Robotics S.L., Erlerobotics web page.
 L. Meier, P. Tanskanen, L. Heng, G. H. Lee, F. Fraundorfer, M. Polle-600
feys, Pixhawk: A micro aerial vehicle design for autonomous ﬂight us-
ing onboard computer vision, Autonomous Robots 33 (1) (2012) 21–39.
 DroneCode, DroneCode project.
 T. Labs, What is tau labs.605
 P. Brisset, A. Drouin, M. Gorraz, P.-S. Huard, J. Tyler, The paparazzi
solution, in: MAV 2006, 2nd US-European Competition and Workshop
on Micro Air Vehicles, 2006.
 E. Baskaya, G. Manfredi, M. Bronz, D. Delahaye, Flexible open archi-610
tecture for uass integration into the airspace: Paparazzi autopilot sys-
tem, in: 2016 IEEE/AIAA 35th Digital Avionics Systems Conference
(DASC), 2016, pp. 1–7. doi:10.1109/DASC.2016.7778016.
 AeroQuad, AutoQuad Flight Software Platform.
 HiSystems GmbH , MikroKopter.
 PX4 Dev Team, PX4 setup parameters.
 ArduPilot, Ardupilot parameter list.
 Amazon Web Services (AWS), FreeRTOS web page.
 dRonin documentation.
 Giovanni Di Sirio, ChibiOS wiki.
 Gregory Nutt, NuttX web page.630
 Alexandre Dupus, Multiwii source code.
 Alexandre Dupus, MultiWii wiki.
 timecop, Baseﬂight source code.
 timecop, Baseﬂight conﬁguration tool add for Google Chrome.
 timecop, Baseﬂight conﬁguration tool source code.
 RaceFlight, RaceFlight source code.
 S. Levy, Hackﬂight: Simple quadcopter ﬂight control ﬁrmware and sim-
ulator for c++ hackers.
 S. Levy, Hack ﬂight wiki.
 Cleanﬂight team, Cleanﬂight web page.
 Dominic Clifton (hydra), Cleanﬂight source code.
 Cleanﬂight gui add source.
 Cleanﬂight gui add.
 Boris B (borisbstyle) , Betaﬂight source code.665
 Boris B (borisbstyle) , Betaﬂight wiki.
 Boris B (borisbstyle) , Betaﬂight gui add source.670
 Boris B (borisbstyle) , Betaﬂight gui add source.
 INAV source code.
 INAV wiki.
 INAV Chrome add source.
 INAV Chrome add.
 OpenPilot, OpenPilot wiki.
 OpenPilot, OpenPilot source code.
 Tau Labs developer team, Tau Labs web page.
 Tau Labs developer team, Tau Labs source code.
 LibrePilot Team, LibrePilot Project.695
 LibrePilot Team, LibrePilot source code.
 LibrePilot Team, LibrePilot documentation.
 dRonin executive committee, dRonin web page.
 Volunteers and the dRonin executive committee, dRonin source code.
 dRonin forum.
 dRonin wiki.
 dRonin Raspberry Pi hat.710
URL https://github.com/d-ronin/dronin- hw/tree/
 dRonin android application.
 ArduPilot, Ardupilot source code.
 ArduPilot Dev Team, ArduPilot.
 ArduPilot, Ardupilot mission planner.720
 ArduPilot, Ardupilot mission planner 2.
 ArduPilot, Ardupilot documentation.
 PX4 Dev Team, PX4 source code.
 PX4 Dev Team, PX4 web page.
 QGroundControl, QGroundControl web page.730
 L. Meier, D. Honegger, M. Pollefeys, Px4: A node-based multi-
threaded open source robotics framework for deeply embedded plat-
forms, in: 2015 IEEE International Conference on Robotics and Au-
tomation (ICRA), 2015, pp. 6235–6240. doi:10.1109/ICRA.735
 PX4 commercial drone use.
linux-foundation- fuels-open- source- drone-efforts/
 PX4 Dev Team, PX4 documentation.740
 Paparazzi development team, Paparazzi source code.
 H. G. de Marina, Z. Sun, M. Bronz, G. Hattenberger, Circular formation
control of ﬁxed-wing uavs with constant speeds, 2017 IEEE/RSJ Inter-745
national Conference on Intelligent Robots and Systems (IROS) (2017)
 H. G. de Marina, Y. A. Kapitanyuk, M. Bronz, G. Hattenberger, M. Cao,
Guidance algorithm for smooth trajectory tracking of a ﬁxed wing
uav ﬂying in wind ﬂows, in: 2017 IEEE International Conference750
on Robotics and Automation (ICRA), 2017, pp. 5740–5745. doi:
 Paparazzi development team, Paparazzi source code documentation.
 Paparazzi development team, Paparazzi wiki.755
 AutoQuad web page.
 AutoQuad, AutoQuad source code.760
 University of Salzburg, JAviator Project.
 University of Salzburg, JAviator web.
 S. Craciunas, C. Kirsch, H. R ¨
ock, R. Trummer, The JAviator: A high-
payload quadrotor UAV with high-level programming capabilities, in:
Proc. of the AIAA Guidance, Navigation, and Control Conference
(GNC), Honolulu, HI, USA, 2008.
 Microsoft, AirSim web page.770
 Open Source Robotics Foundation (OSRF), Gazebo web page.
 LAAS and ONERA labs, Morse web page.
 PIXHAWK engineering team, jMAVSim web page.
 Ecole Nationale de l’Aviation Civil , Paparazzi web page.
 Simon D. Levy, HackﬂightSim web page.
 S. Shah, D. Dey, C. Lovett, A. Kapoor, Airsim: High-ﬁdelity visual
and physical simulation for autonomous vehicles, in: Field and Service
Robotics, 2017. arXiv:arXiv:1705.05065.785
 B. Karis, E. Games, Real shading in unreal engine 4, Proc. Physically
Based Shading Theory Practice.
 N. Koenig, A. Howard, Design and use paradigms for gazebo, an
open-source multi-robot simulator, in: Intelligent Robots and Systems,790
2004.(IROS 2004). Proceedings. 2004 IEEE/RSJ International Confer-
ence on, Vol. 3, IEEE, 2004, pp. 2149–2154.
 O. S. R. Foundation, Gazebo robot simulation made easy.
 Johannes Meyer, Hector Quadrotor,795
 Epic Games, Unreal Engine, https://www.unrealengine.com/.
 Unity Technologies, Unity, https://unity3d.com/.
 G. Echeverria, N. Lassabe, A. Degroote, S. Lemaignan, Modular open
robots simulation engine: Morse, in: IEEE International Conference on800
Robotics and Automation, 2011, pp. 46–51. doi:10.1109/ICRA.
 Briar Wallace, Blender Game Engine, https://www.blender.org/.
 pixhawk.org, jmavsim.
 github.com, Px4/jmavsim.
 S. D. Levy, Hackﬂightsim/source.
 J. T. M. Ingibergsson, U. P. Schultz, M. Kuhrmann, On the use of safety
certiﬁcation practices in autonomous ﬁeld robot software development:
A systematic mapping study, in: Product-Focused Software Process Im-
provement, Springer, 2015, pp. 335–352.815
Emad Ebeid is an Assistant Profes-
sor at the Mærsk Mc-Kinney Møller In-
stitute, University of Southern Denmark,820
Denmark. Ebeid received his Ph.D. in
Computer Science from the University of
Verona, Italy, in 2014. His research in-
terests are in the areas of networked em-
bedded systems, hardware/software co-825
design of drone technologies and smart
grid applications. He is or was involved in several EU projects
in embedded systems and smart grid applications. Currently, he
is special session chair of System Design for Collaborating In-
telligent Systems session at EUROMICRO Conference on Dig-830
ital System Design and a guest editor of a special issue of MDPI
Energies journal. He is a senior IEEE member.
Martin Skriver is a research assis-
tant at the Mærsk Mc-Kinney Møller In-
stitute, University of Southern Denmark835
where he has been a part of the SDU
UAS Center since August 2015. He has
a M.Sc. degree in Engineering - Robotic
System from the University of Southern
Denmark. His main research areas have840
been with embedded electronics within battery management
systems, GSM/GNSS based drone tracking and FPGA based
Kristian Husum Terkildsen is a re-
search assistant at the Mrsk Mc-Kinney845
Mller Institute, University of Southern
Denmark. Terkildsen has a Master’s de-
gree in Robot Systems Engineering with
specialization in Unmanned Aerial Sys-
tems. He has been a part of the SDU850
UAS Center since June 2017. His main
focus areas are within system integration
and navigation in GPS denied environments.
Kjeld Jensen is an Associate Profes-
sor since 2007 at the SDU UAS Cen-855
ter, University of Southern Denmark.
His research interest covers experimental
development of embedded systems and
software to support a wide range of ap-
plications in unmanned systems. He has860
designed and developed a number of mo-
bile robots for outdoor tasks and he is
the architect and principal programmer behind the open source-
software platform FroboMind. His recent work focus on novel
applications requiring unobserved autonomous operation of865
UAS and mobile robots.
Ulrik Pagh Schultz is an Associate
Professor since 2005 at the SDU UAS
Center, MMMI, University of Southern
Denmark. Schultz received his B.Sc. and870
M.Sc. degrees in Computer Science from
the University of Aarhus, in 1995 and
1997, respectively, and a Ph.D. degree
in Computer Science from University of
Rennes, in 2000. From 2000 until 2005, he was a faculty mem-875
ber at University of Aarhus. His research interest covers soft-
ware engineering for robotics of all kinds (aerial or not) and
domain-speciﬁc languages. Currently he is Chair of the IFIP
Working Group 2.11 on Program Generation (since 2013). He
is a member of ACM and IEEE.880