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

Материал из in.wiki
Перейти к навигации Перейти к поиску
Строка 8: Строка 8:
 
Это был ответ на отсутствие<ref>По мнению разработчика UAVCAN.</ref> адекватных технологий, которые могли бы облегчить надежный обмен данными внутри транспортного средства в режиме реального времени между распределенными компонентами современных интеллектуальных транспортных средств (в первую очередь беспилотных летательных аппаратов)<ref>{{Cite web|url=https://groups.google.com/forum/#!topic/drones-discuss/DMjfnaWViUw|title=Drones discuss {{!}} UAVCAN - CAN bus for UAV|website=groups.google.com/forum/#!topic/drones-discuss|access-date=2020-02-27}}</ref>.  
 
Это был ответ на отсутствие<ref>По мнению разработчика UAVCAN.</ref> адекватных технологий, которые могли бы облегчить надежный обмен данными внутри транспортного средства в режиме реального времени между распределенными компонентами современных интеллектуальных транспортных средств (в первую очередь беспилотных летательных аппаратов)<ref>{{Cite web|url=https://groups.google.com/forum/#!topic/drones-discuss/DMjfnaWViUw|title=Drones discuss {{!}} UAVCAN - CAN bus for UAV|website=groups.google.com/forum/#!topic/drones-discuss|access-date=2020-02-27}}</ref>.  
  
Со времени первоначального RFC протокол претерпел три основные итерации разработки, кульминацией которых стал выпуск первой долгосрочной стабильной версии в 2020 году (6 лет спустя) под названием [[UAVCAN]] v1.0. Тем временем протокол был использован в многочисленных разнообразных системах, включая беспилотные летательные аппараты<ref>{{cite thesis|last=Meier|first=Lorenz|date=2017|title=Dynamic Robot Architecture for Robust Realtime Computer Vision|publisher=ETH Zurich|doi=10.3929/ethz-a-010874068|hdl=20.500.11850/129849}}</ref><ref>{{Cite web|url=https://ardupilot.org/dev/docs/can-bus.html|title=ArduPilot Developer {{!}} CAN bus and UAVCAN protocol|website=ardupilot.org|access-date=2020-02-27}}</ref>, космические корабли<ref>{{cite thesis|last1=Losekamm|first1=Martin|last2=Milde|first2=Michael|last3=Poschl|first3=Thomas|last4=Greenwald|first4=David|last5=Paul|first5=Stephan|title=AIAA Space 2016|date=2016|chapter=Real-Time Omnidirectional Radiation Monitoring on Spacecraft|type=paper|doi=10.2514/6.2016-5532|isbn=978-1-62410-427-5}}</ref>, подводные роботы<ref>{{cite book|doi=10.1109/OCEANSE.2019.8867392|first3=Nils|pages=1–7|first6=Ignacio|last6=Torroba Balmori|first5=Carl|last5=Ljung|first4=Josefine|last4=Severholt|last3=Bore|isbn=978-1-7281-1450-7|first2=Ivan|last2=Stenius|first1=Sriharsha|last1=Bhat|year=2019|title=OCEANS 2019 - Marseille|chapter=Towards a Cyber-Physical System for Hydrobatic AUVs|s2cid=204700489}}</ref>, гоночные автомобили<ref>{{Cite web|url=http://robotek.no/filer/dokumenter/Revolve-NTNU.pdf|title=Archived copy|access-date=2020-02-28|archive-date=2020-02-28|archive-url=https://web.archive.org/web/20200228140659/http://robotek.no/filer/dokumenter/Revolve-NTNU.pdf|url-status=dead}}</ref>, робототехнические системы общего назначения<ref name="GitHub">{{Cite web|url=https://github.com/MonashUAS/canros|title=GitHub - MonashUAS/Canros: UAVCAN to ROS interface|website=[[GitHub]]|date=5 April 2022}}</ref> и транспортные средства, обеспечивающие микромобильность<ref>{{cite web|url=https://www.electric-skateboard.builders/t/all-new-2019-vesc-tool-release/83619|title=All new 2019 VESC-Tool release|date=8 February 2019}}</ref>. В 2022 году протокол был переименован в Cyphal<ref name=":02">{{Cite web|date=2022-03-25|title=UAVCAN v1 is now Cyphal|url=https://forum.opencyphal.org/t/uavcan-v1-is-now-cyphal/1622|access-date=2022-10-13|website=OpenCyphal Forum|language=en}}</ref>.  
+
Со времени первоначального RFC протокол претерпел три основные итерации разработки, кульминацией которых стал выпуск первой долгосрочной стабильной версии в 2020 году (6 лет спустя) под названием [[UAVCAN]] v1.0. Тем временем протокол был использован в многочисленных разнообразных системах, включая беспилотные летательные аппараты<ref>{{cite thesis|last=Meier|first=Lorenz|date=2017|title=Dynamic Robot Architecture for Robust Realtime Computer Vision|publisher=ETH Zurich|doi=10.3929/ethz-a-010874068|hdl=20.500.11850/129849}}</ref><ref>{{Cite web|url=https://ardupilot.org/dev/docs/can-bus.html|title=ArduPilot Developer {{!}} CAN bus and UAVCAN protocol|website=ardupilot.org|access-date=2020-02-27}}</ref>, космические корабли<ref>{{cite thesis|last1=Losekamm|first1=Martin|last2=Milde|first2=Michael|last3=Poschl|first3=Thomas|last4=Greenwald|first4=David|last5=Paul|first5=Stephan|title=AIAA Space 2016|date=2016|chapter=Real-Time Omnidirectional Radiation Monitoring on Spacecraft|type=paper|doi=10.2514/6.2016-5532|isbn=978-1-62410-427-5}}</ref>, подводные роботы<ref>{{cite book|doi=10.1109/OCEANSE.2019.8867392|first3=Nils|pages=1–7|first6=Ignacio|last6=Torroba Balmori|first5=Carl|last5=Ljung|first4=Josefine|last4=Severholt|last3=Bore|isbn=978-1-7281-1450-7|first2=Ivan|last2=Stenius|first1=Sriharsha|last1=Bhat|year=2019|title=OCEANS 2019 - Marseille|chapter=Towards a Cyber-Physical System for Hydrobatic AUVs|s2cid=204700489}}</ref>, гоночные автомобили<ref>{{Cite web|url=http://robotek.no/filer/dokumenter/Revolve-NTNU.pdf|title=Archived copy|access-date=2020-02-28|archive-date=2020-02-28|archive-url=https://web.archive.org/web/20200228140659/http://robotek.no/filer/dokumenter/Revolve-NTNU.pdf}}</ref>, робототехнические системы общего назначения<ref name="GitHub">{{Cite web|url=https://github.com/MonashUAS/canros|title=GitHub - MonashUAS/Canros: UAVCAN to ROS interface|website=[[GitHub]]|date=5 April 2022}}</ref> и транспортные средства, обеспечивающие микромобильность<ref>{{cite web|url=https://www.electric-skateboard.builders/t/all-new-2019-vesc-tool-release/83619|title=All new 2019 VESC-Tool release|date=8 February 2019}}</ref>. В 2022 году протокол был переименован в Cyphal<ref name=":02">{{Cite web|date=2022-03-25|title=UAVCAN v1 is now Cyphal|url=https://forum.opencyphal.org/t/uavcan-v1-is-now-cyphal/1622|access-date=2022-10-13|website=OpenCyphal Forum|language=en}}</ref>.  
  
 
Cyphal позиционируется разработчиками как в высшей степени детерминированная, ориентированная на безопасность альтернатива высокоуровневым платформам публикации-подписки, таким как [[DDS]] или [[граф вычислений ROS,]] которая достаточно компактна и проста, чтобы ее можно было использовать в глубоко встроенных приложениях с высокой степенью целостности<ref name="forum.opencyphal.org">{{cite web|url=https://forum.opencyphal.org/t/uavcan-a-highly-dependable-publish-subscribe-protocol-for-real-time-intravehicular-networking/557|title=UAVCAN: A highly dependable publish-subscribe protocol for real-time intravehicular networking|date=2 July 2019}}</ref>.  Было показано, что Cyphal можно использовать с микроконтроллерами из чистого металла, оснащенными всего лишь 32 КБ ПЗУ и 8 КБ ОЗУ<ref>{{cite web|url=https://diydrones.com/profiles/blogs/new-opengrab-epm-v3-for-uav-cargo-holding|title=New OpenGrab EPM V3 for UAV cargo holding|date=4 December 2015}}</ref>.
 
Cyphal позиционируется разработчиками как в высшей степени детерминированная, ориентированная на безопасность альтернатива высокоуровневым платформам публикации-подписки, таким как [[DDS]] или [[граф вычислений ROS,]] которая достаточно компактна и проста, чтобы ее можно было использовать в глубоко встроенных приложениях с высокой степенью целостности<ref name="forum.opencyphal.org">{{cite web|url=https://forum.opencyphal.org/t/uavcan-a-highly-dependable-publish-subscribe-protocol-for-real-time-intravehicular-networking/557|title=UAVCAN: A highly dependable publish-subscribe protocol for real-time intravehicular networking|date=2 July 2019}}</ref>.  Было показано, что Cyphal можно использовать с микроконтроллерами из чистого металла, оснащенными всего лишь 32 КБ ПЗУ и 8 КБ ОЗУ<ref>{{cite web|url=https://diydrones.com/profiles/blogs/new-opengrab-epm-v3-for-uav-cargo-holding|title=New OpenGrab EPM V3 for UAV cargo holding|date=4 December 2015}}</ref>.

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

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

Cyphal/CAN

Cyphal может использовать CAN и CAN FD в качестве транспортного уровня, с использованием 29-битных идентификаторов. В этом случае в каждый кадр включается дополнительный байт служебных данных транспортного уровня[18].

Cyphal/UDP

Транспорт Cyphal/UDP был предложен для базирующихся на Ethernet бортовых сетей транспортных средств. На жизайн протокола повлияли AFDX, DDS/RTPS, и SOME/IP[19].

Стандартные типы данных

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

Спецификация протокола предоставляет набор правил, призванных избежать конфликтов и улучшить совместимость типов данных, определенных независимыми поставщиками[21].

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

Примечания

  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.
  18. https://opencyphal.org/specification Шаблон:Bare URL PDF
  19. Alternative transport protocols in UAVCAN (11 января 2019).
  20. Regulated DSDL definitions. GitHub (16 ноября 2021).
  21. Data type regulation policy and membership fees (8 декабря 2019).