UAVCAN is an onboard network which allows the autopilot to connect to avionics. It supports hardware like:
- Airspeed sensors
- GNSS receivers for GPS and GLONASS
In contrast to hobby-grade devices it uses rugged, differential signalling and supports firmware upgrades over the bus. All motor controllers provide status feedback and implement field-oriented-control (FOC).
The following instructions provide a step-by-step guide to connect and setup a quadcopter with ESCs and GPS connected via UAVCAN. The hardware of choice is a Pixhawk 2.1, Zubax Orel 20 ESCs and a Zubax GNSS GPS module.
The first step is to connect all UAVCAN enabled devices with the flight controller. The following diagram displays how to wire all components. The used Zubax devices all support a redundant CAN interface in which the second bus is optional but increases the robustness of the connection.
It is important to mention that some devices require an external power supply (e.g. Zubax Orel 20) and others can be powered by the CAN connection (e.g Zubax GNSS) itself. Please refer to the documentation of your hardware before continuing with the setup.
Next, follow the instructions in UAVCAN Configuration to activate the UAVCAN functionalities in the firmware. Disconnect your power supply and reconnect it. After the power cycle all UAVCAN devices should be detected which is confirmed by a beeping motor on the Orel 20 ESCs. You can now continue with the general setup and calibration.
Depending on the used hardware, it can be reasonable to perform an update of the firmware on the UAVCAN devices. This can be done via the UAVCAN itself and the PX4 firmware. For more details please refer to the instructions in UAVCAN Firmware.
The PX4 middleware will automatically upgrade firmware on UAVCAN nodes if the matching firmware is supplied. The process and requirements are described on the UAVCAN Firmware page.
The ID and rotational direction of each motor controller can be assigned after installation in a simple setup routine: UAVCAN Node Enumeration. The routine can be started by the user through QGroundControl.