UAVCAN

Lightweight open vehicle bus standard for aerospace and robotic applications.

Zubax Robotics is the main developer and maintainer of UAVCAN – an open data bus standard designed for aerospace and robotic applications.

UAVCAN is an integral part of the Dronecode core infrastructure (the Dronecode project is maintained by The Linux Foundation) and is used by numerous vendors and companies all over the world.

Learn more from the official website at uavcan.org.

Features

  • Democratic network – no bus master, no single point of failure.
  • Publish/subscribe and request/response (RPC) data 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.
  • Supports dual and triply modular redundant transports.
  • Supports high-precision network-wide time synchronization.
  • The specification and high quality reference implementations in popular programming languages are free, open source, and available for commercial use (MIT license).

Software libraries

  • Libuavcan - full-featured, highly robust implementation in C++ for embedded systems and Linux.
  • Libcanard - lightweight implementation in C for deeply embedded systems.
  • Pyuavcan - general-purpose, easy to use Python implementation.
  • Uavcan.rs - highly robust multipurpose implementation in the Rust programming language.

Application domains

  • Manned and unmanned aircraft.
  • Spacecraft.
  • Robots.

Related announcements and discussions

Data type versioning in 1.0

Hi! I was reading Simpler and better DSDL versioning and Specification 1.0 and I am not sure I understand how the different versions are handled in API… Will each version of a type be sent as seperate message, and in turn, the application needs to handle multiple services/subscriptions (one for eac…

DSDL documentation comments

While working on the DSDL specification and its parser, I briefly pondered about automatic extraction of doc comments from DSDL definitions to facilitate automatic documentation of generated code. Currently, our code generators have no way of obtaining relevant comments from DSDL descriptions becaus…

Why DB9 male on the device?

Hi! It’s really interesting why UAVCAN uses male DB9 connector on the device and not on cable side? There are few downsides of this decision: Short circuit on power source devices is possible when using male connector if something goes to the connector. Pins can be damaged and it will be harder, t…

Failure on GUI Start Due to Incorrect Search Path for .uavcan Files

I specified a custom .uavcan file when starting the app. I’m starting off with this Line 31 of the uavcan dsdl file references a type uavcan.olliw.uc4h.DistanceSensorProperties[<=1] sensor_property # made an array so that it is optional that is defined in a file alongside that uavcan file in …

Yukon UI & Rest API

I just opened Project foundation structure #2 It’s basically a vue cli with some minor changes. I just finished having strong typed ApiRoutes and AppRoutes as well as some basic axios config, but it’s not ready for pushing yet – we need to finalise some UI and backend decisions before I start adding…

Zubax babel schematic and hardware init for libcanard

Hi, I am trying to run libcanard on the zubax babel board. I couldn’t find a schematic anywhere to show what the crystal is and pin connections to the stm32. I am trying to use cubemx to set up a project so I need to know what the xtal frequency is and pins connceted. I also need to know what t…

Firmware update via GUI tool

Hi! I am testing the performance during firmware download between GUI tool and node, using different bus speeds. On node side , I am using the Updatee code snippet and testing multiple timer intervals of the periodic timer. Even if I reduce the file.Read periodic timer on node side to very short, I…

GUI Is Not Populating Node Info

When I open the Node Properties for a given node, the UAVCAN GUI Tool isn’t populating the Node info. This is for jDrones nodes running UC4H firmware. Node_Properties__59__and_UAVCAN_GUI_Tool.png685x947 144 KB Also, if the Online Nodes list supposed to flash nodes in and out? They don’t stay in t…

Myxa integration with ArduPLANE via UAVCAN

I am currently attempting to take advantage of one of the first consumer-available FOC controllers (Zubax Myxa) on vehicles powered by Arduplane. Although there are numerous interface options available, I have chosen CAN for its advantages in monitoring battery and ESC status. There are a few issues…

Proposed new UAVCAN repo and pypi distribution

While wiring up hpp generation in my branch of libuavcan I kept trying to keep the repo focused on the c++ source but ended up writing as much build logic and configuration to manage the python “dsdl_compiler”. Because of this I’m now convinced that the best design for libuavcan and for the UAVCAN …