回放bag数据并储存为图片

  • Post author:
  • Post category:其他


搞了一下午,终于把bag文件中数据储存为图片了,其实教程不难,只怪一直遇到bug,调来调去,终于好了

教程其实ros官网上给的很详细了:

http://wiki.ros.org/rosbag/Tutorials/Exporting image and video data


我的电脑之前一直报错:

ERROR: cannot launch node of type [image_view/extract_images]: image_view
ROS path [0]=/opt/ros/kinetic/share/ros
ROS path [1]=/home/linxiaorui/catkin_ws/src
ROS path [2]=/home/linxiaorui/turtlebot/src
ROS path [3]=/home/linxiaorui/kobuki/src
ROS path [4]=/home/linxiaorui/rocon/src
ROS path [5]=/opt/ros/kinetic/share
[FATAL] [1557646481.548094860]: Error opening file: ~/data/2019-05-11-22-13-19.bag
[rosbag-1] process has died [pid 5897, exit code 1, cmd /opt/ros/kinetic/lib/rosbag/play -d 2 ~/data/2019-05-11-22-13-19.bag __name:=rosbag __log:=/home/linxiaorui/.ros/log/d219636e-747e-11e9-beb1-2cf0ee15f6d8/rosbag-1.log].
log file: /home/linxiaorui/.ros/log/d219636e-747e-11e9-beb1-2cf0ee15f6d8/rosbag-1*.log

原因是没有找到image_view节点,参考网上的方法sudo apt-get install ros-indigo-image-view 显示无法定位软件包

于是自己在ros官网上找到了image_view节点的源码的github地址(

https://github.com/ros-perception/image_pipeline

),把它clone到了本地的catkin_ws工作区,再重新编译一下,就可以了

然后又遇到了如下问题:

process[rosbag-1]: started with pid [7421]
process[extract-2]: started with pid [7422]
[FATAL] [1557648490.418427464]: Error opening file: ~/data/2019-05-11-22-13-19.bag
[ INFO] [1557648490.502980974]: Initialized sec per frame to 0.100000
[rosbag-1] process has died [pid 7421, exit code 1, cmd /opt/ros/kinetic/lib/rosbag/play -d 2 ~/data/2019-05-11-22-13-19.bag __name:=rosbag __log:=/home/linxiaorui/.ros/log/d219636e-747e-11e9-beb1-2cf0ee15f6d8/rosbag-1.log].
log file: /home/linxiaorui/.ros/log/d219636e-747e-11e9-beb1-2cf0ee15f6d8/rosbag-1*.log

说是不能打开bag文件,最后发现问题在我们写的export.launch文件中:

<launch>
   <node pkg="rosbag" type="play" name="rosbag" required="true" args="-d 2 /home/linxiaorui/data/test.bag"/>
   <node name="extract" pkg="image_view" type="extract_images" respawn="false" required="true" output="screen" cwd="ROS_HOME">
 <remap from="image" to="/kinect2/qhd/image_color"/> //一定要把官网给的教程中给的话题改成你实际bag文件里的话题 可以通过rosbag info [bag_name]查看话题名字
   </node>
 </launch>

这样就能正常提取图像了 如果需要改变频率,可以在.launch文件中插入:

<param name="sec_per_frame" value="0.03"/>

这样提取出来的图片就和bag文件里的消息数量差不多了

这时的图片名字是从0自动编号的,如果想要改变图像名称,可以再加一行:

<param name="file_format" value="frame%05d.jpg">

我最终用了一条命令:

rosrun image_view extra_images  _sec_per_frame:=0.03 image:=<topic_name_in_bag>

来提取图像

我发现image_view这个功能包挺好用的,例如可以用来重发bag录制的视频:

rosrun image_view image_view image:=[topic_name]



版权声明:本文为qq_27452279原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。