1

我有一些 rosbags 发生了一些非常奇怪的事情。这些 rosbags 包含sensor_msgs/Image其他主题中的类型消息。

所以我这样做:

第一种情况

我在一个终端上运行rostopic echo /the_image/header,因为我对实际数据不感兴趣,只对标题信息感兴趣。在另一个终端我运行rosbag play --clock the_bag.bag

有了这个我得到

seq: 7814
stamp: 
  secs: 1625151029
  nsecs: 882629359
frame_id: ''
---
seq: 7815
stamp: 
  secs: 1625151029
  nsecs: 934761166
frame_id: ''
---
seq: 7816
stamp: 
  secs: 1625151029
  nsecs: 986241550
frame_id: ''
---
seq: 7817
stamp: 
  secs: 1625151030
  nsecs:  82884301
frame_id: ''
---

第二个场景 我和前面的场景做同样的事情,但是我运行的是 rosbag play 而不是运行rqt_bag the_bag.bag,在那里我右键单击消息以发布它们。这样我得到了类似的值,但是(我之前已经报告过这个问题)第一条消息被跳过了。(这不是这个问题的问题)

第三个场景

奇怪的部分来了。我没有像上面那样做,而是有一个 python 脚本

timestamps=[]
for topic, msg, t in  rosbag.Bag("the_bag.bag").read_messages():
    if topic == '/the_image':
        timestamps.append((image_idx, t))
with open("timestamps.txt",'w') as f:
    for idx, t in timestamps:
        f.write('{0},{1},{2}\n'.format(str(idx).zfill(8), t.secs, t.nsecs))

如您所见,我打开包并获取时间戳列表并将其记录在文本文件中。这使:

00000000,1625151029,987577614
00000001,1625151030,33818541
00000002,1625151030,88932237
00000003,1625151030,170311084
00000004,1625151030,232427083
00000005,1625151030,279726253
00000006,1625151030,363255375
00000007,1625151030,463079346
00000008,1625151030,501315763
00000009,1625151030,566104245
00000010,1625151030,586694806

如您所见,价值观完全不同!!!

这里会发生什么?

4

1 回答 1

1

这是rostopic echo包文件的一个已知“问题”。我将问题放在引号中,因为它不一定是问题,而只是rostopic工作方式的产物。为了避免植入的有些晦涩的细节,这个问题本质上是因为rospy.rostime在播放包文件并回显时没有正确初始化;即使您设置/use_sim_time为true。为了让您更清楚地了解您所看到的内容,您的 Python 脚本中的时间戳是正确的,而 rostopic 的时间戳则不是。如果您需要 rostopic 的时间戳 100% 正确,您可以使用如下-b标志:rostoic echo -b the_bag.bag /my_image_topic

于 2021-08-25T17:56:58.967 回答