ROS2之QoS 服务质量管理

参考链接

Ros2中 qos参数的使用-CSDN
ROS2通讯服务质量Qos介绍与样例-鱼香ROS
关于服务质量QoS的设置-知乎

QoS Policies

History (历史):

  • Keep last (仅保留最新): 仅存储最多N个样本,可通过队列深度选项进行配置。
  • Keep all (全部保留): 存储所有样本,受底层中间件的资源限制配置的影响。
Depth (深度):
  • Queue size (队列大小): 仅在"history"策略设置为"keep last"时生效。

Reliability (可靠性):

  • Best effort (尽力而为): 尝试传递样本,但如果网络不稳定可能会丢失。
  • Reliable (可靠传递): 保证样本被传递,可能会多次重试。

Durability (持久性)

### ROS2QoS 策略的使用与配置 #### 定义 QoS 策略的重要性 服务质量QoS设置对于优化节点间通信至关重要,能够显著提升系统的性能和可靠性[^1]。 #### 常见 QoS 参数及其作用 在定义 QoS 策略时,有几个重要的参数需要考虑: - **Reliability**: 控制消息传递的可靠性模式。可以选择 `RELIABLE` 或者 `BEST_EFFORT` 模式。 - **History**: 决定存储的消息数量以及处理方式。选项有 `KEEP_LAST` 和 `KEEP_ALL`。 - **Depth**: 当 History 设为 KEEP_LAST 时有效,表示保留最近多少条消息。 - **Durability**: 描述实体生命周期内可用性的持久化程度,分为 `TRANSIENT_LOCAL`, `VOLATILE`. - **Deadline**: 发布者发送心跳的时间间隔;如果订阅者在这个时间内未收到更新,则认为连接失败。 - **Liveliness**: 如何检测发布者的活跃状态,包括自动 (`AUTOMATIC`) 和手动 (`MANUAL_BY_TOPIC`) 方式。 - **Lifecycle**: 支持节点的状态管理功能,如初始化、激活等阶段转换机制。 这些参数共同决定了消息传输的行为特性,在实际应用中应根据具体需求合理调整[^2]。 #### Python 实现示例 下面是一个简单的例子来展示如何创建带有特定 QoS 策略的话题发布者: ```python import rclpy from std_msgs.msg import String from rclpy.qos import qos_profile_sensor_data, QoSProfile def main(args=None): rclpy.init(args=args) node = rclpy.create_node('qos_publisher') custom_qos_profile = QoSProfile( depth=10, reliability=qos_profile_sensor_data.reliability, history=qos_profile_sensor_data.history, durability=qos_profile_sensor_data.durability ) publisher = node.create_publisher(String, 'topic', qos_profile=custom_qos_profile) msg = String() i = 0 while True: msg.data = f'Hello World: {i}' i += 1 publisher.publish(msg) node.get_logger().info(f'Sending message: "{msg.data}"') if __name__ == '__main__': main() ``` 此代码片段展示了如何自定义一个名为 `custom_qos_profile` 的 QoS 配置文件,并将其应用于话题发布过程中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值