In 2020, UAVCAN has reached stability. The preview Specification v1.0-alpha was released in January 2020, followed up by the stable v1.0-beta in October 2020. The final v1.0 release is expected around February 2020 or as soon as the first production systems based on this version of the protocol will start being deployed.
UAVCAN v1.0 is designed with scalability and long-term stability in mind. The practical experience with vehicular systems leveraging the prior, experimental version of the protocol (aka UAVCAN v0) accumulated over the last six years gives us confidence that v1 rests on a robust foundation. The background on the necessity of the breaking changes between v0 and v1 is given in the previous roadmap post.
Encounters with early adopters revealed the lack of documentation covering the topic of designing adequate UAVCAN-based data distribution systems. To address that, we have released The UAVCAN Guide and equipped it with an extensive chapter dedicated to the recommended practices of UAVCAN-based network service design and the basics of service-oriented architectures. The Guide will be evolving over time, expanding with UAVCAN-related knowledge and best practices according to the feedback we receive from the industry.
One persistent concern that was raised throughout the year was the greater application flexibility of UAVCAN v1 in comparison to v0. Early and prospective adopters expressed reservations about the lack of fixed identifiers assigned to data types, as was the case in v0. This question is discussed at length in the aforementioned Guide, whereas a highly condensed explanation can be found in the forum thread on Choosing Message and Service IDs. Adopting UAVCAN v1 might seem like a little paradigm shift to an engineer experienced with prior art vehicular computing technologies, but we perceive this as a necessary step to adapt to the growing sophistication of modern software-defined vehicles.
Even if the architecture of UAVCAN v1 may seem somewhat unorthodox now, our extensive experience with vehicular networking makes us confident that in the long-term perspective our design will prove successful.
Our partners at the Dronecode Foundation have released the first domain-specific standard based on UAVCAN v1 – the DS-015 UAVCAN Drone Standard, which is an application & physical layer specification for unmanned aerial vehicles based on UAVCAN. In the long term, we anticipate the appearance of other domain-specific standards based on UAVCAN developed by independent special interest groups (SIG):
We are pleased to see UAVCAN v1 being implemented in reusable software components by independent developers. There are three most prominent high-quality implementation libraries authored without affiliation with the core UAVCAN development team that deserve a mention:
We welcome any news on reusable third-party implementations of UAVCAN, so if you are working on one, please, register on the forum and let us know.
Our official libraries are on a stabilization streak this year:
Libcanard v1.0 (the C implementation) released in October 2020.
PyUAVCAN v1.1 (the Python implementation) released in December 2020 (PyUAVCAN skipped v1.0 for historical reasons involving a version number conflict with the old v0 implementation).
Nunavut v1.0 (the DSDL transcompiler) released in December 2020.
We are less pleased to report that some of the critical projects are falling behind the schedule. Specifically, Libuavcan (the official C++ implementation), Yukon (the UAVCAN IDE), and the formal standardization effort virtually did not advance this year due to the lack of resources and the COVID-19 pandemic forcing our contributors to readjust their priorities. It is our plan to focus on these components during 2021.
Additionally, we are planning to explore the possibility of using UAVCAN as a middleware for ROS and further the work on the experimental UAVCAN/UDP transport.
Besides advancing the above, our goals for 2021 include another objective of paramount importance: lowering the entry barriers for new adopters. There is a recurring request that we provide sensible hands-on quick start guides for people who are understandably not willing to become UAVCAN experts to be able to use the technology. While there have been some advances to this end, the amount and quality of the educational material are insufficient for a project that puts simplicity as one of its main design tenets. Likewise, we perceive the need to expand the range of hardware platforms that we maintain low-level drives for, especially when it comes to the microcontrollers equipped with new CAN FD peripherals.
Ultimately, every major problem with the project can be traced back to human resource starvation, so we have developed a radical solution to it, which is the UAVCAN Consortium. It is a non-profit organization created to ensure the future of UAVCAN and to provide a neutral collaboration platform for the stakeholders; or, more specifically:
To provide a governing body tasked with defining the long-term project strategy based on input from its members.
To support, promote, and standardize the UAVCAN technology and expand the UAVCAN ecosystem.
To provide legal protection for the project in relevant markets and regions across the world. This includes trademark management and enforcement of the licensing terms.
To provide consulting services to members, key open-source projects, and non-profit organizations leveraging UAVCAN to ensure the long-term health and sustainability of the ecosystem.
To serve as a testing and certification organization, validating the conformance of hardware and software products to the published UAVCAN standards. Vendors whose products have been shown to be conformant are granted the license to use the official UAVCAN Conformance Mark (shown on the image).
Membership assumes an annual fee for commercial entities but it is free for academics, non-profits, and open-source projects. Please check the website and do apply.
We anticipate that by 2022, UAVCAN v1 will overtake the legacy v0 and will find support by major UAV autopilot platforms.