# PX4 System Architecture

The sections below provide high-level overview of the PX4 hardware and software stack for two "typical" PX4 systems; one that has just a flight controller, and another that has a flight controller and a companion computer (also known as a "mission computer").

Note

The PX4 Architectural Overview provides information about the flight stack and middleware. Offboard APIs are covered in ROS and MAVSDK (opens new window).

# Flight Controller (only)

The diagram below provides a high level overview of a typical "simple" PX4 system based around a flight controller.

PX4 architecture - FC only system

The hardware consists of

  • Flight controller (running the PX4 flight stack). This often includes internal IMUs, compass and barometer.
  • Motor ESCs connected to PWM outputs, DroneCAN (DroneCAN allows two-way communication, not single direction as shown) or some other bus.
  • Sensors (GPS, compass, distance sensors, barometers, optical flow, barometers, ADSB transponders, etc.) connected via I2C, SPI, CAN, UART etc.
  • Camera or other payload. Cameras can be connected to PWM outputs or via MAVLink.
  • Telemetry radios for connecting to a ground station computer/software.
  • RC Control System for manual control

The left hand side of the diagram shows the software stack, which is horizontally aligned (approximately) with the hardware parts of the diagram.

# FC and Companion Computer

The diagram below shows a PX4 system that includes both a flight controller and a companion computer (here referred to as a "mission computer").

PX4 architecture - FC + Companion Computer

The flight controller runs the normal PX4 flight stack, while a companion computer provides advanced features like object avoidance and collision prevention. The two systems are connected using a fast serial or IP link, and typically communicate using the MAVLink protocol (opens new window). Communications with the ground stations and the cloud are usually routed via the companion computer (e.g. using the MAVLink Router (opens new window) (from Intel)).

PX4 systems typically run a Linux OS on the companion computer (because the PX4/PX4-Avoidance (opens new window) project delivers ROS-based avoidance libraries designed for Linux). Linux is a much better platform for "general" software development than NuttX; there are many more Linux developers and a lot of useful software has already been written (e.g. for computer vision, communications, cloud integrations, hardware drivers). Companion computers sometimes run Android for the same reason.

Note

The diagram shows a cloud or ground station connection via LTE, an approach that has been used a number of PX4-based systems. PX4 does not deliver software specifically for LTE and/or cloud integration (this requires custom development).