欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-17 15:54:55
...

本文章配套源代码地址:https://github.com/Little-Potato-1990/localization_in_auto_driving

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

本篇对应代码Tag为 2.0

1. 数据集介绍

1.1 整体介绍

做算法,首先要先搞数据,开源代码自然用公开的数据集最好,本系列文章的代码就选KITTI数据集为测试数据。
KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的专门面向自动驾驶的数据集。该数据集用于评测激光里程计(lidar odometry),视觉里程计(visual odometry),立体图像(stereo),光流(optical flow),3D物体检测(object detection)和3D跟踪(tracking)等算法在车载环境下的性能。KITTI包含市区、乡村和高速公路等场景采集的真实图像数据。

1.2 采集平台

如下图2-1所示:
从零开始做自动驾驶定位(二): 数据集图2-1 数据采集车示例图

这张图可以看出它的传感器组成,包括一个64线激光雷达,在车顶的正中心,激光雷达两侧各放一个彩色摄像头和一个黑白摄像头,也就是一共四个摄像头。在雷达左后方,有一个组合导航系统(OXTS RT 3003),它可以输出RTK/IMU组合导航结果,包括经纬度和姿态,同时也输出IMU原始数据。

各个传感器之间的安装关系如下图2-2所示:
从零开始做自动驾驶定位(二): 数据集图2-2 采集车传感器之间的安装关系

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

1.3 选择和使用

我们的主要目的是利用激光雷达点云数据和RTK数据做融合,所以只使用数据集里的RawData数据,它包含RTK、IMU、激光雷达、摄像头等传感器的数据和他们之间的标定关系,并且时间戳已经对应好。
由于我们是使用ROS作为调试环境,所以我把一部分数据转成了ROS的bag文件,放在百度网盘里,如果不想自己转换数据,就可以直接下载这里面的bag文件使用,文件在“转换后的bag文件/2011_10_03”文件夹里。由于百度网盘单个文件大小有限制,所以我做了分卷压缩,下载完成之后需要在当前目录下输入如下指令,把他们再合成一个文件才能解压:

cat bag_file*>bag.tar.gz

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

2. KITTI数据转成ROS的bag文件

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

  1. 升级numpy
    这一步很重要,不然后面运行会报错。使得numpy的版本满足kitti2bag的依赖要求:
sudo pip install -U numpy
  1. 安装kitti2bag
sudo pip install kitti2bag
  1. 下载文件并设置目录
    从我给的百度网盘链接里找到“RawData原始数据”文件夹,找到文件“2011_10_03_drive_0027_sync.zip”和文件“2011_10_03_calib.zip”,下载下来,并解压缩。
    最终文件应该按照这样的目录存放:
    从零开始做自动驾驶定位(二): 数据集图2-3 数据集文件结构图

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

kitti2bag -t 2011_10_03 -r 0027 raw_synced

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

3. bag文件测试

制作完bag文件之后,要播放文件测试一下,看显示出来的数据对不对。
使用rviz查看bag文件。
制作好的rviz文件放在了github上的代码里,在kitti_test文件夹下。

执行步骤如下:

  1. 启动ros
roscore
  1. 启动rviz
    打开终端,cd到“kitti_test”文件夹下,输入指令:

    rviz display_bag.rviz
    
  2. 播放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上看到下面的画面了:
从零开始做自动驾驶定位(二): 数据集图2-4 数据包播放截图

参考文献

[1] 从零开始做自动驾驶定位(二): 数据集

相关标签: 定位系统开发