RTPSv2.2(中文版)

 

实时发布订阅协议

(RTPS)

DDS互操作性

有线协议规范

V2.2

(2014-09-01正式发布)

https://www.omg.org/spec/DDSI-RTPS/2.2/PDF

目  录

1 范围Scope 9

2 一致性Conformance 9

3 参考文献References 9

4 术语和定义Terms and Definitions 9

5 缩略语Symbols 9

6 附加信息Additional Information 10

6.1 对OMG规范的修改Changes to Adopted OMG Specifications 10

6.2 如何阅读本文How to Read this Specification 10

6.3 致谢Acknowledgements 10

6.4 概念证明Statement of Proof of Concept 11

7 概述Overview 11

7.1 序言Introduction 11

7.2 DDS网络协议的要求Requirements for a DDS Wire-protocol 12

7.3 RTPS网络协议. 13

7.4 RTPS平台无关模型(Platform Independent Model,PIM). 13

7.4.1 结构模块Structure Module 14

7.4.2 消息模块Messages Module 15

7.4.3 行为模块Behavior Module 16

7.4.4 发现模块Discovery Module 16

7.5 RTPS平台特定模型(Platform Specific Model,PSM). 17

7.6 RTPS传输模型Transport Model 17

8 平台无关模型(Platform Independent Model,PIM). 18

8.1 简介Introduction 18

8.2 结构模块Structure Module 18

8.2.1 概述. 18

8.2.1.1 RTPS虚拟机使用的类摘要. 19

8.2.1.2 用于描述RTPS实体和类的类型摘要. 20

8.2.1.3 RTPS实体的配置属性. 21

8.2.2 RTPS历史缓存HistoryCache 22

8.2.2.1 new 24

8.2.2.2 add_change 24

8.2.2.3 remove_change 24

8.2.2.4 get_seq_num_min 24

8.2.2.5 get_seq_num_max 24

8.2.3 RTPS缓存更改CacheChange 25

8.2.4 RTPS实体Entity 25

8.2.4.1 识别RTPS实体:GUID 25

8.2.4.2 RTPS参与者指南. 26

8.2.4.3 参与者内RTPS端点的GUID 26

8.2.5 RTPS参与者Participant 26

8.2.6 RTPS端点Endpoint 27

8.2.7 RTPS编写器Writer 28

8.2.8 RTPS读取器Reader 28

8.2.9 与DDS实体的关系Relation to DDS Entities 28

8.2.9.1 DDS DataWriter 29

8.2.9.2 DDS数据读取器. 32

8.3 消息模块Messages Module 34

8.3.1 概述. 34

8.3.2 类型定义Type Definitions 34

8.3.3 RTPS消息的整体结构The Overall Structure of an RTPS Message 35

8.3.3.1 Header结构. 36

8.3.3.2 Submessage结构. 38

8.3.4 RTPS消息接收者The RTPS Message Receiver 40

8.3.5 RTPS子消息元素SubmessageElements 41

8.3.5.1 GuidPrefix和EntityId 42

8.3.5.2 VendorId 42

8.3.5.3 ProtocolVersion 43

8.3.5.4 SequenceNumber 43

8.3.5.5 SequenceNumberSet 43

8.3.5.6 FragmentNumber 44

8.3.5.7 提供32位片段编号的值。. 44

8.3.5.8 Timestamp 44

8.3.5.9 ParameterList 45

8.3.5.10 Count 45

8.3.5.11 LocatorList 45

8.3.5.12 SerializedData 46

8.3.5.13 SerializedDataFragment 46

8.3.6 RTPS消息头Header 46

8.3.6.1 目的. 46

8.3.6.2 内容. 46

8.3.6.3 Validity有效性. 46

8.3.6.4 接收方状态变化. 47

8.3.6.5 理论解析. 47

8.3.7 RTPS子消息Submessages 47

8.3.7.1 AckNack 48

8.3.7.2 Data 50

8.3.7.3 DataFrag 52

8.3.7.4 Gap 54

8.3.7.5 Heartbeat 55

8.3.7.6 HeartbeatFrag 56

8.3.7.7 InfoDestination 58

8.3.7.8 InfoReply 59

8.3.7.9 InfoSource 60

8.3.7.10 InfoTimestamp 61

8.3.7.11 NackFrag 62

8.3.7.12 Pad 63

8.4 Behavior Module行为模块. 64

8.4.1 概述. 64

8.4.1.1 示例行为. 64

8.4.2 互操作性Interoperability所需的行为. 66

8.4.2.1 总体要求. 66

8.4.2.2 所需的RTPS编写器行为. 67

8.4.2.3 所需的RTPS读取器行为. 68

8.4.3 RTPS协议的实现. 69

8.4.4 写者对每个匹配读者的行为. 69

8.4.5 符号约定Conventions 70

8.4.6 类型定义Type Definitions 71

8.4.7 RTPS编写器参考实现. 71

8.4.7.1 RTPS Writer 71

8.4.7.2 RTPS StatelessWriter 74

8.4.7.3 RTPS ReaderLocator 76

8.4.7.4 RTPS StatefulWriter 77

8.4.7.5 RTPS ReaderProxy 78

8.4.7.6 RTPS ChangeForReader 82

8.4.8 RTPS无状态写者行为Stateless Writer 82

8.4.8.1 Best-Effort StatelessWriter Behavior 82

8.4.8.2 可靠的StatelessWriter行为. 84

8.4.9 RTPS有状态写者行为 StatefulWriter 89

8.4.9.1 Best Effort StatefulWriter行为. 89

8.4.9.2 可靠的StatefulWriter行为. 92

8.4.9.3 图示了ChangeForReader 98

8.4.10 RTPS读取器参考实现. 100

8.4.10.1 RTPS Reader 100

8.4.10.2 RTPS无状态读取器. 102

8.4.10.3 RTPS StatefulReader 103

8.4.10.4 RTPS WriterProxy 104

8.4.10.5 来自Writer的RTPS更改. 107

8.4.11 RTPS无状态读取器行为StatelessReader Behavior 108

8.4.11.1 尽力而为无状态读取器行为. 108

8.4.11.2 可靠的无状态读取器行为. 109

8.4.12 RTPS有状态写者行为 StatefulReader 109

8.4.12.1 尽最大努力陈述读者行为. 109

8.4.12.2 可靠的StatefulReader行为. 111

8.4.12.3 ChangeFromWriter图示. 115

8.4.13 Writer活跃性Liveliness协议. 116

8.4.13.1 通用方法. 116

8.4.13.2 Writer Liveness协议所需的内置端点. 116

8.4.13.3 3内置参与者消息编写器和内置参与者消息读取器QoS 117

8.4.13.4 Writer Liveness协议使用的与内置端点相关的数据类型. 117

8.4.13.5 使用内置ParticipantMessageWriter和内置Participant MessageReader实现Writer Liveness协议. 117

8.4.14 可选行为Optional Behavior 118

8.4.14.1 大数据. 118

8.4.14.2 可靠通信. 119

8.4.15 实现指南. 119

8.4.15.1 ReaderProxy和WriterProxy的实现. 119

8.4.15.2 Gap和AckNack子消息的有效使用. 120

8.4.15.3 3合并多个数据子消息. 120

8.4.15.4 猪背心跳子消息. 120

8.4.15.5 正在发送到未知的readerId 120

8.4.15.6 从无响应的读者中回收有限的资源. 121

8.4.15.7 设置心跳计数和ACKNACK 121

8.5 发现模块Discovery Module 121

8.5.1 概述. 121

8.5.2 RTPS内置发现端点Built-in Discovery Endpoints 122

8.5.3 简单参与者发现协议(Simple Participant Discovery Protocol,SEDP). 122

8.5.3.1 通用方法. 122

8.5.3.2 SPDPdiscoveredParticipantData 123

8.5.3.3 简单参与者发现协议使用的内置端点. 125

8.5.3.4 简单参与者发现协议使用的逻辑端口. 127

8.5.4 简单端点发现协议(Simple Endpoint Discovery Protocol,Sedp). 127

8.5.4.1 通用方法. 127

8.5.4.2 简单端点发现协议使用的内置端点. 127

8.5.4.3 简单端点发现协议所需的内置端点. 128

8.5.4.4 与简单端点发现协议使用的内置端点关联的数据类型. 128

8.5.5 与RTPS虚拟机virtual machine的交互. 131

8.5.5.1 发现新的远程参与者. 131

8.5.5.2 删除先前发现的参与者. 133

8.5.6 支持备选发现协议Alternative Discovery Protocols 133

8.6 版本控制和可扩展性. 134

8.6.1 此主要版本中允许的扩展. 134

8.6.2 在此主要版本中无法更改的内容. 134

8.7 使用RTPS实现DDS QoS和高级DDS功能. 134

8.7.1 向数据子消息添加内嵌参数Adding in-line Parameters to Data Submessages 135

8.7.2 DDS QoS参数Parameters 135

8.7.2.1 直列DDS QoS参数. 136

8.7.2.2 影响有线协议的DDS QoS参数. 136

8.7.3 内容过滤主题Content-filtered Topics 137

8.7.3.1 使用内置端点交换筛选器信息. 138

8.7.3.2 包括每个数据样本的内联过滤器结果. 138

8.7.3.3 互操作性要求. 139

8.7.4 实例生命周期状态Instance Lifecycle State的更改. 139

8.7.5 相干集Coherent Sets 140

8.7.6 直接写入Directed Write 140

8.7.7 属性列表Property Lists 140

8.7.8 原始写者信息Original Writer Info 141

8.7.9 关键字哈希Key Hash 141

9 平台特定模型(Platform Specific Model,PSM):UDP/IP 141

9.1 简介. 141

9.2 符号约定. 142

9.2.1 命名空间Name Space 142

9.2.2 结构的IDL表示和CDR表示. 142

9.2.3 位和字节的表示Representation of Bits and Bytes 142

9.3 RTPS类型的映射Mapping of the RTPS Types 143

9.3.1 全局唯一标识符(GUID). 143

9.3.1.1 GuidPrefix_t的映射. 143

9.3.1.2 EntityId_t的映射. 143

9.3.1.3 预定义的EntityId 144

9.3.1.4 协议2.2版中已弃用的EntityId 145

9.3.1.5 GUID_t的映射. 145

9.3.2 子消息或内置主题数据中出现的类型映射. 146

9.4 RTPS消息的映射Mapping of the RTPS Messages 150

9.4.1 总体结构. 150

9.4.2 PIM子消息元素的映射. 151

9.4.2.1 EntityId 151

9.4.2.2 GuidPrefix 151

9.4.2.3 VendorId 152

9.4.2.4 ProtocolVersion 152

9.4.2.5 SequenceNumber 152

9.4.2.6 SequenceNumberSet 153

9.4.2.7 FragmentNumber 154

9.4.2.8 FragmentNumberSet 155

9.4.2.9 Timestamp 155

9.4.2.10 LocatorList 156

9.4.2.11 ParameterList 156

9.4.2.12 SerializedPayload 157

9.4.2.13 Count 158

9.4.3 其他子消息元素. 158

9.4.3.1 LocatorUDPv4 158

9.4.4 RTPS报头的映射. 159

9.4.5 RTPS子消息的映射. 159

9.4.5.1 子消息标题. 159

9.4.5.2 AckNack子消息. 161

9.4.5.3 Data子消息. 162

9.4.5.4 DataFrag子消息. 163

9.4.5.5 Gap子消息. 164

9.4.5.6 HeartBeat子消息. 165

9.4.5.7 HeartBeatFrag子消息. 166

9.4.5.8 InfoDestination子消息. 167

9.4.5.9 InfoReply子消息. 167

9.4.5.10 InfoSource子消息. 168

9.4.5.11 InfoTimestamp子消息. 168

9.4.5.12 Pad子消息. 169

9.4.5.13 NackFrag子消息. 169

9.4.5.14 InfoReplyIp4子消息(特定于PSM). 170

9.5 RTPS消息封装Message Encapsulation 171

9.6 RTPS协议的映射Mapping of the RTPS Protocol 171

9.6.1 默认定位器Default Locators 171

9.6.1.1 发现流量. 171

9.6.1.2 用户流量. 172

9.6.1.3 默认端口号. 172

9.6.1.4 简单参与者发现协议的默认设置. 172

9.6.2 内置端点的数据表示Data representation for the built-in Endpoints 173

9.6.2.1 ParticipantMessageData内置端点的数据表示. 173

9.6.2.2 简单发现协议内置端点. 174

9.6.3 用于表示在线QoS的ParameterId定义ParameterId Definitions used to Represent In-line QoS 180

9.6.3.1 内容筛选器信息(PID_Content_filter_info). 181

9.6.3.2 相干集(PID_Coherent_set). 183

9.6.3.3 密钥哈希(PID_KEY_HASH). 183

9.6.3.4 StatusInfo_t (PID_STATUS_INFO) 184

9.6.4 协议2.2版不推荐的参数IDParameterIds Deprecated by Version 2.2 of the Protocol 185

10 数据封装Data Encapsulation 186

10.1 简介. 186

10.2 数据封装Data Encapsulation 186

10.2.1 标准数据封装方案. 186

10.2.1.1 通用方法Standard Data Encapsulation Schemes 186

10.2.1.2 OMG CDR 187

10.2.1.3 ParameterList 187

10.2.2 实例Example 188

10.2.2.1 OMG CDR 188

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/12788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos(linux)手动配置ip地址

查看系统 查看ip 进入网卡配置的目录 [root178-119-30-16 ~]# cd /etc/sysconfig/network-scripts/ [root178-119-30-16 network-scripts]# ls ifcfg-ens192 ifdown ifdown-ippp ifdown-post ifdown-sit ifdown-tunnel ifup-bnep ifup-ipv6 ifup-plus…

【Mysql】万字长文带你快速掌握数据库基础概念及SQL基本操作

文章目录 前言一、数据库相关概念1. 什么是数据库2. 数据库的种类3. Mysql 简介4. SQL简介5. 数据库中常见的数据类型 二、SQL基础1. SQL通用语法2. SQL的主要分类3. DDL(数据库,表,索引,视图)4. DML(数据的…

14:00面试,14:06就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,…

【每日一题】—— A - 1-2-4 Test (AtCoder Beginner Contest 270)

🌏博客主页:PH_modest的博客主页 🚩当前专栏:每日一题 💌其他专栏: 🔴 每日反刍 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…

HiveSQL SparkSQL中常用知识点记录

目录 0. 相关文章链接 1. hive中多表full join主键重复问题 2. Hive中选出最新一个分区中新增和变化的数据 3. Hive中使用sort_array函数解决collet_list列表排序混乱问题 4. SQL中对小数位数很多的数值转换成文本的时候不使用科学计数法 5. HiveSQL & SparkSQL中炸裂…

小程序动态隐藏分享按钮

// 禁用分享 wx.hideShareMenu({menus: [shareAppMessage, shareTimeline] })// 显示分享 wx.showShareMenu({withShareTicket: true,menus: [shareAppMessage, shareTimeline] })//私密消息 wx.updateShareMenu({isPrivateMessage: true, })

list与erase()

运行代码: //list与erase() #include"std_lib_facilities.h" //声明Item类 struct Item {string name;int iid;double value;Item():name(" "),iid(0),value(0.0){}Item(string ss,int ii,double vv):name(ss),iid(ii),value(vv){}friend istr…

JMM是如何保证原子性呢?

3.3.1加锁 锁是一种通用技术,比如Java提供的Synchronized关键字就是锁的一种实现,Synchronized是排他锁/独占锁,就是有你没我的意思,只要其他线程到来访问,发现锁还未释放,就要在外面等待,因为S…

Redis—相关背景

Redis—相关背景 🔎Redis—特性In-memory data structures—在内存中存储数据Programmability—可编程性Extensibility—可扩展性Persistence—持久化Clustering—集群High availability—高可用 🔎Redis 为什么快🔎Redis 的使用场景Real-tim…

【TiDB理论知识06】PD架构与作用

目录 一 PD的架构与功能 PD架构 PD作用 名词解释 路由功能 二 TSO的分配 概念 分配过程 性能问题 高可用问题 三 PD的调度原理 总流程 1 信息收集 2 生成调度 3 执行调度 四 Label的作用 Label的配置 给TiKV打标签 PD配置 一 PD的架构与功能 PD架构 PD集群…

学习Maven Web 应用

Maven Web 应用 本章节我们将学习如何使用版本控制系统 Maven 来管理一个基于 web 的项目,如何创建、构建、部署已经运行一个 web 应用。 创建 Web 应用 我们可以使用 maven-archetype-webapp 插件来创建一个简单的 Java web 应用。 打开命令控制台,…

数据库应用:Redis安装部署

目录 一、理论 1.缓存 2.关系型数据库与非关系型数据库 3.Redis 4.Redis安装部署 5.Redis命令工具 6.Redis数据库常用命令 7.Redis多数据库操作 二、实验 1.Redis安装部署 2.Redis命令工具 3.Redis数据库命令 4.Redis多数据库操作 三、问题 1.RESP连接CentOS 7 R…

【单片机】温控系统参数辨识及单片机PID控制

温控系统参数辨识及单片机PID控制 1. 温控系统组成2. matlab辨识系统参数2.1 采集阶跃响应信号导入matlab系统辨识模块 PID控制 1. 温控系统组成 半导体制冷片正向通电制冷,反向通电制热。系统采用半导体制冷片(帕尔贴)作为执行单元&#xf…

微信小程序 样式和全局配置

WXSS wxss 把屏幕分为750个物理像素,大屏大,小屏小,随着设备不一致自动适配 推荐使用iPhone6作为标准,1个rpx 0.5个px,把px乘以2就是rpx的参数 import 导入外部样式表 import /common/common.wxss 样式 权重一…

Vue2 第四节 计算属性,监视属性

1.计算属性 2.监视属性 3.计算属性与监视属性之间的关系 一.计算属性 定义:要用的属性不存在,要通过已有属性计算得来原理:底层借助了Object.defineproperty方法提供的getter和setterget函数什么时候会执行:初次读取的时候会执…

day47-SSM分页

SSM分页(增删改查登录注册) applicationContext.xml中加入mybatis-config.xml路径 mybatis-config.xml Mapper接口 Service接口及其实现类 Mapper.xml page.jsp personDetail.jsp addPerson.jsp updatePerson.jsp login.jsp regist…

搭建自己的Git服务器

环境 服务端:Ubuntu 22.04 客户端:Win11_x64 前提条件:需要确保在Windows机器上能够ping通Ubuntu服务器, 并且服务端与客户端均已安装了Git软件 服务端上的配置操作 以Ubuntu服务器作为Git服务端的运行环境,并方便后期免密推…

如何做好IT类的技术面试

目录 一、IT行业的招聘渠道 二、如何做好技术面试官 三、谈谈IT行业如何做好招聘工作 四、面试IT公司的小技巧 五、面试有哪些常见的问题 六、关于面试的一些建议 面试可能是我们每个人都必须会遇到的事情,而技术面试更具有专业性,以下会从几个方面…

openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符

文章目录 openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符23.1 时间日期操作符23.2 时间/日期函数23.3 TIMESTAMPDIFF23.4 EXTRACT23.5 date_part openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符 23.1 时间日期操作符 用户在使用时…

【Java 高频面试闯关秘籍】大梦谁先觉,平生我自知

一、mysql使用innodb引擎,请简述mysql索引的最左前缀如何优化orderby语句? 关键点: (1)如果排序字段不在索引列上,filesort有两种算法:mysql就要启动双路排序和单路排序 (2&#x…