Cyphal

Open technology for real-time intravehicular distributed computing and communication based on modern networking standards.

Zubax Robotics is the main developer and maintainer of Cyphal (formerly known as UAVCAN) — an open technology for real-time intravehicular distributed computing and communication based on modern networking standards (Ethernet, CAN FD, etc.). It was created to address the challenge of on-board deterministic computing and data distribution in next-generation intelligent vehicles.

Cyphal 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 opencyphal.org.

Zubax Robotics provides commercial support and consulting services for Cyphal.

Features

  • Designed for complex, high-integrity, real-time vehicular computing systems.
  • Publish/subscribe and request/response (RPC) exchange semantics.
  • Specialized interface description language provides rich zero-cost interface abstractions and facilitates service-oriented design.
  • Lightweight — implementable from scratch in ca. 1000 logical lines of code; cheap to verify and validate.
  • Peer-to-peer network — no bus master, no single point of failure.
  • Modular redundancy for fault-tolerant systems with automatic fail-over.
  • Different transport-layer protocols (Ethernet, CAN, etc.), including heterogeneous transport redundancy.
  • High-quality open source reference implementations are freely available under the MIT license from the OpenCyphal project.

History

The place of OpenCyphal in the history of serial communication is shown on the following figure (source):

History of serial communication

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, v1 was conceived.

m. 10 BASE T1S is added to IEEE 802.3 defining half-duplex, two-wire, multi-drop ethernet media with PLCA (Physical Layer 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. (March 2022) UAVCAN v1 is renamed Cyphal.

Related announcements and discussions

How to avoid excessive memory usage?
I wonder how to define CAN message in the form of Cypal message
Cyphal vs DDS/DDS-XRCE
Test set for validating/certifying cyphal implementations
Yakut compile and monitor errors
Not connect the uavcan gui tool
Demo_app.py utilizing can as transport layer
How to get Started with Cyphal
CyphalStore is live!
Cyphal CAN on Teensy4.1
Px4 compilation on apple M1 laptop - uavcan issue
VIDEO: Introduction to OpenCyphal - Alexander Entinger
Best practices for managing long task execution requests
MessageID & CAN Identifier
Use of certificate_of_authenticity
Selecting `@extent` value in DSDL
Integrating Nunavut with a Makefile based build process
Telega v0 m.max_eangvel and m.max_current parameters
Telega v0 DroneCAN (UAVCAN v0) ESC status message priority
Confusion about what to use in new implementations - Cyphal and Libuavcan