文章目录1. 概述2. EDP 与 PDP 的关系3. 发现流程4. 内置端点5. EDP 实现类6. 匹配条件7. 总结1. 概述EDP是 RTPS 协议中用于发现端点Writer/Reader的协议是 DDS 发现机制的核心部分。2. EDP 与 PDP 的关系┌─────────────────────────────────────────────────────────────────────┐ │ 发现协议层次 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ PDP (Participant Discovery Protocol) │ │ • 发现 Participant (参与者) │ │ • 交换 ParticipantProxyData │ │ │ │ EDP (Endpoint Discovery Protocol) │ │ • 发现端点 (Writer/Reader) │ │ • 交换 PublicationData / SubscriptionData │ │ • 依赖 PDP先有 Participant 才有 Endpoint │ │ │ └─────────────────────────────────────────────────────────────────────┘3. 发现流程┌─────────────────────────────────────────────────────────────────────┐ │ EDP 发现流程 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ 1. PDP 阶段: 参与者发现 │ │ A ◀───▶ B 互相知道对方的存在 │ │ │ │ 2. EDP 阶段: 端点发现 │ │ A ──SUBSCRIPTION_DATA──▶ B 告知自己有哪些 Reader │ │ A ◀───PUBLICATION_DATA── B 告知自己有哪些 Writer │ │ │ │ 3. 匹配阶段: │ │ Writer A 与 Reader B → 匹配成功开始通信 │ │ Writer B 与 Reader A → 匹配成功开始通信 │ │ │ └─────────────────────────────────────────────────────────────────────┘4. 内置端点EDP 使用内置的 RTPS 端点来发送发现信息内置端点说明SEDP Publication Writer发送本地 PublicationDataSEDP Publication Reader接收远程 PublicationDataSEDP Subscription Writer发送本地 SubscriptionDataSEDP Subscription Reader接收远程 SubscriptionData5. EDP 实现类EDP.h:classEDP{// SEDP 内置 Writer/ReaderRTPSWriter*sedp_writer_;RTPSReader*sedp_reader_;// 本地端点注册到 SEDPboolregisterLocalEndpoints(constBuiltinEndpointSetendpoints);// 配对本地 Writer 与远程 Readerboolpairing_remote_reader_with_local_writer(constGUID_tlocal_writer,constReaderProxyDataremote_reader_data);// 配对本地 Reader 与远程 Writerboolpairing_remote_writer_with_local_reader(constGUID_tlocal_reader,constWriterProxyDataremote_writer_data);};6. 匹配条件两个端点要匹配必须满足条件说明Topic 名称相同topic_name必须一致类型名称相同type_name必须一致QoS 兼容durability、reliability 等必须兼容类型兼容数据类型的序列化格式必须匹配7. 总结┌────────────────────────────────────────────────────────────────────┐ │ EDP 总结 │ ├────────────────────────────────────────────────────────────────────┤ │ │ │ 职责: 发现同 Participant 内所有的 Writer 和 Reader │ │ │ │ 使用内置主题: │ │ • DCPSPublication - 发布者信息 │ │ • DCPSSubscription - 订阅者信息 │ │ │ │ 依赖: PDP (先发现 Participant) │ │ │ │ 匹配条件: │ │ • Topic 名称相同 │ │ • 类型名称相同 │ │ • QoS 兼容 │ │ • 数据类型兼容 │ │ │ └────────────────────────────────────────────────────────────────────┘