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.

A high-level overview of the protocol is provided in the article "UAVCAN: a highly dependable publish-subscribe protocol for real-time intravehicular networking".

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 7 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
Which libuavcan branch for new project
Which libuavcan branch for new project
Dec 03 5 posts
Stack behavior if error_passive
Stack behavior if error_passive
Nov 29 1 posts
Weekly dev call - Meeting notes
Weekly dev call - Meeting notes
Nov 27 24 posts
CanardRxTransfer payload reading?
CanardRxTransfer payload reading?
Nov 25 38 posts
Wrong union tag size
Wrong union tag size
Nov 24 6 posts
Which ID for uavcan.equipment.actuator.Command
Which ID for uavcan.equipment.actuator.Command
Nov 22 2 posts
UAVCAN survey 2019
UAVCAN survey 2019
Nov 18 2 posts
The Rust library uavcan.rs is looking for a new maintainer
The Rust library uavcan.rs is looking for a new maintainer
Nov 17 1 posts
UAVCAN v1.0 and ArduPilot
UAVCAN v1.0 and ArduPilot
Nov 17 28 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

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

Development activity

Kreolis484 starred UAVCAN/libcanard
Dec 05
Kreolis484 forked UAVCAN/libcanard
Dec 05
justchain starred UAVCAN/libuavcan_stm32
Dec 04
UNIMOC-Universal-Motor-Control forked UAVCAN/libcanard
Dec 01
DevotionZhu forked UAVCAN/gui_tool
Nov 30
DevotionZhu forked UAVCAN/pyuavcan
Nov 30
ichiharas forked UAVCAN/public_regulated_data_types
Nov 28
manuksh starred UAVCAN/gui_tool
Nov 27
manuksh starred UAVCAN/specification
Nov 27
thirtytwobits opened a pull request “Issue #94 and progress on Issue #91” at UAVCAN/nunavut
Nov 26
Tecnologic starred UAVCAN/libuavcan_stm32
Nov 25
Tecnologic starred UAVCAN/libuavcan
Nov 25
pavel-kirienko closed an issue “How to Manually invoke the DSDL compiler ?” at UAVCAN/libuavcan_stm32
Nov 24
SSSnow opened an issue “How to Manually invoke the DSDL compiler ?” at UAVCAN/libuavcan_stm32
Nov 24
SSSnow forked UAVCAN/nunavut
Nov 24