四元数速查手册

Quaternion

Posted by Jerry Zhao on January 11, 2019

定义

其中是虚根,满足

即这里使用了Hamilton规范。由此可以推导出

\ 实部,虚部的四元数就等价为普通实数。

实部,虚部的四元数称为纯四元数。对于纯四元数,常常只使用一个三维矢量表示。

加法

对应项直接相加即可

乘法

利用定义,两个四元数相乘,并合并相同虚根的对应项,可以定义四元数的乘法。

用矢量表示形式,上式可以简化为

四元数乘法类似于矩阵乘法,不满足交换律

但满足结合律和分配律

\ \ 四元数乘法可以进一步表示为矩阵和矢量的线性相乘,即

其中分别为四元数的左乘矩阵和右乘矩阵,定义为

其中代表的叉乘矩阵,即

根据结合律可以推导出

幺元

共轭

实部不变,对虚部取逆

\ \ 与自己的共轭相乘得到纯实数,即

\ 模长等于1()的四元数称为单位四元数。

交换子

四元数的幂

四元数的幂定义为

是一个实部为0,虚部为的纯四元数,并令,其中是单位矢量,则有循环模式

指数映射

是纯四元数,记为,则根据指数映射的定义,上一节中的指数循环模式,以及三角函数的泰勒展开式,可得

纯四元数的指数映射是一个单位四元数

上式也可以看做欧拉公式的推广。类似的有

由此可知单位四元数的幂(其中)的计算方法

另外还有

\ 普通四元数的指数映射可以将实部和虚部分开处理,即

对数映射

设四元数是单位四元数,则可以定义对数映射

单位四元数的对数映射是一个纯四元数

其中

\ 普通四元数的对数映射同样按照分离实部和虚部的思路,有

单位四元数与旋转

定义

单位四元数可用于表示旋转。

设旋转的轴为,旋转角度为,则该旋转可用四元数表示为

要用四元数对某个三维矢量进行旋转,首先将变为纯四元数,即

然后

可以证明上式的结果也是一个纯四元数,虚部对应旋转后的矢量。

从上式也可得出,表示同一个旋转。

与轴角的关系

单位四元数与轴角可以通过指数映射和对数映射建立联系。

设某个旋转通过轴角表示为三维矢量,其中是单位矢量。则

需要注意的是,一般而言

仅当旋转轴相同时,等式才成立,且满足交换律。

\ 当有轴角是小量()时,存在如下关系:

其中

需要指出的是,以上小量关系是正交群SO(3)的内在关系,与旋转的表示形式无关,即无论使用四元数还是旋转矩阵来表示旋转,上述关系都存在。使用旋转矩阵表示时,四元数乘法就变为普通矩阵乘法,上面的Exp映射就是罗德里格斯(Rodrigues)变换:

与旋转矩阵的关系

根据

可得

以及一些常用性质

四元数的导数

对时间求导

在动力学系统中,用四元数表示某个物体的姿态(旋转量)时,四元数是时间的函数,则其关于时间的变化率(导数)为

其中是局部(Body)坐标系下物体的角速度,是一个轴角表示的三维矢量,带入上式计算时要先变为纯四元数。

如果角速度表示在全局(global)坐标系下,上式变为

四元数的乘积对时间求导满足二元运算求导法则,即

对四元数求导

对四元数求导可以利用矢量求导法则,比如

Reference

  1. Quaternion kinematics for the error-state Kalman filter