This topic provides a basic introduction to drones and using PX4 (it is meant mostly for novice users but is also a good introduction for experienced users).
If you are already familiar with the basic concepts, you can move on to Basic Assembly to learn how to wire your specific autopilot hardware. To load firmware and set up the vehicle with QGroundControl, see Basic Configuration.
A drone is an unmanned "robotic" vehicle that can be remotely or autonomously controlled.
Drones are used for many consumer, industrial and military use cases and applications. These include (non exhaustively): aerial photography/video, carrying cargo, racing, search and surveying etc.
Different types of drones exist for use in air, ground, sea, and underwater. These are (more formally) referred to as Unmanned Aerial Vehicles (UAV), Unmanned Aerial Systems (UAS), Unmanned Ground Vehicles (UGV), Unmanned Surface Vehicles (USV), Unmanned Underwater Vehicles (UUV).
The "brain" of the drone is called an autopilot. It consists of flight stack software running on vehicle controller ("flight controller") hardware.
PX4 is part of the Dronecode Platform — a complete end-to-end platform for drone development, delivered under a common industry-friendly open source license. It includes, among other things, the PX4 flight stack), QGroundControl ground control station, the Dronecode SDK and the Dronecode Camera Manager.
PX4 is powerful open source autopilot flight stack.
Some of PX4's key features are:
- Controls many different vehicle frames/types, including: aircraft (multicopters, fixed wing aircraft and VTOLs), ground vehicles and underwater vehicles.
- Great choice of hardware for vehicle controller, sensors and other peripherals.
- Flexible and powerful flight modes and safety features.
The Dronecode ground control station is called QGroundControl. You can use QGroundControl to load (flash) PX4 onto the vehicle control hardware, you can setup the vehicle, change different parameters, get real-time flight information and create and execute fully autonomous missions.
QGroundControl runs on Windows, Android, MacOS or Linux. Download and install it from here.
PX4 was initially designed to run on Pixhawk Series controllers, but can now run on Linux computers and other hardware. You should select a board that suits the physical constraints of your vehicle, the activities you wish to perform, and of course cost.
For more information see: Flight Controller Selection.
PX4 uses sensors to determine vehicle state (needed for stabilization and to enable autonomous control). The system minimally requires a gyroscope, accelerometer, magnetometer (compass) and barometer. A GPS or other positioning system is needed to enable all automatic modes, and some assisted modes. Fixed wing and VTOL-vehicles should additionally include an airspeed sensor (very highly recommended).
For more information see:
Many PX4 drones use brushless motors that are driven by the flight controller via an Electronic Speed Controller (ESC) (the ESC converts a signal from the flight controller to an appropriate level of power delivered to the motor).
For information about what ESC/Motors are supported by PX4 see:
PX4 drones are mostly commonly powered from Lithium-Polymer (LiPo) batteries. The battery is typically connected to the system using a Power Module or Power Management Board, which provide separate power for the flight controller and to the ESCs (for the motors).
A Radio Control (RC) system is used to manually control the vehicle. It consists of a remote control unit that uses a transmitter to communicate stick/control positions with a receiver based on the vehicle. Some RC systems can additionally receive telemetry information back from the autopilot.
PX4 does not require a remote control system for autonomous flight modes.
RC System Selection explains how to choose an RC system. Other related topics include:
- Radio/Remote Control Setup - Remote control configuration in QGroundControl.
- Flying 101 - Learn how to fly with a remote control.
- FrSky Telemetry - Set up the RC transmitter to receive telemetry/status updates from PX4.
Data/Telemetry Radios can provide a wireless MAVLink connection between a ground control station like QGroundControl and a vehicle running PX4. This makes it possible to tune parameters while a vehicle is in flight, inspect telemetry in real-time, change a mission on the fly, etc.
PX4 can be controlled from a separate on-vehicle companion computer via a serial cable or wifi. The companion computer will usually communicate using a MAVLink API like the Dronecode SDK or MAVROS.
Using a Robotics API requires software development skills, and is outside the scope of this guide.
- Off-board Mode - Flight mode for offboard control of PX4 from a GCS or companion computer.
- Robotics APIs (PX4 Developer Guide)
PX4 uses SD memory cards for storing flight logs (SD support may not be present on every flight controller).
The maximum supported SD card size on Pixhawk boards is 32GB.
A number of recommended cards are listed in: Developer Guide > Logging
Flight modes provide different types/levels of vehicle automation and autopilot assistance to the user (pilot). Autonomous modes are fully controlled by the autopilot, and require no pilot/remote control input. These are used, for example, to automate common tasks like takeoff, returning to the home position, and landing. Other autonomous modes execute pre-programmed missions, follow a GPS beacon, or accept commands from an offboard computer or ground station.
Manual modes are controlled by the user (via the RC control sticks/joystick) with assistance from the autopilot. Different manual modes enable different flight characteristics - for example, some modes enable acrobatic tricks, while others are impossible to flip and will hold position/course against wind.
Not all flight modes are available on all vehicle types, and some modes can only be used when specific conditions have been met (e.g. many modes require a global position estimate).
PX4 has configurable failsafe systems to protect and recover your vehicle if something goes wrong! These allow you to specify areas and conditions under which you can safely fly, and the action that will be performed if a failsafe is triggered (for example, landing, holding position, or returning to a specified point).
You can only specify the action for the first failsafe event. Once a failsafe occurs the system will enter special handling code, such that subsequent failsafe triggers are managed by separate system level and vehicle specific code.
The main failsafe areas are listed below:
- Low Battery
- Remote Control (RC) Loss
- Position Loss (global position estimate quality is too low).
- Offboard Loss (e.g. lose connection to companion computer)
- Data Link Loss (e.g. lose telemetry connection to GCS).
- Geofence Breach (restrict vehicle to flight within a virtual cylinder).
- Mission Failsafe (prevent a previous mission being run at a new takeoff location).
- Traffic avoidance (triggered by transponder data from e.g. ADSB transponders).
For more information see: Safety (Basic Configuration).
All the vehicles, boats and aircraft have a heading direction or an orientation based on their forward motion.
It is important to know the vehicle heading direction in order to align the autopilot with the vehicle vector of movement. Multicopters have a heading even when they are symmetrical from all sides! Usually manufacturers use a colored props or colored arms to indicate the heading.
In our illustrations we will use red coloring for the front propellers of multicopter to show heading.
You can read in depth about heading in Flight Controller Orientation