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 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. Voluntary monetary donations are welcomed via Open Collective.

Features

How do I use UAVCAN?

First, read the Guide. To learn the technical details, read the 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:

Library 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.

Featured adopters

ARK Electronics
Auterion AG
CUAV
Dronecode Foundation
Hitec Commercial Solutions
Holybro
LXRobotics
NXP Semiconductors
Zubax Robotics

Discussions and publications

The UAVCAN Guide
The UAVCAN Guide
Aug 01 5 posts
Arduino UAVCAN Library
Arduino UAVCAN Library
Aug 13 3 posts
Using Pyuavcan on Windows
Using Pyuavcan on Windows
Aug 12 28 posts
ADSB_Vehicle not showing up in px4/qgroundcontrol
ADSB_Vehicle not showing up in px4/qgroundcontrol
Aug 12 2 posts
How can i use libuavcan
How can i use libuavcan
Aug 12 2 posts
Question on adapting UAVCAN in PX4
Question on adapting UAVCAN in PX4
Aug 07 2 posts
Nunavut Filters
Nunavut Filters
Aug 07 10 posts
DSDL compilation error
DSDL compilation error
Aug 06 6 posts
Call and pub commands in basic usage demo
Call and pub commands in basic usage demo
Aug 06 9 posts
The Rust library uavcan.rs is looking for a new maintainer
The Rust library uavcan.rs is looking for a new maintainer
Aug 05 27 posts
UAVCAN v1.0 and ArduPilot
UAVCAN v1.0 and ArduPilot
Jul 30 29 posts
Removal of the physical layer specification
Removal of the physical layer specification
Jul 30 2 posts
Choosing Message and Service IDs
Choosing Message and Service IDs
Jul 29 4 posts
Alternative transport protocols in UAVCAN
Alternative transport protocols in UAVCAN
Jul 29 44 posts
A lengthy article about the origins of UAVCAN in Russian
A lengthy article about the origins of UAVCAN in Russian
Jul 28 1 posts

Development activity

Polarisru opened a pull request “python-can support implemented” at UAVCAN/pyuavcan
Aug 13
subakioinc forked UAVCAN/gui_tool
Aug 13
LittleBigQi forked UAVCAN/gui_tool
Aug 13
Polarisru forked UAVCAN/pyuavcan
Aug 13
pavel-kirienko created a new branch “beta” at UAVCAN/pydsdl
Aug 13
thirtytwobits closed an issue “Add templatized support header generation” at UAVCAN/nunavut
Aug 12
thirtytwobits closed a pull request “Adding support header templates ” at UAVCAN/nunavut
Aug 12
thirtytwobits opened a pull request “Adding support header templates ” at UAVCAN/nunavut
Aug 10
Autofoxsys starred UAVCAN/libuavcan
Aug 10
thirtytwobits closed a pull request “Adding support for language options” at UAVCAN/nunavut
Aug 08
thirtytwobits closed an issue “Add language options concept” at UAVCAN/nunavut
Aug 08
Pakinwet starred UAVCAN/Yukon
Aug 08
zhang1116quan starred UAVCAN/pydsdl
Aug 07
thirtytwobits opened a pull request “Adding support for language options” at UAVCAN/nunavut
Aug 06
pavel-kirienko opened an issue “Nunavut-related regression” at UAVCAN/pyuavcan
Aug 06