坐标系的变换矩阵,坐标旋转变换公式矩阵
在高级驾驶辅助系统(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模块。