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
Innopolis University
LXRobotics
NXP Semiconductors
Raccoon Lab
Zubax Robotics

Discussions and publications

The UAVCAN Guide
The UAVCAN Guide
Oct 30 5 posts
Arduino UAVCAN Library
Arduino UAVCAN Library
Dec 03 16 posts
Alternative transport protocols in UAVCAN
Alternative transport protocols in UAVCAN
Dec 01 45 posts
Automatic configuration of port identifiers
Automatic configuration of port identifiers
Nov 30 8 posts
DS-015 MVP progress tracking
DS-015 MVP progress tracking
Nov 27 21 posts
PermissionError with nnvg for cpp
PermissionError with nnvg for cpp
Nov 23 5 posts
Libcanard for UAVCAN/CAN v1 is released
Libcanard for UAVCAN/CAN v1 is released
Nov 23 23 posts
Pytest results for Python-CAN
Pytest results for Python-CAN
Nov 23 2 posts
Referencing the UAVCAN project in publications
Referencing the UAVCAN project in publications
Nov 23 1 posts
Is it possible redefine CANARD_INTERNAL to weak define to override allocateBloc and freeBlockke libcanard
Is it possible redefine CANARD_INTERNAL to weak define to override allocateBloc and freeBlockke libcanard
Nov 18 3 posts
PyUAVCAN v1.1.dev3 is available
PyUAVCAN v1.1.dev3 is available
Nov 16 3 posts
Uavcan gui tool over ethernet ip/udp
Uavcan gui tool over ethernet ip/udp
Nov 14 2 posts
Viper Quadcopter
Viper Quadcopter
Nov 13 44 posts
UAVCAN receiving files. Algorithm questions
UAVCAN receiving files. Algorithm questions
Nov 13 5 posts
Px4 uavcan v0 node id 128
Px4 uavcan v0 node id 128
Nov 11 2 posts

Development activity

pavel-kirienko opened an issue “Design issues with uavcan.metatransport” at UAVCAN/public_regulated_data_types
Dec 04
NanotokLLC forked UAVCAN/libcanard
Dec 03
thirtytwobits opened a pull request “Fix for #159” at UAVCAN/nunavut
Dec 03
thirtytwobits closed a pull request “Fix for #159” at UAVCAN/nunavut
Dec 03
pavel-kirienko created a new branch “multicast” at UAVCAN/pyuavcan
Dec 03
107-systems forked UAVCAN/public_regulated_data_types
Dec 03
Saaadat starred UAVCAN/libcanard
Dec 03
thirtytwobits opened a pull request “Fix for #159” at UAVCAN/nunavut
Dec 03
107-systems forked UAVCAN/public_regulated_data_types
Dec 02
thirtytwobits closed an issue “update jinja ahead of 1.0 release” at UAVCAN/nunavut
Nov 30
manmountain forked UAVCAN/public_regulated_data_types
Nov 29
clyde-johnston closed a pull request “Carousel: update images, styling, and text” at UAVCAN/uavcan.org
Nov 29
clyde-johnston closed a pull request “Add one paragraph to the front page” at UAVCAN/uavcan.org
Nov 29
edwinbalani opened a pull request “Use POSIX-style paths in #includes (fixes UAVCAN#129)” at UAVCAN/nunavut
Nov 29
edwinbalani forked UAVCAN/nunavut
Nov 29