当前位置: 首页 > news >正文

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

相关文章:

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 a…...

Django学习笔记-视图(views)的使用

Django中可以使用views进行管理,类似于WPF的MVVM的ViewModel层,也相当于MVC架构的模Controller层。 一、基于函数的视图FBV(Function-Based View) 通过定义一个函数,包含HttpRequest对象作为参数,用来接受…...

四姑娘山三日游

趁着小孩放暑假,从昆明回来之后,直接自驾到四姑娘山。 第一天 成都-四川省阿坝藏族羌族自治州小金县日隆镇(20230711) 大概9:30从成都市郫都区出发,路线如下:郫都—都江堰–映秀—耿达—卧龙—四姑娘山,中途翻过巴朗…...

spinal HDL语法学习

1 赋值语句 用来声明变量 : 用来对变量进行赋值 2 when otherwise前面是否有"."与otherwise是否换行有关系 3 case class 对Bundle进行扩展时,需要case class case class和class主要有两点区别: (1)case class不需…...

GRE TAP的工作原理与5G工业物联网中的应用

随着互联网新技术的发展以及智能化水平的提高,各企业对实时数据传输的需求也在不断提升,企业愈发重视数据中心的建设,以保障企业内网数据安全。 GRE(Generic Routing Encapsulation,通用路由封装)协议属于…...

NFT和数字藏品的安全方案解析

一、NFT和数字藏品 01 NFT是什么? NFT 是Non-Fungible Tokens 的缩写,意思是不可互换的代币,它是相对于可互换的代币而言的。不可互换的代币也称为非同质代币。什么是可互换的代币?比如BTC(比特币)、ETH&…...

第四篇-Miniconda3-CentOS7-安装

Miniconda3-CentOS7-安装 Conda可以创建你需要的不同版本的Python环境,做的各个环境之间隔离,可以有助于我们一台主机部署不同版本运行环境 下载 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh执行 sh Miniconda3-latest-Linux-…...

高效率,38V最大输入单电感同步升/降稳压器SYV939C

SYV939是一种高压同步降压-升压转换器。该器件工作在4V至28V的宽输入电压范围内,具有10max平均电感电流能力。四个集成的低RDS(ON)开关最大限度地减少了传导损耗。 SYV939c包括完整的保护功能,如输出过流/短路保护,过压保护和热停机&#xff…...

mars3d绘制区域范围(面+边框)

1、图例(绿色面区域白色边框) 2、代码 1)、绘制区域ts文件 import { mapLayerCollection } from /hooks/cesium-map-init /*** 安全防護目標* param map*/ export const addSafetyProtection async (map) > {const coverDatas await m…...

HTML的表格应用

HTML 中的表格用于在网页上展示和组织数据。表格由行和列组成&#xff0c;每个单元格可以包含文本、图像或其他 HTML 元素。下面是一些常用的 HTML 表格标签和属性的应用示例&#xff1a; <table> 标签: 定义表格的起始和结束标记。所有的表格元素应该放在这对标签之间。…...

android的数据存储方式

android的数据存储方式 Android提供了多种数据存储方式&#xff0c;开发者可以根据具体的需求选择合适的存储方式。以下是Android中常用的数据存储方式&#xff1a; Shared Preferences&#xff08;共享偏好设置&#xff09;&#xff1a; Shared Preferences允许将简单的键值…...

用C++编写一个MyString类

1.平台&#xff1a;vs2019 2.很多知识点写在了代码里 class MyString { private:char* str;MyString(char* p, int x){str p;} public:MyString(const char* p nullptr) :str(nullptr){if (p ! nullptr){int len strlen(p) 1;str new char[len];strcpy_s(str, len, p);}…...

Linux C语言中access函数的用法

access()函数的用法&#xff1a;int access(const char *filenpath, int mode) 一、access()函数的作用 access()函数用来判断某个指定路径的文件&#xff08;第一个参数 filenpath&#xff09;&#xff0c;是否符合第二个参数选项&#xff08;F_OK(文件是否存在&#xff09;…...

c# winform 子窗体关闭时主窗体执行指令

按下一个按钮打开子窗体&#xff0c;点 x 关闭子窗体后主窗体自动执行某些指令。例如刷新窗体&#xff0c;加载数据等。 点 x 关闭子窗体后将会执行"刷新父窗体2"下面的内容&#xff0c;其他的没试。 Config readConfigTest new Config();//new一个子窗体并打开 re…...

vue-simple-uploader的fileAdded方法不支持异步的解决办法,autoStart 设置

每日鸡汤&#xff1a;悲观者可能正确&#xff0c;但是乐观者往往成功 假设有一个需求&#xff0c;上传的pdf文档不得大于10M 使用 vue-simple-uploader 这个插件&#xff0c;我们需要在 fileAdded 事件里面进行校验&#xff0c;在1.0.0版本以后&#xff0c;如果想停止上传&…...

WormGPT – 网络犯罪分子用来犯罪的人工智能工具

WormGPT – 网络犯罪分子用来发起商业电子邮件泄露攻击的生成式人工智能工具 前言 什么是蠕虫GPT&#xff08;WormGPT&#xff09; WormGPT是基于EleutherAI于2021年创建的大型语言模型GPT-J的AI模型。它具有无限的字符支持、聊天记忆保留和代码格式化功能。 如果未部署适当…...

【NLP】语音识别 — GMM, HMM

一、说明 在语音识别的深度学习&#xff08;DL&#xff09;时代之前&#xff0c;HMM和GMM是语音识别的两项必学技术。现在&#xff0c;有将HMM与深度学习相结合的混合系统&#xff0c;并且有些系统是免费的HMM。我们现在有更多的设计选择。然而&#xff0c;对于许多生成模型来说…...

中间件面试题

Redis相关面试题 此题是xx位面试题 (1)Redis Cluster,在一个请求过来的时候,数据分布在哪个节点, 使用的是有哪些算法? redis cluster 用不同的算法,就决定了数据如何分布到这些节点上去。 hash算法一致性hash算法hash slot算法(2)Redis为什么是高性能的? 基于内存…...

PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案

PHP使用Redis实战实录系列 PHP使用Redis实战实录1&#xff1a;宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案PHP使用Redis实战实录2&#xff1a;Redis扩展方法和PHP连接Redis的多种方案 Redis扩展方法和PHP连接Redis的多种方案 一、Redis扩展方法二、php操作Redis语…...

【Docker】Docker应用部署之Docker容器安装Redis

目录 一、搜索Redis镜像 二、拉取Redis镜像 三、创建容器 四、测试使用 一、搜索Redis镜像 docker search redis 二、拉取Redis镜像 docker pull redis:版本号 # 拉取对应版本的redis镜像 eg: docker pull redis:5.0 三、创建容器 docker run -id --nameredis -p 6379:637…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...