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 high-level overview of the protocol is provided in 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 official UAVCAN specification document and familiarize yourself with the regulated DSDL repository. If you have questions or feedback, bring them to the discussion forum.

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

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:

The old version of the website is still available for historical reasons, but it will be taken down eventually. It contains an older, pre-release edition of the specification and documentation entries that are now obsolete.

Discussions and publications

UAVCAN 2019 roadmap
UAVCAN 2019 roadmap
Nov 14 3 posts
UAVCAN: a highly dependable publish-subscribe protocol for real-time intravehicular networking
UAVCAN: a highly dependable publish-subscribe protocol for real-time intravehicular networking
Jul 03 6 posts
Self-Doubt and Last Chances
Self-Doubt and Last Chances
Feb 19 2 posts
How can I get the official translation license?
How can I get the official translation license?
Feb 19 7 posts
UAVCAN survey 2019
UAVCAN survey 2019
Feb 14 3 posts
YAGNI, KISS, and @union
YAGNI, KISS, and @union
Feb 13 5 posts
SocketCAN API on a RTOS
SocketCAN API on a RTOS
Feb 12 5 posts
Introducing AP_Periph - easy UAVCAN firmware creation
Introducing AP_Periph - easy UAVCAN firmware creation
Feb 11 5 posts
Uavcan Service call response request is empty except for the boolean fields
Uavcan Service call response request is empty except for the boolean fields
Feb 10 6 posts
Uavcan compatible bootloader for stm32
Uavcan compatible bootloader for stm32
Feb 09 2 posts
Data type regulation policy and membership fees
Data type regulation policy and membership fees
Feb 05 17 posts
Future Proposal: Featherweight Profile
Future Proposal: Featherweight Profile
Feb 04 4 posts
Proposed change to variable-length arrays
Proposed change to variable-length arrays
Feb 04 6 posts
Big-endian vs. little-endian in the context of bit-level encoding
Big-endian vs. little-endian in the context of bit-level encoding
Feb 03 16 posts
O1heap -- constant-complexity real-time memory manager
O1heap -- constant-complexity real-time memory manager
Feb 02 2 posts

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

Development activity

jxltom starred UAVCAN/nunavut
Feb 19
jxltom opened an issue “Missing libuavcan_dsdlc in v1.0” at UAVCAN/libuavcan
Feb 19
pavel-kirienko created a new tag “0.6.2” at UAVCAN/pyuavcan
Feb 19
pavel-kirienko opened an issue “Task was destroyed but it is pending!” at UAVCAN/pyuavcan
Feb 19
thirtytwobits closed a pull request “Fix typo in modules.rst” at UAVCAN/nunavut
Feb 19
pavel-kirienko opened an issue “Tests fail with PyTest v5.x” at UAVCAN/pyuavcan
Feb 19
pavel-kirienko opened a pull request “Fix typo in modules.rst” at UAVCAN/nunavut
Feb 19
pavel-kirienko created a new branch “pavel-kirienko-patch-1” at UAVCAN/nunavut
Feb 19
thirtytwobits opened an issue “Integrate Nunavut generated types and support code.” at UAVCAN/libuavcan
Feb 18
thirtytwobits closed an issue “Build Nunavut templates for v1 types.” at UAVCAN/libuavcan
Feb 18
pavel-kirienko created a new branch “serial-single-frame” at UAVCAN/pyuavcan
Feb 18
Auterion forked UAVCAN/libuavcan
Feb 18
rationalthug starred UAVCAN/Yukon
Feb 18
ljkkid forked UAVCAN/libcanard
Feb 17
jxltom starred UAVCAN/Yukon
Feb 17