Cyphal — это легковесный протокол, разработанный для надежной связи внутри транспортной платформы[1] с использованием различных транспортных протоколов, первоначально предназначенный для шины CAN, но в последующих версиях ориентированный на различные типы сетей[2].

OpenCyphal — это проект с открытым исходным кодом, целью которого является предоставление реализаций протокола Cyphal под лицензией MIT. До ребрендинга в марте 2022 года проект был известен как UAVCAN (Uncomplicated Application-level Vehicular Computing and Networking).

История

Первый RFC, в котором в общих чертах изложены общие идеи, которые позже составят основные принципы проектирования Cyphal (в то время называвшегося UAVCAN), был опубликован в начале 2014 года.

Это был ответ на отсутствие[3] адекватных технологий, которые могли бы облегчить надежный обмен данными внутри транспортного средства в режиме реального времени между распределенными компонентами современных интеллектуальных транспортных средств (в первую очередь беспилотных летательных аппаратов)[4].

Со времени первоначального RFC протокол претерпел три основные итерации разработки, кульминацией которых стал выпуск первой долгосрочной стабильной версии в 2020 году (6 лет спустя) под названием UAVCAN v1.0. Тем временем протокол был использован в многочисленных разнообразных системах, включая беспилотные летательные аппараты[5][6], космические корабли[7], подводные роботы[8], гоночные автомобили[9], робототехнические системы общего назначения[10] и транспортные средства, обеспечивающие микромобильность[11]. В 2022 году протокол был переименован в Cyphal[12].

Cyphal позиционируется разработчиками как в высшей степени детерминированная, ориентированная на безопасность альтернатива высокоуровневым платформам публикации-подписки, таким как DDS или граф вычислений ROS, которая достаточно компактна и проста, чтобы ее можно было использовать в глубоко встроенных приложениях с высокой степенью целостности[13]. Было показано, что Cyphal можно использовать с микроконтроллерами из чистого металла, оснащенными всего лишь 32 КБ ПЗУ и 8 КБ ОЗУ[14].

Протокол открыт и может свободно использоваться без одобрения или лицензионных сборов. Разработка основного стандарта и его эталонных реализаций ведется открытым способом и координируется посредством общественного дискуссионного форума[15]. По состоянию на 2020 год проект поддерживается несколькими крупными организациями, включая NXP Semiconductors[16] и Dronecode Project[17].

История Cyphal в контексте других протоколов, связанных с последовательной шиной:  

Пояснения к диаграмме:

a. MODBUS часто работает поверх RS-232.

b. DDS использует CORBA Interface Definition Language.

c. MODBUS работает по TCP используея порт 502.

Дизайн

Cyphal предоставляет абстракции с нулевой стоимостью, которые доступны и знакомы инженерам-программистам без ущерба для функциональной безопасности и детерминизма.

Будучи новой технологией, Cyphal не обременен унаследованными особенностями и в значительной степени опирается на недавние разработки в сфере программирования общего назначения.

Протокол предлагает в качестве базовой модель взаимодействия между программными компонентами сети «publish/subscribe» без сохранения состояния.

Этот подход позволяет любому узлу начать работу сразу после подключения к сети без дополнительных процедур инициализации и обеспечивает взаимодействие приложений с высокой общей степенью целостности системы.

Протокол состоит из двух четко разделенных основных компонентов:

транспортный уровень, который работает поверх надежных автомобильных сетей, таких как Ethernet или CAN FD, и уровень независимого от транспорта представления (сериализации), основанный на так называемом языке описания структуры данных - (Data Structure Description Language, DSDL).

Было показано, что протокол можно реализовать менее чем в 1000 логических строк кода.

DSDL идеологически похож на язык описания интерфейса, используемый в ROS, за исключением того, что он вводит дополнительные статические ограничения, чтобы сделать решение пригодным для встроенных систем реального времени с высокой степенью целостности. Сходство побудило некоторых разработчиков связать ROS с Cyphal, используя слой автоматической трансляции.

Транспортный уровень

Cyphal/CAN

Cyphal/UDP

Внешние ссылки

Примечания

  1. Прежде всего - БПЛА, хотя принципиальных ограничений по использованию на других видах транспортных средств нет.
  2. UAVCAN - Kvaser - Advanced CAN Solutions. Дата обращения: 16 октября 2019.
  3. По мнению разработчика UAVCAN.
  4. Drones discuss | UAVCAN - CAN bus for UAV. groups.google.com/forum/#!topic/drones-discuss. Дата обращения: 27 февраля 2020.
  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. Дата обращения: 27 февраля 2020.
  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. Towards a Cyber-Physical System for Hydrobatic AUVs // OCEANS 2019 - Marseille / Sriharsha Bhat, Ivan Stenius, Nils Bore … [и др.]. — 2019. — P. 1–7. — ISBN 978-1-7281-1450-7. — doi:10.1109/OCEANSE.2019.8867392.
  9. Archived copy. Дата обращения: 28 февраля 2020. Архивировано из оригинала 28 февраля 2020 года.
  10. GitHub - MonashUAS/Canros: UAVCAN to ROS interface. GitHub (5 апреля 2022).
  11. All new 2019 VESC-Tool release (8 февраля 2019).
  12. UAVCAN v1 is now Cyphal (англ.). OpenCyphal Forum (25 марта 2022). Дата обращения: 13 октября 2022.
  13. UAVCAN: A highly dependable publish-subscribe protocol for real-time intravehicular networking (2 июля 2019).
  14. New OpenGrab EPM V3 for UAV cargo holding (4 декабря 2015).
  15. https://forum.opencyphal.org/
  16. NXP Semiconductors is pleased to support UAVCAN V1.0 (9 декабря 2019).
  17. Dronecode | Leading open-source components for UAVs. www.dronecode.org. Дата обращения: 27 февраля 2020.