Editor / suscriptor para sistemas integrados en tiempo real tolerantes a fallas distribuidos en 1500 líneas de código

Savia, gatitos.



Vine a contarles sobre el proyecto UAVCAN, un nuevo estándar de red para organizar la interacción de nodos y componentes de vehículos modernos con un alto nivel de autonomía / automatización. El nombre es un acrónimo de U ncomplicated A -nivel plicación V ehicular C OMUNICACIÓN A nd N etworking (simple a bordo de las redes y las comunicaciones a nivel de aplicación).



Esta publicación explica el estado actual de las cosas y las tendencias en los sistemas aerotransportados complejos, los problemas existentes y futuros, cómo los estamos resolviendo y qué éxitos se han logrado. En la segunda parte, nuestros colegas de la Universidad de Innopolis destacarán en detalle el lado práctico de la implementación de UAVCAN utilizando el ejemplo de proyectos específicos.







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 , . , , /, ( ). , , - , , :





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. - . , -.



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/IPAUTOSAR v4+, IP. DDS, SOME/IP . ( ) SOME/IP DDS.



MQTT , .



, . , ( SOME/IP), . (, , ) .





, , UAVCAN v1. , , :



  1. . , . (.., ): ; .
  2. . . , .
  3. . . , (, ), (, ).
  4. . , . . .
  5. . , , . , . (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, ( ).



, . , — . . 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. , .



, , . 2020 , .



, 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 .



Amazon Prime Air . , — .



UAVCAN- , , , , , , .



, 2019 , , UAVCAN (~10% ) (~80% ) , (~5% , 2020 20 , ), ( ) . , , ; . .





-: DDS ; - .



, , : 47% , UAVCAN . , .



uavcan.org



  • 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


.



. :






All Articles