Разработчик(и) | Команда разработчиков Zubax Robotics / OpenCyphal [1] |
---|---|
Первоначальный выпуск | 2014 |
Репозиторий | https://github.com/OpenCyphal |
Написано в | C++, C, Python, Rust, JavaScript |
Операционная система | Кроссплатформенный |
Лицензия | лицензия Массачусетского технологического института |
Веб-сайт | opencyphal.org |
Cyphal — это облегченный протокол, разработанный для надежной внутритранспортной связи с использованием различных транспортных средств связи, изначально предназначенный для шины CAN [2] , но в последующих версиях нацеленный на различные типы сетей. [3] OpenCyphal — это проект с открытым исходным кодом, целью которого является предоставление лицензированных MIT реализаций протокола Cyphal. До ребрендинга в марте 2022 года проект был известен как UAVCAN (Uncomplicated Application-level Vehicular Computing and Networking).
Первый RFC, в общих чертах описывающий общие идеи, которые впоследствии сформируют основные принципы проектирования Cyphal (в то время под брендом UAVCAN), был опубликован в начале 2014 года. [4] Это был ответ на предполагаемое отсутствие адекватной технологии, которая могла бы обеспечить надежный внутритранспортный обмен данными в реальном времени между распределенными компонентами современных интеллектуальных транспортных средств (в первую очередь беспилотных летательных аппаратов).
С момента первоначального RFC протокол прошел через три основных итерации дизайна, которые завершились выпуском первой долгосрочной стабильной версии в 2020 году (спустя 6 лет) под названием UAVCAN v1.0. Тем временем протокол был развернут во множестве разнообразных систем, включая беспилотные летательные аппараты, [5] [6] космические аппараты, [7] подводные роботы, [8] гоночные автомобили, [9] общие роботизированные системы, [10] и микромобильные транспортные средства. [11] В 2022 году протокол был переименован в Cyphal. [12]
Cyphal позиционируется его разработчиками как высокодетерминированная, ориентированная на безопасность альтернатива высокоуровневым фреймворкам публикации-подписки, таким как DDS или вычислительный граф ROS , который достаточно компактен и прост, чтобы его можно было использовать в глубоко встроенных приложениях с высокой степенью интеграции. [13] Было показано, что Cyphal можно использовать с микроконтроллерами bare metal, оснащенными всего лишь 32 КБ ПЗУ и 8 КБ ОЗУ. [14]
Протокол открыт и может быть повторно использован свободно без одобрения или лицензионных сборов. Разработка основного стандарта и его эталонных реализаций ведется открыто, координируется через форум для публичного обсуждения. [15] По состоянию на 2020 год проект поддерживается несколькими крупными организациями, включая NXP Semiconductors [16] и Dronecode Project. [17]
а. MODBUS часто работает через RS-232.
б) DDS заимствует язык определения интерфейса из CORBA.
в. MODBUS через TCP-порт 502.
d. Airbus обращается в ARINC с просьбой разработать новый стандарт CAN. Майкл Сток делится своим опытом разработки CAN Aerospace . Результатом является ARINC-825-1.
е. Первый стандарт AVB опубликован рабочей группой AVB рабочей группы IEEE 802.1. Выпущен IEEE1722-2011.
е. Целевая группа AVB переименована в целевую группу TSN.
g. ROS2 строится на основе DDS . Типичная среда для распределенных систем ROS2 — Ethernet.
h. Выпущены стандарты 802.1Qbv и 802.1Qbu, позволяющие определять полностью детерминированные сети Ethernet.
i. Павел Кириенко возглавляет усилия по разработке открытого исходного кода UAVCAN v0. Первоначально он поддерживает только CAN 2.0B.
j. Airbus представляет презентацию для IEEE «Полнодуплексный Ethernet для авионики и стандарт сетей с временными ограничениями», в которой предлагает включить AFDX в стандарты TSN.
к. ARINC 825-4 добавляет поддержку CAN-FD и определяет туннелирование по ARINC-664.
l. Amazon Prime Air определяет минимальный набор изменений в v0, добавляя поддержку CAN-FD. Неофициальный вариант называется v0.5. В то же время, на Стокгольмском саммите, [18] был задуман UAVCAN v1.
м. 10 BASE T1S добавлен в IEEE 802.3, определяющий полудуплексную, двухпроводную, многоточечную среду Ethernet с PLCA ( PHY-Level Collision Avoidance ). Спецификация нацелена на автомобильные и промышленные варианты использования (например, замена MODBUS).
n. Производство Airbus A380 прекращено.
о. UAVCAN v1 становится бета-версией.
п. DroneCAN берет на себя поддержку спецификации UAVCAN v0/v0.5 и ее усовершенствование.
q. UAVCAN v1 переименован в Cyphal. [12]
Cyphal предоставляет абстракции с нулевой стоимостью, которые доступны и знакомы инженерам-программистам [19] без ущерба для функциональной безопасности и детерминизма. [3] Как новая технология, она не обременена наследием [3] и во многом заимствует из последних разработок в области общих информационных технологий . [20] Протокол предлагает модель связи «публикация-подписка» без сохранения состояния, в которой узел может начать работу немедленно после подключения к сети для размещения высокоинтегрированных приложений. [13]
Протокол имеет два четко разделенных основных компонента: [21] транспортный уровень, который работает поверх надежных транспортных сетей, таких как Ethernet или CAN FD , и транспортно-независимый уровень представления (сериализации), основанный на так называемом языке описания структуры данных (DSDL). Было показано, что протокол может быть реализован менее чем в 1000 логических строк кода. [22]
DSDL идеологически похож на язык описания интерфейса, используемый в ROS, за исключением того, что он вводит дополнительные статические ограничения, чтобы сделать решение подходящим для встраиваемых систем высокой целостности в реальном времени. Сходство побудило некоторых разработчиков связать ROS с Cyphal с помощью автоматизированных слоев перевода. [10] [23]
Протокол построен на следующих основных принципах проектирования, которые призваны гарантировать, что решение хорошо подходит для современных сложных критически важных с точки зрения безопасности транспортных систем.
Транспорт CAN построен на основе CAN и CAN FD с использованием 29-битных идентификаторов. Полезная нагрузка CAN включает в себя фиксированный размер накладных расходов в один байт на кадр для нужд транспортного уровня. [21]
Транспорт Cyphal/UDP был предложен для транспортных сетей на базе Ethernet в реальном времени. Говорят, что на дизайн повлияли AFDX , DDS/RTPS и SOME/IP. [20]
Как и другие подобные технологии, Cyphal предоставляет библиотеку общих типов данных, управляемую и курируемую разработчиками протокола, которые предназначены для решения некоторых общих проблем в популярных приложениях. [24] Эти типы данных дополняют типы данных, специфичные для поставщика или приложения, определенные разработчиками, подобно тому, как язык программирования обычно определяет стандартную библиотеку, на которую должно полагаться программное обеспечение, разработанное пользователем. Спецификация протокола предоставляет набор правил, предназначенных для предотвращения конфликтов и улучшения взаимодействия типов данных, определенных независимыми поставщиками. [25]
{{cite web}}
: CS1 maint: архивная копия как заголовок ( ссылка )