在 ROS 2 中,QoS(Quality of Service,服务质量)是用于控制节点之间消息传递的可靠性、历史存储和数据持久性等方面的机制。通过 QoS 设置,用户可以更细粒度地控制消息传递的行为,确保在不同网络环境或应用场景中满足特定的通信需求。
几个常用的包:
QoSProfile:
- 含义:QoSProfile 是用于创建一个完整的 QoS 配置文件的类。它定义了多个 QoS 设置的组合,如队列深度、历史策略、可靠性等。
- 作用:通过这个类,你可以自定义发布者和订阅者的 QoS 行为。
- 例子:
from rclpy.qos import QoSProfile
qos_profile = QoSProfile(depth=10) # 创建一个 QoS 配置,队列深度为 10
ReliabilityPolicy(可靠性策略):
- 含义:ReliabilityPolicy 是 QoS 的一部分,它控制消息传递的可靠性。
- 作用:指定消息传递的可靠性,可以是最佳努力(Best Effort)或可靠(Reliable)。
- ReliabilityPolicy.BEST_EFFORT:发布者尽力发送消息,但不保证每条消息都能成功到达订阅者。
- ReliabilityPolicy.RELIABLE:发布者和订阅者之间有一个确认机制,确保每条消息都被成功接收。
- 应用场景:
- 可靠(Reliable):适用于对数据可靠性要求较高的场景,如控制命令或关键传感器数据。
- 最佳努力(Best Effort):适用于对数据丢失容忍度高的场景,如视频流或实时数据。
- 例子:
from rclpy.qos import ReliabilityPolicy
qos_profile.reliability = ReliabilityPolicy.RELIABLE
HistoryPolicy(历史策略):
- 含义:HistoryPolicy 控制订阅者是否可以接收到历史消息。 <