Cyphal: различия между версиями

Материал из in.wiki
Перейти к навигации Перейти к поиску
Строка 14: Строка 14:
 
Протокол открыт и может свободно использоваться  без одобрения или лицензионных сборов. Разработка основного стандарта и его эталонных реализаций ведется открытым способом и координируется посредством общественного дискуссионного форума<ref>https://forum.opencyphal.org/</ref>. По состоянию на 2020 год проект поддерживается несколькими крупными организациями, включая [[NXP Semiconductors]]<ref>{{cite web|url=https://community.nxp.com/docs/DOC-345215|title=NXP Semiconductors is pleased to support UAVCAN V1.0|date=9 December 2019}}</ref> и [[Dronecode Project]]<ref>{{Cite web|url=https://www.dronecode.org/projects/|title=Dronecode {{!}} Leading open-source components for UAVs|website=www.dronecode.org|access-date=2020-02-27}}</ref>.
 
Протокол открыт и может свободно использоваться  без одобрения или лицензионных сборов. Разработка основного стандарта и его эталонных реализаций ведется открытым способом и координируется посредством общественного дискуссионного форума<ref>https://forum.opencyphal.org/</ref>. По состоянию на 2020 год проект поддерживается несколькими крупными организациями, включая [[NXP Semiconductors]]<ref>{{cite web|url=https://community.nxp.com/docs/DOC-345215|title=NXP Semiconductors is pleased to support UAVCAN V1.0|date=9 December 2019}}</ref> и [[Dronecode Project]]<ref>{{Cite web|url=https://www.dronecode.org/projects/|title=Dronecode {{!}} Leading open-source components for UAVs|website=www.dronecode.org|access-date=2020-02-27}}</ref>.
  
[[Файл:History_of_Serial_Protocols.png|История Cyphal в контексте других протоколов, связанных с последовательной шиной|1200px]]
+
'''История Cyphal в контексте других протоколов, связанных с последовательной шиной:'''
 +
[[Файл:History_of_Serial_Protocols.png|1200px]]
  
 
Пояснения к диаграмме:
 
Пояснения к диаграмме:

Версия от 23:45, 7 октября 2023

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 в контексте других протоколов, связанных с последовательной шиной: History of Serial Protocols.png

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

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, используя слой автоматической трансляции.

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

Примечания

  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.