RTPSv2.2(中文版)

news2024/12/25 23:51:58

 

实时发布订阅协议

(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.coloradmin.cn/o/807090.html

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

相关文章

【fly-iot飞凡物联】(12):EMQX 5.1使用docker 本地部署,接入到Actorcloud的数据库中,成功连接创建的设备,可以控制设备访问状态

目录 前言1,关于2,使用docker 进行部署3,配置API key 可以使用接口访问的4,设置客户端认证,连接PostgreSQL 数据连接5,使用客户端进行连接6,EMQX的API 接口地址7,总结 前言 本文的原…

Vue2封装自定义全局Loading组件

前言 在开发的过程中,点击提交按钮,或者是一些其它场景总会遇到Loading加载框,PC的一些UI库也没有这样的加载框,无法满足业务需求,因此可以自己自定义一个,实现过程如下。 效果图 如何封装? 第…

Linux安装MySQL 8.1.0

MySQL是一个流行的开源关系型数据库管理系统,本教程将向您展示如何在Linux系统上安装MySQL 8.1.0版本。请按照以下步骤进行操作: 1. 下载MySQL安装包 首先,从MySQL官方网站或镜像站点下载MySQL 8.1.0的压缩包mysql-8.1.0-linux-glibc2.28-x…

获评最高级别权威认证!融云通过中国信通院「办公即时通信软件安全能力」评测

点击报名 8 月 3 日(周四)融云直播课~ 近期,融云再获权威认可,旗下百幄智能在线办公套件平台正式通过中国信通院“办公即时通信软件安全能力”测评,并获得最高级别“卓越级”证书。关注【融云 RongCloud】,…

郑州申请IP地址https证书怎么收费

IP地址https证书是为只有公网IP地址的网站准备的数字证书,和域名SSL证书一样IP地址https证书也为IP地址网站提供传输信息加密服务以及身份认证服务,而IP地址申请https证书是按照IP地址的数量进行收费的,IP地址越多,需要申请IP地址…

临时段的cleanup引起的enq:TT–content等待事件处理过程

文章目录 1.问题描叙2.查因过程3.根因4.处理过程4.1 Mark目标segment为CORRUPT4.2 Drop目标segment4.3 释放占用的空间 1.问题描叙 接到用户抱怨无法修改表架构: 2.查因过程 查看当前DB活动: Select sid,serial#,osuser,program,terminal,sql_id,bl…

sap abap log程序

1.成果: 1.数据库表设计: 2.报表 *&---------------------------------------------------------------------* *& Report ZFUNC_LOG *&---------------------------------------------------------------------* *& *&-----…

手把手教你从0入门线段树~

1. 什么是线段树? 1.1 初探线段树 定义:线段树是一种用于解决区间查询问题的数据结构,是一种广义上的二叉搜索树。 原理:它将一个区间划分为多个较小的子区间,并为每个子区间存储一些有用的信息,例如最大值、最小值…

YOLOv5改进系列(16)——添加EMA注意力机制(ICASSP2023|实测涨点)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2)——添加

android stduio 打开工程后直接报Connection refused解决

报错如下:Connection refused 解决方案: 打开gradle-wrapper.properties修改distributionUrl 将: distributionUrlhttp\://localhost/gradle/distributions/gradle-6.5-bin.zip 替换为: distributionUrlhttps\://services.gradle.org/distributions/gradle-6.5-bin.zip 错…

<C语言> 文件操作

1 文件指针 缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等&#xff…

windows系统之WSL 安装 Ubuntu

WSL windows10 以上才有这个wsl功能 WSL: windows Subsystem for Linux 是应用于Windows系统之上的Linux子系统 作用很简单,可以在Windows系统中获取Linux系统环境,并完全直连计算机硬件,无需要通过虚拟机虚拟硬件 Windows10的W…

MD-MTSP:斑马优化算法ZOA求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、斑马优化算法ZOA 斑马优化算法(Zebra Optimization Algorithm,ZOA)Eva Trojovsk等人于2022年提出,其模拟斑马的觅食和对捕食者攻击的防御行为。斑马优化算法(Zebra Optimization Algorithm,ZOA&#x…

海外ASO优化之应用商店本地化

大多数应用可供世界任何地方的用户使用,所以需要以多种不同语言来展示我们的应用。它能够包含在跨地理区域的搜索结果中,从而提高全球可见性和转化率。 1、关键词的研究,对于确定流行的本地关键词至关重要。 在本地化Google Play的应用页面时…

RTPS规范v2.5(中文版)

实时发布订阅协议 DDS互操作性有线协议 (DDSI-RTPS) 技术规范 V2.5 (2022-04-01正式发布) https://www.omg.org/spec/DDSI-RTPS/2.5/PDF   目 录 1 范围 8 2 一致性 8 3 规范性参考文献 8 4 术语和定义 9 5 标识 …

HTML5前端开发工程师的岗位职责说明(合集)

HTML5前端开发工程师的岗位职责说明1 职责 1、根据产品设计文档和视觉文件,利用HTML5相关技术开发移动平台的web前端页面; 2、基于HTML5.0标准进行页面制作,编写可复用的用户界面组件; 3、持续的优化前端体验和页面响应速度,并保证兼容性和…

Godot 4 插件 - Utility AI 研究

今天看到一个视频教学 Godot4 | 实现简单AI | Utility AI 插件_哔哩哔哩_bilibili 就看了一下。吸引我的不是插件,是AI这两个字母。这AI与Godot怎么结合?感觉还是离线使用,值得一看。 视频时间不长,15分钟左右,看得…

无涯教程-jQuery - Highlight方法函数

Highlight 效果可以与effect()方法一起使用。这将以特定的颜色突出显示元素的背景,默认为黄色(yellow)。 Highlight - 语法 selector.effect( "highlight", {arguments}, speed ); 这是所有参数的描述- color - 高亮显示颜色。默认值为"#fff…

比memcpy还要快的内存拷贝,了解一下

前言 朋友们有想过居然还有比memcpy更快的内存拷贝吗? 讲道理,在这之前我没想到过,我也一直觉得memcpy就是最快的内存拷贝方法了。 也不知道老板最近是咋了,天天开会都强调:“我们最近的目标就一个字,性能优…

CompletableFuture生产中使用问题

CompletableFuture生产中使用问题 1 背景2 测试3 原因4. 总结 1 背景 接到一个任务,需要优化下单接口,查看完业务逻辑后发现有一些可以并行或异步查询的地方,于是采用CompletableFuture来做异步优化,提高接口响应速度,伪代码如下 //查询用户信息CompletableFuture<JSONObj…