一个刚体在三维空间中的运动是如何描述的。我们当然知道这由一次旋转加一次平移组成。平移确实没有太大问题,但旋转的处理是件麻烦事。我们将介绍旋转矩阵、四 元数、欧拉角的意义,以及它们是如何运算和转换的。
1.向量,坐标系和旋转矩阵
点
- 点存在于三维空间之中
- 点和点可以组成向量
- 点本身由原点指向它的向量所描述
向量
-
带指向性的箭头
-
可以进行加法,减法等运算
坐标系:由三个正交的轴组成 -
构成线性空间的一组基
-
左手系 右手系
-
定义坐标系后,向量可以由R3坐标表示
线性空间的基 (e1, e2, e3), 那就可以谈论向量 a 在这组基下的坐标了
向量坐标的运算
加减法:
内积:内积可以描述向量间的投影关系
外积:外积只对三维向量存在定义,我们还能用外积表示向量的旋转
把 a 写成一个矩阵。事实上是一个反对称矩阵 ,你可以将 ∧ 记成一个反对称符号。这样就把外积 a × b,写成了矩阵与向量的乘法 a ∧b。任意向量都对应着唯一的一个反对称矩阵,反之亦然。
2. 坐标系之间的欧式变换
问题1:
坐标系之间如何变化的?
问题2:
如何计算同一个向量在不同坐标系里的坐标?
在SLAM中:
- 固定的世界坐标系和移动的机器人坐标系
- 机器人坐标系随着机器人运动而改变,每个时刻都有新的坐标系
如何描述左侧黑色坐标系到右侧蓝色坐标系的变化?
- 黑色坐标系先旋转变为粉色坐标系
- 粉色坐标系再进行平移为蓝色坐标系
T 是一个矩阵,也称为欧式变换 = 旋转+平移
2.1 旋转矩阵 R
- 设某个单位正交基 (e1, e2, e3) 经过一次旋转,变成了 (e ′ 1 , e ′ 2 , e ′ 3 )。
- 那么,对于同一个向量 a(注意该向量并没有 随着坐标系的旋转而发生运动),它在两个坐标系下的坐标为 [a1, a2, a3] T 和 [a ′ 1 , a ′ 2 , a ′ 3 ] T。
- 根据坐标的定义,有:
为了描述两个坐标之间的关系,我们对上面等式左右同时左乘
那么左边的系数变成了单位矩阵,所以:
我们把中间的阵拿出来,定义成一个矩阵 R。这个矩阵由两组基之间的内积组成,刻 画了旋转前后同一个向量的坐标变换关系。只要旋转是一样的,那么这个矩阵也是一样的。 可以说,矩阵 R 描述了旋转本身。因此它又称为旋转矩阵。
旋转矩阵有一些特别的性质:
- 它是一个行列式为 1 的正交矩阵。反之,行列式为 1 的正交矩阵也是一个旋转矩阵
- 旋转矩阵各分量是两个坐标系基的内积,由于基向量的长度为1,所以实际上是各基向量夹角的余弦值。所以这个矩阵也叫方向余弦阵
SO(n) 是特殊正交群的意思。我们把解释“群”的内容留到下一讲。这个集合由 n 维空间的旋转矩阵组成,特别的,SO(3) 就是三维空间的旋转了。通过旋转矩阵,我们可以直接谈论两个坐标系之间的旋转变换,而不用再从基开始谈 起了。换句话说,旋转矩阵可以描述相机的旋转。
由于旋转矩阵为正交阵,它的逆(即转置)描述了一个相反的旋转。按照上面的定义方式,有:
显然 RT 刻画了一个相反的旋转。
在欧氏变换中,除了旋转之外还有一个平移。考虑世界坐标系中的向量 a,经过一次 旋转(用 R 描述)和一次平移 t 后,得到了 a ′,那么把旋转和平移合到一起,有:
t 称为平移向量。相比于旋转,平移部分只需把这个平移量加到旋转之后的坐标上。
实际上,我们会定义坐标系1,坐标系2,那么向量a在两个坐标系下的坐标为a1,a2,它们之间的关系应该是:
R12是指 **”把坐标系2的向量变换到坐标系1“**中
2.2 变换矩阵与齐次坐标
完整地表达了欧氏空间的旋转与平移,不过还存在一个小问题:这里的变换 关系不是一个线性关系。假设我们进行了两次变换:R1, t1 和 R2, t2,满足:
但是从 a 到 c 的变换为:
这样的形式在变换多次之后会过于复杂。因此,我们要引入齐次坐标和变换矩阵重写:
我们把一个三维向量的末尾添加 1,变成了四维向量,称为齐次坐标。对于这个四维向量,我们可以把旋转和平移写在一个矩阵里面,使得整个关系变成 了线性关系。该式中,旋转和平移可以放入同一个矩阵,称矩阵 T 称为变换矩阵。我们暂时用 a˜ 表 示 a 的齐次坐标。
那么多次变换就可以写成:
关于变换矩阵 T,它具有比较特别的结构:左上角为旋转矩阵,右上角为平移向量,左下角为0向量,右下角为1。这种矩阵又称为特殊欧氏群:
实例应用:
移向量,左下角为0向量,右下角为1。这种矩阵又称为特殊欧氏群:
[外链图片转存中…(img-pyjcIDHI-1693126744443)]
实例应用:
[外链图片转存中…(img-LgaWxEkz-1693126744443)]