【KITTI数据集Odometry序列00-10标定文件中的参数关系解读】

2023-10-29

KITTI数据集Odometry序列00-10标定文件中的参数关系解读

KITTI Odometry数据集是大量研究感知、salm、跟踪学者经常接触的数据集。但是对于新手来说,下载相应数据集进行坐标转换的过程中,往往会碰到对calib、pose文件中诸多矩阵不理解的情况。本人查找相关资料的时候发现,针对KITTI Odometry数据集的参数文件解释很少。因此,本人将学习使用中自己对这块的理解做如下阐述。其中,所讲之处如有错误,欢迎各位批评指正。

一、下载完整的里程计calib文件

我们从官网下载原始数据以后,打开数据中的calib文件此时会发现文件中缺少雷达到camera0的外参Tr内容如下:

在这里插入图片描述
为了补全这个外参数,我们需要将从KITTI官网下载calibration files文件,如图下图所示:

在这里插入图片描述
然后打开下载好的参数文件,此时就会发现其内部的calib文件包含Tr矩阵,如图所示:

在这里插入图片描述
因此,将下载好的calibration files中的calib文件全部替换原始数据中的calib文件,此时便可得到完整的参数文件。

二、calib.txt文件内容解读

我们以00为例,该calib参数文件中一共包含了5个矩阵:其中P0代表0号左边灰度相机、P1代表1号右边灰度相机、P2代表2号左边彩色相机、P3代表3号右边彩色相机,Tr代表velodyne。
对于每个相机i而言,Pi矩阵可以理解为相机i的内参矩阵*相机0相对于相机i的外参矩阵即:

Pi= ∣ f x 0 c x 0 0 f y c y 0 0 0 1 0 ∣ \begin{vmatrix} fx & 0 & cx & 0\\ 0 & fy & cy & 0\\ 0 & 0 & 1 & 0 \end{vmatrix} fx000fy0cxcy1000 * ∣ r 11 r 12 r 13 T x r 21 r 22 r 23 T y r 31 r 32 r 33 T z 0 0 0 1 ∣ \begin{vmatrix} r11 & r12 & r13 & Tx\\ r21 & r22 & r23 & Ty\\ r31 & r32 & r33 & Tz\\ 0 & 0 & 0 & 1 \end{vmatrix} r11r21r310r12r22r320r13r23r330TxTyTz1
对于相机0而言,因为外参矩阵为I,所以相机0的内参矩阵K_cam0=P0(0:3, 0:3);
对于相机1、2、3而言,因为四个相机的安装在统一水平线上,所以相机0相对于他们的外参数旋转矩阵为I,平移矩阵仅相差一个Tx,所以相机1、2、3的矩阵P可以简化为:

Pi= ∣ f x 0 c x 0 0 f y c y 0 0 0 1 0 ∣ \begin{vmatrix} fx & 0 & cx & 0\\ 0 & fy & cy & 0\\ 0 & 0 & 1 & 0 \end{vmatrix} fx000fy0cxcy1000 * ∣ 1 0 0 T x 0 1 0 0 0 0 1 0 0 0 0 1 ∣ \begin{vmatrix} 1 & 0 & 0 & Tx\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1& 0\\ 0 & 0 & 0 & 1 \end{vmatrix} 100001000010Tx001 = ∣ f x 0 c x f x ∗ T x 0 f y c y 0 0 0 1 0 ∣ \begin{vmatrix} fx & 0 & cx & fx*Tx\\ 0 & fy & cy & 0\\ 0 & 0 & 1 & 0 \end{vmatrix} fx000fy0cxcy1fxTx00
所以相机1、2、3的内参矩阵K_cami=Pi(0:3, 0:3), 相机0相对于他们的外参矩阵Ti= ∣ 1 0 0 P i ( 0 , 3 ) / P i ( 0 , 0 ) 0 1 0 0 0 0 1 0 0 0 0 1 ∣ \begin{vmatrix} 1 & 0 & 0 & Pi(0, 3)/Pi(0, 0)\\ 0 & 1 & 0 & 0\\ 0 & 0 & 1& 0\\ 0 & 0 & 0 & 1 \end{vmatrix} 100001000010Pi(0,3)/Pi(0,0)001
Tr表示雷达velodyne坐标系转换到相机0的变换矩阵。
所以我们利用calib文件得到四个相机内参数、外参数的同时,还可以得到雷达与四个相机之间的外参数即:

Tcami_velo=Ti*Tr

三、真值pose文件解读

KITTI官网下载的odometry里程计ground truth poses文件是以第一帧相机0的位置为原点,发布的各帧相机0的真实姿态变换矩阵。所以我们在利用激光雷达进行定位得到激光雷达位姿后,为了便于和真值进行比对,就需要将其转换到同一坐标系下:
我们先利用雷达和相机0之间的外参数,将相机0的位姿真值进行如下变换,便可得到在第一帧相机0原点下雷达的真实位姿:
aft_pose=pose*Tr
随后再进行如下变换,将坐标原点变换到第一帧雷达原点下,此刻便可得到第一帧雷达原点下雷达的真实位姿,由此便可与雷达slam得到的定位结果进行比对。
final_pose=Tr(-1)*aft_pose

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【KITTI数据集Odometry序列00-10标定文件中的参数关系解读】 的相关文章

随机推荐