사이팔
Cyphal![]() |
![]() | |
![]() | |
개발자 | Zubax Robotics / 오픈사이팔 개발팀[1] |
---|---|
초기 출시 | 2014 |
저장소 | https://github.com/OpenCyphal |
작성 위치 | C++, C, 파이썬, 러스트, 자바스크립트 |
운영 체제 | 크로스 플랫폼 |
면허증. | MIT 허가증 |
웹사이트 | opencyphal |
Cypal은 다양한 통신 전송을 사용하여 안정적인 차량 내 통신을 위해 설계된 경량 프로토콜로, 원래는 CAN [2]버스를 대상으로 하지만 이후 개정에서는 [3]다양한 네트워크 유형을 대상으로 합니다.OpenCypal은 MIT가 허가한 Cypal 프로토콜 구현을 제공하는 것을 목표로 하는 오픈 소스 프로젝트입니다.이 프로젝트는 2022년 3월에 브랜드를 변경하기 전까지는 UAVCAN(복잡하지 않은 애플리케이션 수준의 차량 컴퓨팅 및 네트워킹)으로 알려져 있었습니다.
역사
나중에 Cyphal(당시 브랜드 UAVCAN)의 핵심 설계 원칙을 형성하게 될 일반적인 아이디어를 광범위하게 요약한 첫 번째 RFC는 2014년 [4]초에 발표되었습니다.이는 현대 지능형 차량(주로 무인 항공기)의 분산된 구성 요소 간에 강력한 실시간 차량 내 데이터 교환을 촉진할 수 있는 적절한 기술이 부족하다는 인식에 대한 대응이었습니다.
원래 RFC 이후 프로토콜은 세 번의 주요 설계 반복을 거쳤고, 2020년(6년 후) UAVCAN v1.0이라는 레이블이 지정된 첫 번째 장기 안정적인 개정판의 출시로 절정에 달했습니다.그동안, 이 프로토콜은 무인 [5][6]항공기,[7] 우주선, 수중 로봇,[8] 경주용 자동차,[9][11] 일반 로봇 시스템 [10]및 마이크로 모빌리티 차량을 포함한 수많은 다양한 시스템에 배치되었습니다.2022년에, 그 프로토콜은 [12]사이팔로 개명되었습니다.
Cypal은 DDS 또는 ROS의 계산 그래프와 같은 높은 수준의 게시 구독 프레임워크에 대한 매우 결정론적이고 안전 지향적인 대안으로 개발자들에 의해 위치하고 있으며, 이는 충분히 소형이며 깊이 내장된 고 무결성 [13]애플리케이션에서 사용할 수 있습니다.사이팔은 32K ROM과 8K [14]RAM이 장착된 베어 메탈 마이크로 컨트롤러에서 사용할 수 있는 것으로 나타났습니다.
프로토콜은 개방되어 있으며 승인 또는 라이센스 비용 없이 자유롭게 재사용할 수 있습니다.핵심 표준 및 참조 구현의 개발은 공개 토론 [15]포럼을 통해 조정된 개방형 방식으로 수행됩니다.2020년 현재, 이 프로젝트는 NXP 반도체와[16] 드론코드 [17]프로젝트를 포함한 여러 주요 조직의 지원을 받고 있습니다.
다른 직렬 프로토콜의 맥락에서 사이팔의 역사
MODBUS는 종종 RS-232를 통해 작동합니다.
DDS는 CORBA로부터 인터페이스 정의 언어를 빌립니다.
TCP 포트 502를 통한 MODBUS.
Airbus는 새로운 CAN 표준 개발을 요청하기 위해 ARINC에 접근합니다.Michael Stock은 CAN Aerospace를 개발한 경험을 제공합니다.ARINC-825-1이 그 결과입니다.
첫 번째 AVB 표준은 IEEE 802.1 작업 그룹의 AVB 태스크 그룹에 의해 발행됩니다.IEEE 1722-2011이 릴리스되었습니다.
AVB 작업 그룹의 이름이 TSN 작업 그룹으로 변경됩니다.
ROS2 DDS 위에 구축됩니다.분산 ROS2 시스템의 일반적인 미디어는 이더넷입니다.
802.1Qbv 및 802.1Qbu가 출시되어 완전히 결정론적인 이더넷 네트워크를 정의할 수 있습니다.
파벨 키리엔코는 UAVCAN v0을 정의하기 위한 오픈 소스 노력을 주도합니다.처음에는 CAN 2.0B만 지원합니다.
Airbus는 IEEE에 AFDX를 TSN 표준에 통합할 것을 제안하는 "Avionics Full Duplex Ethernet and Time-Sensitive Networking Standard"를 발표합니다.
ARINC 825-4는 CAN-FD에 대한 지원을 추가하고 ARINC-664를 통한 터널링을 정의합니다.
Amazon Prime Air는 CAN-FD 지원을 추가하여 v0에 대한 최소한의 변경 사항 집합을 정의합니다.비공식 버전의 이름은 v0.5입니다.동시에 스톡홀름 [18]정상회담에서 UAVCAN v1이 구상되었습니다.
10BASE T1S는 PLCA(Physical Layer Collision Assurance)를 사용하여 반이중, 2-와이어, 다중 드롭 이더넷 미디어를 정의하는 IEEE 802.3에 추가되었습니다.이 사양은 자동차 및 산업용 사용 사례(예: MODBUS 교체)를 대상으로 합니다.
에어버스 A380 생산 중단
UAVCAN v1이 베타가 됩니다.
드론 CAN은 UAVCAN v0/v0.5 규격의 유지보수 및 고도화를 인계받습니다.
UAVCAN v1은 사이팔로 [12]이름이 변경되었습니다.
설계.
Cypal은 기능 안전 및 결정론을 [3]훼손하지 않고 소프트웨어[19] 엔지니어에게 친숙하고 접근 가능한 제로 비용 추상화를 제공합니다.새로운 기술로서, 그것은 레거시의 방해를[3] 받지 않으며 일반 정보 [20]기술 분야의 최근 발전으로부터 많은 돈을 빌립니다.프로토콜은 상태 비저장 게시-구독 통신 모델을 제공합니다. 여기서 노드는 네트워크에 연결되는 즉시 작동을 시작하여 높은 무결성 애플리케이션을 [13]수용할 수 있습니다.
프로토콜은 이더넷 또는 CAN FD와 같은 신뢰할 수 있는 차량 네트워크 위에서 작동하는 전송 계층과 소위 DSDL(데이터 구조 설명 언어)을 기반으로 하는 전송에 구애받지 않는 프레젠테이션(직렬화) 계층의 두 가지 주요 구성 [21]요소로 명확하게 구분됩니다.이 프로토콜은 1000개 미만의 논리적 코드 [22]행으로 구현할 수 있는 것으로 나타났습니다.
DSDL은 실시간 고 무결성 임베디드 시스템에 적합한 솔루션을 렌더링하기 위해 추가 정적 제약 조건을 도입한다는 점을 제외하면 ROS에 사용되는 인터페이스 설명 언어와 이념적으로 유사합니다.이 유사성은 일부 개발자들이 자동 번역 [10][23]계층을 사용하여 ROS를 사이팔과 인터페이스하도록 만들었습니다.
핵심 원리
이 프로토콜은 솔루션이 현대의 복잡한 안전에 중요한 차량 시스템에 적합하도록 보장하기 위한 다음과 같은 핵심 설계 원칙을 기반으로 구축되었습니다.
- 민주 네트워크 - 마스터 노드가 없습니다.네트워크의 모든 노드는 동일한 통신 권한을 가집니다. 단일 장애 지점이 없어야 합니다.
- 기능 안전의 촉진 — Cypal 시스템 설계자는 시스템을 분석하고 올바른 동작을 보장하기 위해 필요한 보증과 도구를 마음대로 사용할 수 있습니다.
- 상위 수준의 통신 추상화 — 프로토콜은 정적으로 정의되고 정적으로 검증된 데이터 유형(스킴)을 사용하여 게시/구독 및 원격 프로시저 호출 통신 의미론을 지원합니다.통신에 사용되는 데이터 유형은 명확하고 플랫폼에 구애받지 않는 방식으로 정의되며, 이는 기계와 인간 모두가 쉽게 이해할 수 있습니다.
- 공급업체 간 상호 운용성 촉진 — Cypal은 서로 다른 공급업체가 장비의 상호 운용성을 보장하기 위해 구축할 수 있는 공통 기반을 제공합니다.Cypal은 표준 애플리케이션에 구애받지 않는 통신 데이터 유형의 일반적인 세트를 제공합니다.
- 잘 정의된 일반 고급 기능 — Cypal은 네트워크 검색, 노드 구성, 노드 소프트웨어 업데이트, 노드 상태 모니터링, 네트워크 전체 시간 동기화, 플러그 앤 플레이 노드 지원 등과 같은 일반적인 고급 기능에 대한 표준 서비스 및 메시지를 정의합니다.
- 원자성 데이터 추상화 - 노드는 단일 전송 프레임의 용량을 초과하는 대용량 데이터 구조를 교환할 수 있습니다.Cypal은 프로토콜 수준에서 자동 데이터 분해 및 재구성을 수행하여 관련 복잡성을 애플리케이션에서 숨깁니다.
- 높은 처리량, 짧은 대기 시간, 결정론 — Cypal은 기본 전송 프로토콜에 매우 낮은 오버헤드를 추가하여 높은 처리량과 짧은 대기 시간을 보장합니다.따라서 Cyphal은 실시간 하드 애플리케이션에 적합합니다.
- 중복 인터페이스 및 중복 노드 지원 — Cypal은 모듈식 중복이 필요한 애플리케이션에 적합합니다.
- 간단한 논리, 낮은 계산 요구사항 — Cypal은 고성능 온보드 컴퓨터에서 리소스가 극도로 제한된 마이크로컨트롤러에 이르기까지 다양한 임베디드 시스템을 대상으로 합니다.컴퓨팅 성능 및 엔지니어링 시간 측면에서 지원하는 비용이 저렴하며, 고급 기능은 필요에 따라 점진적으로 구현할 수 있습니다.
- 풍부한 데이터 유형 및 인터페이스 추상화 — 인터페이스 설명 언어는 기술의 핵심 부분으로, 심층적으로 내장된 하위 시스템이 높은 수준의 시스템과 직접(그리고 유지 관리 가능한 방식으로) 인터페이스할 수 있도록 하는 동시에 시뮬레이션 및 기능 테스트를 가능하게 합니다.
- 다양한 전송 프로토콜 지원 — Cypal은 여러 다른 전송과 함께 사용할 수 있으며, 향후 다른 전송 프로토콜을 지원하도록 확장할 수 있습니다.
- API에 구애받지 않는 표준 — 다른 네트워킹 표준과 달리 Cypal은 API(애플리케이션 프로그램 인터페이스)를 설명하려고 하지 않습니다.네트워크의 다른 참가자들이 관찰할 수 있는 구현의 동작에 영향을 미치지 않는 모든 세부 사항은 사양의 범위를 벗어납니다.
- 개방형 사양 및 참조 구현 — Cyphal 사양은 누구나 자유롭게 사용할 수 있으며 앞으로도 계속 사용할 수 있습니다.참조 구현은 허용되는 MIT 라이센스 조건에 따라 배포되거나 공용 도메인으로 릴리스됩니다.
전송 계층
사이팔/CAN
CAN 트랜스포트는 29비트 식별자를 사용하여 CAN 및 CAN FD 위에 구축됩니다.CAN 페이로드에는 전송 [21]계층의 필요에 따라 프레임당 1바이트의 고정 크기 오버헤드가 포함됩니다.
사이팔/UDP
실시간 이더넷 기반 차량 네트워크를 위해 사이팔/UDP 전송이 제안되었습니다.디자인은 AFDX, DDS/RTPS, SOME/[20]IP의 영향을 받았다고 합니다.
표준 데이터 유형
다른 유사한 기술과 마찬가지로, Cypal은 일반적인 [24]응용 프로그램의 특정 공통 문제를 해결하기 위한 프로토콜 유지 관리자에 의해 관리되고 선별된 공통 데이터 유형 라이브러리를 제공합니다.이러한 데이터 유형은 일반적으로 프로그래밍 언어가 사용자가 개발한 소프트웨어에 의존할 표준 라이브러리를 정의하는 것과 마찬가지로 채택업체가 정의한 벤더별 또는 애플리케이션별 데이터 유형을 보완합니다.프로토콜 사양은 충돌을 방지하고 독립 [25]공급업체에서 정의한 데이터 유형의 상호 운용성을 향상시키기 위한 일련의 규칙을 제공합니다.
레퍼런스
- ^ "Open technology for real-time communications in cyber-physical systems".
- ^ "About OpenCyphal". Retrieved 28 Feb 2020.
- ^ a b c "UAVCAN - Kvaser - Advanced CAN Solutions". Retrieved 16 October 2019.
- ^ "Drones discuss UAVCAN - CAN bus for UAV". groups.google.com/forum/#!topic/drones-discuss. Retrieved 2020-02-27.
- ^ 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.
- ^ "ArduPilot Developer CAN bus and UAVCAN protocol". ardupilot.org. Retrieved 2020-02-27.
- ^ 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.
- ^ Bhat, Sriharsha; Stenius, Ivan; Bore, Nils; Severholt, Josefine; Ljung, Carl; Torroba Balmori, Ignacio (2019). "Towards a Cyber-Physical System for Hydrobatic AUVs". OCEANS 2019 - Marseille. pp. 1–7. doi:10.1109/OCEANSE.2019.8867392. ISBN 978-1-7281-1450-7. S2CID 204700489.
- ^ "Archived copy" (PDF). Archived from the original (PDF) on 2020-02-28. Retrieved 2020-02-28.
{{cite web}}
CS1 유지보수: 제목으로 보관된 복사본(링크) - ^ a b "GitHub - MonashUAS/Canros: UAVCAN to ROS interface". GitHub. 5 April 2022.
- ^ "All new 2019 VESC-Tool release". 8 February 2019.
- ^ a b "UAVCAN v1 is now Cyphal". OpenCyphal Forum. 2022-03-25. Retrieved 2022-10-13.
- ^ a b "UAVCAN: A highly dependable publish-subscribe protocol for real-time intravehicular networking". 2 July 2019.
- ^ "New OpenGrab EPM V3 for UAV cargo holding". 4 December 2015.
- ^ https://forum.opencyphal.org/
- ^ "NXP Semiconductors is pleased to support UAVCAN V1.0". 9 December 2019.
- ^ "Dronecode Leading open-source components for UAVs". www.dronecode.org. Retrieved 2020-02-27.
- ^ "Stockholm Summit recap". OpenCyphal Forum. 2018-10-05. Retrieved 2022-10-13.
- ^ "OlliW's Bastelseiten » UC4H: UAVCAN for Hobbyists".
- ^ a b "Alternative transport protocols in UAVCAN". 11 January 2019.
- ^ a b https://opencyphal.org/specification[베어 URL PDF]
- ^ "Compact Cyphal/CAN v1 in C". GitHub. 22 November 2021.
- ^ "Our first ROS2 UAVCAN (PyCyphal) publisher and service nodes". OpenCyphal Forum. 2022-04-12. Retrieved 2022-10-13.
- ^ "Regulated DSDL definitions". GitHub. 16 November 2021.
- ^ "Data type regulation policy and membership fees". 8 December 2019.