You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从rosbag包中提取指定topic的消息发布频率(单位Hz)?

查询rosbag中特定topic消息频率的方法

有多种方法可以实现查询,根据你的需求选择即可:

1. 直接通过rosbag info结果估算平均频率

这是最快速的方法,不需要额外运行其他命令:
你给出的rosbag info输出中已经包含两个核心参数:

  • bag总时长:你示例中的bag总时长为60.0s
  • 对应topic的总消息数:比如/mymessage2/input对应总消息数为6000条
    平均频率计算公式:平均频率 = 对应topic总消息数 / bag总时长
    以你示例中的几个topic为例:
  • /mycamera/image:1187 / 60 ≈ 19.8 Hz
  • /mymessage1:29944 / 60 ≈ 499 Hz
  • /mymessage2/input:6000 / 60 = 100 Hz
    注意:该方法得到的是整个录制周期内的平均频率,无法体现频率波动、跳变等情况

你提供的rosbag info输出示例参考:

path:        the.bag
version:     2.0
duration:    60.0s
start:       Jul 01 2021 16:58:10.27 (1625158690.27)
end:         Jul 01 2021 16:59:10.27 (1625158750.27)
size:        6.1 GB
messages:    37131
compression: none [1188/1188 chunks]
types:       sensing_msgs/type1    [621fdfebbc8899ba27ee5fed4fcccaee]
             sensing_msgs/type2 [cf69c51b4a51518b0ef7e36af744fc70]
             sensor_msgs/Image       [060021388200f6f0f447d0fcd9c64743]
topics:      /mycamera/image         1187 msgs    : sensor_msgs/Image      
             /mymessage1            29944 msgs    : sensing_msgs/type1
             /mymessage2/input       6000 msgs    : sensing_msgs/type2

2. 用rostopic hz配合rosbag播放查询精准频率

如果需要获取频率波动、最大/最小/平均频率、标准差等详细参数,可以用这个方法:

  1. 先启动roscore:
roscore
  1. 新终端中高速播放bag,使用bag自带时间戳:
rosbag play -r 100 your_bag_name.bag --clock

参数说明:-r 100表示用100倍速播放,加快统计速度,建议倍率不要超过200避免消息拥堵
3. 再开一个终端,运行频率统计命令,替换为你要查的topic名:

rostopic hz /target_topic_name

运行后会自动统计输出该topic的频率相关详细数据。

3. 用rosbag hz命令直接解析bag统计

如果不想播放bag,可以直接用rosbag自带的hz工具解析,命令如下:

rosbag hz your_bag_name.bag --topic /target_topic_name

运行后会直接输出该topic的平均频率、消息间隔分布、最大最小频率等参数,无需启动roscore也无需播放bag,效率最高。

说明:上述方法得到的频率为bag录制到的消息频率,只要录制时没有出现带宽不足丢包的情况,该频率和原始发布频率完全一致

内容的提问来源于stack exchange,提问作者KansaiRobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:48:03