从零开始做自动驾驶定位(一):KITTI数据集

从零开始做自动驾驶定位(一):KITTI数据集


目录

一、数据集介绍

1. 整体介绍

2. 采集平台

3. 选择与使用

二、KITTI数据转成ROS的bag文件

1. 升级numpy

2. 安装kitti2bag

3. 下载文件并设置目录

4. 转换文件

三、bag文件测试

参考资料 


一、数据集介绍

1. 整体介绍

       做算法,首先要先搞数据,开源代码自然用公开的数据集最好,本系列文章的代码就选KITTI数据集 [1] 为测试数据。KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国芝加哥技术研究院联合创办,是目前国际上最大的专门面向自动驾驶的数据集。该数据集用于评测算法在车载环境下的性能,其中包括:

  • 立体图像(stereo),
  • 光流(optical flow),
  • 激光里程计(lidar odometry),
  • 视觉里程计(visual odometry),
  • 3D物体检测(object detection),
  • 3D跟踪(tracking)等

    KITTI包含多种场景采集的真实多传感器数据:

  • 市区;
  • 乡村;
  • 高速公路等。

2. 采集平台

从零开始做自动驾驶定位(一):KITTI数据集_第1张图片

这张图可以看出它的传感器组成,包括:

  • 1 个64线激光雷达(在车顶的正中心): Velodyne HDL-64E
  • 1 个惯性导航系统 (GPS/IMU,雷达左后方): OXTS RT 3003
  • 2 个灰度相机, 1400万像素(激光雷达两侧各放一个): Point Grey Flea 2 (FL2-14S3M-C)
  • 2 个彩色相机, 1400万像素(激光雷达两侧各放一个): Point Grey Flea 2 (FL2-14S3C-C)
  • 4 个变焦距透镜, 4-8 mm: Edmund Optics NT59-917

各个传感器之间的安装关系如下图所示:

从零开始做自动驾驶定位(一):KITTI数据集_第2张图片

根据这张图可以很容易计算各个传感器之间,以及他们和车之间的相对位移。不过不需要自己计算,KITTI为每组数据都提供了对应的标定文件。

3. 选择与使用

        我们的主要目的是利用激光雷达点云数据和RTK数据做融合,所以只使用数据集里的RawData数据,它包含RTK、IMU、激光雷达、摄像头等传感器的数据和他们之间的标定关系,并且时间戳已经对应好

        由于我们是使用ROS作为调试环境,所以我把一部分数据转成了ROS的bag文件 [2],放在百度网盘里 [3] [4],如果不想自己转换数据,就可以直接下载这里面的bag文件使用,文件在“转换后的bag文件/2011_10_03”文件夹里,见参考资料。由于百度网盘单个文件大小有限制,所以我做了分卷压缩,下载完成之后需要在当前目录下输入如下指令,把他们再合成一个文件才能解压:

cat bag_file*>bag.tar.gz

       本文章后半部分会介绍数据转换的方法,如果想用数据集里其他数据做测试,可以根据介绍的方法自行生成bag文件。


二、KITTI数据转成ROS的bag文件

转换是通过一个开源工具kitti2bag [5] 来完成,它可以通过pip安装。

1. 升级numpy

这一步很重要,不然后面运行会报错。kitti2bag要求numpy版本>=1.12,ubuntu 16.04默认的是1.11,升级可以通过一条指令来完成

sudo pip install -U numpy

升级之后,我的版本是1.16

2. 安装kitti2bag

也是一条指令

sudo pip install kitti2bag

如果遇到问题,可以上网查一查,一般都是常见问题,都很好解决。

3. 下载文件并设置目录

从我给的百度网盘链接里找到“RawData原始数据”文件夹,找到文件“2011_10_03_drive_0027_sync.zip”和文件“2011_10_03_calib.zip”,下载下来,并解压缩。

最终文件应该按照这样的目录存放

从零开始做自动驾驶定位(一):KITTI数据集_第3张图片

4. 转换文件

在系统中打开终端,cd进入上一步目录对应的"2011_10_03"文件夹的上一级目录,输入下面的指令,就会自动开始转换

kitti2bag -t 2011_10_03 -r 0027 raw_synced

如果指令正常执行,会出现下面的画面,耐心等他执行完就好了

从零开始做自动驾驶定位(一):KITTI数据集_第4张图片

执行结束之后,会生成一个文件“kitti_2011_10_03_drive_0027_synced.bag”,这个就是使用KITTI数据集生成的bag文件了。


三、bag文件测试

制作完bag文件之后,要播放文件测试以下,看显示出来的数据对不对。

我们就直接用rviz了。制作好的rviz文件放在了github上的代码里,在kitti_test文件夹下。

执行步骤如下:

1) 启动ros

roscore

2) 启动rviz

打开终端,cd到“kitti_test”文件夹下,输入指令

rviz -d display_bag.rviz

3) 播放bag

再次强调一下:由于百度网盘单个文件大小有限制,所以我做了分卷压缩,需要下载文件夹中bag_file所有的分卷,即bag_file00,bag_file01…,下载完成之后需要在当前目录下输入如下指令,把他们再合成一个文件才能解压

cat bag_file*>bag.tar.gz

打开终端,cd到bag所在目录,输入指令

rosbag play kitti_2011_10_03_drive_0027_synced.bag

如果不出意外,此时我们就会在rviz上看到下面的画面了,手托香腮,静静地欣赏一会儿吧

从零开始做自动驾驶定位(一):KITTI数据集_第5张图片


参考资料 :

[1] KITTI官网:http://www.cvlibs.net/datasets/kitti/raw_data.php?type=road

[2] 从零开始做自动驾驶定位(二): 数据集: https://zhuanlan.zhihu.com/p/104875159

[3] 配套源代码地址(注意:对应代码Tag为 2.0):https://github.com/Little-Potato-1990/localization_in_auto_driving/tree/2.0

[4] 测试数据:https://pan.baidu.com/s/1TyXbifoTHubu3zt4jZ90Wg 提取码: n9ys

[5]  kitti2bag: https://github.com/tomas789/kitti2bag

你可能感兴趣的:(多传感器融合,自动驾驶)