ROS2学习(十).ROS概念 - 主题的统计

19 篇文章 10 订阅

概述

ROS 2为任何订阅所接收的消息提供综合统计功能。这允许用户收集订阅统计信息,同时可以更好地描述系统的性能或帮助诊断当前问题。

按照接收到的消息耗时和周期提供相关度量标准。对于每一项数据,本功能提供平均值、最大值、最小值、标准偏差和样本计数等统计数据。 这些统计数据是在一个移动窗口中计算的。

如何计算统计数据

统计功能使用固定内存在固定周期内通过libstatistics_collector包中的工具加以计算。每个新消息的接收将会被作为现在度量窗口的新样本。

  • 平均值采用移动平均值1的方法进行计算
  • 最大、最小值和样本数在采集到新样本时进行更新
  • 标准才使用Welford在线算法2

统计数据种类

  • 接收消息的间隔时间
    • 单位:毫秒
    • 使用系统时钟计算接收到的两条消息间的间隔时间
  • 接受消息的传播耗时
    • 单位:毫秒
    • 要求消息在报头字段中填充时间戳,以便计算单条消息从发布端发送到达消息接收端的耗时

行为

主题的统计默认是不启用的。需要通过订阅配置选项,为特定节点启用此功能,才能收集上述相关的统计数据。
数据以statistics_msg/msg/MetricsMessage的形式发布到一个可配置的主题(默认为1秒发送至/statistics)。

注意
发布周期也将作为样本采集用的窗口周期。

为了采集消息的间隔时间,我们在消息报头字段中加入了消息时间戳,因此我们有时需要空数据以保持消息间隔的一致性。如果没有在消息中找到相关的时间戳,所有的统计值都会是NaN。通过发布空数据而不是不进行消息发布,我们就可以避免信号缺失,并明确表示该数值无法被测定。
每个窗口的第一个样本不进行测定,因为要计算统计信息,我们至少需要知道前一个消息的到达时间。

同ROS 1的比较

类似于ROS 1的话题统计,所有消息耗时和消息间隔都会被计算,从发送端开始计算。其他的ROS 1指标例如丢失的消息数量或流量,目前没有提供。

支持

本功能现在仅在ROS 2 Foxy版本C++库rclcpp中支持。未来的支持计划可参照以下issue3

参考


  1. Moving Average ↩︎

  2. Welford在线算法 ↩︎

  3. Topic Statistics Improvements #917 ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值