From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

UAVCAN is a lightweight protocol designed for reliable communication in aerospace and robotic applications via CAN bus.[1]


Main features of UAVCAN are:

  • Democratic network - no single point of failure.
  • Publish/subscribe or request/response exchange semantics.
  • Allows efficient exchange of large data structures.
  • Lightweight, easy to implement protocol.
  • Supports network-wide time synchronization with microsecond precision.
  • Doubly- or triply- redundant CAN bus.
  • Can be used in deeply embedded, resource constrained, hard real-time systems.
  • The specification and high quality reference implementations are open and free to use (MIT License).

Core design goals[edit]

  • Democratic network - There should be no master node. All nodes in the network should have the same communication rights so that there is no single point of failure.
  • Nodes can exchange long payloads - Nodes must be provided with a simple way to exchange large data structures that cannot fit into a single CAN frame (such as GNSS solutions, 3D vectors, etc.). UAVCAN should perform automatic transfer decomposition and reassembly at the protocol level, hiding the related complexity from the application.
  • Support for redundant interfaces and redundant nodes - This is a common requirement for safety-concerned applications.
  • High throughput, low latency communication - Applications that are dependent on high-frequency, hard real-time control loops, require a low-latency, high-throughput communication method.
  • Simple logic, low computational requirements - UAVCAN targets a wide variety of embedded systems, from high-performance embedded on-board computers for intensive data processing (e.g., a high-performance Linux-powered machine) to extremely resource-constrained microcontrollers. The latter imposes severe restrictions on the amount of logic needed to implement the protocol.
  • Common high-level functions should be clearly defined - UAVCAN defines standard services and messages for common high-level functions, such as network discovery, node configuration, node firmware update, node status monitoring (which naturally grows into a vehicle-wide health monitoring), network-wide time synchronization, dynamic node ID allocation (a.k.a. plug-and-play), etc.
  • Open specification and reference implementation - The UAVCAN specification is open and freely available; the reference implementations are distributed under the terms of the MIT License.

Specification update and approval process[edit]

The UAVCAN development team is charged with advancing the specification based on input from adopters. This feedback is gathered via the mailing list, which is open to everyone.

The set of standard data definitions is one of the cornerstone concepts of the specification (see data structure description language (DSDL)). Within the same major version, the specification can be extended only in the following ways:

  • A new data type can be added, possibly with default data type ID, as long as the default data type ID doesn’t conflict with one of the existing data types.
  • An existing data type can be declared deprecated.
  • Once declared deprecated, the data type will be maintained for at least two more years. After this period its default data type ID may be reused for an incompatible data type.
  • Deprecation will be announced via the mailing list, and indicated in the form of a comment within the DSDL definition.

External links[edit]


  1. ^ "About UAVCAN". Retrieved 15 July 2017.