write_test.py 1.4 KB

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