@Pigmon
2017-11-20T21:46:04.000000Z
字数 3653
阅读 3194
实习
- 同一辆车,相同传感器配置,在同一个路径(有岔路,分为2种路线)重复行驶的记录
- 每周行驶2次,持续1年,包含各种天气和季节的数据
- 包含了6 个摄像头的照片,以及LiDAR,GPS/INS 的 Ground Truth 数据
- 提供了 Matlab 和 Python 两种开发接口,包括点云生成,点云与图片映射等功能
- 数据量对于开源数据集来说比较大,总行程超过1000公里,照片超过2000万张
http://robotcar-dataset.robots.ox.ac.uk/#citation
W. Maddern, G. Pascoe, C. Linegar and P. Newman, "1 Year, 1000km: The Oxford RobotCar Dataset", The International Journal of Robotics Research (IJRR), 2016.
PDF版本
牛津大学
日产-聆风 (Nissan Leaf) 电动车。
互动百科-日产Leaf
- 1个 灰点 Bumblebee XB3 (BBX3-13S2C-38) 3目摄像机,每一帧3张图片,分辨率1280×960,16Hz, 1/3” Sony ICX445 CCD, global shutter, 3.8mm 焦距, 66° HFoV 水平视角, 12/24cm baseline。
- 3个 灰点 Grasshopper2 (GS2-FW-14S5C-C) 单目摄像机,分辨率 1024×1024,11.1Hz, 2/3” Sony ICX285 CCD, global shutter, 2.67mm fisheye lens (Sunex DSL315B-650-F2.3), 180° HFoV
- 2 个 2D LiDAR (2 x SICK LMS-151 2D LIDAR, 270° FoV, 50Hz, 50m range, 0.5° resolution)
- 1 个 3D LiDAR (1 x SICK LD-MRS 3D LIDAR, 85° HFoV, 3.2° VFoV, 4 planes, 12.5Hz, 50m range, 0.125° resolution)
- NovAtel SPAN-CPT ALIGN inertial and GPS navigation system, 6 axis, 50Hz, GPS/GLONASS, dual antenna
数据集以日期命名的集合为基本单位(一次行驶),在这个页面可以浏览和下载:
http://robotcar-dataset.robots.ox.ac.uk/datasets/
数据包从10G到几百G不等。
另外也提供了简单浏览或者调试用的小Sample数据集2个:
1G 的大Sample
200M 的小Sample
浏览官方的 Downloads 页面有更多内容:
http://robotcar-dataset.robots.ox.ac.uk/downloads/
数据包的目录结构如下:
├─gps
├─ldmrs
├─lms_front
├─lms_rear
├─mono_left
├─mono_rear
├─mono_right
└─stereo
----- ├─centre
----- ├─left
----- └─right
目录 / 文件 | 说明 | 包含文件 |
---|---|---|
[gps] | GPS/INS 数据文件目录 | gps.csv, ins.csv |
[ldmrs] | 3D LiDAR 数据 | [timestamp].bin |
lms_front | 车前2D LiDAR数据 | [timestamp].bin |
lms_rear | 车后2D LiDAR数据 | [timestamp].bin |
mono_left | 左侧单目Cam数据(图片) | [timestamp].png |
mono_rear | 后侧单目Cam数据(图片) | [timestamp].png |
mono_right | 右侧单目Cam数据(图片) | [timestamp].png |
stereo | 三目 Cam 数据根目录 | 3个子目录,对应3个镜头 |
stereo\centre | 中间镜头数据(图片) | [timestamp].png |
stereo\left | 左侧镜头数据(图片) | [timestamp].png |
stereo\right | 右侧镜头数据(图片) | [timestamp].png |
<传感器名>.timestamp | 时间戳配置文件 |
- build_pointcloud.py: 生成点云
- camera_model.py: 读取相机模型,图像反扭曲,点云映射
- interpolate_poses.py: 姿态估计
- transform.py: 各种变换
- image.py: 图像基本功能,图像增强等
TODO
假设目录结构是这样的:
这是一个连续播放数据集图片的命令,.py 文件里使用了 Argument Parser。参数如下:
- dir : 图片文件路径
- --models_dir : 如果需要undistort (单目摄像头的图片),指定 models 目录。这个目录在 SDK 里面。models 目录中存着测试车辆上各个摄像机的参数配置文件。
- --scale : 设置图片的缩放参数
例子:
-- 逐帧播放dir指定目录下的图片
python play_images.py dir=..\..\..\..\sample_small\mono_right
如果想看到 undistort 后的图片,可以使用 models_dir 参数来指定 models 目录。
-- 逐帧播放dir指定目录下的图片并 undistort
python play_images.py dir=..\..\..\..\sample_small\mono_right --models_dir=..\models
这样就能播放反扭曲后的图片
def build_pointcloud(lidar_dir, poses_file, extrinsics_dir, start_time, end_time, origin_time=-1):
"""根据数据中的LiDAR数据等构建点云
Args:
lidar_dir (str): LiDAR 数据目录.
poses_file (str): 姿态数据的目录. Can be VO or INS data.
extrinsics_dir (str): extrinsics目录,存储外参标定信息.
start_time (int): 构建点云的开始时间戳
end_time (int): 构建点云的结束时间戳
origin_time (int): UNIX timestamp of origin frame. Pointcloud coordinates are relative to this frame.
Returns:
numpy.ndarray: 点云的 (x, y, z) 坐标数据数组,3 x n
numpy.array: n个反射率数组的阵列;如果没有记录反射率值,则为 None (LDMRS)
Raises:
ValueError: if specified window doesn't contain any laser scans.
IOError: if scan files are not found.
"""
命令行调用方法
按照之前说的目录结构来说:
python .\build_pointcloud.py --laser_dir=D:\Workspace3\Oxford\sample_small\lms_front --extrinsics_dir=..\extrinsics --poses_file=D:\Workspace3\Oxford\sample_small\gps\ins.csv
运行结果:
将点云映射到照片
project_laser_into_camera.py --image_dir=D:\Workspace3\Oxford\sample_small\stereo\centre --laser_dir D:\Workspace3\Oxford\sample_small\ldmrs --poses_file=D:\Workspace3\Oxford\sample_small\gps\ins.csv --models_dir=..\models --extrinsics_dir=..\extrinsics --image_idx 2
参数说明:
- --image_dir: 图片目录
- --laser_dir: LiDAR 数据目录 ldmrs 路径
- --poses_file: 姿态文件路径,ins.csv 或者 vo.csv
- --models_dir: 相机模型参数路径,在 sdk 的 models 目录
- --extrinsics_dir: 外参标定数据目录,sdk 的 extrinsics 目录
- --image_idx: 指定匹配哪一帧的图像
正常的运行结果应该是这样的(官网教程图片):