# -*- coding: utf-8 -*- import rospy import rosbag from std_msgs.msg import String import time # 导入time模块以获取当前时间 def write_bag(bag_filename): # 初始化ROS节点(虽然在这个脚本中我们并不真正发布消息到ROS网络) rospy.init_node('bag_writer', anonymous=True) # 创建一个rosbag.Bag对象,以写入模式打开文件 with rosbag.Bag(bag_filename, 'w') as bag: # 写入一些示例消息 for i in range(10): time.sleep(1) # 创建一个String消息 msg = String() # 在Python 2中,使用字符串格式化而不是f-string msg.data = "Hello, ROS %d" % i # 获取当前时间戳(使用time模块) # 注意:在ROS 1的Python 2环境中,rospy.Time.now()可能不是有效的调用 # 这里我们使用time.time()来获取当前时间(秒),然后转换为rospy.Time timestamp = rospy.Time.from_sec(time.time()) # 将消息写入bag文件,指定主题名和时间戳 bag.write('/chatter', msg, timestamp) if __name__ == '__main__': # 指定bag文件的名称 bag_filename = 'example.bag' # 调用函数写入bag文件 write_bag(bag_filename) # 在Python 2中,使用print语句而不是print函数 print "Bag file '%s' written successfully." % bag_filename