2-2 坐标映射
#学习笔记 #机器人模块 #机器人理论 #机器人运动学 #空间描述与坐标变换
与上一节不同的是,坐标映射的部分并不是描述坐标系,而是一个相同的量在不同坐标系下的表达,比如坐标系{B}上一点 P 在坐标系{A}上的位置。
坐标平移
图中{A}和{B}是平移的关系,没有一点旋转
图中的错误:图中 P 点没画出来反正在指向的位置上,ZB 指向上
图中表示点 P 在两个坐标系当中的位置,其中 $^{A}P$ 为 P 点在{A}当中的位置,同样 $^{B}P$ 为 P 点在{B}的位置。坐标系 B 是由坐标系 A 平移 $^{A}P_{BORG}$ 后产生的。
从图中可以得到这样的关系,通过矢量加法得到:
$$
^{A}P=^{A}P_{BORG}+^{B}P
$$
所以可以得出当坐标仅仅做平移的情况下,知道 B 坐标系相对 A 的偏移矢量与该点在 B 坐标系下的位置就能求出该点在 A 坐标系的位置。
下一步研究仅有坐标系旋转的情况
坐标旋转
图中两个坐标系原点重合,也就是毫无平移
从上一节 [[2-1 描述位姿#姿态描述]] 当中了解到 $^{A}{B}R$ 这个矩阵,这个矩阵表示 B 在 A 当中的描述,其中这个矩阵的列是 B 的单位矢量在 A 当中的描述,行则是 A 单位矢量在 B 当中的描述。那么这个旋转矩阵可以有三个列向量或者是三个行向量拼成,向量组成如下:
$$
^{A}{B}R=(^A\hat{X}{B}\ ^A\hat{Y}{B}\ ^A\hat{Y}{B})=\begin{pmatrix}
^B\hat{X}{A}^T\
^B\hat{Y}{A}^T\
^B\hat{Z}{A}^T
\end{pmatrix}
$$
目前我们知道 P 点在 B 坐标系当中的定义,现在想要知道 P 点在坐标系 A 当中的定义,因为两个坐标系原点是重合的,并且 B 相对 A 的姿态也是已知的,所以就可以利用两个坐标系之间的关系进行求解。
为了计算 $^AP$,我们可以注意到这个矢量的每个分量其实就是向坐标系上单位矢量方向进行投影,投影也就是点乘,因此可以求得 $^AP$ 的分量:
$$
{\begin{cases}
^AP_{x}=^B\hat{X}{A}\cdot ^{B}P \
^AP{y}=^B\hat{Y}{A}\cdot ^{B}P \
^AP{z}=^B\hat{Z}{A}\cdot ^{B}P
\end{cases}}
$$
上面对于 $^AP$ 的三个分量的求解公式可以通过矩阵的方式来进行表示,并且从上一节的推导可以了解到 $^A{B}R$ 的行就是 $^B\hat{X}{A}\ ^B\hat{Y}{A}\ ^B\hat{Z}{A}$,那么就用旋转矩阵来简化上面三个式子:
$$
^AP=^A{B}R^BP
$$
这就是映射
映射:矢量变换的表述,将空间某点相对于 B 的描述 $^BP$ 转换成了该点相对于 A 的描述 $^AP$
例题 2.1-关于坐标旋转变换的例题
坐标系 B 由 A 绕 Z 轴旋转 30°所得到,这里 Z 轴指向纸面朝外
已知
$$
^BP=\begin{pmatrix}
0\
2\
0
\end{pmatrix}
$$
求出 $^AP$ :
由于 B 是从 A 旋转 30°所得到的,所以可以求出 $^A_BR$
$$
^A_{B}R=\begin{pmatrix}
\hat{X}{B}\cdot\hat{X}{A}& \hat{Y}{B}\cdot\hat{X}{A} & \hat{Z}{B}\cdot\hat{X}{A} \
\hat{X}{B}\cdot\hat{Y}{A}& \hat{Y}{B}\cdot\hat{Y}{A} & \hat{Z}{B}\cdot\hat{Y}{A} \
\hat{X}{B}\cdot\hat{Z}{A} & \hat{Y}{B}\cdot\hat{Z}{A} & \hat{Z}{B}\cdot\hat{Z}{A}
\end{pmatrix}=\begin{pmatrix}
\frac{\sqrt{ 3 }}{2}& -\frac{1}{2}& 0 \
\frac{1}{2} & \frac{\sqrt{ 3 } }{2} &0 \
0 &0 & 1
\end{pmatrix}
$$
这个矩阵就计算出 B 在 A 的投影就可以了,从图中就可以直接求出来
有了旋转矩阵之后就可以直接在 $^BP$ 左乘一个旋转矩阵就求出 $^AP$
$$
^AP=^A_{B}R=\begin{pmatrix}
-1 \
\sqrt{ 3 } \
0
\end{pmatrix}
$$
这里 $^A_{B}R$ 的作用仅仅是映射,并没有改变 P 点的属性,只是让这个点在一个新的坐标系上面进行描述
一般变换
之前讨论过仅有平移与仅有旋转的两种情况,下面扩展到一般情况,也就是既有平移又有旋转的情况
对于这种一般情况下的变换,分以下几个过程:
- 将 A 旋转变换为和 B 姿态相同的中间坐标系,姿态和 B 相同但是两个坐标系的原点重合
- 将这个中间坐标系平移 $^AP_{BORG}$,平移到 B 坐标系的位置
用公式表示为:
$$
^AP=^A_{B}R^BP+^AP_{BORG}
$$前面的部分为旋转后面的部分为平移
用一种新的形式来表示上式:
$$
^AP=^A_{B}T^BP
$$
用一个更简洁的矩阵形式的算子来表示从一个坐标系到另一个坐标系的映射,也就是变换 Transform
Transform 这个词在软件里经常见到,例如在 Blender 这类 3D 建模软件当中经常有 Transform 菜单选项,里面都是类似于 Translate,Rotate 这种选项来负责对一个物体的平移和旋转
那么如何将旋转矩阵和平移的矢量进行拼接,现在创建一个 4×4 的矩阵,并且对 $^BP$ 扩展为 4×1 的位置矢量,如下:
$$
\begin{pmatrix}
^AP\
1
\end{pmatrix}=
\begin{pmatrix}
&^A_{B}R && ^AP_{BORG} \
0& 0 & 0 &1 \
\end{pmatrix}
\begin{pmatrix}
^BP\
1
\end{pmatrix}
$$
这个 4×4 的矩阵被称为齐次变换矩阵(Homogeneous coordinate),可以被看作是用一个矩阵就表示了一般变换的旋转和平移。
注意,尽管齐次变换的简洁形式比较有用,但是计算机程序往往不用它来进行矢量变换,因为这个变换会把时间浪费在和 1、0 的相乘上。所以这种形式主要是便于公式推导
例题 2.2-一般变换的应用
同 [[2-2 坐标映射#例题 2.1-关于坐标旋转变换的例题]],坐标系 B 绕 A 旋转了 30°,现在又让 B 沿着 $\hat{X}{A}$ 平移 10,再沿着 $\hat{Y}{A}$ 平移 5
已知
$$
^BP=\begin{pmatrix}
3 \
7 \
0
\end{pmatrix}
$$
求 $^AP$
首先求出变换矩阵 $^A_{B}T$
$$
^A_{B}T=\begin{pmatrix}
\frac{\sqrt{ 3 }}{2}& -\frac{1}{2}& 0 &10\
\frac{1}{2} & \frac{\sqrt{ 3 } }{2} &0 &5\
0 &0 & 1&0 \
0 & 0 & 0 & 1
\end{pmatrix}
$$
然后按照上面的公式求出 $^AP$
$$
^AP=^A_{B}T^BP=\begin{pmatrix}
\frac{3\sqrt{ 3 }-7}{2}\
\frac{3+3\sqrt{ 3 }}{2}\
0 \
0
\end{pmatrix}
$$