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

KITTI数据集Odometry序列00-10标定文件中的参数关系解读一、下载完整的里程计calib文件二、calib.txt文件内容解读三、真值pose文件解读

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}

​fx00​0fy0​cxcy1​000​

​*

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}

​r11r21r310​r12r22r320​r13r23r330​TxTyTz1​

​ 对于相机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}

​fx00​0fy0​cxcy1​000​

​*

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}

​1000​0100​0010​Tx001​

​=

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}

​fx00​0fy0​cxcy1​fx∗Tx00​

​ 所以相机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}

​1000​0100​0010​Pi(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

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: