UAVCAN

Lightweight open vehicle bus standard for aerospace and robotic applications.

Zubax Robotics is the main developer and maintainer of UAVCAN – an open lightweight data bus standard designed for reliable intravehicular communication in aerospace and robotic applications via CAN bus, Ethernet, and other robust transports.

UAVCAN is used by numerous vendors and companies all over the world in various domains including manned and unmanned aircraft, spacecraft, micromobility, and even racing cars. Learn more from the official website at uavcan.org.

Zubax Robotics provides commercial support and consulting services for UAVCAN.

Features

  • Democratic network – no bus master, no single point of failure.
  • Publish/subscribe and request/response (RPC) exchange semantics.
  • Efficient exchange of large data structures with automatic decomposition and reassembly.
  • Lightweight, deterministic, easy to implement, and easy to validate.
  • Suitable for deeply embedded, resource constrained, hard real-time systems.
  • Specialized interface description language provides rich zero-cost data type and interface abstractions.
  • Usable with different transport protocols.
  • Supports dual and triply modular redundant transports.
  • Supports high-precision network-wide time synchronization.
  • High-quality open source reference implementations are freely available under the MIT license.

Related announcements and discussions

Komar Mitochondrik UAVCAN Integration

I feel like I have read almost every post on this forum, but I cannot find any in depth answers, especially regarding the Komar Mitichondrik. I have tried to integrate the Komar Mitochondrik motor controllers on my craft for a few weeks now. I am using UAVCAN for my communication protocol. I have ha…

Issues with flashing Zubax Babel & UAVCAN GUI Tool

Hello, I recently got a zubax babel, I am trying to flash firmware on to it, to make it usable. OS on my computer is Ubuntu 18.04, I have been following instructions on: https://github.com/Zubax/zubax_babel And the flashing process seems to be going on forever. I have this message saying "Ymodem s…

ARK Electronics LLC is proud to be an adopter of UAVCAN v1.0

…for reliable smart battery and sensor node communication. See their blog post at arkelectron.com/uavcan-adoption…

UAVCAN/serial: issues with DMA friendliness and bandwidth overhead

Hi @pavel.kirienko and the forum, I’m posting this in the hope to better understand which requirements are the central to the use case UAVCAN/serial attempts to address. Because while the UAVCAN ecosystem has the potential to become something amazing, the issues below would either keep me away from…

On CAN cable impedance and RJ45 connectors

Hi all, I recently stumbled upon this project and I love the work you’re doing here. I just performed my first read-through of the UAVCAN Standard V1.0-alpha, so I might not fully grasp all the details (yet). Anyway, one thing I noticed is that there’s no mention of the required cable impedance in t…

Automatic configuration of port identifiers

A UAVCAN port (subject or service) is conceptually similar to a topic in DDS/ROS. Ports identify the meaning (semantics) of data within a particular system while its type identifies its structure (syntax). Semantics and syntax are orthogonal concepts and they are modeled as such in UAVCAN. In some …

Long char messages

Hi how can I send 8-byte or longer char strings?? ie: SYSTEM TEST 1 OK This message is sent from the system to the DIGITAL FUEL DISPLAY the display is composed of 2 x 8 smart LED display hdps-2111 which can be addressed separately. I can address all eight displays separately. So maybe: displa…

Featured adopters on the front page

We are going to add a new section on the homepage at uavcan.org titled “Featured adopters”. It will contain logos of companies and projects that leverage UAVCAN. If you would like your company or project to be featured, please PM me or reply here. Tracking issue: github.com/UAVCAN/uavcan.o…

Viper Quadcopter

Good morning everyone I’m part of a small group which is working on building a Arduino MKR Vidor 4000 based quadcopter flight controller with all the features found in state-of-the art quadcopter designs making resourceful use of all components (MCU, FPGA, WiFi NINA, …) located on the Vidor 400…

V0 and v1 coexist

Hi! I read that the toggle bit can be used to distinguish v0 and v1 of the protocol. Will there be an API support for this in libuavcan/libcanard? Or will it be up to user to develop their own transport layer decoding mechanism to route v0 and v1 messages to v0/v1 stacks and further up to the a…