一文看懂自动驾驶中的坐标变换

文章目录

  • 自动驾驶中的坐标变换
    • 自动驾驶中的坐标系
      • 1. 相机坐标系
      • 2. 激光雷达坐标系
      • 3. 车体坐标系
      • 4. 世界坐标系
    • 坐标系变换
      • 坐标系之间的关联
      • 外参的使用
      • 相机内参的使用
  • 参考链接

自动驾驶中的坐标变换

在自动驾驶任务中,我们通过各种传感器对周围环境进行感知,获取图片。点云等各种数据,由于传感器的位置、数据的形式、不同数据的含义等差异,在进行环境感知任务前,需要进行坐标、数据形式的统一,其中坐标变换是极其重要的一环。

自动驾驶中的坐标系

根据参照物的不同,坐标系主要分为世界坐标系、传感器坐标系和汽车坐标系。不同的传感器对应不同的数据类型和坐标系。

一文看懂自动驾驶中的坐标变换_第1张图片

每个传感器都有其自身的坐标系,按照其测量原理可以分为相对测量(测量环境信息)和绝对测量(测量自身信息)。相对测量的传感器如相机,激光雷达是通过测量环境信息来进行间接定位,而绝对测量如 IMU,轮速计,GPS 则是通过直接测量自身的运动状态(速度、位置、姿态等)来进行定位。对于相对测量的传感器而言,其测量值通常是在其自身传感器下;而绝对测量的测量结果一般则是自身坐标系相对于其他坐标系(局部坐标系或世界坐标系等)。下面对常见的测量传感器进行归纳。

1. 相机坐标系

下图中左图为世界坐标系和相机坐标系的关系示意图,在相机坐标系中原点为成像平面的中心,与z轴垂直的平面对应焦距平面,右图为像素图像坐标系和物理图像坐标系的关系示意图,像素图像坐标系的原点在图像的左上角。

一文看懂自动驾驶中的坐标变换_第2张图片

世界坐标系:在环境中选择一个基准坐标系来描述摄像机的位置,并用它描述环境中任何物体的位置,该坐标系称为世界坐标系。

相机坐标系:以相机的聚焦中心为原点,以光轴为Z轴建立的三维直角坐标系。

像素图像坐标系:在真实世界中的影像通过小孔成像后得到的图像中,以像素为单位,坐标原点在图像左上角的坐标系。

物理图像坐标系:用物理单位表示像素的位置,坐标原点为摄像机光轴与图像物理坐标系的交点位置。

相机是通过小孔成像原理,将物理世界中的影像投影到成像平面,成像平面在物理世界中是真实存在的,有对应的物理尺寸,通常比较小,以毫米为单位。而我们最终得到的图像是以像素为单位的,因此关于图像的坐标系分为像素图像坐标系和物理图像坐标系。

一文看懂自动驾驶中的坐标变换_第3张图片

2. 激光雷达坐标系

  • 64线激光雷达进行环境扫描过程:单帧扫描数据

一文看懂自动驾驶中的坐标变换_第4张图片

  • 64线激光雷达进行环境扫描过程:全周扫描数据

  • 激光雷达坐标系统

旋转式激光雷达一般选择激光发射中心作为坐标系原点,向上为Z轴正方向,X轴和Y轴构成水平平面。图中红色线条为激光雷达发出的激光束,在任意时刻形成平行于Z轴,垂直于XY平面的扇形扫描区。每束出射激光在竖直方向上的俯仰角 θ j \theta_j θj为固定值,在设计制造时确定,属于激光雷达的内部参数。扇形扫描平面绕Z轴旋转的角度 φ ( t ) φ(t)φ(t) 随时间变化,并会在原始测量数据中给出。

一文看懂自动驾驶中的坐标变换_第5张图片

第i束激光在 t 0 t_0 t0时刻照射到某物体表面的P点,测距结果显示P点与激光雷达间的距离为L,则该测量点P的原始测量数据可以用极坐标形式 ( φ ( t 0 ) , θ i , L ) (\varphi(t_0),\theta_i,L) (φ(t0),θi,L)来表示。同时,P点在激光雷达的正交坐标系 ( X L , Y L , Z L ) (X_L,Y_L,Z_L) (XL,YL,ZL)中表示为 P ( x L , y L , z L ) P(x_L,y_L,z_L) P(xL,yL,zL),存在如下转换关系。用正交坐标系表示的点云数据在实际中更为常用。
X L = L c o s ( θ i ) c o s ( φ ( t 0 ) ) Y L = L c o s ( θ i ) s i n ( φ ( t 0 ) ) Z L = L s i n ( θ i ) X_L=Lcos(\theta_i)cos(\varphi(t_0))\\ Y_L=Lcos(\theta_i)sin(\varphi(t_0))\\ Z_L=Lsin(\theta_i) XL=Lcos(θi)cos(φ(t0))YL=Lcos(θi)sin(φ(t0))ZL=Lsin(θi)

3. 车体坐标系

车体坐标系用来描述车辆周围的物体和本车之间的相对位置关系。目前学术界和工业界有几种比较常用的车体坐标系定义方式。分别是ISO国际标准定义,SAE(Society of Automotive Engineers)汽车工程师协会定义,和基于惯性测量单元IMU的坐标定义。

一文看懂自动驾驶中的坐标变换_第6张图片

在车辆动力学分析中,ISO定义的车体坐标系较为常见。SAE定义的车体坐标系与航空航天领域常用的机体坐标系相一致。基于IMU定义的车体坐标系,则在IMU的相关应用中较为常见。无论使用哪一种坐标系定义,只要使用正确,都可以完成对车身位姿的描述,以及确定周围物体和本车间的相对位置关系。研发人员可以根据应用需求和使用习惯来选择车体坐标系。

一文看懂自动驾驶中的坐标变换_第7张图片

4. 世界坐标系

广义上讲,世界坐标系是一种描述物体在世界中位置的坐标系,一般是指一个描述地球上位置关系的系统,其主要分为地理坐标系统和投影坐标系统。地理坐标系统主要是指以地心为原点的球坐标系或椭球体坐标系,一般以经纬度表示地球表面某地的位置,常见的标准有WGS-84经纬坐标系。投影坐标系统主要是指以米为单位表示距离和大小的平面直角坐标系,需要进行一种坐标变换或映射关系,将用于定位的地理坐标系统中的经纬度信息转换为以米为单位的平面直角坐标,常见的标准有UTM坐标系。考虑到环境感知本身不需要对定位相关的内容做深入研究,在此按下不表,详细了解可参考这两个链接:(1), (2)。

  • 地理坐标系统(英文简写GCS,Geographical Coordinate System)地理坐标系单位 度°分’秒"–>擅长定位

    一文看懂自动驾驶中的坐标变换_第8张图片

  • 投影坐标系统(英文简写PCS,Projection Coordinate System)投影坐标系单位 米m–>擅长计算

一文看懂自动驾驶中的坐标变换_第9张图片

坐标系变换

坐标系之间的关联

在实际应用中,我们需要通过不同传感器确定障碍物与自动驾驶汽车间的相对位置,同时需要知道本车在世界坐标和地图中的位置与姿态。这就需要将不同的坐标系关联起来,并建立他们之间的转换关系。下图是自动驾驶问题中常用的一些坐标系的示意图。

一文看懂自动驾驶中的坐标变换_第10张图片

在自动驾驶问题中的坐标变换主要分为两类,第一类是物理空间中不同位置的坐标系之间的坐标变换,涉及原点的平移对齐和坐标轴的旋转对齐,一般我们将这类变换的标定参数称为外参;第二类是诸如相机等传感器内部,由于其本身的特性,导致获得的数据与真实世界有一定的对应关系,为了充分利用不同传感器的数据,需要尽可能将它们统一到相同的格式、坐标系下,这类变换的标定参数称为内参。

image-20220920001037165

外参的使用

基于O1的世界坐标系与基于O2的坐标系如下所示:

一文看懂自动驾驶中的坐标变换_第11张图片

在描述机器人运动时,我们常常提及“位姿”,其实位姿是一个合成词,我们可以将其拆解为“位置+姿态”。位置就是指“机器人某个运动关节/测量传感器在世界坐标系中的具体位置,姿态就是”基于该点的坐标系相较于世界坐标系所进行的旋转“,如下所示:

一文看懂自动驾驶中的坐标变换_第12张图片

坐标变换本质上可分解为平移和旋转,其中平移很好理解,两个坐标系经过旋转后,只差一个 O 1 O 2 O_1O_2 O1O2向量,进行向量加法即可完成,下面着重介绍一下坐标变换中的旋转。

我们知道,一个单位向量在某一空间直角坐标系中可以分解为x, y, z轴上的投影,如图所示。单位向量在坐标系中的投影正好为向量P与各个坐标轴夹角的余弦值。

一文看懂自动驾驶中的坐标变换_第13张图片

我们将坐标系A作为参考坐标系(world坐标系),基于坐标系A表示坐标系B的各个坐标轴并且将各个向量单位化,由此我们得到一个旋转矩阵,示意图及旋转矩阵各个元素的含义如下:

一文看懂自动驾驶中的坐标变换_第14张图片

一文看懂自动驾驶中的坐标变换_第15张图片

我们先前提到过,向量坐标的计算无非就是投影,那么向量坐标从坐标系B转换至坐标系A本质上就是两次投影:

一文看懂自动驾驶中的坐标变换_第16张图片

向量P的转换过程涉及三个轴的投影以及累加,使用矩阵乘法的形式可以非常简洁地表示这个过程:

一文看懂自动驾驶中的坐标变换_第17张图片

在理解了坐标变换的本质,即旋转和平移后,坐标系之间的转换公式如下:
P C = [ x c y c z c 1 ] = [ R T 0 1 ] [ x w y w z w 1 ] ⇔ P c = R [ x w y w z w ] + T P_C= \begin{bmatrix} x_c\\ y_c\\ z_c\\ 1 \end{bmatrix} {=} \begin{bmatrix} R & T\\ 0 & 1\\ \end{bmatrix} \begin{bmatrix} x_w\\ y_w\\ z_w\\ 1 \end{bmatrix} \Leftrightarrow P_c=R \begin{bmatrix} x_w\\ y_w\\ z_w\\ \end{bmatrix} +T PC= xcyczc1 =[R0T1] xwywzw1 Pc=R xwywzw +T

相机内参的使用

在自动驾驶的坐标变换中,相机内参负责相机坐标系和像素图像坐标系之间的坐标变换,其中又可以细分为物理图像坐标系与相机坐标系的变换,以及物理图像坐标系与像素图像坐标系的变换。

image-20220920001037165

一文看懂自动驾驶中的坐标变换_第18张图片

像素图像坐标系与物理图像坐标系的变换

当我们拿到了图像坐标系的数据,我们这个时候想把其转换成像素坐标系,如果我们已知图像坐标系的一个点p(x,y),我们还应该知道,横坐标和纵坐标中1个像素占多少毫米(mm)。即有如下公式:
p ( u , v ) = p ( x / d x + u 0 , y / d y + v 0 ) p(u,v)=p(x/dx+u_0,y/dy+v_0) p(u,v)=p(x/dx+u0,y/dy+v0)
用矩阵表示如下:
[ u v 1 ] = [ 1 / d x 0 u 0 0 1 / d y v 0 0 0 1 ] [ x y 1 ] \begin{bmatrix} u\\ v\\ 1 \end{bmatrix} {=} \begin{bmatrix} 1/dx & 0 & u_0\\ 0 & 1/dy & v_0\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix} uv1 = 1/dx0001/dy0u0v01 xy1

物理图像坐标系与相机坐标系的变换

根据小孔成像原理,物理世界中的点P,光心O,以及成像平面上的对应点 P ′ P^\prime P所在的线段,z轴,成像平面以及P点对应平面形成了相似三角形,根据相似三角形有:
X c x = Z c f = Y c y ⇒ x = f X c Z c , y = f Y c Z c \frac{X_c}{x}=\frac{Z_c}{f}=\frac{Y_c}{y}\Rightarrow x=f\frac{X_c}{Z_c},y=f\frac{Y_c}{Z_c} xXc=fZc=yYcx=fZcXc,y=fZcYc
化为矩阵形式得:
Z c [ x y 1 ] = [ f 0 0 0 f 0 0 0 1 ] [ X c Y c Z c ] Z_c \begin{bmatrix} x\\y\\1 \end{bmatrix} {=} \begin{bmatrix} f&0&0\\0&f&0\\0&0&1 \end{bmatrix} \begin{bmatrix} X_c\\Y_c\\Z_c \end{bmatrix} Zc xy1 = f000f0001 XcYcZc
综上所述,对于相机,由世界坐标系到图像像素坐标系的坐标变换可以用如下矩阵进行。

一文看懂自动驾驶中的坐标变换_第19张图片

参考链接

https://blog.csdn.net/fb_941219/article/details/124444541

http://imgtec.eetrend.com/blog/2021/100556031.html

https://zhuanlan.zhihu.com/p/561726864

https://zhuanlan.zhihu.com/p/453081175

https://blog.csdn.net/weixin_45590473/article/details/122848202

你可能感兴趣的:(自动驾驶,环境感知,自动驾驶,人工智能,计算机视觉)