Whether you use drones for work, build a drone as a hobby, or just want to tinker with a homemade robot, the first thing you’ll face before starting your project is a very important decision: which controller to use.
On-board computers, commonly known as flight controllers, autopilots, or robot controllers, are extremely important components that not only control the drone’s attitude, but also handle sensor input, signal output to the payload, and almost everything else about the aircraft during flight.
The issue in choosing a controller is it can create an overwhelming feeling when there are too many options. It can be said that we are blessed with more options than we could have imagined a long time ago, but it is also true that many users are overwhelmed by the amount of information. Information is scattered all over the Internet, and technology is evolving at an incredible speed, so the information you find is often so old that it is not only useless, but even harmful. It is extremely difficult to scrutinize the information smartly, and it is almost impossible to comprehensively grasp the latest information on all controllers.
So this time, I would like to provide an overview of the most popular open source flight controllers, in particular the Pixhawk series controllers that are also used by Zenbot.
What are flight controllers, autopilots, and robot controllers?
There are various definitions, but they are all basically the same thing if you think of them as small computers that process sensor and user input and send control signals to external actuators. There are various types, such as units specifically for multicopters and those compatible with various robots, but the open source controllers that are popular these days can be used for a variety of purposes and aircraft.
These are generally small boxes based on small, low-power microcontrollers or single-board computers, equipped with SD cards, sensors, and various input/output ports, and all have the same basic structure: they receive sensor and external input data via I2C, SPI, CAN, serial, etc. ports, send control signals to external devices via PWM or various ports, operate motors, servos, and other actuators, and control the attitude of the aircraft, etc. Furthermore, many of them can be remotely controlled and monitored via communication links such as WiFi, Bluetooth, and ZigBee, and can also store logs for later analysis.
However, performance and functions vary greatly depending on the controller. The simplest flight controllers only use gyros and accelerometers to stabilize the aircraft, while there are many different types that use GPS, laser range finders, image recognition, and other features to avoid obstacles, or fly autonomously in cooperation with multiple aircraft.

Flight Controller Ecosystem
Controller
This refers to an on-board computer that includes basic sensors such as an IMU and a barometer.

Flight controllers can be broadly divided into those based on microcontrollers and those based on Linux SBCs (Single Board Computers). Recently, there has been an increase in the use of a microcontroller-based controller to control attitude and a Linux SBC connected as a companion computer to handle high-load processing such as image processing.
Among the various controllers available, Zenbot uses the world’s most advanced Pixhawk series controllers.


Software
Drone software can be broadly divided into two categories: flight control, which runs on the aircraft itself, and ground control, which runs on a PC or tablet.

ON-BOARD FLIGHT CONTROL SOFTWARE (FIRMWARE)
Firmware is software that runs on the aircraft’s control computer (the on-board flight controller).
There are two types of firmware that are compatible with Pixhawk hardware: PX4 and ArduPilot. Both have their advantages, so Zenbot uses the stack that is best suited to the aircraft and application.
GROUND CONTROL STATION (GCS)
Ground Control Station is software that runs on a PC, tablet, or smartphone and configures firmware, monitors aircraft status, inputs waypoints, etc. It communicates with the aircraft via a telemetry link, monitors sensor values, sends commands to the aircraft, and performs log analysis.
There are various types of this, each with its own advantages, so at Zenbot we do not limit ourselves to just one, but use the one that is best suited to the firmware and environment we are using.
External Devices
In addition to the flight controller, you will need external sensors, a power module, an RC transmitter/receiver, a telemetry communication module, etc.
External devices can also limit the options available to your controller. For example, if you want to use the latest LiDAR or IR beacon, you can’t use that sensor unless the controller or firmware supports it. There are many sensors that only provide drivers for specific flight controllers, or that are not supported at all.
However, in the case of the open source controllers used in Zenbot, as long as you have a common signal path (I2C, CAN, serial, etc.), you can still write your own driver. This also applies to telemetry modules, gimbals, and other actuators. This is an area that is often impossible to implement in the first place with closed controllers such as DJI.

Open vs. Proprietary
There are many open source flight control software, and their functions and performances vary greatly. Closed products often look cool and are easy for beginners to use, but they often have inferior functions and you cannot expect much manufacturer support when you want to expand the functions.
Open Source System
There are two meanings to open source here. Usually, when we think of open source, we think of software, but there are an increasing number of cases where the hardware is also developed as open source, especially in the case of drone controllers. In this case, circuit diagrams and PCB layout data are published as open source, and you can freely modify or improve them and manufacture them yourself, or order them from a PCB specialist company. Many flight controllers for drones are developed with both the hardware and software as open source.

Partially open source
Systems that combine open and closed software and hardware are also appearing. In particular, semiconductor manufacturers such as Intel, Qualcomm, and Texas Instruments have been making major advances in the IoT and drone markets, and the boards they provide are often hybrid, combining both open and closed components.
At Zenbot, we are constantly reviewing these new flight controllers and adopting them to suit our requirements.
Completely closed system
In closed proprietary systems like DJI’s, the source code for both the software and hardware is not made public, but they often provide APIs that allow for limited functionality to be extended.
Zenbot specializes in custom drone development and generally does not use closed systems that are difficult to expand.