# Companion Computers

Companion computers ("mission computers"), are separate on-vehicle computers that are connected to the flight controller, and which enable computationally expensive features like object avoidance and collision prevention.

The diagram below shows a possible architecture for an unmanned vehicle architecture that includes a flight controller and companion computer.

PX4 architecture - FC + Companion Computer

The flight controller runs PX4 on NuttX, and provides core flight and safety code. The companion computer usually runs Linux, as this is a much better platform for "general" software development. They are connected using a fast serial or Ethernet link, and typically communicate using the MAVLink protocol (opens new window) or microDDS.

Communications with the ground stations and the cloud are usually routed via the companion computer (e.g. using the MAVLink Router (opens new window)).

# Integrated Companion/Flight Controller Boards

Controller boards that come with a pre-integrated companion computer and flight controller can significantly ease both software and hardware setup. In some cases the boards are set up to allow easy replacement of flight controller and/or companion computer parts.

The following boards are known to provide a good integration with PX4:

# Supported Companion Computers

PX4 can be used with computers that can be configured to communicate via MAVLink or microROS/microDDS over over a serial port (or Ethernet port, if present).

A small subset of possible alternatives are listed below:

  • Raspberry Pi
  • Odroid
  • Tegra K1

Note

The choice of computer will depend on the usual tradeoffs: cost, weight, power consumption, ease of setup, and computational resources required.

# Companion Computer Software

The companion computer needs to run software that communicates with the flight controller, and which routes traffic to ground stations and the cloud.

# Drone Apps

Drone APIs and SDKs allow you to write software that can control PX4. Popular alternatives include:

MAVSDK is generally easier to learn and use, while ROS provides more pre-written software for advanced cases like computer vision. Drone APIs and SDKs > What API Should I Use? explains the different options in detail.

You can also write your own custom MAVLink libraries from scratch:

# Routers

You will need a router if you need to bridge MAVLink from the vehicle to a ground station or IP network, or if you need multiple connections:

# Ethernet Setup

Ethernet is the recommended connection, if supported by your flight controller. See Ethernet Setup for instructions.

# Flight Controller Specific Setup

The following topics explain how to set up companion computers for specific flight controllers, in particular when you are not using an Ethernet connection.

# Additional Information