本篇博客主要学习ROS中的rosbag工具并以视觉SLAM中常见的数据集为例进行介绍。
1.rosbag基本命令
基本命令如下表:
Available subcommands | Description |
---|---|
check | Determine whether a bag is playable in the current system, or if it can be migrated. |
compress | Compress one or more bag files. |
decompress | Decompress one or more bag files. |
filter | Filter the contents of the bag. |
fix | Repair the messages in a bag file so that it can be played in the current system. |
help | Get the help information. |
info | Summarize the contents of one or more bag files. |
play | Play back the contents of one or more bag files in a time-synchronized fashion. |
record | Record a bag file with the contents of specified topics. |
reindex | Reindexes one or more bag files. |
这其中play
最为常用,可以用于回放从网上下载下来的数据包,它也有几个使用小技巧:
- 改变回放速率,只需要在play后增加一个
-r
参数,并指定速率即可,如rosbag play -r 2 <bagname>
就表示以两倍速回放。 - 增加参数
-l
表示循环播放,像这样rosbag play -l <bagname>
。 - 如果只想回放感兴趣的Topic,像这样
rosbag play <bagname> --topic /interested_topic
。 -d
表示延迟指定时间回放- 在回放过程中按空格键可以暂停回放。
除此之外就是record
命令,用于录制数据流,也有一些小技巧:
-a
表示记录所有Topic到bag
中,以当时时间的时间戳保存。rosbag record /topic1 /topic2
表示记录指定的topic1
、topic2
到bag
文件中。- 按Ctrl+C退出录制。
另外还有一个很重要的命令就是info
,它可以显示bag
文件中保存的信息概况,十分有用。尤其是当我们对一个从网上下载下来的陌生bag
文件一无所知的时候,在play
前可以先info
一下看看里面都保存了哪些内容。
2.SLAM常见数据集
在Github上有个相对完整的SLAM数据集整理,点击查看。本文主要选三个:KITTI、TUM、EuRoC进行介绍。
(1)KITTI
KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集,官网是这里。对于SLAM而言,主要用到的是Odometry类别下的数据,如下图所示。
其中红色框出来的是提供下载的数据。数据集一共包含22个不同的立体观测序列,所有图片都以png
格式保存,00-10序列提供真值,11-21则没有真值。
(2)TUM
TUM数据集是由德国慕尼黑工业大学发布的数据集,官网是这里,提供了非常多的观测序列下载。每个序列还会有详细的介绍,如下。
(3)EuRoC
EuRoC数据集是由ETH提供的,官网是这里。相比于前两个主要是陆地数据,EuRoC数据集全部是用无人机采集的,所以也可以看作是专门的无人机SLAM数据集。数据集一共包含11个观测序列,Machine Hall和Vicon Room两个场景,难度随着序列序号的增加而增加。
3.数据集使用演示
下面以EuRoC数据为例,演示如何使用rosbag回放数据。首先在官网下载数据,下载好后打开终端,在终端中输入rosbag info MH_01_easy.bag
可以查看数据的信息,如下:
可以看到一共包含三种类型的4个Topic,分别是左右相机影像、IMU数据以及观测的位置。所以我们可以输入rosbag play MH_01_easy.bag --topic /cam0/image_raw
,这样只会回放一个相机的数据。
这里一定需要注意的一点是,rosbag play
只有在roscore
启动后才可以回放,所以在执行上面的命令前,可以先手动输入roscore
启动Master节点,然后再回放数据。
回放开始后,可以通过rqt_image_view工具查看,在终端中输入rqt_image_view
然后在打开的窗口中选择Topic,即可查看影像,如下。
本文作者原创,未经许可不得转载,谢谢配合