1234567891011121314151617181920212223242526272829303132333435 |
- # -*- 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
|