没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐

DRAFT
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.
Features:
• Democratic network – no bus master, no single point
of failure.
• Publish/subscribe and request/response (RPC
1
)
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 and triply modular redundant
transports.
• Supports high-precision network-wide time synchro-
nization.
• The specification and high quality reference
implementations in popular programming languages
are free, open source, and available for commercial use
(MIT license).
1
Remote procedure call.
Support and feedback
Information, documentation, and discussions related
to UAVCAN are available via the official website at
uavcan.org.
License
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.
© 2015–2019 UAVCAN Development Team Support & feedback: uavcan.org

DRAFT
Disclaimer of warranty
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, MERCHANTABILITY, or
FITNESS FOR A PARTICULAR PURPOSE.
Limitation of liability
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, indirect, special, 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.
© 2015–2019 UAVCAN Development Team Support & feedback: uavcan.org

DRAFT
2019-01-28 Specification v1.0
Table of contents
1 Introduction . . . . . . . . . . . . 1
1.1 Document conventions . . . . . . . 1
1.2 Design principles . . . . . . . . . 1
1.3 Capabilities . . . . . . . . . . . 2
1.4 Maintenance of the standard data type
set . . . . . . . . . . . . . . 2
1.5 Referenced sources . . . . . . . . 2
2 Basic concepts . . . . . . . . . . . . 4
2.1 Main principles. . . . . . . . . . 4
2.1.1 Communication . . . . . . . . 4
2.1.2 Data types . . . . . . . . . 4
2.1.3 High-level functions . . . . . . . 6
2.2 Message publication . . . . . . . . 6
2.2.1 Anonymous message publication . . . 6
2.3 Service invocation . . . . . . . . . 6
3 Data structure description language . . . . 8
3.1 Architecture . . . . . . . . . . . 8
3.1.1 General principles . . . . . . . 8
3.1.2 Data types and namespaces . . . . . 8
3.1.3 File hierarchy . . . . . . . . . 9
3.2 Grammar . . . . . . . . . . . . 10
3.2.1 Formal definition. . . . . . . . 10
3.3 Data serialization . . . . . . . . . 12
3.3.1 General principles . . . . . . . 12
3.3.2 Scalar values . . . . . . . . . 13
3.3.3 Nested data structures . . . . . . 13
3.3.4 Fixed size arrays . . . . . . . . 13
3.3.5 Dynamic arrays . . . . . . . . 13
3.3.6 Unions . . . . . . . . . . 14
3.4 Data type compatibility and versioning . 14
3.4.1 Rationale . . . . . . . . . . 14
3.4.2 Bit compatibility . . . . . . . . 15
3.4.3 Semantic compatibility . . . . . . 17
3.4.4 Data type versioning . . . . . . . 17
3.5 Conventions and recommendations . . 20
4 Transport layer. . . . . . . . . . . . 21
4.1 Core concepts . . . . . . . . . . 21
4.1.1 Transfer . . . . . . . . . . 21
4.1.2 Message publication . . . . . . . 22
4.1.3 Service invocation . . . . . . . 22
4.1.4 Transfer priority . . . . . . . . 23
4.1.5 Transfer descriptor . . . . . . . 24
4.2 Transfer emission . . . . . . . . . 24
4.2.1 Transfer ID computation. . . . . . 24
4.2.2 Single frame transfers . . . . . . 25
4.2.3 Multi-frame transfers . . . . . . 25
4.2.4 Redundant interface support . . . . 27
4.3 Transfer reception . . . . . . . . . 28
4.3.1 Transfer ID comparison . . . . . . 28
4.3.2 State variables . . . . . . . . 28
4.3.3 State update in a redundant interface
configuration . . . . . . . . . 30
4.3.4 State update in a non-redundant inter-
face configuration . . . . . . . 32
4.4 CAN bus transport layer specification . . 33
4.4.1 CAN ID structure . . . . . . . . 33
4.4.2 CAN frame data . . . . . . . . 35
4.4.3 Software design considerations . . . . 37
5 Application layer . . . . . . . . . . . 40
5.1 Application-level conventions. . . . . 41
5.1.1 Identifier distribution . . . . . . 41
5.1.2 Coordinate frames . . . . . . . 41
5.1.3 Rotation representation . . . . . . 42
5.1.4 Matrix representation . . . . . . 42
5.1.5 Physical quantity representation . . . 43
5.2 Application-level functions. . . . . . 44
5.2.1 Node initialization . . . . . . . 44
5.2.2 Node heartbeat . . . . . . . . 44
5.2.3 Generic node information . . . . . 45
5.2.4 Bus data flow monitoring . . . . . 46
5.2.5 Network-wide time synchronization . . 46
5.2.6 Primitive types and physical quantities . . 47
5.2.7 Remote file system interface . . . . . 49
5.2.8 Generic node commands . . . . . 49
5.2.9 Node software update . . . . . . 49
5.2.10 Register interface. . . . . . . . 50
5.2.11 Diagnostics and event logging . . . . 50
5.2.12 Plug-and-play nodes . . . . . . . 50
5.2.13 Internet/LAN forwarding interface . . . 51
6 List of standard data types . . . . . . . . 52
6.1 uavcan.diagnostic . . . . . . . . . 55
6.1.1 Record . . . . . . . . . . 55
6.1.2 Severity . . . . . . . . . . 55
6.2 uavcan.file . . . . . . . . . . . 56
6.2.1 GetInfo . . . . . . . . . . 56
6.2.2 List . . . . . . . . . . . 56
6.2.3 Modify . . . . . . . . . . 57
6.2.4 Read . . . . . . . . . . . 57
6.2.5 Write . . . . . . . . . . . 58
6.2.6 Error . . . . . . . . . . . 58
6.2.7 Path . . . . . . . . . . . 58
6.3 uavcan.internet.udp . . . . . . . . 59
6.3.1 HandleIncomingPacket . . . . . . 59
6.3.2 OutgoingPacket . . . . . . . . 60
6.4 uavcan.node. . . . . . . . . . . 62
6.4.1 ExecuteCommand . . . . . . . 62
6.4.2 GetInfo . . . . . . . . . . 63
6.4.3 GetTransportStatistics . . . . . . 63
6.4.4 Heartbeat . . . . . . . . . . 64
6.4.5 ID . . . . . . . . . . . . 65
6.4.6 IOStatistics . . . . . . . . . 65
6.4.7 Version . . . . . . . . . . 65
6.5 uavcan.node.port . . . . . . . . . 65
6.5.1 GetInfo . . . . . . . . . . 65
6.5.2 GetStatistics . . . . . . . . . 66
6.5.3 List . . . . . . . . . . . 66
6.5.4 ID . . . . . . . . . . . . 67
6.5.5 ServiceID . . . . . . . . . . 67
6.5.6 SubjectID . . . . . . . . . . 67
6.6 uavcan.pnp . . . . . . . . . . . 68
6.6.1 NodeIDAllocationData . . . . . . 68
6.6.2 NodeIDAllocationDataMTU8 . . . . 70
6.7 uavcan.pnp.cluster . . . . . . . . 71
6.7.1 AppendEntries . . . . . . . . 71
6.7.2 Discovery . . . . . . . . . . 72
6.7.3 RequestVote . . . . . . . . . 72
6.7.4 Entry . . . . . . . . . . . 72
6.8 uavcan.register . . . . . . . . . . 74
6.8.1 Access. . . . . . . . . . . 74
6.8.2 List . . . . . . . . . . . 75
6.8.3 Name . . . . . . . . . . . 75
6.8.4 Value . . . . . . . . . . . 75
6.9 uavcan.time . . . . . . . . . . . 77
6.9.1 GetSynchronizationMasterInfo . . . . 77
6.9.2 Synchronization . . . . . . . . 77
6.9.3 SynchronizedAmbiguousTimestamp . . 79
6.9.4 SynchronizedTimestamp . . . . . 79
6.9.5 TimeSystem . . . . . . . . . 80
6.10 uavcan.primitive . . . . . . . . . 81
6.10.1 Empty . . . . . . . . . . . 81
6.10.2 String . . . . . . . . . . . 81
6.10.3 Unstructured . . . . . . . . . 81
6.11 uavcan.primitive.array . . . . . . . 81
6.11.1 Bit . . . . . . . . . . . . 81
6.11.2 Integer8 . . . . . . . . . . 81
6.11.3 Integer16 . . . . . . . . . . 82
© 2015–2019 UAVCAN Development Team Support & feedback: uavcan.org iii

DRAFT
Specification v1.0 2019-01-28
6.11.4 Integer32 . . . . . . . . . . 82
6.11.5 Integer64 . . . . . . . . . . 82
6.11.6 Natural8 . . . . . . . . . . 82
6.11.7 Natural16 . . . . . . . . . . 82
6.11.8 Natural32 . . . . . . . . . . 82
6.11.9 Natural64 . . . . . . . . . . 83
6.11.10 Real16. . . . . . . . . . . 83
6.11.11 Real32. . . . . . . . . . . 83
6.11.12 Real64. . . . . . . . . . . 83
6.12 uavcan.primitive.scalar . . . . . . . 83
6.12.1 Bit . . . . . . . . . . . . 83
6.12.2 Integer8 . . . . . . . . . . 83
6.12.3 Integer16 . . . . . . . . . . 84
6.12.4 Integer32 . . . . . . . . . . 84
6.12.5 Integer64 . . . . . . . . . . 84
6.12.6 Natural8 . . . . . . . . . . 84
6.12.7 Natural16 . . . . . . . . . . 84
6.12.8 Natural32 . . . . . . . . . . 84
6.12.9 Natural64 . . . . . . . . . . 84
6.12.10 Real16. . . . . . . . . . . 85
6.12.11 Real32. . . . . . . . . . . 85
6.12.12 Real64. . . . . . . . . . . 85
6.13 uavcan.si.acceleration . . . . . . . 85
6.13.1 Scalar . . . . . . . . . . . 85
6.13.2 Vector3 . . . . . . . . . . 85
6.14 uavcan.si.angle . . . . . . . . . . 85
6.14.1 Quaternion . . . . . . . . . 85
6.14.2 Scalar . . . . . . . . . . . 86
6.15 uavcan.si.angular_velocity . . . . . . 86
6.15.1 Scalar . . . . . . . . . . . 86
6.15.2 Vector3 . . . . . . . . . . 86
6.16 uavcan.si.duration . . . . . . . . 86
6.16.1 Scalar . . . . . . . . . . . 86
6.16.2 WideScalar . . . . . . . . . 86
6.17 uavcan.si.electric_charge . . . . . . 86
6.17.1 Scalar . . . . . . . . . . . 86
6.18 uavcan.si.electric_current . . . . . . 87
6.18.1 Scalar . . . . . . . . . . . 87
6.19 uavcan.si.energy . . . . . . . . . 87
6.19.1 Scalar . . . . . . . . . . . 87
6.20 uavcan.si.length . . . . . . . . . 87
6.20.1 Scalar . . . . . . . . . . . 87
6.20.2 Vector3 . . . . . . . . . . 87
6.20.3 WideVector3 . . . . . . . . . 87
6.21 uavcan.si.magnetic_field_strength . . . 88
6.21.1 Scalar . . . . . . . . . . . 88
6.21.2 Vector3 . . . . . . . . . . 88
6.22 uavcan.si.mass . . . . . . . . . . 88
6.22.1 Scalar . . . . . . . . . . . 88
6.23 uavcan.si.power . . . . . . . . . 88
6.23.1 Scalar . . . . . . . . . . . 88
6.24 uavcan.si.pressure. . . . . . . . . 88
6.24.1 Scalar . . . . . . . . . . . 88
6.25 uavcan.si.temperature . . . . . . . 89
6.25.1 Scalar . . . . . . . . . . . 89
6.26 uavcan.si.velocity . . . . . . . . . 89
6.26.1 Scalar . . . . . . . . . . . 89
6.26.2 Vector3 . . . . . . . . . . 89
6.27 uavcan.si.voltage . . . . . . . . . 89
6.27.1 Scalar . . . . . . . . . . . 89
6.28 uavcan.si.volume . . . . . . . . . 89
6.28.1 Scalar . . . . . . . . . . . 89
6.29 uavcan.si.volumetric_flow_rate . . . . 90
6.29.1 Scalar . . . . . . . . . . . 90
7 Physical layer . . . . . . . . . . . . 91
7.1 CAN bus physical layer specification . . 92
7.1.1 Physical connector specification . . . 92
7.1.2 CAN bus physical layer parameters . . . 99
7.2 Hardware design recommendations. . . 100
7.2.1 Non-uniform transport redundancy . . 100
7.2.2 Bus power supply. . . . . . . . 100
iv Support & feedback: uavcan.org © 2015–2019 UAVCAN Development Team

DRAFT
2019-01-28 Specification v1.0
List of tables
2.1 Data type taxonomy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Published message properties . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Service request/response properties . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 Notation used in the formal grammar definition. . . . . . . . . . . . . . . . . . . . . 10
3.2 Scalar value serialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Variable-size data type compatibility example . . . . . . . . . . . . . . . . . . . . . 16
3.4 Complex bit compatibility examples. . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1 Common transfer properties . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2 Service request transfer properties . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.3 Service response transfer properties . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.4 Transfer CRC algorithm parameters . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.5 Transfer reception state variables . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.6 CAN ID fields for message transfers . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.7 CAN ID fields for service transfers . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.8 CAN transfer priority level mapping . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.9 Tail byte structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.10 CAN frame data segments for single-frame transfers . . . . . . . . . . . . . . . . . . . 36
4.11 CAN frame data segments for multi-frame transfers (except the last CAN frame of the transfer) . . . . . 36
4.12 CAN frame data segments for multi-frame transfers (the last CAN frame of the transfer) . . . . . . . 36
5.1 Port identifier distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Index of the nested namespace “uavcan.node.port” . . . . . . . . . . . . . . . . . . . 46
5.3 Index of the nested namespace “uavcan.time” . . . . . . . . . . . . . . . . . . . . . 47
5.4 Index of the nested namespace “uavcan.si” . . . . . . . . . . . . . . . . . . . . . . 48
5.5 Index of the nested namespace “uavcan.primitive” . . . . . . . . . . . . . . . . . . . . 49
5.6 Index of the nested namespace “uavcan.file” . . . . . . . . . . . . . . . . . . . . . . 49
5.7 Index of the nested namespace “uavcan.register” . . . . . . . . . . . . . . . . . . . . 50
5.8 Index of the nested namespace “uavcan.pnp” . . . . . . . . . . . . . . . . . . . . . 51
5.9 Index of the nested namespace “uavcan.internet” . . . . . . . . . . . . . . . . . . . . 51
6.1 Index of the root namespace “uavcan” . . . . . . . . . . . . . . . . . . . . . . . . 53
7.1 Standard CAN connector types . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.2 UAVCAN D-Sub connector pinout . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.3 UAVCAN M8 connector pinout . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.4 UAVCAN Micro connector pinout. . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.5 Standard CAN 2.0 PHY parameters . . . . . . . . . . . . . . . . . . . . . . . . . 99
© 2015–2019 UAVCAN Development Team Support & feedback: uavcan.org v
剩余106页未读,继续阅读


























坐看风云变幻
- 粉丝: 18
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大数据产业的真实面目.docx
- 办公自动化系统需求分析.doc
- 大数据时代下如何促进公共图书馆报纸期刊阅读情况调研报告.docx
- WindowsXP操作系统常遇网络故障研究.doc
- plc小区五层电梯控制系统设计方案.doc
- 【人教】高三生物一轮复习配套试题汇编专题基因工程生物技术的安全性和伦理问题.doc
- 高中化学知识网络归纳.doc
- 上海软件和集成电路产业发展专项-上海科技成果转化.doc
- 证券期货行业网络与信息安全管理规定.docx
- 高中数学信息化课堂的教学策略.docx
- 电力大数据信息安全分析技术要点.docx
- PLC的自控系统优化技术报告.doc
- SQL优化介绍.pdf
- 变频调速技术在工业电气自动化控制中的应用李永涛.docx
- 大学计算机基础一体化教学改革实施和教学效果.docx
- 基于系统动力学的云计算安全风险仿真分析.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论1