坐标系的变换矩阵,坐标旋转变换公式矩阵

  坐标系的变换矩阵,坐标旋转变换公式矩阵

  在高级驾驶辅助系统(ADAS)领域,常见的坐标系有很多:激光雷达坐标系、车辆坐标系、摄像机坐标系、图像坐标系等。笔者在最近的实习中,经常和这些坐标系打交道。作为CSDN的第一份出版物,本文将详细概述坐标转换矩阵。

  

目录

  1.什么是坐标变换矩阵?

  2.旋转矩阵(旋转矩阵)

  3.标度矩阵

  4.翻译矩阵

  5.全面转型

  6.摘要

  

1. 何为坐标变换矩阵 (Transformation Matrix)

首先我要回答一个问题。

坐标变换矩阵

是什么?

  “横观山侧成峰,远近不同”,可见参照系的选择对我们观察事物的重要性。在上面举例说明的坐标系变换的背景下,点是客观存在的,而坐标系是根据不同的应用场景人为选择的。处理pcd点云数据时,需要三维激光雷达坐标系;查看图像时,需要二维图像坐标系(通常是1920*1080等。).即:

  

“点不变,坐标系进行变换。”

  

坐标变换矩阵

是这个变换坐标系前后的点的值的变换映射矩阵。

注意,点不动,坐标系动。

下面讨论三种变换矩阵:旋转变换矩阵、缩放变换矩阵、平移变换矩阵。

  2.旋转变换矩阵(

Rotation M

atrix

)

2.1 二维情形

  如图1,在二维平面xoy上,将从

绿色坐标系逆时针

旋转到

蓝色坐标系

。大家可以看到,A点没有移动,但是A点在前后坐标系中的坐标发生了变化,也就是从变换到。

  图1二维平面旋转矩阵在图1中用黑色虚线表示。通过

矢量分解

(类似于物理学中力、速度等矢量的分解),在

绿色坐标系

的X轴和Y轴上分解

蓝色坐标系

,可以得到:

  用矩阵表示为:

  r是二维情况下的旋转变换矩阵,代表前后坐标系中A点的

值的映射关系

  

2.2 三维情形

  有了上述二维平面旋转的基础,三维空间的旋转矩阵就不难找到了。

  即分别绕X轴、Y轴、Z轴旋转。最后将这三个旋转变换矩阵相乘,就可以得到三维空间中任意角度的旋转变换矩阵。(

xyz轴满足右手系关系

)

  在

绕x轴

旋转时,可以看作是在yoz二维平面上的旋转,此时

x的值不变

  在

绕y轴

旋转时,可以看作是在zox二维平面上的旋转,此时

y的值不变

  当在

绕z轴

旋转时,可以看作是在xoy 2D平面的旋转,此时

z的值不变

  最终的三维旋转变换矩阵是上述三个矩阵的相乘,也就是三维坐标系绕X轴、Y轴、Z轴旋转相应的角度。

  

2.3 顺时针?逆时针?

  刚接触旋转这个概念的时候,经常头疼什么时候顺时针转,什么时候逆时针转。

  高中时接触到

点的旋转矩阵R(rotation matrix of a point)

,这里是

坐标系不变

,点绕坐标原点

顺时针

旋转。

  在本文的情况下,旋转变换矩阵的形式是

完全一致

,但方向相反。3354变成

逆时针

!原因是上面的陈词滥调是高中的矩阵是

点动系不动

,而这篇论文的矩阵是

系动点不动

。所以方向正好相反。

  回到

系动点不动

本文从两个角度推导了顺时针旋转的公式。

  1)变为-:此时选择相反的旋转角度,变为顺时针。

  2)求原矩阵的逆矩阵:先逆时针,再顺时针,相当于回到原系统,即坐标乘以单位矩阵。

  可得坐标系

顺时针

旋转的旋转变换矩阵为:

  3.比例矩阵除了旋转变换,还有坐标值的纯放大缩小变换,也就是比例变换。下面直接给出了比例变换的公式:

  上式中点的x,y,z坐标值分别放大(缩小)Scale.x,Scale.y,Scale.z倍。

  标度矩阵也有“定点”或“不动点”的问题。如果是“定点系统”,那么S矩阵中的Scale.x,Scale.y,Scale.z简单来说就是点x,y,z的展开(缩小)倍数。

  如果是“

系动点不动

”,那么S矩阵中的Scale.x、Scale.y、Scale.z是坐标系x、y、z轴单位扩展(缩小)倍数的倒数。换句话说,如果坐标轴单位被放大了刻度倍数,那么点X、Y和Z的值将被减小刻度倍数。你可以用公里和米的换算来思考这个问题。如果单位是米,那么一个物体的长度是1000米。当单位变为km时,物体将为1km长。当单位展开时,数值从1000减少到1。

  4.平移矩阵坐标系的旋转和缩放可以通过3*3的变换矩阵来完成,但是平移需要扩展3*3到4*4,并引入

齐次变换矩阵

。下面直接给出平移变换矩阵的公式:

  具体流程是:

  平移矩阵也有“定点”或“不动点”的问题。

  如果是本文重点讨论的“

系动点不动

”。翻译。x,翻译。y和翻译。如果系统向左(x轴负方向)/向后(y轴负方向)/向下(z轴负方向)平移,则t矩阵中的z为正;翻译。x,翻译。y和翻译。如果系统向右(x轴的正方向)/前(y轴的正方向)/上(z轴的正方向)平移,则t矩阵中的z为负。爬楼梯就明白了。fkddr在地面上仰望5楼,5楼相当于5。当fkddr爬到五楼时,五楼等于0。fkddr爬到10楼的时候,5楼相当于-5。Fkddr是坐标系的原点,5层是固定点。

  

5. 综合变换

变换矩阵和点矢量的均匀化:

  那么对于固定点来说,如果按照“旋转-缩放-平移”的顺序改变坐标系,那么这个点的值就会改变如下:

  6.总结ADAS涉及到各种坐标系的变换,点的坐标会随着坐标系的变换而变化。坐标变换矩阵是坐标系变换前后点值的映射矩阵。主要有旋转变换矩阵、缩放变换矩阵和平移变换矩阵。极其重要和令人困惑的是,在具体的应用场景中,是一个部门还是一个点,什么在变,什么没变。矩阵的具体实现可以采用python中的numpy模块。

坐标系的变换矩阵,坐标旋转变换公式矩阵