ROS 2 index翻译(三)——关于服务质量设置

1、综述
ROS 2提供种类丰富的服务质量(Quality of Service,QoS)策略,允许你调整节点间的通信。通过正确设置服务质量策略,在许多许多可能的状态下,ROS 2可以和TCP一样可靠,或者和UDP一样"尽力而为"。不像ROS 1那样主要仅支持TCP,ROS 2 得益于底层DDS传输的灵活性,在易损耗的无线网络环境下,“尽力而为”策略将更加适合,或者在实时计算系统中,需要正确的服务质量profile(先翻译成配置文件吧)来满足截止时间。

一组QoS“策略”组合成QoS“配置文件”。考虑到为给定方案选择正确的QoS策略的复杂性,ROS 2为常见用例(例如传感器数据)提供了一组预定义的QoS配置文件。同时,用户可以灵活地控制QoS策略的特定配置文件。

可以为发布者,订阅者,服务服务器和客户端指定QoS配置文件。QoS配置文件可以独立地应用于前述实体的每个实例,但是如果使用不同的配置文件,则它们可能将连接不上。

2.QoS策略
基本的QoS配置文件目前包含以下策略设置:

  • 历史
    • 保持最后:仅存储N个样本,可通过队列深度选项进行配置。
    • 全部保留:根据底层中间件的配置资源限制存储所有样本。
  • 深度
    • 队列大小:如果与“保持最后”一起使用,则仅被尊重(字面意思,不知何意)。
  • 可靠性
    • 尽力而为:尝试传递样本,但如果网络鲁棒性不高,可能会丢失样本。
    • 可靠:保证样品已交付,可能重试多次。
  • 持久性
    • 暂态本地:发布者负责为“迟到的”订阅者保留样本。
    • 易变性:没有试图保留样品。

对于每个策略,它还有“系统默认”选项,使用底层中间件的默认值,而中间件可能通过DDS供应商工具(例如XML配置文件)来定义。DDS本身具有可以配置的更广泛的策略。由于它们与ROS 1中的特征相似,因此这些策略已经曝光了; 有可能在未来更多的策略将在ROS 2中曝光(翻译成“出现”更贴切)。

3.与ROS 1比较
ROS 2中的历史和深度策略结合起来提供功能类似于ROS 1中的队列大小的功能。

ROS 2中的可靠性策略类似于使用UDPROS(仅roscpp)用于“尽力而为”策略,或者TCPROS(ROS 1默认值)用于"可靠"策略。但请注意,即使ROS 2中的"可靠"策略也是使用UDP实现的,如果合适,它允许进行组播。

持久性策略与深度1相结合提供了类似于“锁定”订阅者的功能。

4.QoS配置文件
配置文件允许开发人员专注于他们的应用程序,而无需担心每个QoS设置。QoS配置文件定义了一组策略,这些策略可以在特定用例中很好地协同工作。

当前定义的QoS配置文件是:

  • 发布者和订阅者的默认QoS设置

    为了实现从ROS 1到ROS 2的转换,执行类似的网络行为是可取的。默认情况下,发布者和订阅者在ROS 2中是可靠的,具有不稳定的持久性和“保持最后”的历史策略。

  • 服务

    与发布者和订阅者一样,服务也是可靠的。这对于使用易变的持久性的服务尤其重要,否则重新启动的服务服务器可能会收到过期的请求。虽然能保护客户端不接收多个响应,但是没有保护服务器免受接收过期请求的副作用。

  • 传感器数据

    对于传感器数据,在大多数情况下,及时接收读数更重要,而不是确保所有读数都送达。也就是说,开发人员一旦捕获到样本数据,他们就希望这是最新的,但这可能会损失一些样本。因此,传感器数据配置文件使用“尽力而为”的可靠性策略和较小的队列深度。

  • 参数

    ROS 2中的参数基于服务,因此具有类似的配置文件。不同之处在于参数使用更大的队列深度,以使请求不会丢失,例如在参数客户端无法访问参数服务服务器时。

  • 系统默认

    所有的策略使用系统默认值。

单击此处查看上述配置文件使用的特定策略。根据社区的反馈,这些配置文件中的设置可能会进一步调整。

虽然ROS 2为常见用例提供了一些QoS配置文件,但使用DDS中定义的策略允许ROS用户利用现有DDS文档的庞大知识库来为其特定用例配置QoS配置文件。

5.QoS兼容性
注意:此部分涉及发布者和订阅者,但其内容以相同方式可应用于服务服务器和客户端。

QoS配置文件可以分别为发布者和订阅者独立配置。仅当一对发布者和订阅者具有兼容的QoS配置文件时,他们之间的连接才会建立。QoS配置文件兼容性是基于“请求vs提供”模型确定的,其中仅在订阅者的请求策略不比发布者的策略更严格时才进行连接。两个策略中较不严格的将用于连接的策略。

ROS 2中暴露的影响兼容性的QoS策略是持久性和可靠性策略。下表显示了不同策略设置和结果的兼容性:

QoS持久性配置文件的兼容性:

发布者 订阅者 连接 结果
易变的 易变的 YES 易变的
易变的 暂态本地 NO -
暂态本地 易变的 YES 易变的
暂态本地 暂态本地 YES 暂态本地

QoS可靠性配置文件的兼容性:

发布者 订阅者 连接 结果
尽力而为 尽力而为 YES 尽力而为
尽力而为 可靠 NO -
可靠 尽力而为 YES 尽力而为
可靠 可靠 YES 可靠

为了建立连接,所有影响兼容性的策略必须兼容。也就是说,即使发布者 - 订阅者对具有兼容的可靠性QoS配置文件,如果它们具有不兼容的持久性QoS配置文件,则不会建立连接,反之亦然。

英文原文:https://index.ros.org/doc/ros2/Concepts/About-Quality-of-Service-Settings/

猜你喜欢

转载自blog.csdn.net/tuxinbang1989/article/details/87997290