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.

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.

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.

Recent discussions

UAVCAN v1.0 and ArduPilot
UAVCAN v1.0 and ArduPilot
Nov 11 17 posts
CanardRxTransfer payload reading?
CanardRxTransfer payload reading?
Nov 11 32 posts
PyUAVCAN in Jupyter
PyUAVCAN in Jupyter
Nov 10 1 posts
GUI Tool – Next Generation
GUI Tool – Next Generation
Nov 10 37 posts
Introducing AP_Periph - easy UAVCAN firmware creation
Introducing AP_Periph - easy UAVCAN firmware creation
Nov 09 4 posts
Weekly dev call
Weekly dev call
Nov 09 30 posts
Is Yukon for software developers or system engineers?
Is Yukon for software developers or system engineers?
Nov 07 2 posts
Supporting UAVCAN v1 in PX4 v1.11
Supporting UAVCAN v1 in PX4 v1.11
Nov 07 9 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
Nov 07 31 posts
Weekly dev call - Meeting notes
Weekly dev call - Meeting notes
Nov 06 23 posts
Jani Hirvinen's talk on UAVCAN at the ArduPilot Developer Conference in China
Jani Hirvinen's talk on UAVCAN at the ArduPilot Developer Conference in China
Nov 04 1 posts
UAVCAN 2019 roadmap
UAVCAN 2019 roadmap
Oct 29 3 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
Oct 21 9 posts
Static deque for CANFD ISR buffer
Static deque for CANFD ISR buffer
Oct 18 4 posts
The Wikipedia article about UAVCAN
The Wikipedia article about UAVCAN
Oct 16 1 posts

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

Development activity

pavel-kirienko opened an issue “Data type extensibility” at UAVCAN/specification
Nov 11
pavel-kirienko opened an issue “Formal mechanism for migrating a message definition between namespaces (renaming)” at UAVCAN/specification
Nov 11
thirtytwobits created a new branch “feature/91” at UAVCAN/nunavut
Nov 11
pavel-kirienko opened an issue “tox?” at UAVCAN/pyuavcan
Nov 10
pavel-kirienko created a new tag “0.5.0” at UAVCAN/pyuavcan
Nov 10
pavel-kirienko closed a pull request “Store DSDL-generated packages in the local directory by default” at UAVCAN/pyuavcan
Nov 10
pavel-kirienko opened a pull request “Store DSDL-generated packages in the local directory by default” at UAVCAN/pyuavcan
Nov 10
pavel-kirienko created a new branch “local-dsdl-gen-pkg” at UAVCAN/pyuavcan
Nov 10
pavel-kirienko closed a pull request “Default DSDL-generated package directory path” at UAVCAN/pyuavcan
Nov 10
pavel-kirienko opened a pull request “Default DSDL-generated package directory path” at UAVCAN/pyuavcan
Nov 10
pavel-kirienko created a new branch “default-dsdl-generated-package-dir” at UAVCAN/pyuavcan
Nov 10
eckel-formlabs forked UAVCAN/libuavcan_linux
Nov 08
pavel-kirienko opened an issue “Allow different data types under the same port-ID as long as they are semantically compatible and mutually bit-compatible” at UAVCAN/specification
Nov 08
davids5 created a new branch “master_nuttx_8.1” at UAVCAN/libuavcan_kinetis
Nov 06
thirtytwobits opened a pull request “Progress on #91” at UAVCAN/nunavut
Nov 06