坐标变换(2)—不同坐标系下的变换

如下图所示,在自动驾驶车辆上会存在大量冗余的传感器,例如轮速传感器、激光雷达,毫米波雷达,摄像头,超声波雷达,GPS,IMU等。不同传感器对同一物体的测量原始结果都是在自身坐标下,所以首先我们需要对多传感器就行标定(即获得不同坐标系之间的变换关系,多传感器的标定是个非常复杂且困难的问题,这里先不介绍),将所有传感器的输出统一到一个坐标系下。

图1.自动驾驶车辆上的多传感器

本文主要介绍不同坐标系之间变换的原理,在这里我们采用一个体系,即存在一个世界坐标系,我们定义的位置或者姿态都是参考世界坐标系或者世界坐标系定义的笛卡尔坐标系,且讨论的维度为3维。

1. 位置、姿态与坐标系

1.1 位置

一旦我们定义了一个坐标系,对于空间中某一点的位置我们就能用一个3×13\times1的列向量来表示。如图1所示,我们在世界坐标系下还定义了很多坐标系,所以在定义位置向量时,必须附加一个条件,表明是哪个坐标系下的。

在本文中,我们用左上标来描述具体的坐标系,例如AP^{A}P表明列向量PP在坐标系AA下定义的。

图2 坐标系A

AP=[pxpypz] ^{A} P=\left[\begin{array}{l} {p_{x}} \\ {p_{y}} \\ {p_{z}} \end{array}\right]

1.2 姿态

为了描述物体的姿态,我们将在物体上固定一个坐标系,并且给出此坐标系相对于参考坐标系的表达。所以位置用列向量描述,姿态可以用固定在物体上的坐标系描述。

这里我们定义参考坐标系AA,用XA,YA,ZAX_{A},Y_{A},Z_{A}表示坐标系AA 的三个主轴的单位向量,而AXB,AYB,AZB^{A}X_{B},^{A}Y_{B},^{A}Z_{B} 为坐标系BB的三个主轴的单位向量(相对于参考坐标系AA),并利用AXB,AYB,AZB^{A}X_{B},^{A}Y_{B},^{A}Z_{B}顺序排列,组成了一个3×33\times3 的矩阵,称为旋转矩阵,用符号BAR_{B}^{A} R表示,

BAR=[AXBAYBAZB]=[r11r12r13r21r22r23r31r32r33] _{B}^{A} R=\begin{bmatrix} ^{A}X_{B}& ^{A}Y_{B} & ^{A}Z_{B} \end{bmatrix}=\left[\begin{array}{ccc} {r_{11}} & {r_{12}} & {r_{13}} \\ {r_{21}} & {r_{22}} & {r_{23}} \\ {r_{31}} & {r_{32}} & {r_{33}} \end{array}\right]

其中,标量rijr_{ij}也可以利用坐标系BB对应主轴在参考坐标系AA中各主轴的投影来表示(利用内积求每个坐标轴的投影值),

BAR=[AXBAYBAZB]=[XBXAYBXAZBXAXBYAYBYAZBYAXBZAYBZAZBZA] _{B}^{A} R=\begin{bmatrix} ^{A}X_{B}& ^{A}Y_{B} & ^{A}Z_{B} \end{bmatrix}=\left[\begin{array}{ccc} { {\boldsymbol{X}}_{\boldsymbol{B}} \cdot {\boldsymbol{X}}_{\boldsymbol{A}}} & { {\boldsymbol{Y}}_{\boldsymbol{B}} \cdot {\boldsymbol{X}}_{\boldsymbol{A}}} & { {\boldsymbol{Z}}_{\boldsymbol{B}} \cdot {\boldsymbol{X}}_{\boldsymbol{A}}} \\ { {\boldsymbol{X}}_{\boldsymbol{B}} \cdot {\boldsymbol{Y}}_{A}} & { {\boldsymbol{Y}}_{\boldsymbol{B}} \cdot {\boldsymbol{Y}}_{A}} & { {\boldsymbol{Z}}_{\boldsymbol{B}} \cdot {\boldsymbol{Y}}_{\boldsymbol{A}}} \\ { {\boldsymbol{X}}_{\boldsymbol{B}} \cdot {\boldsymbol{Z}}_{\boldsymbol{A}}} & { {Y}_{\boldsymbol{B}} \cdot {Z}_{A}} & { {\boldsymbol{Z}}_{\boldsymbol{B}} \cdot {\boldsymbol{Z}}_{\boldsymbol{A}}} \end{array}\right]

在上式最右边矩阵中省略了上标,事实上只要点积的各对向量是在同一坐标系中描述的,那么坐标系的选择可以是任意的。由于上式右边矩阵中的向量均为单位向量,所以通过内积计算的结果是两者之间夹角的余弦,所以上述矩阵也称为方向余弦矩阵

由上式可以看出,矩阵的行是单位向量{A}\{A\}{B}\{B\}中的描述( 即BXA^{B}X_{A} ),即,

BAR=[AXBAYBAZB]=[BXATBYATBZAT] _{B}^{A} R=\begin{bmatrix} ^{A}X_{B}& ^{A}Y_{B} & ^{A}Z_{B} \end{bmatrix}=\left[\begin{array}{c} {^{B}{X}_A^{T}} \\ {^{B}{Y}_{A}^{T}} \\ {^{B}{Z}_{A}^{T}} \end{array}\right]

进而,可以得到,

BAR=ABRT _{B}^{A}R={_{A}^{B}R}^{T}

而,

[AXBTAYBTAZBT][AXBAYBAZB]=BARTBAR=I3 \left[\begin{array}{c} {^{A}{X}_B^{T}} \\ {^{A}{Y}_{B}^{T}} \\ {^{A}{Z}_{B}^{T}} \end{array}\right]\begin{bmatrix} ^{A}X_{B}& ^{A}Y_{B} & ^{A}Z_{B} \end{bmatrix}= {_{B}^{A}R}^{T} {_{B}^{A} R}=I_{3}

从而还得到旋转矩阵是一个正交矩阵

1.3 坐标系

在自动驾驶中,位置和姿态总是成对出现的,我们将此组合称为坐标系。一个坐标系可以等价的用一个位置向量和一个旋转矩阵来描述。

例如,我们用BAR_{B}^{A}RAPBORG^{A}P_{BORG}来描述坐标系BB,而参考坐标系为AA。其中APBORG^{A}P_{BORG}是坐标系BB在参考坐标系AA中的原点的位置向量,而BAR_{B}^{A}R是坐标系BB的姿态。

2. 坐标变换

这里的坐标变换指的是将一个坐标系中的向量在其他坐标系中进行变换(描述),向量本身并没有变换,只不过对它的描述变换了

2.1 平移变换

如下图3所示,

图3平移变换

在坐标系BB中,我们用向量BP^{B}P描述了其中一个位置,现在要将该向量变换到坐标系AA中,也就是将该向量在AA中进行描述,这里假设 AABB的姿态相同,易得,

AP=BP+APBORG ^{A}P={^{B}P}+{^{A}P_{BORG}}

2.2 旋转变换

如下图所示,

图4 旋转变换

我们用BAR_{B}^{A}R表示坐标系BB在参考坐标系AA中的描述,现在已知参考系BB中的位置向量BP^{B}P,求其在参考坐标系AA中的描述?

我们知道,一个位置向量在其参考坐标系中的三个轴的分量都是该向量在对应三个轴上的投影,而投影的大小可以利用向量的点积进行计算。因此我们可以将AP^{A}P的分量计算如下,

Apx=BXABPApy=BYABPApz=BZABP \begin{aligned} ^{A} p_{x}={^{B}{X}_{A}} \cdot{^{B} P}\\ ^{A} p_{y}={^{B}{Y}_{A}} \cdot{^{B} P}\\ ^{A} p_{z}={^{B}{Z}_{A}} \cdot{^{B} P} \end{aligned}

上面式中,我们首先将坐标系AA在坐标系BB中去描述, 前面介绍过,只要点积的各对向量是在同一坐标系中描述的,那么坐标系的选择可以是任意的。这里BXA{^{B}{X}_{A}}BP{^{B} P}都是在坐标系BB下描述,所以可以利用点积直接计算出BP^{B}Pxx轴方向的投影。将上面三式写成矩阵形式,由前面可知,BAR_{B}^{A} R的行就是BXA{^{B}{X}_{A}},BYA{^{B}{Y}_{A}},BZA{^{B}{Z}_{A}}

AP=BARBP ^{A}P={_{B}^{A} R} {^{B}P}

有个便于记忆的小技巧,前面的矩阵的下标BB消去了后面矩阵的上标 BB

2.3 旋转平移

考虑下面的情况,既有平移,又有旋转,如何求 AP^{A}P

图5 旋转平移

首先,我们将BP{^{B}P} 变换到一个中间的过渡坐标系,这个坐标系和 AA 的姿态相同,原点和 BB 重合。然后再利用简单的向量加法将向量进行平移,即

AP=BARBP+APBORG ^{A}P={_{B}^{A} R} {^{B}P}+{^{A}P_{BORG}}

但是上述公式不是线性的,利用一点数学变换,可以得到一个更简单的公式,

[AP1]=[BARPBORG01][BP1] \left[\begin{array}{c} {^{A}{P}} \\ {1} \end{array}\right]=\left[\begin{array}{c|c} {_{B}^{A} R} & {P_{B O R G}} \\ \hline 0 & {1} \end{array}\right]\left[\begin{array}{c} {^{B}{P}} \\ {1} \end{array}\right]

所以可以变换成下式统一的格式,

AP=BATBP ^{A}P={_{B}^{A} T} {^{B}P}

其中,称 TT4×44\times4 其次变换矩阵

发布了128 篇原创文章 · 获赞 164 · 访问量 39万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览