SuperZLW's Blog

我很笨,但是我不懒

0%

四元数(三维旋转)

四元数的基本知识:

与复数类似,四元数也由实部和虚部组成,但四元数有三个虚部,通常表示为:
或:

这三个虚部满足下面关系:

在复数中,乘以一个 $i$ 相当于旋转90度,但四元数中不同,乘以$i$ 表示对应旋转180度,这样才能保证 $ij = k$,而$i^2 = -1$表明,旋转360度后会得到一个相反的东西,要旋转两周才能回到原来的样子(看着挺反常识的。。。。。。)

四元数的运算

(这里介绍加减,乘,模,共轭,逆,数乘)\
现定义两个四元数

1).加减

2). 乘法

乘法是把$q_{a}$每一项都与$q_{b}$相乘,虚部部分的运算要按照上面图1的规则计算:

(看着挺复杂,但写成向量内外积的形式就会简洁很多: )

(由于最后一项外积的存在,这个乘法通常是不可交换的,除非$v_{a},v_{b}$在$R^{3}$中共线,此时外积项为0.)

3). 模长

四元数的模长定义为:

两个四元数乘积的模等于模的乘积:

4). 共轭

即是把虚部取相反数:

四元数共轭与其本身相乘会得到一个实四元数,其实部等于模长的平方:

5). 逆

四元数的逆为:

若$q$为单位四元数,则其逆和共轭就是同一个量。另外,乘积的逆具有和矩阵相似的性质:

6). 数乘

旋转表示

首先有一个待旋转点$p$,表示成一个纯四元数为:其三个虚部分别对应$x,y,z$三个坐标轴,旋转四元数表示为$q$,是一个单位四元数。对于旋转后的点$p’$表示如下:
对于旋转有如下要求:

  1. 旋转前后的模应相等;\
  2. 旋转后的点$p’$应该也为纯四元数。

由于$q$为单位四元数,模为$1$,对应上面四元数模的性质可知$p’$满足条件1,但对于条件2则只有当$p$和$q$虚部正交时才能满足(原因的话网上有很多篇文章都有对其展开计算,这里就懒得写了……)。\
一般情况下会把旋转表示成下面这种形似:
(有些地方这个逆也会用共轭代替,这无所谓,因为$q$是单位四元数)\
至于为什么是这种形式,因为Hamilton发现,如果右乘一个$p$的逆,则可以同时满足上面两个条件(可具体展开乘一下或者直接用特殊值法)。

四元数与其它旋转方式之间的转换

任意一个单位四元数可以表示一个旋转,这个旋转也可以用旋转矩阵或者旋转向量来表示,这里主要讨论这三者的关系。 \
(现在把四元数乘法表示为矩阵乘法)\
设$q=[s,v]^{T}$,首先定义两种新的符号$^{+}$和$^{\oplus}$。
其中的符号$^{\land}$表示反对称矩阵,即:$A’=-A$,举个例子,设:
则$a^{\land}$为:
这两个符号将四元数映射成一个$4\times4$矩阵。\
所以,四元数乘法写成矩阵形式如下:
同理:
进一步:
代入对应矩阵:
由于$p$和$p’$都是纯四元数,所以上面矩阵的右下角即是从四元数到旋转矩阵的变换关系:
然后现在是四元数到旋转向量的变换,对上式两侧求迹(对角线的总和):
转角$\theta$为:
即:
所以:
然后是旋转轴:\
上面最后一个矩阵那,如果用$q$ 的虚部代替$p$,则表示$q$的虚部组成的向量在旋转时是不变的,即为旋转轴。此时只要把它除以它的模长即可。\
最后,四元数到旋转向量的转换如下:
注:本文主要参考《视觉SLAM十四讲》

------ 本文结束------