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 Computing 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

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
Futaba Corporation
Hitec Commercial Solutions
Holybro
LXRobotics
NXP Semiconductors
Zubax Robotics

Discussions and publications

Libcanard: Examples, Starters, Tutorials
Libcanard: Examples, Starters, Tutorials
Sep 23 5 posts
Unknown directive 'sealed' error when trying to generate from DSDL
Unknown directive 'sealed' error when trying to generate from DSDL
Oct 20 11 posts
Libcanard for UAVCAN/CAN v1 is released
Libcanard for UAVCAN/CAN v1 is released
Oct 20 19 posts
Problem at canardTxPush()
Problem at canardTxPush()
Oct 20 2 posts
Publish request and single frame message
Publish request and single frame message
Oct 19 3 posts
DS-015 MVP progress tracking
DS-015 MVP progress tracking
Oct 19 8 posts
Standard data type inside a custom one
Standard data type inside a custom one
Oct 18 2 posts
UAVCAN Specification v1.0-beta is available
UAVCAN Specification v1.0-beta is available
Oct 16 1 posts
Data type extensibility and composition
Data type extensibility and composition
Oct 16 20 posts
UAVCAN/serial: issues with DMA friendliness and bandwidth overhead
UAVCAN/serial: issues with DMA friendliness and bandwidth overhead
Oct 10 49 posts
UAVCAN v1.x and CAN XL
UAVCAN v1.x and CAN XL
Oct 04 3 posts
Arduino UAVCAN Library
Arduino UAVCAN Library
Oct 02 7 posts
Libcanard v1 STM32 driver design guidelines
Libcanard v1 STM32 driver design guidelines
Sep 30 4 posts
The Rust library uavcan.rs is looking for a new maintainer
The Rust library uavcan.rs is looking for a new maintainer
Sep 30 28 posts
On multi-agent services and design guidelines
On multi-agent services and design guidelines
Sep 29 9 posts

Development activity

pavel-kirienko opened a pull request “[DS-015] Air data computer” at UAVCAN/public_regulated_data_types
Oct 20
pavel-kirienko closed a pull request “Provide explicit @extent everywhere to silence diagnostics from PyDSDL” at UAVCAN/public_regulated_data_types
Oct 20
pavel-kirienko closed a pull request “Update README to avoid confusion regarding v0/v1 compatibility” at UAVCAN/gui_tool
Oct 20
pavel-kirienko closed an issue “uavcan V1 compatible ?” at UAVCAN/gui_tool
Oct 20
pavel-kirienko opened a pull request “Update README to avoid confusion regarding v0/v1 compatibility” at UAVCAN/gui_tool
Oct 20
pavel-kirienko created a new branch “46” at UAVCAN/gui_tool
Oct 20
pat1 opened an issue “uavcan V1 compatible ?” at UAVCAN/gui_tool
Oct 20
pavel-kirienko opened an issue “Support delimited serialization” at UAVCAN/nunavut
Oct 19
pavel-kirienko opened a pull request “Provide explicit @extent everywhere to silence diagnostics from PyDSDL” at UAVCAN/public_regulated_data_types
Oct 19
pavel-kirienko created a new branch “silence-diagnostics” at UAVCAN/public_regulated_data_types
Oct 19
pavel-kirienko created a new tag “1.6.5” at UAVCAN/pydsdl
Oct 18
pavel-kirienko created a new branch “propagate-errors” at UAVCAN/pydsdl
Oct 18
pavel-kirienko opened an issue “Tests fail with PyTest v5.x” at UAVCAN/nunavut
Oct 17
pavel-kirienko reopened an issue “Tests fail with PyTest v5.x” at UAVCAN/pyuavcan
Oct 17
pavel-kirienko created a new tag “1.6.4” at UAVCAN/pydsdl
Oct 17