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}
fx000fy0cxcy1fx∗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}
100001000010Pi(0,3)/Pi(0,0)001
Tr表示雷达velodyne坐标系转换到相机0的变换矩阵。
所以我们利用calib文件得到四个相机内参数、外参数的同时,还可以得到雷达与四个相机之间的外参数即:
Tcami_velo=Ti*Tr文章来源:https://www.toymoban.com/news/detail-608417.html
三、真值pose文件解读
KITTI官网下载的odometry里程计ground truth poses文件是以第一帧相机0的位置为原点,发布的各帧相机0的真实姿态变换矩阵。所以我们在利用激光雷达进行定位得到激光雷达位姿后,为了便于和真值进行比对,就需要将其转换到同一坐标系下:
我们先利用雷达和相机0之间的外参数,将相机0的位姿真值进行如下变换,便可得到在第一帧相机0原点下雷达的真实位姿:
aft_pose=pose*Tr
随后再进行如下变换,将坐标原点变换到第一帧雷达原点下,此刻便可得到第一帧雷达原点下雷达的真实位姿,由此便可与雷达slam得到的定位结果进行比对。
final_pose=Tr(-1)*aft_pose文章来源地址https://www.toymoban.com/news/detail-608417.html
到了这里,关于【KITTI数据集Odometry序列00-10标定文件中的参数关系解读】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!