ZBLOG

3.1.2.2.4. RTPSReliableWriterQos This RTPS QoS Policy allows the configuration of several RTPS reliable writer’s aspects. See RTPSReliableWriterQos. List of QoS Policy data members: Data Member Name Type times WriterTimes disable_positive_a...

3.1.2.2.4. RTPSReliableWriterQos

RTPS(Real-Time Publish-Subscribe)可靠写入者的QoS(Quality of Service)策略允许配置多个可靠写入者的属性。以下是RTPSReliableWriterQos的数据成员列表及其详细说明。

QoS Policy 数据成员

数据成员名称 类型
times WriterTimes
disable_positive_acks DisablePositiveACKsQosPolicy
disable_heartbeat_piggyback DisableHeartbeatPiggyback
  • times: 定义了RTPSWriter事件的持续时间。有关更多详细信息,请参阅 WriterTimes。
  • disable_positive_acks: 配置禁用正确认知(positive acknowledgments)的设置。有关更多详细信息,请参见 DisablePositiveACKsQosPolicy。
  • disable_heartbeat_piggyback: 配置禁用心跳附加机制的设置。有关更多详细信息,请参见 DisableHeartbeatPiggyback。

注意:此QoS策略适用于DataWriter实体。仅可在启用的实体上修改DisablePositiveACKsQosPolicy的持续时间数据成员和times数据成员。

WriterTimes

这个结构定义了与可靠写入者事件相关的时间参数。

结构成员列表
成员名称 类型 默认值
initial_heartbeat_delay Duration_t 12ms
heartbeat_period Duration_t 3s
nack_response_delay Duration_t 5ms
nack_supression_duration Duration_t 0s
  • initial_heartbeat_delay: 定义初始心跳延迟的持续时间。
  • heartbeat_period: 指定定期发送心跳之间的间隔。
  • nack_response_delay: 确立ACKNACK消息响应所应用的延迟持续时间。
  • nack_supression_duration: RTPSWriter在发送数据后会忽略收到的nack消息,直到经过该持续时间。

DisableHeartbeatPiggyback

除了使用heartbeat_period定期发送心跳外,可靠DataWriters还会利用一种机制,在向DataReaders传递数据时将心跳子消息附加到同一消息中。这种机制在某些特定情况下有效,例如:

  • 当DataWriter将字节数发送到套接字等于套接字缓冲区长度时,最后一条数据后会附加一个心跳子消息。
  • 当DataWriter历史记录满时,DataWriter开始在每个数据后附加心跳子消息。

可以通过此政策来禁用此机制。

示例代码

// 此示例仅适用于 DataWriter 实体
DataWriterQos writer_qos;

// 初始化时, RTPSReliableWriterQos 默认构造初始心跳延迟为 12 ms
// 将初始心跳延迟更改为 20 纳秒
writer_qos.reliable_writer_qos().times.initial_heartbeat_delay = {0, 20};

// RTPSReliableWriterQos 默认构造周期性心跳间隔为 3 s
// 将心跳周期更改为 5 秒
writer_qos.reliable_writer_qos().times.heartbeat_period = {5, 0};

// RTPSReliableWriterQos 默认构造 ACKNACK 响应延迟为 5 ms
// 将 ACKNACK 响应延迟更改为 10 纳秒
writer_qos.reliable_writer_qos().times.nack_response_delay = {0, 10};

// RTPSReliableWriterQos 默认构造 nacks 抑制持续时间为 0 s
// 将 nacks 抑制持续时间更改为 20 纳秒
writer_qos.reliable_writer_qos().times.nack_supression_duration = {0, 20};

// 您还可以更改 DisablePositiveACKsQosPolicy。有关详细信息,请参见 DisablePositiveACKsQosPolicy 部分。
writer_qos.reliable_writer_qos().disable_positive_acks.enabled = true;

// RTPSReliableWriterQos 默认构造时禁用了 心跳 piggyback机制 
// 禁用心跳 piggyback机制。
writer_qos.reliable_writer_qo.s.disable_heartbeat_piggyback = true;

// 使用修改后的QoS创建 DataWriter 实体
writer_ = publisher_->create_datawriter(topic_, writer_qos);

总结

以上内容介绍了RTPSReliableWriterQoS策略及其相关参数,可以帮助开发人员根据具体需求优化RTPS Writer性能。在进行配置时,需要理解各个参数对通信效率、稳定性及实时性的影响,以确保系统能以最佳状态运行。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7845

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?