四元数与欧拉角
欧拉角
欧拉角是一组用于描述刚体姿态的角度,欧拉提出,刚体在三维欧氏空间中的任意朝向可以由绕三个轴的转动复合生成。通常情况下,三个轴是相互正交的。对于描述旋转角的顺序,并没有特殊的规定,在航空航天领域,通常使用Tait–Bryan顺序,而对应的三个角度又分别成为roll(横滚角),pitch(俯仰角)和yaw(偏航角)。
以下四张图有助于直观理解roll,pitch和yaw。
roll
pitch
yaw
roll-pitch-yaw
一般约定,绕x、y、z轴旋转的角分别是roll、pitch、yaw,分别记作$\varphi$、$\theta$、$\psi$。从参考坐标系上区分,欧拉角又分为静态和动态,其中静态欧拉角以绝对坐标系(地球)为参考,一般用小写的x-y-z来表示静态坐标系;动态欧拉角以刚体自身的坐标系为参考,一般用大写的X-Y-Z表示。
在本文中,我们讨论动态欧拉角,顺规为Z-Y-X。如下图所示:
roll-pitch-yaw
四元数
四元数是复数在四维空间的扩展,由哈密顿首次提出。从形式上看,四元数是由$1$和$\mathbf{i}$、$\mathbf{j}$、$\mathbf{k}$线性组合而成,其中$\mathbf{i}$、$\mathbf{j}$、$\mathbf{k}$和复数中的$\mathbf{i}$类似,定义如下:
$\mathbf{i}$、$\mathbf{j}$、$\mathbf{k}$之间的运算关系还有:$\mathbf{ij}=\mathbf{k}$、$\mathbf{jk}=\mathbf{i}$、$\mathbf{ki}=\mathbf{j}$、$\mathbf{ji}=-\mathbf{k}$、$\mathbf{kj}=-\mathbf{i}$、$\mathbf{ik}=-\mathbf{j}$。注意到,这里交换律是不成立的。四元数的运算定义和运算法则,这里就不再介绍了,有需要可以参考维基百科。
四元数$\mathbf{q}=a+b\mathbf{i}+c\mathbf{j}+d\mathbf{k}$的共轭和模分别定义为:
我们把模为1的四元数称为“单位四元数”,只有单位四元数才能用于描述空间旋转/姿态。要理解单位四元数与姿态/空间旋转的联系,首先得从欧拉旋转定理说起。欧拉旋转定理表明,任意的旋转序列等价于绕某个轴的单次旋转。如果我们能描述这个轴和旋转的角度,就能描述整个旋转序列等价的单次旋转。
若存在单位轴向量
且旋转角为$\theta$,旋转方向为顺着轴向量看去的顺时针,那么描述该旋转的四元数为:
由于$\vec u$是单位向量,容易证明四元数$\mathbf{q}$为单位四元数。对于点$P(p_x,p_y,p_z)$,有向量$\vec{OP}=(p_x,p_y,p_z)$,我们将其写成四元数的形式:
将$P$点绕轴向量$\vec u$旋转$\theta$角后得到的点记为$P^{\prime}$,将向量$\vec{OP^{\prime}}$的四元数形式记为$\mathbf{p^{\prime}}$,则有:
其中$\mathbf{q^{-1}}$称为四元数$\mathbf{q}$的逆,定义为四元数的共轭除以模的平方:
对于单位四元数而言,其共轭与逆是相等的。到此,我们知道了用单位四元数计算旋转的方法。注意,四元数描述的实际上是矢量的旋转,而当旋转矢量的起点为原点时,计算结果可以看作是单个点绕某个轴的旋转。
四元数与欧拉角的换算
对于右手坐标系,把四元数和欧拉角都表示为向量形式,那么四元数和欧拉角的换算公式如下:
References
维基百科:欧拉角
四元数和旋转以及yaw-pitch-roll的含义
数的创生(四)哈密尔顿的四元数
维基百科:欧拉旋转定理
维基百科:四元数与空间旋转
维基百科:四元数
Post Info
- Copyright Notice: Creative Commons BY-NC-ND 3.0