我的一些rosbags发生了一些非常奇怪的事情。在其他主题中,这些包包含sensor_msgs/Image
类型的消息。
所以我做了:
<<p>第一场景/strong>在一个终端上,我运行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: ''
---
<<p>第二场景/strong>我做的与前面的场景相同,但不是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
可以看到值是完全不同的!!
这里会发生什么?
这是一个已知的"问题"rostopic echo
和包文件。我把问题放在引号里,因为它不一定是一个问题,但只是rostopic
工作方式的产物。为了避免一些模糊的实现细节,这个问题本质上是因为rospy.rostime
在播放包文件并回显时没有被正确初始化;即使您将/use_sim_time
设置为true。
为了让您更清楚地了解所看到的内容,Python脚本中的时间戳是正确的,而rostopic的时间戳则不是。如果你需要时间戳100%正确,你可以使用-b
标志,如:rostoic echo -b the_bag.bag /my_image_topic