目录
概述
QoS 策略
与 ROS 1 的比较
QoS 配置文件
QoS 兼容性
与 ROS 1 的比较
QoS 事件
匹配事件
概述
ROS 2 提供了多种丰富的服务质量 (QoS) 策略,允许您调整节点之间的通信。通过合适的服务质量策略集,ROS 2 可以像 TCP 一样可靠,也可以像 UDP 一样尽力而为,并且在两者之间有许多可能的状态。与主要仅支持 TCP 的 ROS 1 不同,ROS 2 受益于底层 DDS 传输的灵活性,在丢包的无线网络环境中,“尽力而为”策略更为合适,或者在需要满足截止日期的实时计算系统中,需要合适的服务质量配置文件。
一组 QoS“策略”组合形成一个 QoS“配置文件”。鉴于为给定场景选择正确的 QoS 策略的复杂性,ROS 2 提供了一组预定义的 QoS 配置文件,用于常见的用例(例如传感器数据)。同时,开发人员可以灵活控制 QoS 配置文件的特定策略。
可以为发布者、订阅者、服务服务器和客户端指定 QoS 配置文件。QoS 配置文件可以独立应用于上述实体的每个实例,但如果使用不同的配置文件,则可能会不兼容,从而阻止消息的传递。
QoS 策略
基础 QoS 配置文件当前包括以下策略的设置:
历史 History
Keep last: 保留最后:仅存储最多 N 个样本,可通过队列深度选项进行配置。
Keep all: 保留所有:存储所有样本,受底层中间件的配置资源限制。
深度 Depth
Queue size: 队列大小:仅在“历史”策略设置为“保留最后一个”时才有效。
可靠性 Reliability
Best effort: 尽力而为:尝试传递样本,但如果网络不稳定,可能会丢失它们。
Reliable: 可靠:保证样品交付,可能会多次重试。
耐用性 Durability
Transient local: 瞬态本地:发布者负责为“迟加入 late-joining ”订阅持久化样本。
Volatile: 易失性:没有尝试持久化样本。
最后期限 Deadline
Duration: 持续时间:预期在主题上发布后续消息之间的最大时间间隔
寿命 Lifespan
Duration: 持续时间:从消息发布到接收之间的最长时间,超过此时间消息将被视为过时或失效(过期消息会被静默丢弃,实际上永远不会被接收)。
活力 Liveliness
Automatic: 自动:当任何一个发布者发布消息时,系统将认为该节点的所有发布者在另一个“租赁期限”内仍然存活。
Manual by topic: 按主题手动:如果系统手动声明发布者仍然存活(通过调用发布者 API),则系统将认为发布者在另一个“租赁期限”内仍然存活。
租赁期限 Lease Duration
Duration: 持续时间:发布者必须表明其存活的最长时间段,超过此时间段系统将认为其已失去活跃性(失去活跃性可能表明发生了故障)。
对于每个不是持续时间的策略,还有“系统默认 system default ”选项,该选项使用底层中间件的默认值。对于每个