- 本文重点:四元数与反对称阵的定义,利用四元数表征旋转关系。
- 1.1 为什么要引入四元数?
- 1.2 什么是四元数?
- 1.3 反对称阵的作用及定义
- 1.4 四元数表征旋转关系
注意:公式(1),公式(4),公式(8)为重点。
1.1 为什么要引入四元数?
在表征机体的运动时,使用欧拉角按照一定的旋转顺序可以让机体旋转至任意目标角度,但是会造成万向节死锁(Gimbal Lock)
原因就在于欧拉角的定义中,由于定义了X\Y\Z轴的父子级关系,这就造成当任意两个轴面处于同一平面时会发生某一轴的自由度丢失(如上图所示,两个轴平面发生了重合),产生万向锁的问题。具体的原理见:带你走进万向锁。其中有个视频,看完就明白了。引入四元数是为了更方便地计算轴角表示的方向变换,由于自身的相乘性质,在进行多次复杂旋转时能大幅度的降低计算量,具体请看:四元数好在哪里?
1.2 什么是四元数?
四元数是一种用于描述刚体转动或者姿态变换的抽象数,是存在三个虚部的复数:
且与复数类似,四元数虚数单位之间具有以下的运算法则(∘表示四元数相乘):
定义两个四元数和相乘的结果为:
写成矩阵的形式为:
不难观察到矩阵由四元数,共轭转置以及的反对称阵组成,其中的反对称阵也成为矩阵的核。
那么反对称阵是什么,他又有什么作用呢?
1.3 反对称阵的作用及定义
假设有两个三维列向量:
他们之间的叉乘可以表示为:
同时,根据公式(2)的右端,利用V1构造矩阵如下:
可以发现公式(2)与公式(3)右边是相同的,这也就是说V1与V2的叉乘结果等于了V1变换阵与V2的相乘结果,这是很厉害的一步,我们将公式(3)最左边的矩阵称为反对称阵。
引入反对称阵概念后,两向量之间叉乘运算可等价表示为前一向量的反对称阵与后一向量之间的矩阵乘法运算:
在明白了反对称阵后,接下来我们就可以用四元数来表征旋转关系了。
1.4 四元数表征旋转关系
假设有一个三维矢量,在载体坐标系(b系)下和惯性坐标系(i系)下的投影坐标分别为:
则将从载体坐标系转换至惯性坐标系的过程定义为:
由公式(1)的矩阵关系化简上式得:
由反对称阵作为和的内核来构造矩阵,进一步展开上式得到:
将公式5-7整理为:
这表明公式(5)的计算结果是一个零标量四元数,虚部对应着姿态阵的坐标变换