logo资料库

UAVCAN v1.0 官方规范文档.pdf

第1页 / 共107页
第2页 / 共107页
第3页 / 共107页
第4页 / 共107页
第5页 / 共107页
第6页 / 共107页
第7页 / 共107页
第8页 / 共107页
资料共107页,剩余部分请下载后查看
Introduction
Document conventions
Design principles
Capabilities
Maintenance of the standard data type set
Referenced sources
Basic concepts
Main principles
Communication
Data types
High-level functions
Message publication
Anonymous message publication
Service invocation
Data structure description language
Architecture
General principles
Data types and namespaces
File hierarchy
Grammar
Formal definition
Data serialization
General principles
Scalar values
Nested data structures
Fixed size arrays
Dynamic arrays
Unions
Data type compatibility and versioning
Rationale
Bit compatibility
Semantic compatibility
Data type versioning
Conventions and recommendations
Transport layer
Core concepts
Transfer
Message publication
Service invocation
Transfer priority
Transfer descriptor
Transfer emission
Transfer ID computation
Single frame transfers
Multi-frame transfers
Redundant interface support
Transfer reception
Transfer ID comparison
State variables
State update in a redundant interface configuration
State update in a non-redundant interface configuration
CAN bus transport layer specification
CAN ID structure
CAN frame data
Software design considerations
Application layer
Application-level conventions
Identifier distribution
Coordinate frames
Rotation representation
Matrix representation
Physical quantity representation
Application-level functions
Node initialization
Node heartbeat
Generic node information
Bus data flow monitoring
Network-wide time synchronization
Primitive types and physical quantities
Remote file system interface
Generic node commands
Node software update
Register interface
Diagnostics and event logging
Plug-and-play nodes
Internet/LAN forwarding interface
List of standard data types
uavcan.diagnostic
Record
Severity
uavcan.file
GetInfo
List
Modify
Read
Write
Error
Path
uavcan.internet.udp
HandleIncomingPacket
OutgoingPacket
uavcan.node
ExecuteCommand
GetInfo
GetTransportStatistics
Heartbeat
ID
IOStatistics
Version
uavcan.node.port
GetInfo
GetStatistics
List
ID
ServiceID
SubjectID
uavcan.pnp
NodeIDAllocationData
NodeIDAllocationDataMTU8
uavcan.pnp.cluster
AppendEntries
Discovery
RequestVote
Entry
uavcan.register
Access
List
Name
Value
uavcan.time
GetSynchronizationMasterInfo
Synchronization
SynchronizedAmbiguousTimestamp
SynchronizedTimestamp
TimeSystem
uavcan.primitive
Empty
String
Unstructured
uavcan.primitive.array
Bit
Integer8
Integer16
Integer32
Integer64
Natural8
Natural16
Natural32
Natural64
Real16
Real32
Real64
uavcan.primitive.scalar
Bit
Integer8
Integer16
Integer32
Integer64
Natural8
Natural16
Natural32
Natural64
Real16
Real32
Real64
uavcan.si.acceleration
Scalar
Vector3
uavcan.si.angle
Quaternion
Scalar
uavcan.si.angular_velocity
Scalar
Vector3
uavcan.si.duration
Scalar
WideScalar
uavcan.si.electric_charge
Scalar
uavcan.si.electric_current
Scalar
uavcan.si.energy
Scalar
uavcan.si.length
Scalar
Vector3
WideVector3
uavcan.si.magnetic_field_strength
Scalar
Vector3
uavcan.si.mass
Scalar
uavcan.si.power
Scalar
uavcan.si.pressure
Scalar
uavcan.si.temperature
Scalar
uavcan.si.velocity
Scalar
Vector3
uavcan.si.voltage
Scalar
uavcan.si.volume
Scalar
uavcan.si.volumetric_flow_rate
Scalar
Physical layer
CAN bus physical layer specification
Physical connector specification
CAN bus physical layer parameters
Hardware design recommendations
Non-uniform transport redundancy
Bus power supply
Support and feedback Information, documentation, and discussions related to UAVCAN are available via the official website at uavcan.org. UAVCAN is a standard open to everyone, and it will al- ways remain this way. No licensing or approval of any kind is necessary for its implementation, distribution, or use. This work is licensed under the Creative Commons At- tribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/ by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. and triply modular redundant Features: License Specification v1.0 Revision 2019-01-28 Overview UAVCAN is an open lightweight protocol designed for re- liable communication in aerospace and robotic applica- tions via robust vehicle bus networks. D RAFT • Democratic network – no bus master, no single point of failure. • Publish/subscribe exchange semantics. • Efficient exchange of large data structures with auto- matic decomposition and reassembly. • Lightweight, deterministic, easy to implement, and easy to validate. • Suitable for deeply embedded, resource constrained, hard real-time systems. • Supports dual transports. • Supports high-precision network-wide time synchro- nization. • The reference implementations in popular programming languages are free, open source, and available for commercial use (MIT license). and request/response (RPC1) specification and high quality 1Remote procedure call. © 2015–2019 UAVCAN Development Team Support & feedback: uavcan.org
Disclaimer of warranty Limitation of liability NOTE WELL: This Specification is provided on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. MERCHANTABILITY, indirect, special, In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any author of this Specification be liable for damages, including any direct, incidental, or consequential damages of any character arising from, out of, or in connection with the Specification or the implementation, deployment, or other use of the Specification (including but not limited to damages for loss of goodwill, work stoppage, equipment failure or malfunction, injuries to persons, or any and all other commercial damages or losses), even if such author has been advised of the possibility of such damages. D RAFT © 2015–2019 UAVCAN Development Team Support & feedback: uavcan.org
. . . 5.2 6.5 . . . . . . . . . . . . . . . . . . 6.1 6.2 6.3 6.4 . . . 2.3 3.1 . . 3.2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.1.2 2.1.3 Capabilities . 3.2 Grammar . 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 . . . . 1 1 1 2 3.3 Data serialization . 2.2 Message publication . 2.2.1 Service invocation . 3.4 Data type compatibility and versioning Architecture . 3.1.1 3.1.2 3.1.3 Table of contents 1 Introduction . . 1.5 set . . Referenced sources . . . 2.1 Main principles. 2 Basic concepts . 2 . 2 . 4 . 4 . 4 . 4 . 6 . 6 . 6 . 6 . 8 . 8 . 8 . 8 . . 9 . 10 . 10 . 12 12 . 13 . 13 . 13 . . 13 . 14 . 14 14 . 15 . . 17 . 17 . 20 . 21 . 21 21 . 22 . 22 . 23 . . 24 . 24 24 . 25 . 25 . . 27 . 28 28 . . 28 . . . . . . . . . Communication . Data types . . High-level functions . . . . . 1.1 Document conventions . . . 1.2 Design principles . 1.3 . . . 1.4 Maintenance of the standard data type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anonymous message publication . . . . . . . . . . . . . . . . . 3 Data structure description language . . . . . . . . . . . . . . . . General principles . Data types and namespaces . . File hierarchy . . . . . . . . . . . . . . . . Formal definition. . . . General principles Scalar values . . . Nested data structures . Fixed size arrays . Dynamic arrays . . . . . Unions Application-level functions. . 5.2.1 5.2.2 . 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.2.10 5.2.11 5.2.12 5.2.13 D RAFT . . . . . . . . . . . . . . . . . . . . . . . . . . . HandleIncomingPacket . . . OutgoingPacket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NodeIDAllocationData . . NodeIDAllocationDataMTU8 . . . . . . . . . . . . . . . . Node initialization . . . . Node heartbeat . . . . Generic node information . . Bus data flow monitoring . . Network-wide time synchronization . Primitive types and physical quantities . . . Remote file system interface . . . . . . Generic node commands . . . . . Node software update . . Register interface . . . . . . . Diagnostics and event logging . . Plug-and-play nodes . . . . Internet/LAN forwarding interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GetSynchronizationMasterInfo . . Synchronization . . . . SynchronizedAmbiguousTimestamp SynchronizedTimestamp . . . . . TimeSystem . . . . 6.10 uavcan.primitive . . . . . Empty . . . . String . . Unstructured . . . . . . . . . . . . . . . . 6 List of standard data types . . uavcan.diagnostic . . . 6.1.1 Record . 6.1.2 . Severity . . uavcan.file . . . GetInfo 6.2.1 . . List 6.2.2 . . . Modify 6.2.3 . 6.2.4 Read . . . . Write . 6.2.5 . . Error . 6.2.6 6.2.7 . Path . . uavcan.internet.udp . 6.3.1 6.3.2 uavcan.node. 6.4.1 6.4.2 6.4.3 . 6.4.4 . 6.4.5 . 6.4.6 . 6.4.7 uavcan.node.port . GetInfo 6.5.1 . GetStatistics . 6.5.2 . . List 6.5.3 . ID . 6.5.4 . ServiceID . 6.5.5 . . SubjectID . 6.5.6 uavcan.pnp . . . 6.6.1 6.6.2 uavcan.pnp.cluster AppendEntries 6.7.1 Discovery . 6.7.2 . RequestVote . 6.7.3 . 6.7.4 Entry . . . uavcan.register . Access. . . 6.8.1 List . . . 6.8.2 . . Name . 6.8.3 Value . 6.8.4 . . uavcan.time . . . 6.9.1 6.9.2 6.9.3 6.9.4 6.9.5 3.4.1 3.4.2 3.4.3 3.4.4 Conventions and recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transfer ID comparison . State variables . . State update in a redundant interface configuration . . State update in a non-redundant inter- face configuration . CAN bus transport layer specification . . 4.4.1 4.4.2 . . 4.4.3 . . . . . . . . . . . . . . . . . . . . . . . . Transfer ID computation. . . Single frame transfers Multi-frame transfers . . Redundant interface support . . . . Core concepts . 4.1.1 . 4.1.2 4.1.3 4.1.4 4.1.5 Transfer emission . 4.2.1 4.2.2 4.2.3 4.2.4 Transfer reception . 4.3.1 4.3.2 4.3.3 . . . . . ExecuteCommand . GetInfo . GetTransportStatistics . Heartbeat . . ID . . . IOStatistics Version . . . . . . . . . . . CAN ID structure . . CAN frame data . Software design considerations . . . . Identifier distribution . . Coordinate frames . . . Rotation representation . Matrix representation . . Physical quantity representation . Application-level conventions . . 5.1.1 5.1.2 . . 5.1.3 5.1.4 . 5.1.5 . . . . . 6.11 uavcan.primitive.array . . . . Bit . . Integer8 . Integer16 . . . Transfer . Message publication . . Service invocation . Transfer priority . Transfer descriptor . . . . Rationale . . Bit compatibility . . Semantic compatibility . . Data type versioning . . . . 32 . 33 33 . . 35 . 37 . 40 . 41 41 . . 41 42 . 42 . . 43 4.1 4.2 4.3 4.4 5 Application layer . 4 Transport layer . 6.10.1 6.10.2 6.10.3 6.11.1 6.11.2 6.11.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 . . . . . . . . . . . . . . . . . . . 6.6 6.7 . . . . . . . . . . . . . . . . . . . . 6.8 6.9 4.3.4 . . . . . . 3.5 . 5.1 2019-01-28 Specification v1.0 . . . . 44 44 . . 44 45 . 46 . 46 . 47 . . 49 49 . 49 . 50 . 50 . . 50 . 51 . 52 . 55 . 55 . 55 . 56 56 . 56 . 57 . . 57 58 . 58 . . 58 . 59 . 59 . 60 . 62 62 . . 63 63 . 64 . 65 . 65 . . 65 . 65 65 . 66 . 66 . 67 . . 67 . 67 . 68 68 . . 70 . 71 71 . 72 . 72 . . 72 . 74 74 . 75 . 75 . . 75 . 77 77 . 77 . 79 . . 79 . 80 . 81 81 . . 81 . 81 . 81 81 . 81 . . 82 iii © 2015–2019 UAVCAN Development Team Support & feedback: uavcan.org
Specification v1.0 2019-01-28 . 7.2 Hardware design recommendations. Non-uniform transport redundancy Bus power supply. . 7.2.1 7.2.2 . . . . . . . . 100 . 100 . 100 . . . . . . . . . . . . . . . . 6.15.1 6.15.2 6.14.1 6.14.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scalar . Vector3 6.16 uavcan.si.duration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.16.1 . 6.16.2 WideScalar Scalar . . . . Quaternion . Scalar . . . 6.13.1 6.13.2 . . 6.14 uavcan.si.angle . Scalar . Vector3 Bit . . Integer8 . Integer16 . Integer32 . Integer64 . Natural8 . Natural16 . Natural32 . Natural64 . . . . 6.11.4 6.11.5 6.11.6 6.11.7 6.11.8 6.11.9 6.11.10 Real16. 6.11.11 Real32. 6.11.12 Real64. Integer32 . Integer64 . Natural8 . Natural16 . Natural32 . Natural64 . . . . 6.12.1 6.12.2 6.12.3 6.12.4 6.12.5 6.12.6 6.12.7 6.12.8 6.12.9 6.12.10 Real16. 6.12.11 Real32. 6.12.12 Real64. . . . . . . . . . 6.12 uavcan.primitive.scalar . . . . . . . . . . . . . 6.13 uavcan.si.acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.15 uavcan.si.angular_velocity . . . . . . 6.17 uavcan.si.electric_charge . . 6.18 uavcan.si.electric_current . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.21 uavcan.si.magnetic_field_strength . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CAN bus physical layer specification . . 7.1.1 7.1.2 . . . . . . . . . . . . . . . . . . 6.29 uavcan.si.volumetric_flow_rate . . . . 6.19 uavcan.si.energy . . 6.20 uavcan.si.length . . 6.20.1 6.20.2 . 6.20.3 WideVector3 . . . 6.22 uavcan.si.mass . . 6.23 uavcan.si.power . . . . . . . 6.24 uavcan.si.pressure. . . . . . . . . . 6.25 uavcan.si.temperature . . . . . . . . . . 6.26 uavcan.si.velocity . . . 6.27 uavcan.si.voltage . . 6.28 uavcan.si.volume . . D RAFT 82 . 82 . 82 . 82 . 82 . 83 . 83 . 83 . . 83 . 83 83 . 83 . . 84 84 . 84 . 84 . 84 . . 84 84 . 85 . 85 . . 85 . 85 85 . . 85 . 85 85 . . 86 . 86 86 . . 86 . 86 86 . . 86 . 86 . 86 . 87 . 87 . 87 . 87 . 87 87 . 87 . . 87 . 88 . 88 . 88 . 88 . 88 . 88 . 88 . 88 . 88 . 89 . 89 . 89 89 . . 89 . 89 . 89 . 89 . 89 . 90 . 90 . 91 . 92 92 . . 99 Physical connector specification . CAN bus physical layer parameters . Scalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Scalar . Vector3 Scalar . Vector3 Scalar . Vector3 6.21.1 6.21.2 . . . . . . . . . . . . . . . . . . . . . . . 6.26.1 6.26.2 . . . . . . . . . . . . . . . . . . . . 6.24.1 Scalar . 6.25.1 Scalar . 6.27.1 Scalar . 6.28.1 Scalar . 6.17.1 Scalar . 6.18.1 Scalar . 6.19.1 Scalar . 6.22.1 Scalar . 6.23.1 Scalar . . . . . . . . . . . . . 6.29.1 . . . . . . 7 Physical layer . 7.1 iv Support & feedback: uavcan.org © 2015–2019 UAVCAN Development Team
List of tables 2019-01-28 Specification v1.0 2.1 Data type taxonomy . 2.2 2.3 . . Published message properties . . Service request/response properties . . . . . . . . . . . . . . . . . 3.1 Notation used in the formal grammar definition. . 3.2 . 3.3 3.4 . Scalar value serialization. . Variable-size data type compatibility example Complex bit compatibility examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.1 . Common transfer properties . Service request transfer properties . Service response transfer properties . Transfer CRC algorithm parameters . Transfer reception state variables . . CAN ID fields for message transfers . CAN ID fields for service transfers . CAN transfer priority level mapping . . Tail byte structure . Port identifier distribution . . Index of the nested namespace “uavcan.node.port” Index of the nested namespace “uavcan.time” . Index of the nested namespace “uavcan.si” . . Index of the nested namespace “uavcan.primitive” . . Index of the nested namespace “uavcan.file” . . Index of the nested namespace “uavcan.register” . Index of the nested namespace “uavcan.pnp” . . Index of the nested namespace “uavcan.internet” . . . 4.1 . . 4.2 . . 4.3 . . 4.4 . . 4.5 . . 4.6 . . 4.7 . . 4.8 . 4.9 . 4.10 CAN frame data segments for single-frame transfers . 4.11 CAN frame data segments for multi-frame transfers (except the last CAN frame of the transfer) . 4.12 CAN frame data segments for multi-frame transfers (the last CAN frame of the transfer) . D RAFT Index of the root namespace “uavcan” . Standard CAN connector types 7.1 . 7.2 UAVCAN D-Sub connector pinout 7.3 UAVCAN M8 connector pinout . 7.4 UAVCAN Micro connector pinout. 7.5 Standard CAN 2.0 PHY parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 7 . 10 . 13 . 16 . 17 . 22 . 23 . 23 . 26 . 29 . 33 . 33 . 34 . 35 . 36 . 36 . 36 . 41 . 46 . 47 . 48 . 49 . 49 . 50 . 51 . 51 . 53 . 92 . 93 . 95 . 97 . 99 © 2015–2019 UAVCAN Development Team Support & feedback: uavcan.org v
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 9 . 9 . . 10 . 13 . 33 . 41 . 94 . 94 . 96 . 96 . 98 . 98 . 100 . 100 . 101 Specification v1.0 2019-01-28 List of figures 2.1 UAVCAN architectural diagram. . . . 3.1 Data type name structure. . 3.2 Data type definition file name structure. . 3.3 DSDL directory structure example. 3.4 DSDL serialization example. . . . . . . . . . 4.1 5.1 CAN ID structure . . . . . . . . Coordinate frame conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 UAVCAN D-Sub device connector example. . . 7.2 UAVCAN D-Sub cable connector example. . 7.3 UAVCAN M8 connector pair example. . 7.4 UAVCAN M8 assembled connector pair example. . 7.5 UAVCAN Micro right-angle connectors with a twisted pair patch cable connected. . 7.6 UAVCAN Micro CAN bus termination plug. 7.7 Non-uniform transport redundancy.. . . . 7.8 7.9 . . . . . Simplified conceptual power sinking node design schematic. . Simplified conceptual power sourcing node design schematic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D RAFT vi Support & feedback: uavcan.org © 2015–2019 UAVCAN Development Team
2019-01-28 Specification v1.0 1 Introduction UAVCAN is a lightweight protocol designed to provide a highly reliable communication method for aerospace and robotic applications via robust vehicle bus networks. This is a non-normative chapter covering the basic concepts that govern development and maintenance of the specification. 1.1 1 2 1.2 # This is a source code listing. print(’Hello world!’) It is assumed that a byte always contains eight bits. Design principles Democratic network — There will be no master node. All nodes in the network will have the same com- munication rights; there must be no single point of failure. Code listings are formatted as shown below. All such code is distributed under the same license as this specification, unless specifically stated otherwise. Document conventions Non-normative text, examples, recommendations, and elaborations that do not directly participate in the definition of the protocol are contained in footnotes2 or highlighted sections as shown below. Non-normative sections such as examples are enclosed in shaded boxes like this. D RAFT Facilitation of functional safety — A system designer relying on UAVCAN will have the necessary guar- antees and tools at their disposal to analyze the system and ensure its correct behavior. High-level communication abstractions — The protocol will support publish/subscribe and remote procedure call communication semantics with statically defined and statically verified data types (schema). The data types used for communication will be defined in a clear, platform-agnostic way that can be easily understood by machines, including humans. Facilitation of cross-vendor interoperability — UAVCAN will be a common foundation that different vendors can build upon to maximize interoperability of their equipment. UAVCAN will provide a generic set of standard application-agnostic communication data types. Well-defined generic high-level functions — UAVCAN will define standard services and messages for common high-level functions, such as network discovery, node configuration, node software update, node status monitoring3, network-wide time synchronization, plug-and-play node support, etc. Atomic data abstractions — Nodes must be provided with a simple way of exchanging large data struc- tures that exceed the capacity of a single transport frame4. UAVCAN should perform automatic data de- composition and reassembly at the protocol level, hiding the related complexity from the application. High throughput, low latency, determinism — UAVCAN will add a very low overhead to the underlying transport protocol, which will ensure high throughput and low latency, rendering the protocol well-suited for hard real-time applications. Support for redundant interfaces and redundant nodes — UAVCAN must be suitable for use in applica- tions that require modular redundancy. Simple logic, low computational requirements — UAVCAN targets a wide variety of embedded systems, from high-performance on-board computers to extremely resource-constrained microcontrollers. It will be inexpensive to support in terms of computing power and engineering hours, and advanced features can be implemented incrementally as needed. 2This is a footnote. 3Which naturally grows into a vehicle-wide health monitoring solution. 4A transport frame is an atomic transmission unit defined by the underlying transport protocol. For example, a CAN frame. 1. Introduction 1/101
Specification v1.0 2019-01-28 Support for various transport protocols — UAVCAN will be usable with different transports. The stan- dard must be capable of accommodating other transport protocols in the future. Open specification and reference implementations — The UAVCAN specification will always be open and free to use for everyone; the reference implementations will be distributed under the terms of the permissive MIT License or released into the public domain. 1.3 Capabilities UAVCAN-based networks can accommodate up to 128 nodes on the same logical bus. UAVCAN supports an unlimited number of data types, which can be defined by the specification (such definitions are called “standard data types”) or by others for private use or for public release (in which case they are said to be “application-specific” or “vendor-specific”). There can be up to 256 major versions of a data type, and up to 256 minor versions per major version. More information is provided in chapter 3. UAVCAN supports 65536 message subject identifiers for publish/subscribe exchanges, 512 service identi- fiers for remote procedure call exchanges, and at least 8 anonymous message subject identifiers for certain special features such as plug-and-play support. A small subset of these identifiers is reserved for the core standard and for publicly released vendor-specific types. More information is provided in chapter 5. UAVCAN supports at least5 eight distinct communication priority levels, defined in section 4.1.4. Within each priority level different types of transfers, messages, and services are prioritized in a well-defined, deterministic manner. The list of transport protocols supported by UAVCAN is provided in chapter 4. Non-redundant, doubly- redundant and triply-redundant transports are supported. More information on the physical layer and standardized physical connectivity options is provided in chapter 7. D RAFT Maintenance of the standard data type set The UAVCAN maintainers are charged with advancing the standard data type set based on input from adopters. This feedback is gathered via the official discussion forum6 which is open to the general public. The set of standard data type definitions7 is an integral part of the specification; however, there is only a small set of required data types needed to implement the protocol. A larger set of optional data types are defined to create a standardized data exchange environment supporting the interoperability of COTS8 equipment manufactured by different vendors. See chapter 5 for more information. Within the same major version of the specification, the set of regulated data type definitions can be mod- ified only in the following ways: • A new data type can be added, as long as it doesn’t conflict with any of the existing data types. • An existing data type can be modified, as long as its version number is updated accordingly and all backward compatibility guarantees are respected. • An existing data type or a particular major version of it can be declared deprecated. • Once declared deprecated, the data type will be maintained for at least two more years. After this period, its regulated port ID (if defined) may be reused for an incompatible data type definition. The maintainers will be striving to postpone the reuse of regulated port identifiers as much as possible in order to minimize the possibility of unintended conflicts. • Deprecation will be indicated in the DSDL definition and announced via the discussion forum. A link to the repository containing the set of default DSDL definitions can be found on the official website9. Referenced sources The UAVCAN specification contains references to the following sources: 1.4 1.5 • CiA 801 — Application note — Automatic bit rate detection. • CiA 103 — Intrinsically safe capable physical layer. • CiA 303 — Recommendation — Part 1: Cabling and connector pin assignment. • IEEE 754 — Standard for binary floating-point arithmetic. 5Depending on the transport protocol. 6Please refer to uavcan.org. 7The data structure description language (DSDL) and related concepts are described in section 3. 8Commercial off-the-shelf equipment. 9uavcan.org 2/101 1. Introduction
分享到:
收藏