ROS2学习(十).ROS概念 - 主题的统计
主題統計
- 概述
- 如何計算統計數據
- 統計數據種類
- 行為
- 同ROS 1的比較
- 支持
- 參考
概述
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。
參考
Moving Average ??
Welford在線算法 ??
Topic Statistics Improvements #917 ??
總結
以上是生活随笔為你收集整理的ROS2学习(十).ROS概念 - 主题的统计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROS2学习(九).ROS概念 - RO
- 下一篇: ROS2学习(十一).ROS概念 - 命