中间件交接文档

1.L3 QOS 设计逻辑

L3需要做跨板隔离,当前版本在服务发现的两个阶段都实现了基于分区的隔离机制,分别为PDP分区隔离,EDP分区隔离

Partition QoS Policy

该 QoS 策略允许在由 Domain ID 引入的物理分区内部,再引入一个逻辑分区。 为了让 DataReader 能够看到 DataWriter 所做的变更,不仅 Topic 必须匹配,而且它们至少需要共享一个逻辑分区(参见 PartitionQosPolicy)。

在同一个 Domain ID(物理网络)内,DataWriter(发布者)和 DataReader(订阅者)要想成功匹配并通信,除了常规条件(Topic 名称相同、消息类型兼容、其他 QoS 兼容)外,还必须至少共享一个相同的 Partition 名称。这种隔离手段,性能开销极小(只是字符串比较),却能提供非常强的逻辑隔离保障。

  1. PDP 阶段(Participant 发现)已经过滤: 如果 Participant 级别的 Partition 不匹配,很多实现甚至不会完成 Participant 的相互发现(因为 PDP 报文已携带 Partition 信息)。 → 这时根本不会进入 EDP 阶段。
  2. 即使 PDP 阶段通过了,EDP 阶段也会二次拦截 : 在 EDP(端点宣告)阶段,当 DataWriter 宣告自己的 Publication 或 DataReader 宣告 Subscription 时,报文中会携带完整的 Partition 列表。 接收方在处理 EDP 报文时,会先检查 Partition 是否有交集:
    • 有交集 → 继续后续 QoS、Topic 等匹配逻辑,可能发送匹配的 EDP 响应报文。
    • 无交集直接丢弃该 EDP 报文,不进行后续匹配,也不发送任何响应报文

结论 : Partition 不匹配时,EDP 报文要么根本不发,要么发了也会被对方立即丢弃,不会建立任何通信关系,也不会浪费网络带宽继续后续匹配流程。

PDP: 进程级别的分区隔离,两个进程间必须有同名的Partition Name,PDP报文才会在两个进程间发送接收匹配,没有同名的分区名,直接不发PDP报文

EDP: DR/DW级别的匹配,需要校验DR与DW之间的分区名是否一致,DW与DR直接必须有同名的Partition Name,DR与DW直接才能完成匹配,进行通信,否则不发EDP报文

代码说明:

代码修改主要在cpp:

修改点:读取逻辑,存储逻辑

2.配置使用方式

以A板进程与B板进程跨板通信为例,B板发A板收,需要按照以下配置

3.最近合入记录

|----|------|------|------|
| MR | 合入内容 | 影响范围 | 注意事项 |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |

4.注意点

AB板间的通信不能走组播地址,直接抓包已经看过

5.常见问题 & 排查指南

1.为了手动测试,Python命令和程序,在QOS文件中没有配置隔离,直接可以跨板通信

2.如果在两个进程间通信需要配置,需要查看发送接收进程日志,不能只echo

3.配置QOS后,需要检查程序是不是全都正常启动,通信是否正常

4.需要满足AB完全隔离,则A板程序在A分区通信,B板程序在B分区通信,需要跨板通信的进程在C分区上通信

5.若某个程序,比如AB板都有zdi_ehr这个程序,这两个程序只想各自接收两个程序数据,其他进程的数据不接收,则需要另外开启一个分区通信

6.配置完分区隔离的topic,需要查看topic hz是否翻倍

7.可查看DDS日志分区名是否配置成功

  1. rviz 通信交接

1.通信排查

板子跟rviz docker需要网络盒子连接,,且互相可以ping通

板子内需要先执行replace.sh脚本

检查rviz笔记本ip,子网掩码是否配置成功

检查rviz docker qos 是否包含板子ip

检查docker内是否有topic ,topic是否有输出

检查板子上程序是否启动成功

检查板子上qos文件是否包含rviz笔记本IP

  1. rviz界面

rviz界面时间戳是否打印正常

rviz界面是否显示车道线,没有车道线需要先标定

相关推荐
甲鱼92913 小时前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
Johny_Zhao1 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao2 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1233 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑3 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件3 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
碳基沙盒3 天前
OpenClaw 多 Agent 配置实战指南
运维
深紫色的三北六号3 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash3 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI4 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github