改进上一脚本,增加功能:分别计算出两个话题发布时各自第一个消息时对应各自rosbag数据包的时间戳
时间: 2024-12-23 11:23:00 浏览: 4
为了改进上一节中的脚本,并添加计算每个主题发布第一条消息时对应rosbag数据包时间戳的功能,我们可以按照以下步骤进行:
1. 首先,我们需要引入`rospy`模块中的`Time`类,用于记录和比较时间。
2. 戊定义一个全局变量,比如`first_message_timestamps`,用于存储每个主题首次接收到消息的时间戳。它应该是一个字典,键是主题名称,值是时间戳。
```python
from datetime import datetime
first_message_timestamps = {}
```
3. 在`robot0_callback`和`robot1_callback`函数内部,添加判断条件,检查是否是第一次接收到消息。如果是,则记录时间戳并将其添加到`first_message_timestamps`中。
```python
def robot0_callback(data):
...
if topic_name not in first_message_timestamps:
first_message_timestamps[topic_name] = data.header.stamp.to_sec()
...
def robot1_callback(data):
...
if topic_name not in first_message_timestamps:
first_message_timestamps[topic_name] = data.header.stamp.to_sec()
```
4. 当所有的消息都处理完毕后,你可以选择在`rospy.spin()`之前或者之后打印这两个时间戳,例如:
```python
rospy.spin()
if len(first_message_timestamps) > 0:
print(f"First message timestamps for each topic:")
for topic, timestamp in first_message_timestamps.items():
print(f"{topic}: {datetime.fromtimestamp(timestamp)}")
```
现在,当你运行这个改进后的脚本时,它会在处理完所有消息后打印出每个主题的第一个消息时间戳。
阅读全文