Кифал

Протокол связи с транспортным средством

Разработчик(и)Команда разработчиков 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]

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

а. 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]

Основные принципы

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

  • Демократическая сеть — нет главного узла. Все узлы в сети имеют одинаковые права на общение; не должно быть единой точки отказа.
  • Обеспечение функциональной безопасности — разработчики систем Cyphal имеют в своем распоряжении необходимые гарантии и инструменты для анализа системы и обеспечения ее корректного поведения.
  • Высокоуровневые абстракции связи — Протокол поддерживает семантику связи публикации/подписки и удаленного вызова процедур со статически определенными и статически проверенными типами данных (схемой). Типы данных, используемые для связи, определены понятным и платформенно-независимым способом, который может быть легко понят как машинами, так и людьми.
  • Упрощение взаимодействия между поставщиками — Cyphal предоставляет общую основу, на которой могут строить разные поставщики, чтобы гарантировать, что их оборудование совместимо. Cyphal предоставляет общий набор стандартных типов данных связи, не зависящих от приложений.
  • Четко определенные общие функции высокого уровня — Cyphal определяет стандартные службы и сообщения для общих функций высокого уровня, таких как: обнаружение сети, настройка узлов, обновление программного обеспечения узлов, мониторинг состояния узлов, синхронизация времени в масштабах всей сети, поддержка узлов plug-and-play и т. д.
  • Атомарные абстракции данных — Узлы способны обмениваться большими структурами данных, которые превышают емкость одного транспортного кадра. Cyphal выполняет автоматическую декомпозицию и повторную сборку данных на уровне протокола, скрывая связанную с этим сложность от приложения.
  • Высокая пропускная способность, низкая задержка, детерминизм — Cyphal добавляет очень низкие накладные расходы к базовому транспортному протоколу, что обеспечивает высокую пропускную способность и низкую задержку. Это делает Cyphal хорошо подходящим для приложений жесткого реального времени.
  • Поддержка избыточных интерфейсов и избыточных узлов — Cyphal подходит для приложений, требующих модульной избыточности.
  • Простая логика, низкие вычислительные требования — Cyphal нацелен на широкий спектр встраиваемых систем, от высокопроизводительных бортовых компьютеров до крайне ограниченных по ресурсам микроконтроллеров. Его поддержка недорога с точки зрения вычислительной мощности и инженерных часов, а расширенные функции могут быть реализованы постепенно по мере необходимости.
  • Богатые типы данных и абстракции интерфейсов . Язык описания интерфейсов является основной частью технологии, позволяя глубоко встроенным подсистемам напрямую (и в удобном для обслуживания виде) взаимодействовать с системами более высокого уровня, обеспечивая при этом возможность моделирования и функционального тестирования.
  • Поддержка различных транспортных протоколов — Cyphal можно использовать с несколькими различными транспортами, а в будущем его можно будет расширить для поддержки других транспортных протоколов.
  • API-agnostic standard — В отличие от некоторых других сетевых стандартов, Cyphal не пытается описать интерфейс прикладного программирования (API). Любые детали, которые не влияют на поведение реализации, наблюдаемое другими участниками сети, выходят за рамки спецификации.
  • Открытая спецификация и эталонные реализации — Спецификация Cyphal есть и всегда будет открытой и бесплатной для использования всеми. Эталонные реализации распространяются на условиях разрешительной лицензии MIT или передаются в общественное достояние.

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

Cyphal/CAN

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

Cyphal/UDP

Транспорт Cyphal/UDP был предложен для транспортных сетей на базе Ethernet в реальном времени. Говорят, что на дизайн повлияли AFDX , DDS/RTPS и SOME/IP. [20]

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

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

Ссылки

  1. ^ «Открытая технология для коммуникаций в реальном времени в киберфизических системах».
  2. ^ "About OpenCyphal" . Получено 28 февраля 2020 г. .
  3. ^ abc "UAVCAN - Kvaser - Advanced CAN Solutions" . Получено 16 октября 2019 г. .
  4. ^ "Обсуждение дронов | UAVCAN - CAN шина для БПЛА". groups.google.com/forum/#!topic/drones-discuss . Получено 27 февраля 2020 г. .
  5. ^ Мейер, Лоренц (2017). Динамическая архитектура робота для надежного компьютерного зрения в реальном времени (диссертация). ETH Zurich. doi : 10.3929/ethz-a-010874068. hdl : 20.500.11850/129849.
  6. ^ "ArduPilot Developer | CAN шина и протокол UAVCAN". ardupilot.org . Получено 27 февраля 2020 г. .
  7. ^ Лосекамм, Мартин; Милде, Майкл; Пошл, Томас; Гринвальд, Дэвид; Пол, Стефан (2016). «Окружной радиационный мониторинг в реальном времени на космических аппаратах». AIAA Space 2016 (статья). doi :10.2514/6.2016-5532. ISBN 978-1-62410-427-5.
  8. ^ Бхат, Шрихарша; Стениус, Иван; Боре, Нильс; Северхолт, Жозефина; Льюнг, Карл; Торроба Балмори, Игнасио (2019). «К киберфизической системе для гидробатических АНПА». OCEANS 2019 - Марсель . С.  1–7 . doi :10.1109/OCEANSE.2019.8867392. ISBN 978-1-7281-1450-7. S2CID  204700489.
  9. ^ "Архивная копия" (PDF) . Архивировано из оригинала (PDF) 28 февраля 2020 года . Получено 28 февраля 2020 года .{{cite web}}: CS1 maint: архивная копия как заголовок ( ссылка )
  10. ^ ab "GitHub - MonashUAS/Canros: интерфейс UAVCAN-ROS". GitHub . 5 апреля 2022 г.
  11. ^ "Абсолютно новый выпуск VESC-Tool 2019". 8 февраля 2019 г.
  12. ^ ab "UAVCAN v1 теперь Cyphal". Форум OpenCyphal . 25 марта 2022 г. Получено 13 октября 2022 г.
  13. ^ ab "UAVCAN: высоконадежный протокол публикации-подписки для внутрикорабельных сетей в реальном времени". 2 июля 2019 г.
  14. ^ "Новый OpenGrab EPM V3 для хранения грузов БПЛА". 4 декабря 2015 г.
  15. ^ "Форум OpenCyphal". Форум OpenCyphal . Получено 25 апреля 2024 г. .
  16. ^ «Компания NXP Semiconductors рада поддержать UAVCAN V1.0». 9 декабря 2019 г.
  17. ^ "Dronecode | Ведущие компоненты с открытым исходным кодом для БПЛА". www.dronecode.org . Получено 27 февраля 2020 г. .
  18. ^ "Stockholm Summit recap". Форум OpenCyphal . 5 октября 2018 г. Получено 13 октября 2022 г.
  19. ^ "OlliW's Bastelseiten » UC4H: UAVCAN для любителей".
  20. ^ ab "Альтернативные транспортные протоколы в UAVCAN". 11 января 2019 г.
  21. ^ ab Спецификация opencyphal.org
  22. ^ "Compact Cyphal/CAN v1 на языке C". GitHub . 22 ноября 2021 г.
  23. ^ "Наш первый издатель и сервисные узлы ROS2 UAVCAN (PyCyphal)". Форум OpenCyphal . 12 апреля 2022 г. Получено 13 октября 2022 г.
  24. ^ "Регулируемые определения DSDL". GitHub . 16 ноября 2021 г.
  25. ^ «Политика регулирования типов данных и членские взносы». 8 декабря 2019 г.
  • Официальный сайт
  • Общественный форум для координации развития и обратной связи
Взято с "https://en.wikipedia.org/w/index.php?title=Cyphal&oldid=1263954812"