文章目录
一、rosbag转txt格式
二、rosbag截取
三、查看rosbag中某一topic话题
四、.bag文件生成失败
五、录制rosbag
六、倍速播放rosbag
一、rosbag转txt格式
rostopic echo -b file_name.bag -p /topic_name > Txt_name.txt
二、rosbag截取
下面是两种截取方式。
第一种是截取1284703931.86(机器时间)之前时刻
第二种是截取所设置的时间范围内rosbag
rosbag filter input.bag output.bag "t.secs <= 1284703931.86"
rosbag filter input.bag output.bag "t.secs >= 1531425960 and t.secs <= 1531426140"
三、查看rosbag中某一topic话题
rostopic echo /rbg_image0 --noarr
其中 --noarr是用来简化topic的输出;删除时,将对topic展开输出
四、.bag文件生成失败
未生成rosbag,生成.bag.active文件。出现这情况是因为电脑在记录消息时卡掉了,没有完成最终的录制。可以转换成.bag文件,但是消息有丢失(即卡掉后的消息丢失)
①切换到”xxx.bag.active”文件所在的目录下;
②命令行输入“rosbag reindex xxx.bag.active”; 或者是rosbag reindex xxx.bag
③输入”rosbag fix xxx.bag.active outfile_name.bag”;
注意的是:如果损坏的rosbag包后缀名,是.bag结尾,那么不需要运行后面第三条命令
第二条生成的两个bag包,其中含有.orig.bag名字的是没有恢复的,没加的是恢复好的
五、录制rosbag
1、全话题录制
rosbag record -a test.bag
2、部分话题录制
rosbag record /topic1 /topic2 -o text.bag
3、record时,出现内存空间不足
即出现如下提示:rosbag record buffer exceeded. Dropping oldest queued message
方法一:提高内存空间
rosbag record -o -b 4096 /topic1 /topic2 text.bag
方法二:压缩图像话题
rosbag record -o -b 4096 /topic1/compressed /topic2/compressed
六、倍速播放rosbag
rosbag play text.bag -r 5
七、ros抛出escalating to SIGTERM问题
运行ros节点执行ctrl+c后进程会转而执行rosspin()后面的程序,但是如果在一定时间内程序没有执行完毕,进程会强制退出,并抛出”escalating to SIGTERM“错误,为了解决此问题,可以修改ros配置文件
sudo gedit /opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py
将该文件中的_TIMEOUT_SIGINT = 15.0 #seconds”中的15秒改为期望运行的最大时间。