ROS记录回放数据

一、使用rostopic记录数据

$ rostopic list #查看所有topic列表
$ mkdir bagfile  	#新建一个bagfile文件夹存放生成的rosbag文件
$ cd bagfile
$ rosbag record -a  #记录所有topic数据,生成rosbag数据包
$ rosbag record -O rosbag_name /topic1 /topic2

只记录指定topic数据,-O指定要保存的rosbag文件名,rosbag_name即为生成的rosbag文件名;若为-o,则生成的rosbag文件名后面自动添加年月日时间
(1) 可在bagfile文件中查看生成的.bag数据包;若出现.bag.active文件,则表示正在记录,使用ctrl+c可终止保存数据;
(2) rosbag在记录数据时相当于一个subscribe程序

二、查看rosbag数据

$ rostopic echo /topic

可在终端直接打印指定topic的数据信息

$ rosbag info mybagfile.bag		#查看rosbag数据包基本信息

ROS记录回放数据_第1张图片
三、将rosbag包转化为txt文件

$ rostopic echo -b mybagfile.bag -p /topic > mytxtfile.txt

将mybagfile.bag文件中指定/topic的消息转化为txt文档,并存为mytxtfile.txt。

四、回放rosbag数据包

$ rosbag play mybagfile.bag

ROS记录回放数据_第2张图片
其中,Bag Time为rosbag数据包收到每一则消息时的时间。
(1) rosbag在回放数据时相当于一个publisher程序;
(2) 重新运行订阅了bag包中发布的topic程序,即可接收到对应topic的信息。

使用rviz回放rosbag数据包可视化:

$ rosbag play -d 10 mybagfile.bag

-d 10: 指定延时10秒回放;打开rviz订阅topic即可在场景显示窗口看到可视化信息。
注:rviz中订阅rosbag数据包中的topic,需要先发布rosbag数据包,才能在rviz中搜索到topic,一旦rosbag数据包发布完毕,则topic再次消失

五、.bag.active恢复为.bag:

$ cd bagfile
$ rosbag reindex mybagfile,bag.active
$ rosbag fix mybagfile.bag.active resultname.bag

你可能感兴趣的:(ROS)