故跬步不休,跛鳖千里;累积不辍,可成丘阜。——(西汉)刘安《淮南子·说林训》
差不多从夏天的时候开始就一直在找有没有什么方法可以生成ROS bag数据,当时只找到了录制的方法,使用图片等原始数据生成的方法一直没找到。直到最近看到一篇博客使用了一个Python脚本将ASL数据转换成了ROS bag,试了一下挺好用的,欣喜若狂。有了它就可以将自己的数据按照ASL格式进行组织,之后使用脚本直接生成ROS bag就可以了。
简单说一下使用方法。因为需要用到ROS的一些Python包,所以使用的Python环境必须是安装了ROS的。我是在Ubuntu 16.04 LTS下运行的,安装的ROS Kinetic,运行环境其实和这篇博客的一样:一周小结(七)——从零开始配置VINS-Mono运行环境。不知道什么原因,在Pycharm中导入相关包时一直报错,但是相同的Python版本在终端却可以,大家如果有知道什么原因的欢迎评论区留言。所以无奈就抛弃了IDE而在终端运行,使用时需要给出ASL数据解压的文件路径以及生成的ROS bag数据的路径、名称,后者可以使用默认值(home文件夹下生成output.bag),例如:
python '/home/dong/Code/zip2bag/zip2bag.py' --folder /home/dong/catkin_ws/dataset/1
最后给出Python脚本。大家也可以根据自己数据的组织结构、命名规则等进行适当修改。
#!/usr/bin/env python
print
"importing libraries"
import rosbag
import rospy
from sensor_msgs.msg import Image
from sensor_msgs.msg import Imu
from geometry_msgs.msg import PointStamped
# import ImageFile
# import PIL.ImageFile as ImageFile
import time, sys, os
import argparse
import cv2
import numpy as np
import csv
# structure
# dataset/cam0/data/TIMESTAMP.png
# dataset/camN/data/TIMESTAMP.png
# datase