rosbag 那些事
1、.bag文件转.txt 将file_name.bag文件中topic_name话题的消息转换到Txt_name.txt文件中: rostopic echo -b file_name.bag -p /topic_name > Txt_name.txt 2、rosbag remap rosbag play ros.bag /image_raw:=/camera/image_raw
3、使用rxplot画时间趋势曲线
在ROS系统中,标量数据可以根据消息中提供的时间戳作为时间序列绘制图形。
运行可以发布话题的节点后,可以通过rostopic list查看当前的发布的话题,现在,我们不再去使用rostopic echo <topic>,而是通过rxplot命令就能够看到随时间变化的值的曲线。
rqt_plot /topic/data //单个话题,单个数据
rqt_plot /topic/x:y:z //单个话题,向量数据
rqt_plot /topic/x /topic/y /topic/z
123
或是先打开GUI界面:
rosrun rqt_plot rqt_plot
4、运用ROS工具从bag文件中导出图像
1.首先到你的bag文件所在的文件夹下打开命令行运行以下命令获得bag中的文件信息:
rosbag info a.bag
其中a修改为自己的bag文件名字即可。还可看到topic名字。
2.调整到你需要存储图片的文件夹中,或者新建文件夹,执行以下命令,其中<>中为你的topic信息,将<>内的内容包括<>修改为想要转换的topic名字。
rosrun image_view extract_images _sec_per_frame:=0.05 image:=<IMAGE TOPIC IN BAGFILE>
3.新建一个终端,输入以下命令,打开ROS:
roscore
4.在存放bag文件夹的目录下新建一个终端,并输入以下命令,就可以在2中创建的终端中看到图像的转化进度了。
rosbag play -r 0.5 <BAG FILE>
5、从ROS bag文件中提取图像
创建launch文件,如下:
export.launch
<launch>
<node pkg="rosbag" type="play" name="rosbag" args="-d 2 $(find image_view)/test.bag"/>
<node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME">
<remap from="image" to="/camera/image_raw"/>
</node>
</launch>
将$(find image_view)/test.bag改为你自己的bag文件路径。
然后,运行launch文件。
打开一个终端,运行
roscore
打开一个终端,cd到export.launch所在路径下,运行
roslaunch export.launch
所提取的图片在~/.ros路径下,将其移到你的目标文件中,如:
cd ~
mkdir Example
mv ~/.ros/*.jpg ~/Example
参考ROS wiki: How to export image and video data from a bag file,
rosbag 命令
查看topic列表 rostopic list 打印topic内容 rostopic echo /topic 将bag转为pcd rosrun pcl_ros bag_to_pcd out.bag /velodyne_points ./pcd/ 话题录制 录制所有发布出来的话题,此时默认将话题保存在一个以当时时间戳命名的文件夹中: rosbag record -a 录制指定话题 rosbag record /topic1 /topic12 -o out.bag 话题回放 基本回放 rosbag play <your bagfile name> 等待一定时间之后发布bag文件中的内容 rosbag play <your bagfile name> -d <delay time> 按一定频率回放,-r选项用来设定消息发布速率,如下面命令则表示以3倍原始速率发布话题 rosbag play -r 3 <your bagfile name> 回放指定话题 rosbag play <your bagfile name> --topics <topics> 其他指令 显示bag文件中所包含话题的名称、类型和消息数量: rosbag info <your bagfile name> 创建一个除了/tf消息的新包 rosbag filter file.bag file-no-tf.bag "topic != '/tf'" 查看topic发送接收图 rosrun rqt_graph rqt_graph 重映射topic信息(将out.bag中point_cloud转为velodyne_points) rosbag play out.bag /point_cloud:=/velodyne_points 将point_cloud转为laserscan rosrun pointcloud_to_laserscan pointcloud_to_laserscan_node cloud_in:=/your_velodyne_points 查看bag中对应topic的frame_id rostopic echo /topic | grep frame_id 查看tf树 rosrun rqt_tf_tree rqt_tf_tree 保存地图 rosrun map_server map_saver -f my_map 将cartographer生成的pbstream导出为ros标准地图 首先新建offline_pbstream_to_rosmap.launch <launch> <node name="cartographer_pbstream_to_ros_map" pkg="cartographer_ros" type="cartographer_pbstream_to_ros_map" args=" -pbstream_filename $(arg pbstream_filename) -map_filestem $(arg map_filestem) -resolution $(arg resolution)" output="screen"> </node> </launch> 再输入如下命令 roslaunch cartographer_ros offline_pbstream_to_rosmap.launch pbstream_filename:=/home/out.pbstream map_filestem:=/home/out resolution:=0.05