This article uses bare URLs, which are uninformative and vulnerable to link rot. Please consider converting them to full citations to ensure the article remains verifiable and maintains a consistent citation style. Several templates and tools are available to assist in formatting, such as reFill (documentation) and Citation bot (documentation). (August 2022) (Learn how and when to remove this template message)
This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: "Cyphal" – news · newspapers · books · scholar · JSTOR (July 2020) (Learn how and when to remove this template message)
Developer(s)Zubax Robotics / OpenCyphal Development Team[1]
Initial release2014
Repositoryhttps://github.com/OpenCyphal
Written inC++, C, Python, Rust, JavaScript
Operating systemCross-platform
LicenseMIT license
Websiteopencyphal.org

Cyphal is a lightweight protocol designed for reliable intra-vehicle communications using various communications transports, originally destined for CAN bus,[2] but targeting various network types in subsequent revisions.[3] OpenCyphal is an open-source project that aims to provide MIT-licensed implementations of the Cyphal protocol. The project was known as UAVCAN (Uncomplicated Application-level Vehicular Computing and Networking) prior to rebranding in March 2022.

History

The first RFC broadly outlining the general ideas that would later form the core design principles of Cyphal (branded UAVCAN at the time) was published in early 2014.[4] It was a response to the perceived lack of adequate technology that could facilitate robust real-time intra-vehicular data exchange between distributed components of modern intelligent vehicles (primarily unmanned aircraft).

Since the original RFC, the protocol has been through three major design iterations, which culminated in the release of the first long-term stable revision in 2020 (6 years later) labelled UAVCAN v1.0. In the meantime, the protocol has been deployed in numerous diverse systems including unmanned aerial vehicles,[5][6] spacecraft,[7] underwater robots,[8] racing cars,[9] general robotic systems,[10] and micromobility vehicles.[11] In 2022, the protocol was rebranded as Cyphal.[12]

Cyphal is positioned by its developers as a highly deterministic, safety-oriented alternative to high-level publish-subscribe frameworks such as DDS or the computation graph of ROS, which is sufficiently compact and simple to be usable in deeply embedded high-integrity applications.[13] Cyphal has been shown to be usable with bare metal microcontrollers equipped with as little as 32K ROM and 8K RAM.[14]

The protocol is open and can be reused freely without approval or licensing fees. The development of the core standard and its reference implementations is conducted in an open manner, coordinated via the public discussion forum.[15] As of 2020, the project is supported by several major organizations including NXP Semiconductors[16] and the Dronecode Project.[17]

History of Cyphal in the context of other serial protocols

a. MODBUS often runs over RS-232.

b. DDS Borrows an Interface Definition Language from CORBA.

c. MODBUS over TCP port 502.

d. Airbus approaches ARINC to request a new CAN standard be developed. Michael Stock provides his experience developing CAN Aerospace. ARINC-825-1 is the result.

e. First AVB standard is published by the AVB Task Group of the IEEE 802.1 working group. IEEE1722-2011 is released.

f. The AVB Task Group is renamed the TSN Task Group.

g. ROS2 Builds on top of DDS. Typical media for distributed ROS2 systems is Ethernet.

h. 802.1Qbv and 802.1Qbu are released, enabling fully deterministic Ethernet networks to be defined.

i. Pavel Kirienko leads an open-source effort to define UAVCAN v0. Initially, it only supports CAN 2.0B.

j. Airbus gives a presentation to the IEEE, “Avionics Full Duplex Ethernet and the Time-Sensitive Networking Standard” which proposes incorporating AFDX into the TSN standards.

k. ARINC 825-4 adds support for CAN-FD and defines tunneling over ARINC-664.

l. Amazon Prime Air defines a minimal set of changes to v0 adding CAN-FD support. The unofficial variant is dubbed v0.5. At the same time, at the Stockholm Summit,[18] UAVCAN v1 was conceived.

m. 10 BASE T1S is added to IEEE 802.3 defining half-duplex, two-wire, multi-drop Ethernet media with PLCA (PHY-Level Collision Avoidance). The specification is targeted at automotive and industrial use cases (e.g. MODBUS replacement).

n. Airbus A380 ends production.

o. UAVCAN v1 becomes beta.

p. DroneCAN takes over maintenance of the UAVCAN v0/v0.5 specification and advancement on top of it.

q. UAVCAN v1 is renamed Cyphal.[12]

Design

Cyphal provides zero-cost abstractions that are approachable and familiar to software engineers[19] without compromising on functional safety and determinism.[3] As a new technology, it is unencumbered by legacy[3] and borrows heavily from recent developments in the field of general information technology.[20] The protocol offers a stateless publish-subscribe communication model where a node can begin operation immediately upon connection to the network to accommodate high-integrity applications.[13]

The protocol has two clearly separated major components:[21] the transport layer that works on top of reliable vehicular networks such as Ethernet or CAN FD, and the transport-agnostic presentation (serialization) layer based on the so-called Data Structure Description Language (DSDL). The protocol has been shown to be implementable in less than 1000 logical lines of code.[22]

DSDL is ideologically similar to the interface description language used in ROS, except that it introduces additional static constraints in order to render the solution suitable for real-time high-integrity embedded systems. The similarity prompted some developers to interface ROS with Cyphal using automated translation layers.[10][23]

Core principles

The protocol is built around the following core design principles that are intended to ensure that the solution is well-suited for modern complex safety-critical vehicular systems.

Transport layer

Cyphal/CAN

The CAN transport is built on top of CAN and CAN FD using 29-bit identifiers. The CAN payload includes a fixed-size overhead of one byte per frame for the needs of the transport layer.[21]

Cyphal/UDP

The Cyphal/UDP transport has been proposed for real-time Ethernet-based vehicular networks. The design is said to be influenced by AFDX, DDS/RTPS, and SOME/IP.[20]

Standard data types

Like other similar technologies, Cyphal provides a library of common data types, managed and curated by the protocol maintainers, that are intended to address certain common issues in popular applications.[24] These data types supplement vendor-specific or application-specific data types defined by adopters, much like a programming language would normally define a standard library to be relied upon by software developed by the user. The protocol specification provides a set of rules intended to avoid conflicts and enhance interoperability of data types defined by independent vendors.[25]

References

  1. ^ "Open technology for real-time communications in cyber-physical systems".
  2. ^ "About OpenCyphal". Retrieved 28 Feb 2020.
  3. ^ a b c "UAVCAN - Kvaser - Advanced CAN Solutions". Retrieved 16 October 2019.
  4. ^ "Drones discuss | UAVCAN - CAN bus for UAV". groups.google.com/forum/#!topic/drones-discuss. Retrieved 2020-02-27.
  5. ^ Meier, Lorenz (2017). Dynamic Robot Architecture for Robust Realtime Computer Vision (Thesis). ETH Zurich. doi:10.3929/ethz-a-010874068. hdl:20.500.11850/129849.
  6. ^ "ArduPilot Developer | CAN bus and UAVCAN protocol". ardupilot.org. Retrieved 2020-02-27.
  7. ^ Losekamm, Martin; Milde, Michael; Poschl, Thomas; Greenwald, David; Paul, Stephan (2016). "Real-Time Omnidirectional Radiation Monitoring on Spacecraft". AIAA Space 2016 (paper). doi:10.2514/6.2016-5532. ISBN 978-1-62410-427-5.
  8. ^ Bhat, Sriharsha; Stenius, Ivan; Bore, Nils; Severholt, Josefine; Ljung, Carl; Torroba Balmori, Ignacio (2019). "Towards a Cyber-Physical System for Hydrobatic AUVs". OCEANS 2019 - Marseille. pp. 1–7. doi:10.1109/OCEANSE.2019.8867392. ISBN 978-1-7281-1450-7. S2CID 204700489.
  9. ^ "Archived copy" (PDF). Archived from the original (PDF) on 2020-02-28. Retrieved 2020-02-28.((cite web)): CS1 maint: archived copy as title (link)
  10. ^ a b "GitHub - MonashUAS/Canros: UAVCAN to ROS interface". GitHub. 5 April 2022.
  11. ^ "All new 2019 VESC-Tool release". 8 February 2019.
  12. ^ a b "UAVCAN v1 is now Cyphal". OpenCyphal Forum. 2022-03-25. Retrieved 2022-10-13.
  13. ^ a b "UAVCAN: A highly dependable publish-subscribe protocol for real-time intravehicular networking". 2 July 2019.
  14. ^ "New OpenGrab EPM V3 for UAV cargo holding". 4 December 2015.
  15. ^ https://forum.opencyphal.org/
  16. ^ "NXP Semiconductors is pleased to support UAVCAN V1.0". 9 December 2019.
  17. ^ "Dronecode | Leading open-source components for UAVs". www.dronecode.org. Retrieved 2020-02-27.
  18. ^ "Stockholm Summit recap". OpenCyphal Forum. 2018-10-05. Retrieved 2022-10-13.
  19. ^ "OlliW's Bastelseiten » UC4H: UAVCAN for Hobbyists".
  20. ^ a b "Alternative transport protocols in UAVCAN". 11 January 2019.
  21. ^ a b https://opencyphal.org/specification[bare URL PDF]
  22. ^ "Compact Cyphal/CAN v1 in C". GitHub. 22 November 2021.
  23. ^ "Our first ROS2 UAVCAN (PyCyphal) publisher and service nodes". OpenCyphal Forum. 2022-04-12. Retrieved 2022-10-13.
  24. ^ "Regulated DSDL definitions". GitHub. 16 November 2021.
  25. ^ "Data type regulation policy and membership fees". 8 December 2019.