ROS2学习(十).ROS概念 - 主题的统计
主題統(tǒng)計
- 概述
- 如何計算統(tǒng)計數(shù)據(jù)
- 統(tǒng)計數(shù)據(jù)種類
- 行為
- 同ROS 1的比較
- 支持
- 參考
概述
ROS 2為任何訂閱所接收的消息提供綜合統(tǒng)計功能。這允許用戶收集訂閱統(tǒng)計信息,同時可以更好地描述系統(tǒng)的性能或幫助診斷當前問題。
按照接收到的消息耗時和周期提供相關度量標準。對于每一項數(shù)據(jù),本功能提供平均值、最大值、最小值、標準偏差和樣本計數(shù)等統(tǒng)計數(shù)據(jù)。 這些統(tǒng)計數(shù)據(jù)是在一個移動窗口中計算的。
如何計算統(tǒng)計數(shù)據(jù)
統(tǒng)計功能使用固定內(nèi)存在固定周期內(nèi)通過libstatistics_collector包中的工具加以計算。每個新消息的接收將會被作為現(xiàn)在度量窗口的新樣本。
- 平均值采用移動平均值1的方法進行計算
- 最大、最小值和樣本數(shù)在采集到新樣本時進行更新
- 標準才使用Welford在線算法2
統(tǒng)計數(shù)據(jù)種類
- 接收消息的間隔時間
- 單位:毫秒
- 使用系統(tǒng)時鐘計算接收到的兩條消息間的間隔時間
- 接受消息的傳播耗時
- 單位:毫秒
- 要求消息在報頭字段中填充時間戳,以便計算單條消息從發(fā)布端發(fā)送到達消息接收端的耗時
行為
主題的統(tǒng)計默認是不啟用的。需要通過訂閱配置選項,為特定節(jié)點啟用此功能,才能收集上述相關的統(tǒng)計數(shù)據(jù)。
數(shù)據(jù)以statistics_msg/msg/MetricsMessage的形式發(fā)布到一個可配置的主題(默認為1秒發(fā)送至/statistics)。
注意
發(fā)布周期也將作為樣本采集用的窗口周期。
為了采集消息的間隔時間,我們在消息報頭字段中加入了消息時間戳,因此我們有時需要空數(shù)據(jù)以保持消息間隔的一致性。如果沒有在消息中找到相關的時間戳,所有的統(tǒng)計值都會是NaN。通過發(fā)布空數(shù)據(jù)而不是不進行消息發(fā)布,我們就可以避免信號缺失,并明確表示該數(shù)值無法被測定。
每個窗口的第一個樣本不進行測定,因為要計算統(tǒng)計信息,我們至少需要知道前一個消息的到達時間。
同ROS 1的比較
類似于ROS 1的話題統(tǒng)計,所有消息耗時和消息間隔都會被計算,從發(fā)送端開始計算。其他的ROS 1指標例如丟失的消息數(shù)量或流量,目前沒有提供。
支持
本功能現(xiàn)在僅在ROS 2 Foxy版本C++庫rclcpp中支持。未來的支持計劃可參照以下issue3。
參考
Moving Average ??
Welford在線算法 ??
Topic Statistics Improvements #917 ??
總結
以上是生活随笔為你收集整理的ROS2学习(十).ROS概念 - 主题的统计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ROS2学习(九).ROS概念 - RO
- 下一篇: ROS2学习(十一).ROS概念 - 命