数据采集平台: 1个彩色摄像头立体声对, 1个灰度摄像头立体声对, 1个64线激光雷达, 1个GPS/IMU
先上采集装置实物图:
座标系统的定义如下, 其中方向以司机看向前方道路的视角给出.
Camera: x: right, y: down, z: forward
Velodyne: x: forward, y: left, z: up
GPS/IMU: x: forward, y: left, z: up
所有的座标系统遵循右手系, 右手系的定义如下: 左图为左手系, 右图为右手系. 对于右手系,右手拇指在 Z 轴方向为正, 手掌的弯曲表示从 X 轴到 Y 轴的运动.
传感器装置平面图如下: 红色标注的为传感器, 蓝色表示传感器之间的转换
相机的布置:
彩色和灰度相机相互靠近(约6厘米), 两种立体设备的基线约为54厘米. 我们选择这样的设置, 以便为左右相机, 可以提供颜色和灰度信息. 虽然彩色相机(显然)带有颜色信息, 但灰度相机图像具有更高的对比度和更少的噪声. 所有摄像机相对于Velodyne激光扫描仪均以约10 Hz的频率同步. 雷达采集数据时,是绕着竖直轴旋转扫描,只有当雷达旋转到与相机的朝向一致时会触发相机采集图像. 我们使用时直接使用官网给出的同步且校准后的数据即可,它已将雷达数据与相机数据对齐,也就是可以认为同一文件名对应的图像数据与雷达点云数据属于同一个场景.
数据的描述:
序列的所有传感器读数都压缩到一个名为date_drive的文件中。其中日期和驱动器是记录日期和序列号的占位符。目录结构如下图所示.
时间戳存储在 timestamp.txt 中, 相应的数据子文件中提供每帧传感器的读数. txt 文件中的每一行都是由日期和时间 (以小时, 分钟, 秒为单位)组成的. 由于激光雷达具有滚动快门, 对这个传感器提供 3 个时间戳. 一个旋转的起始位置, 一个旋转的结束位置和一个用于激光雷达和相机朝向一致时触发相机采集图像的时间.
每个传感器流存储的数据格式如下:
Images: 彩色和灰度图像都使用8位PNG文件进行无损压缩存储.
OXTS: 对于每一帧,我们在一个文本文件中存储了30个不同的GPS/IMU值:地理座标包括海拔、全球方向、速度、加速度、角速率、精度和卫星信息。加速度和角速度都是通过两个座标系来确定的,一个是附着在车身上的(x, y, z),另一个是映射到该位置的地表切平面上(f, l, u).
Velodyne: Velodyne扫描存储为浮点二进制文件. 每个点存储有它的座标 (x, y, z) 和一个额外的反射值 r.
同步:
为了同步传感器, 使用激光雷达的时间戳作为参考, 并考虑每一个自旋作为一帧. 在激光雷达扫描仪的底部安装了一个簧片触点, 当连续旋转的激光雷达旋转到与相机的朝向一致时,触发相机采集图像.这最小化了动态对象在范围和图像观测上的差异.
但是, GPS/IMU不能这样同步, 相反,由于它以100赫兹的频率提供更新,我们收集与激光扫描仪时间戳最接近的特定帧的信息,导致GPS/IMU和camera/Velodyne数据包之间最坏情况下的时间差为5毫秒。注意,所有的时间戳都提供了这样的信息,即任何时候的定位信息都可以很容易地通过插值得到。
相机的校准:
每天的校准参数以行为主顺序存储在calib_cam_to_cam.txt中,使用如下表示法:
,是相机的索引. 0 代表左边的灰度相机, 1 代表右边的灰度相机, 2 代表左边彩色相机, 3 代表右边彩色相机. 当使用同步和矫正过的数据时,只有带有 rect 下标的变量是相关的. 但是你最有可能使用到的是P_rect_xx. 矫正旋转矩阵用于使图像平面共面.
将校准过 (旋转过) 的相机座标系中的点 投射成第 i 个相机图片的点 . 其公式如下:
表示相对于参考相机 0 的基线. 为了将参考相机座标系中的三维点 x 投影到第 i 个图像平面上的点 y, 参考相机的校准旋转矩阵 也必须考虑.
注意: 在这里,通过添加第四个零行和零列, 被扩展成了 4X4的矩阵. 并且设置
从Velodyne 座标系到 相机座标系的刚体变换存在于 calib_velo_to_cam.txt 文件中, 如下公式将 Velodyne 座标系中的点投射到 第 i 个相机图片中.
Kitti官网 devkit 中的一个例子:
example transformations
-----------------------
As the transformations sometimes confuse people, here we give a short
example how points in the velodyne coordinate system can be transformed
into the camera left coordinate system.
In order to transform a homogeneous point X = [x y z 1]' from the velodyne
coordinate system to a homogeneous point Y = [u v 1]' on image plane of
camera xx, the following transformation has to be applied:
Y = P_rect_xx * R_rect_00 * (R|T)_velo_to_cam * X
To transform a point X from GPS/IMU coordinates to the image plane:
Y = P_rect_xx * R_rect_00 * (R|T)_velo_to_cam * (R|T)_imu_to_velo * X
The matrices are:
- P_rect_xx (3x4): rectfied cam 0 coordinates -> image plane
- R_rect_00 (4x4): cam 0 coordinates -> rectified cam 0 coord.
- (R|T)_velo_to_cam (4x4): velodyne coordinates -> cam 0 coordinates
- (R|T)_imu_to_velo (4x4): imu coordinates -> velodyne coordinates
Note that the (4x4) matrices above are padded with zeros and:
R_rect_00(4,4) = (R|T)_velo_to_cam(4,4) = (R|T)_imu_to_velo(4,4) = 1.
看到一个不错的解释照抄如下, 链接为: https://www.cnblogs.com/llfctt/p/9475659.html
注: 本博客只为记录学习过程,留着复习.