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

2024-04-28 01:32

本文主要是介绍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/

这篇关于ROS 2 index翻译(三)——关于服务质量设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942015

相关文章

PyCharm如何设置新建文件默认为LF换行符

《PyCharm如何设置新建文件默认为LF换行符》:本文主要介绍PyCharm如何设置新建文件默认为LF换行符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm设置新建文件默认为LF换行符设置换行符修改换行符总结PyCharm设置新建文件默认为LF

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

MySQL8.0设置redo缓存大小的实现

《MySQL8.0设置redo缓存大小的实现》本文主要在MySQL8.0.30及之后版本中使用innodb_redo_log_capacity参数在线更改redo缓存文件大小,下面就来介绍一下,具有一... mysql 8.0.30及之后版本可以使用innodb_redo_log_capacity参数来更改

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接