解析rosbag中的.bag文件,得到.jpg图片数据和.pcd点云数据
使用ROS对Pandora进行数据获取,得到 .bag文件
- 查看.bag文件信息
- 解析到.jpg的图像数据
- 解析为.pcd的点云数据
1. 查看某个.bag的数据信息(其中*为.bag文件名)
rosbag info *.bag
结果如下:
2. 解析该.bag文件到.jpg格式图片
方法一(存在解析出的图片数量与msg数量不符的情况,方法二可解决)
建立export.launch文件, 文件内容如下:
<launch>
<node pkg="rosbag" type="play" name="rosbag" args="-d 2 /home/nawenjie/1st.bag"/>
<node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
<remap from="image" to="/pandora/sensor/pandora/camera/front_color"/>
</node>
</launch>
其中"home/nawenjie/1st.bag"为需要解析的.bag文件路径, "/pandora/sensor/pandora/camera/front_color"想要解析的话题名称
打开终端,运行roscore:
roscore
新建终端, cd到export.launch文件夹下, 运行代码如下
roslaunch export.launch
解析结果如下:
解析的图片在home下的 .ros目录里,将目录下的图片移动到你想要的文件夹
mv ~/.ros/frame*.jpg ~/image_pandora/1stbag/front_color
其中 /image_pandora/1stbag/front_color 为你的目标文件夹
方法二
据说,需要以下依赖
sudo apt-get install mjepgtools
sudo apt-get install ffmpeg
调整到你需要存储图片的文件夹中,或者新建文件夹,执行以下命令,其中<>中为你的topic信息
rosrun image_view extract_images _sec_per_frame:=0.05 image:=<IMAGE TOPIC IN BAGFILE>
新建终端,执行以下命令
roscore
新建终端。调整到待解析的rosbag文件目录下,回放rosbag包,执行以下命令:
rosbag play -r 0.5 <BAG FILE>
其中 -r 0.5表示回放速度。如果出现图片数量缺失的情况,可调整_sec_per_frame的值。
3. 解析.bag文件到.pcd点云数据文件
有两种方法:
- 利用bag_to_pcd, 代码如下(亲测有效):
rosrun pcl_ros bag_to_pcd <*.bag> <topic> <output_directory>
- 利用pointcloud_to_pcd, 代码如下:
rosrun pcl_ros pointcloud_to_pcd input:=<topic>
方法2未运行成功,该命令行,需要在节点进行通信时,抓取话题信息,暂时无法测试.
参考
1.http://wiki.ros.org/rosbag/Tutorials/Exporting image and video data
2.https://answers.ros.org/question/9102/how-to-extract-data-from-bag/