UAVCAN (Cyphal) and DroneCAN
Modern unmanned aerial vehicles (UAV) debuted as an important weapon in the early 1980s. Israeli Defense Forces fitted small drones resembling large model airplanes with trainable television and infrared cameras and with target designators for laser-guided munitions, all downlinked to a control station. Nowadays, many of such combat drones use embedded CAN networks. But also drones for leisure purposes are equipped with embedded CAN networks. The drone community has developed the open-source Cyphal higher-layer protocol known as UAVCAN before 2022. It is an application layer. DroneCAN was created to continue the development of the UAVCAN v0 protocol. The proposed introduction of the UAVCAN v1 protocol involved changes to UAVCAN that increased complexity and did not offer a smooth migration path for existing deployments. DroneCAN is the CAN-based high-layer protocol used by the ArduPilot and PX4 projects for communication with CAN peripherals. It is an open protocol with open communication, specification, and multiple open implementations. It supports CAN FD as well as CAN CC.
The DroneCAN transport layer supports unconfirmed multi-segment broadcast communication as well as a confirmed multi-segment communication. In the multi-segment approach an embedded CRC (cyclic redundancy check) sequence is transmitted in the first segment. Additionally, a toggle-bit ensures the detection of double-transmission of frames in case of a dominantly-detected last bit in the end of frame field by the sender.
DroneCAN does not require that devices undergo any specific initialization upon connecting to the network - a device is free to begin functioning immediately once it is powered up. The only application-level function that every device needs to support is the periodic broadcasting of the device’s status message.
The open-source higher-layer protocol references some CiA documents such as CiA 106 (former CiA 303-1) for connector pin-assignments and CiA 103 for the physical layer. It is recommended to provide two identical parallel connectors for each CAN interface per device, so that the device can be connected to the network without the need to use T-connectors. They should be avoided, because they add an extra point of failure, increase the stub length and weight.
Mission-critical devices and non-mission critical devices often need to co-exist on the same DroneCAN network. Therefore, all devices should be connected to the primary CAN network. The mission-critical devices are connected to one or two additional backup CAN networks. DroneCAN is bit rate agnostic, so technically any bit rate can be used as long as it is suitable for the chosen network topology. However, only the recommended bit rates (1 Mbit/s, 500 kbit/s, 250 kbit/s, or 125 kbit/s) should be used to ensure compatibility. The sample-point should be located at 75 % of the bit time. Designers are encouraged to implement automatic bit rate detection with reference to the CiA 801 technical report.