النسغ ، القطط.
جئت لأخبرك عن مشروع UAVCAN - معيار شبكة جديد لتنظيم تفاعل العقد ومكونات المركبات الحديثة بمستوى عالٍ من الاستقلالية / الأتمتة. الاسم هو اختصار ل U ncomplicated A على مستوى pplication V ehicular C ommunication و الثانية N etworking (بسيطة على متن الشبكات والاتصالات على مستوى التطبيق).
يشرح هذا المنشور الحالة الراهنة والاتجاهات في الأنظمة المحمولة جواً المعقدة ، والمشاكل الحالية والمستقبلية ، وكيف نقوم بحلها وما النجاحات التي تم تحقيقها. في الجزء الثاني ، سيركز زملاؤنا من جامعة إنوبوليس بالتفصيل على الجانب العملي لتنفيذ الطائرات بدون طيار باستخدام مثال لمشاريع محددة.
إرتباط
تم وضع أول فطيرة للمشروع في عام 2014. منذ البداية ، كانت تجربة في الحد الأدنى: هل من الممكن الاعتماد على التجريدات القوية في تطوير أنظمة معقدة محمولة جواً ، مع تجنب زيادة تعقيد التنفيذ والصعوبات المرتبطة بالتحقق والتحقق .
نحن نشهد زيادة سريعة في تعقيد الأنظمة الموجودة على متن الطائرة المرتبطة بتطوير وظائف المركبات (خاصة المركبات غير المأهولة) بشكل عام ، وأنظمة التحكم الآلي بشكل خاص. " ", , ; , / , , , (, ), , , ..
() 20- ; , , 21099:
: — . , ( — ; — ), . , , , -, ?
- , / , (), . NASA, . ( Tesla Model 3, ), ( ).
, . " ". , , , : , , . , , , , . , /. , ( Mars Climate Orbiter, Airbus A400M , Ariane 5, ..).
. , ( , , , , , , , ). Safety Element out of Context (SEooC), ISO 26262. , , — , .
; . , , / .
, . , - ( ) . , , ́ , (schedulability analysis). , ( , 3D ). ; . , ; .
, : Casey Handmer, () . .
, , . , ( AFDX) , , , . , . , .
, ( : , , TCP/IP , , , etc.) .
: , , , . , .
. , . , , CiA/SAE/RTCA/EUROCAE/AUTOSAR/OMG/etc. .
. , : . .
1.
. , , , . 21099 .
/ , , , ..
2.
. , /, .
: . : -(), , .
. , ́ () . , / . ARINC 429 — , 18- () . :
"The Evolution of Avionics Networks From ARINC 429 to AFDX", Fuchs, 2012.
ARINC 429 — - ( DShot MAVLink; , ). , ́ . , . , ( , ).
( , ). , CAN ; . FlexRAY, LIN, MIL-STD-1553 Ethernet ( Ethernet ).
CAN . 1986 MTU 8 . 2012 CAN FD MTU 64 . 2018 CAN XL MTU 2 ( ISO 2021 ).
, Wireless Avionics Intra-Communications (WAIC). WAIC , . , , /, ( ). , , - , , :
, , . (, ) , . SpaceWire ( ; , ) , , Ethernet.
Avionics Full-Duplex Switched Ethernet (AFDX) , (. Boeing 787). , ARINC 429, - . , . AFDX , . ( ) . AFDX ; ARINC 429, ( ), :
"Communications for Integrated Modular Avionics", Alena, 2007.
. , , (, , ) - . , , AFDX ( ) UDP/IPv4. "" TCP/IP , — .
, . , 21099. , , . 2020 , .
3.
, . , -, . .
, , . - .
, Robot Operating System (ROS) ( , ROS , ). ROS SDK PR2 Willow Garage, ( ), . ROS , , , , .. , ( ) , .
ROS Why ROS 2 [Gerkey], , , . , , ( ). ROS, , . , , , - — Data Distribution Services (DDS).
DDS CORBA, - ( - , ). DDS , , (, ROS 2) . Future Airborne Capability Environment (DDS FACE) ; , , DDS , .
, DDS CORBA — . , . "The Design of the TAO Real-Time Object Request Broker" [Schmidt et al, 1999] , — ́ . CORBA ; :
, . "The Design of the TAO Real-Time Object Request Broker", Schmidt et al, 1999.
C++ TAO (The ACE ORB), DDS. TAO DDS, . TAO DDS , , — eProsima Fast-DDS ( , ) — C++ ( ). DDS.
, DDS , . — DDS For Extremely Resource Constrained Environments (DDS-XRCE). , , . , micro-ROS.
SOME/IP — AUTOSAR v4+, IP. DDS, SOME/IP . ( ) SOME/IP DDS.
MQTT , .
, . , ( SOME/IP), . (, , ) .
, , UAVCAN v1. , , :
- . , . (.., ): ; .
- . . , .
- . . , (, ), (, ).
- . , . . .
- . , , . , . (CC BY, MIT) .
Raft, , , , . , , , , . Raft, (N.B.: 43- , ). , , UAVCAN " " ( ):
libuavesp. , , — . , "UAV" "UAVCAN" , .
, UAVCAN , ROS, DDS, AFDX, WAIC CAN , . , , , , " ". UAVCAN ( OSI ):
- . : , , , , , .. . : - (.. ).
- - . - , : Data Structure Description Language (DSDL). DSDL- ( ).
- - . , :
- UAVCAN/CAN CAN CAN FD. , CAN XL, .
- UAVCAN/UDP UDP/IP. 2020- , ( ).
- UAVCAN/serial - (UART, RS-232/422/485, USB CDC ACM) . .
- , . , , IEEE 802.15.4.
, . , UAVCAN , , , .
: (, CAN Ethernet, ) . , , , , , ; , , , , , . , . ( , ). Idempotent interfaces and deterministic data loss mitigation. , .
. , , . UAVCAN ; , - , (. SOME/IP, DDS, ROS, MQ*, etc.), UAVCAN , .
, . ( AFDX) , , , . , Alternative transport protocols in UAVCAN.
, , , . . -, , ; , , , ( ), , , .
, plug-and-play (, UAVCAN/UDP DHCP). , Raft.
. , DSDL , , , /, , , . DSDL- uavcan.diagnostic.Record
, , 112- ( UTF-8):
# Generic human-readable text message for logging and displaying purposes.
# Generally, it should be published at the lowest priority level.
uavcan.time.SynchronizedTimestamp.1.0 timestamp
# Optional timestamp in the network-synchronized time system; zero if undefined.
# The timestamp value conveys the exact moment when the reported event took place.
Severity.1.0 severity
uint8[<=112] text
# Message text.
# Normally, messages should be kept as short as possible, especially those of high severity.
@assert _offset_ % 8 == {0}
@assert _offset_.max <= (124 * 8) # Two CAN FD frames max
, CAN FD .
, . DSDL, ( , ) . , - ( , , — ), . ( , ) .
, , . , , . ( ) ASN.1 UPER ( ), ( , DSDL).
uint16 VALUE_LOW = 1000
uint16 VALUE_HIGH = 2000
uint16 VALUE_MID = (VALUE_HIGH + VALUE_LOW) / 2
# !
uint16 value
uint8[<=100] key # 0 100 .
, , value=1234 key=Hello world!
, :
D2 04 0C 48 65 6C 6C 6F 20 77 6F 72 6C 64 21
D2 04
1234, 0C
— ( 255 , ), .
CAN — CAN ( , CAN FD ):
$ candump -decaxta any
(7.925) vcan2 TX - - 1013373B [8] D2 04 0C 48 65 6C 6C A0 '...Hell.'
(7.925) vcan2 TX - - 1013373B [8] 6F 20 77 6F 72 6C 64 00 'o world.'
(7.925) vcan2 TX - - 1013373B [4] 21 F9 02 60 '!..`'
. .
0x1013373B CAN ID, . 0x1337 (4919 ), (subject-identifier) — ( DDS), UAVCAN , ( SOME/IP CAN). , .
UAVCAN/UDP localhost. Wireshark, , UAVCAN, , :
, 21303, , (4919 ) 16384. , UAVCAN . . (D2 04 0C ...
) 24 , UAVCAN; , ( ) .
, UAVCAN/UDP IP . IP , TCP/IP, UDP/IP. C , Lifelover 2011- " ".
, . PyUAVCAN, ( ).
. : DSDL, () . ( , , , , ..) , UAVCAN, .
UAVCAN , USB USB, CANopen Bluetooth, DDS FACE DDS. :
— Drone Standard 15, DS-015, , , Dronecode Foundation. , UAVCAN — .
, . . , , ( , , , ..), . , -, , , . — , , . UAVCAN Interface Design Guidelines.
, , , , . , , , , .. , . , 21- , , . , , . , , , PDF ; , .
UAVCAN , : CC BY 4.0, — MIT. , .
, GitHub — 90% , . , , .
, Libcanard — UAVCAN/CAN C11, . uavcan.rs — Rust, 2020 .
Yukon — - , UAVCAN , RViz, Wireshark LabView. PyQt , , Yukon. , - . :
API ROS UAVCAN DDS. , ROS UAVCAN, UAVCAN , ROS. "An exploratory study: UAVCAN as a middleware for ROS"; .
, , NXP Semiconductors. "Getting started using UAVCAN v1 with PX4 on the NXP UAVCAN Board", , , - UAVCAN .
UAVCAN- , , , , , , .
, 2019 , , UAVCAN (~10% ) (~80% ) , (~5% , 2020 20 , ), ( ) . , , ; . .
-: DDS ; - .
, , : 47% , UAVCAN . , .
- Digital Avionics Handbook (3rd edition) – Spitzer, Ferrell, 2017
- Computers in Spaceflight: The NASA Experience – Kent, Williams, 2009
- The Evolution of Avionics Networks From ARINC 429 to AFDX – Fuchs, 2012
- Communications for Integrated Modular Avionics – Alena, 2007
- Safety and Certification Approaches for Ethernet-Based Aviation Databuses – Yann-Hang Lee et al, 2005
- The Design of the TAO Real-Time Object Request Broker – Schmidt, Levine, Mungee, 1999
- In Search of an Understandable Consensus Algorithm – Ongaro, Ousterhout, 2014
- Starlink is a very big deal – Handmer, 2019
- Why ROS 2? – Gerkey, 2015
- ROS on DDS – Woodall, 2015
- Safe Micromobility – Santacreu, 2020
- Understanding Service-Oriented Architecture – Sprott, Wilkes, 2009
.
. :
- The UAVCAN Guide — Kirienko, Dixon, 2020
- UAVCAN Specification — UAVCAN Development Team, 2020
- UAVCAN: a highly dependable publish-subscribe protocol for real-time intravehicular networking — Kirienko, Dixon, 2019
- Alternative transport protocols in UAVCAN — Kirienko, 2019
- Idempotent interfaces and deterministic data loss mitigation — Kirienko, 2019
- UAVCAN survey 2019 report — UAVCAN Development Team, 2019