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

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 标识    9
6 附加信息    10
6.1 对OMG规范的修改    10
6.2 如何阅读本文    10
6.3 致谢    11
6.4 到期声明    13
7 概述    13
7.1 序言    13
7.2 DDS网络协议的要求    14
7.3 RTPS网络协议    15
7.4 RTPS平台无关模型(PIM)    16
7.4.1 结构模块    17
7.4.2 消息模块    18
7.4.3 行为模块    19
7.4.4 发现模块    20
7.5 RTPS平台特定模型(PSM)    20
7.6 RTPS传输模型    20
8 平台无关模型(PIM)    21
8.1 引言    21
8.2 结构模块    21
8.2.1 概述    22
8.2.1.1 RTPS虚拟机使用的类的总结    23
8.2.1.2 用于描述RTPS实体和类的类型的总结    23
8.2.1.3 RTPS实体的配置属性    25
8.2.2 RTPS HistoryCache    26
8.2.2.1 new    28
8.2.2.2 add_change    28
8.2.2.3 remove_change    28
8.2.2.4 get_seq_num_min    29
8.2.2.5 get_seq_num_max    29
8.2.3 RTPS CacheChange    29
8.2.4 RTPS 实体(Entity)    30
8.2.4.1 识别RTPS实体:GUID    30
8.2.4.2 RTPS参与者(Participants)的GUID    31
8.2.4.3 参与者中RTPS端点组的GUID    31
8.2.4.4 参与者内RTPS端点的GUID    32
8.2.5 RTPS 参与者(Participant)    32
8.2.6 RTPS组    33
8.2.7 RTPS 端点(Endpoint)    33
8.2.8 RTPS 写入者(Writer)    35
8.2.9 RTPS 读取者(Reader)    35
8.2.10 与DDS实体的关系    35
8.2.10.1 DDS数据写入者(DataWriter)    36
8.2.10.2 DDS 数据读取者(DataReader)    40
8.3 消息模块    43
8.3.1 概述    43
8.3.2 类型定义    44
8.3.3 RTPS消息的总体结构    45
8.3.3.1 RTPS报文头(Header)结构    46
8.3.3.2 消息头扩展HeaderExtension结构    47
8.3.3.3 子消息(Submessage)结构    50
8.3.4 RTPS消息接收器(RTPS Message Receiver)    52
8.3.4.1 消息接收器遵循的规则    53
8.3.5 RTPS SubmessageElements    54
8.3.5.1 GuidPrefix和EntityId    55
8.3.5.2 VendorId    55
8.3.5.3 ProtocolVersion    56
8.3.5.4 SequenceNumber序号    57
8.3.5.5 SequenceNumberSet    57
8.3.5.6 FragmentNumber    58
8.3.5.7 FragmentNumberSet    58
8.3.5.8 Timestamp    58
8.3.5.9 ParameterList    59
8.3.5.10 Count    59
8.3.5.11 ChangeCount    59
8.3.5.12 Checksum    60
8.3.5.13 MessageLength    60
8.3.5.14 UExtension4    60
8.3.5.15 WExtension8    60
8.3.5.16 LocatorList    61
8.3.5.17 SerializedData    61
8.3.5.18 SerializedDataFragment    61
8.3.5.19 GroupDigest    61
8.3.6 RTPS Header    61
8.3.6.1 目的    62
8.3.6.2 内容    62
8.3.6.3 有效性    62
8.3.6.4 接收方状态的变化    62
8.3.6.5 逻辑解释    62
8.3.7 The RTPS HeaderExtension    63
8.3.7.1 目的    63
8.3.7.2 内容    63
8.3.7.3 有效性    63
8.3.7.4 接收方状态的更改    63
8.3.7.5 理论解释    64
8.3.8 RTPS Submessages    64
8.3.8.1 AckNack    66
8.3.8.2 Data    68
8.3.8.3 DataFrag    70
8.3.8.4 GAP    73
8.3.8.5 HeaderExtension    76
8.3.8.6 Heartbeat    76
8.3.8.7 HeartbeatFrag    79
8.3.8.8 InfoDestination    80
8.3.8.9 InfoReply    81
8.3.8.10 InfoSource    83
8.3.8.11 InfoTimestamp    84
8.3.8.12 NackFrag    85
8.3.8.13 Pad    86
8.4 行为模型Behavior Module    87
8.4.1 概述    87
8.4.1.1 示例行为    88
8.4.2 互操作性所需的行为    89
8.4.2.1 通用要求    90
8.4.2.2 所需的RTPS编写器行为    90
8.4.2.3 所需的RTPS读取器行为    91
8.4.3 RTPS协议的实现    92
8.4.4 作家对每个匹配读者的行为    93
8.4.5 符号约定    93
8.4.6 类型定义    93
8.4.7 RTPS编写器参考实现    94
8.4.7.1 RTPS Writer    94
8.4.7.2 RTPS StatelessWriter    97
8.4.7.3 RTPS ReaderLocator    99
9 平台特定模型(PSM):UDP/IP    101
9.1 简介    101
9.2 符号约定    101
9.2.1 Name Space    101
9.2.2 结构的IDL表示和CDR线表示    101
9.2.3 位和字节的表示    102
9.3 RTPS类型的映射    102
9.3.1 全局唯一标识符(GUID)    102
9.3.1.1 GuidPrefix_t的映射    102
9.3.1.2 EntityId_t的映射    103
9.3.1.3 预定义的EntityId    103
9.3.1.4 协议2.2版中已弃用的EntityId    104
9.3.1.5 GUID_t的映射    105
9.3.2 子消息或内置主题数据中出现的类型映射    106
9.3.2.1 IDL Definitions    106
9.3.2.2 Time_t    109
9.3.2.3 Duration_t    109
9.3.2.4 Locator_t    109
9.3.2.5 GroupDigest_t    110
9.3.2.6 Checksum32_t, Checksum64_t, Checksum128_t    110
9.3.2.7 MessageLength_t    110
9.3.2.8 UExtension4_t    110
9.3.2.9 WExtension8_t    111
9.3.2.10 SequenceNumber_t    111
9.3.2.11 ChangeCount_t    111
9.3.2.12 BuiltinEndpointSet_t    111
9.4 RTPS消息的映射    112
9.4.1 总体结构    112
9.4.2 PIM子消息元素的映射    112
9.4.2.1 EntityId    112
9.4.2.2 GuidPrefix    113
9.4.2.3 VendorId    113
9.4.2.4 ProtocolVersion    113
9.4.2.5 SequenceNumber    114
9.4.2.6 SequenceNumberSet    114
9.4.2.7 FragmentNumber    115
9.4.2.8 FragmentNumberSet    116
9.4.2.9 Timestamp    116
9.4.2.10 LocatorList    117
9.4.2.11 ParameterList    117
9.4.2.12 SerializedPayload    119
9.4.2.13 Count    120
9.4.2.14 ChangeCount    120
9.4.2.15 Checksum    120
9.4.2.16 消息长度    123
9.4.2.17 UExtension4    123
9.4.2.18 WExtension8    124
9.4.2.19 GroupDigest    124
9.4.3 其他子消息元素    124
9.4.3.1 LocatorUDPv4    124
9.4.4 RTPS报头的映射    125
9.4.5 RTPS子消息的映射    125
9.4.5.1 Submessage Header    125
9.4.5.2 HeaderExtension子消息    127
9.4.5.3 AckNack Submessage    129
9.4.5.4 Data子消息    129
9.4.5.5 DataFrag自消息    131
9.4.5.6 Gap子消息    132
9.4.5.7 HeartBeat子消息    133
9.4.5.8 HeartBeatFrag子消息    134
9.4.5.9 InfoDestination子消息    134
9.4.5.10 InfoReply    135
9.4.5.11 InfoSource子消息    135
9.4.5.12 InfoTimestamp    136
9.4.5.13 Pad子消息    136
9.4.5.14 NackFrag子消息    137
9.4.5.15 InfoReplyIp4子消息(特定于PSM)    137
9.5 映射到UDP/IP传输消息    138
9.6 RTPS协议的映射    138
9.6.1 HeaderExtension中的ParameterId定义    138
9.6.2 默认定位器    139
9.6.2.1 发现流量    139
9.6.2.2 用户流量    139
9.6.2.3 默认端口号    140
9.6.2.4 简单参与者发现协议的默认设置    140
9.6.3 内置端点的数据表示    141
9.6.3.1 ParticipantMessageData内置端点的数据表示    141
9.6.3.2 简单发现协议内置端点    142
9.6.4 用于表示在线QoS的ParameterId定义    147
9.6.4.1 内容筛选器信息(PID_Content_filter_info)    148
9.6.4.2 相干集(PID_Coherent_set)    150
9.6.4.3 组相干集(PID_Group_Coherent_Set)    150
9.6.4.4 组序列号(PID_Group_SEQ_NUM)    151
9.6.4.5 Publisher Writer信息(PID_Writer_GROUP_Info)    151
9.6.4.6 安全Publisher Writer信息(PID_Secure_Writer_GROUP_Info)    151
9.6.4.7 原始写入程序信息(PID_Original_Writer_Info)    152
9.6.4.8 密钥哈希(PID_KEY_HASH)    152
9.6.4.9 状态信息(PID_STATUS_INFO)    155
9.6.5 为其他DDS规范保留的参数ID    156
9.6.6 协议不推荐的参数ID    156
10 序列化有效载荷表示Serialized Payload Representation    157
10.1 简介    157
10.2 SerializedPayloadHeader和表示标识符    158
10.3 RTPS发现内置终结点的SerializedPayload    158
10.4 其他RTPS内置端点的SerializedPayload    159
10.5 用户定义DDS主题的SerializedPayload    159
10.6 内置端点数据示例    160
10.7 用户定义主题数据示例    163
11 A References    164

相关文章:

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 标识 …...

LeetCode102.Binary-Tree-Level-Order-Traversal<二叉树的层序遍历>

题目: 思路: 写过N叉树的层序遍历,(8条消息) LeetCode429.N-Ary-Tree-Level-Order-Traversal<N 叉树的层序遍历>_Eminste的博客-CSDN博客 使用栈保存每一层的结点。然后每次当前层结束。将这一层的值添加进去res中。…...

yolov8系列[五]-项目实战-yolov8模型无人机检测

yolov8系列[五]-项目实战-yolov8模型无人机检测 项目介绍项目展示功能简介代码结构如何启动 开发者模式1. 安装依赖环境2. 启动程序 源代码下载其他 项目介绍 无人机识别项目,无人机搭载nvidia jetson边缘计算板子,进行实时识别。使用yolov8算法,训练了识别无人机的…...

Redis 笔记,基本数据类型、持久化、主从、集群等等问题

标题 😀😀😀创作不易,各位看官点赞收藏. 文章目录 标题Redis 基础笔记1、安装及环境搭建2、Redis 数据类型2.1、String2.2、List2.3、Hash2.4、Set2.5、Zset2.6、BitMap2.7、HyperLogLog2.8、Geospatial2.9、Stream 3、Redis 持久…...

JDK,JRE,JVM三者的关系

JDK(全称 Java Development Kit),Java开发工具包,能独立创建、编译、运行程序。 JDK JRE java开发工具(javac.exe/java.exe/jar.exe) JRE(全称 Java Runtime Environment),能运行…...

行为型-命令模式(Command Pattern)

说明 命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,以便在不同的请求者和接收者之间进行解耦、参数化和操作的队列化。命令模式允许你将具体的请求封装为对象,这些对象之间彼此独立&#xff…...

总结942

5:40起床 6:00~7:00单词复习300个,记100个 7:15~8:00早读,《love is as strong as death》第一第二段 8:10~9:10三大计算回顾 9:15~10:06 习题880第一章基础选择纠错 10:10~10:30单词默写 10:30~11:40强化第一讲习题 11:40~12:30继续…...

MFC自定义控件使用

用VS2005新建一个MFC项目,添加一个Custom Control控件在窗体 我们需要为自定义控件添加一个类。项目,添加类,MFC类 设置类名字,基类为CWnd,你也可以选择CDialog作为基类 类创建完成后,在它的构造函数中注册一个新的自定义窗体,取名为"MyWindowClass" WNDCL…...

【学习笔记】「ROI 2018 Day 2」无进位加法

先放一个大佬的博客:「loj - 2850」「ROI 2018 Day 2」无进位加法 用数据结构来优化搜索🤔 神一样的 Kidulthood 考场上就已经意识到了这道题的正解是搜索😅 考虑搜索过程的本质🤔 首先是找到最小的满足 t i i t_ii ti​i最大…...

分布式I/O,IT和OT融合少不了它

长期以来信息技术IT和操作运营技术OT是相互隔离的,随着大数据分析和边缘计算业务的对现场级实时数据的采集需求,IT和OT有了逐渐融合的趋势。IT与OT融合,它赋予工厂的管理者监控运行和过程的能力大为增强,甚至可以预测到可能发生的…...

主干网络篇 | YOLOv8 更换主干网络之 VanillaNet |《华为方舟实验室最新成果》

论文地址:https://arxiv.org/pdf/2305.12972.pdf 代码地址:https://github.com/huawei-noah/VanillaNet 在基础模型的核心是“多样性即不同”,这一哲学在计算机视觉和自然语言处理方面取得了惊人的成功。然而,优化和Transformer模型固有的复杂性带来了挑战,需要转向简洁性…...

AD20. 如何给元器件设计、添加3D模型

Altium Designer学习笔记 - 00.目录​​​​​​​ 零. 前言 本文以HF46F继电器为例展示设计、添加元器件3D模型的流程,其他元器件类似。 一. 操作步骤 从下图可以看到此时继电器还没有添加3D模型: 1. 获取元器件尺寸 这里通过查找元器件的数据手册可以…...

C++笔记之vector的底层实现和扩容机制

C笔记之vector的底层实现和扩容机制 1. 先申请内存空间,内存空间容量变成原来的n倍(一般是原来的两倍) 2. 将原本容器中的数据拷贝到新的内存空间中 3. 释放原来的内存空间 4. 将数组指针指向新容器的内存空间 code review! 文章目录 C笔记之vector的底层实现和扩…...

JavaSE - Sting类

目录 一. 字符串的定义 二. String类中的常用方法 1. 比较两个字符串是否相等(返回值是boolean类型) 2. 比较两个字符串的大小(返回值是int类型) 3. 字符串查找 (1)s1.charAt(index) index:下标&…...

zotero+overleaf插入参考文献

zotero导出参考献bib文件 overleaf上传此biib文件 后续添加package,输出参考文献,添加引用参考http://t.csdn.cn/bC245 默认导出的bib文件信息臃肿,使用插件设置,安装过程参考​​​​​http://t.csdn.cn/4HcBm​​​​​​​​…...

C语言每天一练----输出水仙花数

题目&#xff1a;请输出所有的"水仙花数" 题解&#xff1a;所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。 例如, 153是水仙花数, 因为153 1 * 1 * 1 5 * 5 * 5 3 * 3 * 3" #define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h&g…...

Linux-Shell

1.什么是Bash shell(壳) Bash Shell是一个命令解释器&#xff0c;它在操作系统的最外层&#xff0c;负责用户程序与内核进行交互操作的一种接口&#xff0c;将用户输入的命令翻译给操作系统&#xff0c;并将处理后的结果输出至屏幕。 通过xshell连接&#xff0c;就是打开了一…...

Python读取csv、Excel文件生成图表

简介 本文章介绍了通过读取 csv 或 Excel 文件内容&#xff0c;将其转换为折线图或柱状图的方法&#xff0c;并写入 html 文件中。 目录 1. 读取CSV文件 1.1. 生成折线图 1.1.1. 简单生成图表 1.1.2. 设置折线图格式 1.2. 生成柱状图 1.2.1. 简单生成图表 1.2.2. 设置柱…...

虚拟机中Linux的IP地址配置详解

目录 第一章、虚拟机中Linux的IP地址配置详解1.1&#xff09;什么是IP地址1.2&#xff09;如何查看自己电脑ip地址1.3&#xff09;虚拟机NAT模式中Linux的IP地址设置有什么要求 第二章、使用Linux中的编辑命令进行网卡信息文件的配置 友情提醒 先看文章目录&#xff0c;大致了…...

Codeforces Round 889 (Div. 2) 题解

晚上睡不着就来总结一下叭~&#xff08;OoO&#xff09; 赛后榜(希望不要被Hack...Orz) 终榜&#xff01;&#xff01;&#xff01; 瞬间的辉煌(呜呜呜~) 先不放图了。。怕被dalaoHack...呜呜呜~ 总结 7.29半夜比赛&#xff0c;本来是不想打的&#xff0c;感觉最近做的题太多…...

用Godot 4.2的ShapePoints库,5分钟搞定游戏UI里的进度条、血条和技能图标

用Godot 4.2的ShapePoints库快速打造游戏UI组件在独立游戏开发中&#xff0c;UI设计往往是容易被忽视却至关重要的环节。传统做法需要美术资源支持&#xff0c;但当项目处于原型阶段或团队资源有限时&#xff0c;程序化生成UI元素就成为高效解决方案。Godot 4.2内置的ShapePoin…...

深度学习解码星际湍流:从光谱图估计MHD模式能量分数

1. 项目概述与核心价值在星际介质&#xff08;ISM&#xff09;的研究中&#xff0c;磁流体动力学&#xff08;MHD&#xff09;湍流扮演着能量传输、物质混合和结构形成的“发动机”角色。它并非一团混沌&#xff0c;而是可以分解为三种具有不同物理特性的基本模式&#xff1a;阿…...

LLM提示压缩技术:原理、实现与优化实践

1. 提示压缩技术概述在大型语言模型&#xff08;LLM&#xff09;应用中&#xff0c;推理延迟已成为关键瓶颈。当处理包含多个检索段落的RAG&#xff08;检索增强生成&#xff09;系统时&#xff0c;长上下文会导致提示&#xff08;prompt&#xff09;体积膨胀&#xff0c;显著增…...

Unity AI工作流:一句话生成可运行小游戏

1. 这不是“AI写代码”&#xff0c;而是用AI重构游戏开发工作流你有没有试过在Unity里搭一个最简单的飞行小游戏&#xff1f;比如让一只牛马角色在空中左右移动、避开障碍物、收集金币——传统做法是&#xff1a;新建场景、拖入Sprite、挂上Rigidbody2D、写Move脚本、写碰撞检测…...

机器学习算法选择的统计推断:从p值到保形预测的实战指南

1. 项目概述&#xff1a;当算法选择遇上统计推断在机器学习驱动的设计任务里&#xff0c;比如设计一个能高效结合特定蛋白质的RNA序列&#xff0c;或者优化一个酶分子&#xff0c;我们手头往往不只有一种设计算法。相反&#xff0c;我们有一个“菜单”&#xff0c;里面列着各种…...

Keil C51中绝对地址变量初始化问题解析

1. 问题背景与核心需求在嵌入式开发中&#xff0c;特别是使用Keil C51这类经典工具链时&#xff0c;开发者经常需要将变量精确分配到特定的内存地址。这种需求在硬件寄存器映射、共享内存区域或特定外设控制等场景下尤为常见。最近我在一个8051项目开发中就遇到了这样的需求&am…...

昇腾NPU实战:vllm-ascend深度解锁大模型推理新境界

昇腾NPU实战&#xff1a;vllm-ascend深度解锁大模型推理新境界 【免费下载链接】vllm-ascend Community maintained hardware plugin for vLLM on Ascend 项目地址: https://gitcode.com/gh_mirrors/vl/vllm-ascend 在AI推理加速的竞技场上&#xff0c;昇腾NPU正以其独特…...

circuitbreaker常见问题解答:解决Go熔断器使用中的痛点

circuitbreaker常见问题解答&#xff1a;解决Go熔断器使用中的痛点 【免费下载链接】circuitbreaker Circuit Breakers in Go 项目地址: https://gitcode.com/gh_mirrors/circ/circuitbreaker Circuitbreaker是一个强大的Go语言熔断器库&#xff0c;它实现了熔断器模式&…...

MacBook锁屏别慌!手把手教你用恢复模式+Apple ID重置开机密码(保姆级图文)

MacBook锁屏急救指南&#xff1a;3种安全解锁方案详解刚泡好的咖啡还在冒热气&#xff0c;手指悬在键盘上方却突然僵住——那个每天输入几十次的密码&#xff0c;此刻竟怎么也想不起来了。MacBook屏幕上冰冷的"密码错误"提示像一堵墙&#xff0c;将你与所有工作资料、…...

Unity Addressable本地HTTP服务器5分钟合规搭建指南

1. 为什么Addressable资源托管总卡在“本地跑不通”这一步&#xff1f; Unity Addressable Asset System&#xff08;可寻址资源系统&#xff09;上线这么多年&#xff0c;我见过太多团队在最后一步集体卡壳&#xff1a;资源打包没问题&#xff0c;加载逻辑写得滴水不漏&#…...