UAVCAN Logo

Intravehicular communication

What is UAVCAN?

UAVCAN is an open lightweight protocol designed for reliable intravehicular communication in aerospace and robotic applications over CAN bus, Ethernet, and other robust transports. It is created to address the challenge of deterministic on-board data exchange between systems and components of next-generation intelligent vehicles: manned and unmanned aircraft, spacecraft, robots, and cars.

The name UAVCAN stands for Uncomplicated Application-level Vehicular Communication And Networking.

A quick introduction can be found in the UAVCAN Guide. Also have a look at the article "UAVCAN: a highly dependable publish-subscribe protocol for real-time intravehicular networking".

UAVCAN is a standard open to everyone, and it will always remain this way. No licensing or approval of any kind is necessary for its implementation, distribution, or use. Voluntary monetary donations are welcomed via Open Collective.

Features

How do I use UAVCAN?

First, read the UAVCAN Guide. To learn the technical implementation details, read the UAVCAN Specification. Familiarize yourself with the regulated DSDL repository. If you have questions or feedback, bring them to the forum.

Pick one of the free open source implementations (MIT licensed) for use in your application:

Name Transports Language Applications Status
Libcanard UAVCAN/CAN C11 Embedded Released
Pyuavcan Any Python HMI, scripting Released
Libuavcan Any C++11 Embedded Work-in-progress
uavcan.rs Any Rust Embedded Work-in-progress

None of the implementations suit your needs? Write your own! UAVCAN is a very simple protocol; an experienced developer can easily create a custom implementation from scratch to address the unique needs of their application.

The open source tools will help you design, develop, and maintain your UAVCAN-based application:

Please reference UAVCAN in scientific or technical publications.

Discussions and publications

UAVCAN v1 crash course
UAVCAN v1 crash course
Mar 11 3 posts
Viper Quadcopter
Viper Quadcopter
Jul 01 29 posts
UAVCAN/serial: issues with DMA friendliness and bandwidth overhead
UAVCAN/serial: issues with DMA friendliness and bandwidth overhead
Jun 29 33 posts
Alternative transport protocols
Alternative transport protocols
Jun 29 31 posts
The Rust library uavcan.rs is looking for a new maintainer
The Rust library uavcan.rs is looking for a new maintainer
Jun 20 15 posts
Automatic configuration of port identifiers
Automatic configuration of port identifiers
Jun 20 6 posts
ARK Electronics LLC is proud to be an adopter of UAVCAN v1.0
ARK Electronics LLC is proud to be an adopter of UAVCAN v1.0
Jun 12 1 posts
Yukon management thread
Yukon management thread
Jun 07 13 posts
Heartbeat frequency ( publication period )
Heartbeat frequency ( publication period )
Jun 05 2 posts
Data type extensibility and composition
Data type extensibility and composition
Jun 04 13 posts
On CAN cable impedance and RJ45 connectors
On CAN cable impedance and RJ45 connectors
May 30 6 posts
PR preparations for the upcoming UAVCAN v1.0 release: new website, new logo
PR preparations for the upcoming UAVCAN v1.0 release: new website, new logo
May 28 32 posts
PyDSDL/Nunavut Union offsets seem to be incorrect
PyDSDL/Nunavut Union offsets seem to be incorrect
May 27 3 posts
Libuavcan compatibility for ATSAMC21 family microcontroller
Libuavcan compatibility for ATSAMC21 family microcontroller
May 24 10 posts
Data type regulation policy and membership fees
Data type regulation policy and membership fees
May 21 28 posts

Join the forum to start a new discussion. Also, feel free to participate in the weekly dev call.

Development activity

akshayhareendran starred UAVCAN/nunavut
Jul 01
TSC21 opened a pull request “[WIP] General work for SOW #2” at UAVCAN/Yukon
Jun 29
TSC21 created a new branch “yukon_dev” at UAVCAN/Yukon
Jun 29
timokroeger opened an issue “Feedback message handler only called 32 times (SocketCAN)” at UAVCAN/pyuavcan
Jun 28
huangguojun starred UAVCAN/libcanard
Jun 28
Eitaroh starred UAVCAN/platform_specific_components
Jun 26
Eitaroh starred UAVCAN/public_regulated_data_types
Jun 26
Eitaroh starred UAVCAN/specification
Jun 26
Eitaroh starred UAVCAN/gui_tool
Jun 26
thirtytwobits closed a pull request “Fixing bit order for example in section 3.8.3.4” at UAVCAN/specification
Jun 26
thirtytwobits opened a pull request “Fixing bit order for example in section 3.8.3.4” at UAVCAN/specification
Jun 24
timokroeger starred UAVCAN/platform_specific_components
Jun 23
pavel-kirienko closed a pull request “Work In Progress: Finally fix CI” at UAVCAN/Yukon
Jun 22
AlanXueCN forked UAVCAN/uavcan.org
Jun 22
GKbytes forked UAVCAN/libcanard
Jun 20