四元数和旋转矩阵转换关系
四元数和旋转矩阵转换关系
在三维空间旋转的表示方法中,旋转矩阵、欧拉角和旋转向量各有优劣。旋转矩阵虽然直观,但冗余性较高;欧拉角和旋转向量虽然紧凑,但存在奇异性。四元数作为一种扩展的复数,既保持了紧凑性,又避免了奇异性,是表示三维旋转的有力工具。本文将详细介绍四元数的结构及其与旋转矩阵之间的转换关系。
旋转表示方法的局限性
旋转矩阵用9个量描述3自由度的旋转,具有冗余性;欧拉角和旋转向量是紧凑的,但具有奇异性。事实上,我们找不到不带奇异性的三维向量描述方式[19]。这有点类似于用两个坐标表示地球表面(如经度和纬度),将必定存在奇异性(纬度为±90°时经度无意义)。
四元数的基本概念
回忆以前学习过的复数。我们用复数集C表示复平面上的向量,而复数的乘法则表示复平面上的旋转:例如,乘上复数i相当于逆时针把一个复向量旋转90°。类似地,在表达三维空间旋转时,也有一种类似于复数的代数:四元数(Quaternion)。四元数是Hamilton找到的一种扩展的复数。它既是紧凑的,也没有奇异性。如果说缺点,四元数不够直观,其运算稍复杂些。
一个四元数q拥有一个实部和三个虚部。四元数有Hamilton和JPL两种形式,下面以Hamilton形式表示:
$$
q = w + xi + yj + zk
$$
其中,i,j,k为四元数的三个虚部。这三个虚部满足以下关系式:
$$
i^2 = j^2 = k^2 = ijk = -1
$$
如果把i,j,k看成三个坐标轴,那么它们与自己的乘法和复数一样,相互之间的乘法和外积一样。有时,人们也用一个标量和一个向量来表达四元数:
$$
q = s + v
$$
这里,s称为四元数的实部,而v称为它的虚部。如果一个四元数的虚部为0,则称为实四元数;反之,若它的实部为0,则称为虚四元数。
旋转向量、四元数和旋转矩阵之间的转换关系
旋转向量到旋转矩阵的转换
旋转向量可以通过李代数转换为旋转矩阵,具体转换关系如下:
旋转向量到四元数的转换
旋转向量可以通过半角旋转向量转换为四元数,具体转换关系如下:
参考资料
[19] 张贤达. 矩阵分析与应用[M]. 清华大学出版社, 2004.