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

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…

UAVCAN v1 crash course

One of the core design principles of UAVCAN is simplicity. That means two things: the protocol is constructed in a straightforward way and it is trivial to apply. We believe that this goal is achieved by the current des…

HMC5883L Magnetometer publish

Hello. I am working on libcanard using HMC5883L and stm32f103 bluepill board following babel tutorial. My doubt is regards Calibration on mag sensor. Should i do calibration inside my code and publish the calibrated mag field strength ? or should i just need to send the raw value which is mult…

Architectural guidance around UAVCAN Gateway

The following is a cross-post from Libuavcan issue #299 posted by Janaka S.: Hi All, We are in the process of trying to utilise UAVCAN on a medium size research instrument. Our scope of work does not allow us to change the Hardware or the System architecture of the instrument. We want to implem…

Platform-specific components

So I decided to move platform-specific code away from the Libcanard repository, as was planned since long ago. I cast my gaze upon our GitHub organization and saw much clutter. Of the 22 repositories, 5 are dedicated to the platform-specific components of Libuavcan. If we are to continue the same po…

Referencing the UAVCAN project in publications

Please, cite UAVCAN in scientific or technical publications. BibTeX @misc{UAVCAN, abstract = {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 addres…

What should our logging format be?

I long for a logging format in the specification. The requirements for a logging format: Self-describing – We want a way to persist data without needed external links to message definitions. Storage Efficient – The format must be optimized allow huge datasets to occupy reasonable amounts of file …

Looking for a way to record CAN log to file (UAVCAN GUI app)

Is there a way to record all received messages to a text file for later analysis, using UAVCAN GUI tool ? Ideally, in txt format as shown in bus monitor currently…

How can I get the official translation license?

Hello: In order to facilitate our small-scale communication, I have translated the UAVCAN specification into Chinese. I want to publish it on my github and blog. How can I get the official translation license? Or I can just post it for communication?…

SocketCAN API on a RTOS

This is a follow up to the SocketCAN proposal discussion for the NuttX RTOS. SocketCAN is allowing the CAN controllers to be addressed through the network socket layer (see wikipedia picture below - https://en.wikipedia.org/wiki/SocketCAN). The Nuttx architecture already supports the socket interfa…