APP下载

旋转四元数表达约定判别方法及应用探讨

2023-06-25鹿珂珂刘陵顺唐大全

北京理工大学学报 2023年6期
关键词:同形乘法姿态

鹿珂珂,刘陵顺,唐大全

(海军航空大学 航空作战勤务学院,山东,烟台 264001)

1843 年,Hamilton 首先提出了四元数的数学概念[1],用于解决空间矢量类似平面问题的复数方法.随着科学技术的发展,四元数在机器人和航空航天领域得到广泛应用[2],成为分析研究刚体运动的有效工具.此外,四元数也被大量用于电脑绘图及相关的图像分析上,用于表示三维物体的旋转及姿态,还见于控制论、信号处理、姿态控制、物理、轨道力学和生物信息学等学科领域[3].

1990 年,SHUSTER 等[4]首次提出四元数乘法与旋转矩阵乘法的顺序相反,并提出了与Hamilton 四元数乘法定义不同的乘法表达约定.基于该文献,美国国家航空航天局(national aeronautics and space administration,NASA)的喷气推进实验室(jet propulsion laboratory,JPL)提出了另外一种四元数的表达约定[5],与Hamilton 约定对应,本文将这种表达称为JPL 约定.

此后,在学术界使用四元数的过程中,开始出现混乱和不严谨,也带来了困惑和争论[3,6−8].文献[3]整理了不同领域的部分论文,目前大多数学科领域和数学分析使用Hamilton 约定,包括大多数开源软件包,比如,Eigen[9]、Google Ceres[10]等.目前存在混淆的主要是航空航天和机器人领域.在航空航天领域,国外JPL 约定主要出现在与NASA 相关的文献中[4−5,11−12].在机器人领域,则出现了很多使用JPL 约定的经典论文[13−14],受其影响,该领域四元数混淆情况尤其严重.国内由于受经典著作[15]的影响,四元数通常默认采用Hamilton 约定,然而,也有一些文献[16−18]在使用四元数时,没有显式说明采用哪种表达约定情况下,使用了JPL 约定.四元数的两种不同表达约定造成了大量的混淆,尤其是将四元数作为工具的文献[19−21],不加说明地进行了使用,增加了公式推导和实践的难度,并成为实践中的错误来源.

文献[8]首先提出了存在两种四元数表达带来的问题,重点对数学表达形式上的不同进行了分析,文献[3]和[7]则从主动旋转和被动旋转的角度,理论上分析论证了两种四元数的起源和不同,文献[6]基于Hamilton 四元数进行了详细的数学推导,并提到了未选择JPL 的原因是由于Hamilton 四元数应用的广泛性,然而上述研究均缺少对两种表达方式的实验验证分析,并且没有清晰地给出文献阅读和软件工具中判别和转换四元数的方法.因此,本文在相关研究基础上,详细推导分析了Hamilton 和JPL 约定下旋转四元数的异同,论证了Hamilton 四元数在处理连续旋转时的同形性解释,推导了两种四元数表达方式的判别、测试和转换方法,并使用实验数据进行了验证.提议在使用四元数时,明确指出所采用的表达约定,普遍采用Hamilton 约定,逐渐舍弃JPL约定.

1 三维刚体的旋转表达

式中Rwb为 旋转矩阵,表示坐标系 Fw到 Fb的旋转,满足如下约束

图1 三维刚体固联坐标系旋转示意图Fig.1 Schematic diagram of 3D rigid body fixed coordinate system rotation

三维刚体旋转除了旋转矩阵的表达,还可以使用旋转向量、欧拉角和四元数[22−23].在个别文献[3]中,为了区分Hamilton 和JPL 约定下的乘法,采用了两种四元数乘法符号,符号 ⊗用于JPL 约定,Hamilton约定则采用 ⊙,而文献中常见的Hamilton 表达一般使用类似实数变量的乘法[1,4,6,13,21].为了表述方便,本文选择在Hamilton 和JPL 四元数约定中采用相同的变量和运算符号,四元数乘法符号均采用 ⊗.

式中CH(·)为旋转四元数到旋转矩阵的映射.对应式(3)的关系式为

2 Hamilton 与JPL 约定的比较

2.1 与旋转矩阵乘法的同形性

选择在Hamilton 约定基础上,提出另外的四元数表达约定,原因在于部分学者认为旋转四元数与旋转矩阵的映射关系满足[13]

据此,根据式(6)可以进一步推导得到

也就是

由式(11)可知,在式(9)的假设下,处理连续旋转时,旋转矩阵与Hamilton 四元数约定不满足同形性.但是,事实上Hamilton 约定下的四元数与旋转矩阵的映射关系由式(5)给出,在此条件下,由式(6)得到

因而

由式(13)可见,Hamilton 四元数在表示连续旋转时,按照与旋转矩阵的映射关系CH(·),维持了与旋转矩阵相同的链式法则,满足与旋转矩阵乘法的同形性.

在JPL 约定下,满足

JPL 约定在处理连续旋转时,形式上较为整洁,但是结论与Hamilton 约定一致.

2.2 Hamilton 和JPL 约定区别

Hamilton 和JPL 四元数表达约定的区别体现主要在如下几个方面:

① 四元数定义中相互正交单位向量的乘法定义不同.Hamilton 约定中,i⊗j=−j⊗i=k,JPL 约定中,j⊗i=−i⊗j=k.

②元素排列顺序通常不同.设四元素实部为qw,

③相同四元数对应旋转向量相同,但是表示的旋转不同.三维刚体的旋转可以使用旋转向量来表示,旋转向量的方向为转动轴,转过的角度为向量的长度.设旋转向量的方向为单位向量uwR(上标表示向量表示在 Fw中),旋转角度为θ,Hamilton 约定和JPL约定下,旋转四元数与旋转向量的对应关系均为

但是对于相同的旋转向量,Hamilton 约定采用右手定则,JPL 采用左手定则判断四元数表示的旋转.相同的四元数表达=[qw qv]T,Hamilton 和JPL 约定下旋转矩阵分别为

式中:I3×3为 单位矩阵,下标表示矩阵维数是 3×3;[·]×表示将向量映射成反对称矩阵.根据式(15),使用李代数[25]通过旋转向量来得到旋转矩阵则分别为

④四元数相乘结果形式不同.根据四元数实部和虚部的排列顺序不同,在进行四元数乘法运算时,左乘四元数和 右乘四元数的形式存在不同,详见表1.

表1 四元数 对应左乘和右乘矩阵形式Tab.1 Left-multiplied and right-multiplied matrix forms corresponding to quaternion

表1 四元数 对应左乘和右乘矩阵形式Tab.1 Left-multiplied and right-multiplied matrix forms corresponding to quaternion

序号 四元数 Hamilton JPL]■■■■■■[pv■■■■■■]× pv−pTv 0■■■■■■ ¯q=■■■■■■−[pv■■■■■■qv qw L(¯p)=pwI4×4+× pv−pTv 0■■■■■■■■■■■■L(¯p)=pwI4×4+1¯p=■■■■■■pv pw]]R(¯q)=qwI4×4+■■■■■■−[qv × qv−qTv 0■■■■■■R(¯q)=qwI4×4+■■■■■■[qv × qv−qTv 0■■■■■■■■■■■■ 0 −pTv pv■■■■■■ ¯q=[pv■■■■■■qw qv■■■■■■■■■■■■L(¯p)=pwI4×4+]L(¯p)=pwI4×4+]■■■■■■2■■■■■■ 0 −pTv pv −[pv×ׯp=■■■■■■pw pv R(¯q)=qwI4×4+■■■■■■ 0 −qTv qv −[qv]■■■■■■R(¯q)=qwI4×4+]■■■■■■×■■■■■■ 0 −qTv qv[qv ×

⑤四元数的微分形式不同.对于Hamilton 约定,假设旋转运动过程中t时刻的旋转四元数为q¯bw(t),可以得到

根据式(6),设角速度在坐标系 Fw中的表示为那么

对于JPL 约定,旋转四元数虚部在前,实部在后,在相同的假设下,计算坐标系 Fb相对于 Fw旋转四元

数的微分时,有

式中:

以上是Hamilton 和JPL 四元数约定中存在的一些主要区别.基于上述结论,可以推导得到不同约定下不同形式的旋转四元数的积分、扰动方程以及对扰动的雅克比矩阵求解等,具体可以参考文献[6].

3 Hamilton 和JPL 约定的区分与转换

3.1 文献中四元数约定区分

在阅读和引用机器人和航空航天领域论文的时候,尤其需要注意四元数采用的约定,在这两个学科领域存在两种约定的广泛使用,可以按照如下步骤进行四元数约定的区分:

①查看文献中所采用四元数约定的说明.大部分文献在使用四元数过程中,会明确说明采用了Hamilton 四元数,JPL 约定则很少会显式说明.

②查看四元数定义和运算.对于两种四元数约定区分最直观的方法是查看i⊗j乘 积结果.若i⊗j=k,则采用Hamilton 约定;若i⊗j=−k,则采用JPL 约定.

③明确四元数表示旋转的含义,根据规范四元数与旋转矩阵的映射关系进行确认.

④根据四元数乘法形式确定.根据四元数相乘的先后顺序,对比表1 中的乘法矩阵形式,确定所采用的四元数约定.

⑤根据旋转四元数的微分方程判断.通常角速度由惯性测量单元直接得到在当前坐标系的表示,此时可参照式(19)和(22),根据具体微分形式确定四元数约定.

可参照图2 的具体流程确认文献中所采用的四元数约定.需要注意的是,要首先明确四元数的元素排列顺序,以及四元数所表示旋转的含义.如本文第1 节所述,同一旋转,有两种表述:一种是从参考坐标系 Fw到当前坐标系 Fb的旋转为与Rwb,另一种是将点坐标(向量)从在参考坐标系 Fw中的Pw旋转到当前坐标系 Fb的表示Pb的 旋转为与Rbw.两种表示的旋转矩阵互为逆矩阵,旋转四元数互为共轭.不同文献中四元数符号形式可能不同,比如,参考文献[24]中的四元数与本文Hamilton 约定下的含义相同,对应旋转的第一种表述,即坐标系bk到坐标系bk+1的 旋转,参考文献[19]中的,采用的是第二种旋转表述,表示将坐标系G中的向量转换到坐标系L,对应本文JPL 约定下的四元数由于两种四元数约定的广泛应用,不排除即使文献中明确说明所采用的四元数约定,但由于作者没有意识到存在两种四元数约定,受参考文献影响,在使用四元数进行公式推导过程中,仍然出现混淆和错误的情况.

图2 四元数约定区分流程图Fig.2 Flow chart of quaternion convention identification

3.2 软件工具中四元数约定测试和转换

对于软件工具,可以测试i⊗j乘积结果,若为i⊗j=k,则采用Hamilton 约定;若为i⊗j=−k,则采用JPL 约定.也可以通过测试四元数到旋转矩阵的转换,得到软件所采用的四元数约定.不同约定下四元数与旋转矩阵的数量关系可以通过软件输出和手工计算结果进行对比.

3.3 Hamilton 和JPL 约定的应用探讨

两种四元数的理论都是完善和成熟的,这也意味着在表达旋转的时候,可以使用其中任意一种表达约定,并且从上面的推导可以看到,两者在数学运算上存在相似性,可以通过简单的数学运算实现相互转换,并且在计算资源占用上不存在显著差异.但是,同时存在两种表达约定,则导致了研究人员需要额外的成本来区分和转换使用,而这项工作并不会带来额外的收益,并且引入潜在的隐患.如果要选择保留其中一种表达约定的话,相比之下,Hamilton 四元数提出距今已有近180 年,历史时间悠久,受众和应用领域广泛,根据参考文献[3],两种四元数应用领域部分文献初步调研统计结果如表2 所示.可见,除了航空和机器人领域,其他诸如数学、机械等领域,均采用了Hamilton 约定,大多数常用软件和科普网站也均采用了Hamilton 约定.此外,从前面的数学推导也可以看到,两种四元数在表达旋转时,均具备同形性,虽然Hamilton 四元数的连续旋转与直觉不太一致,但是Hamilton 四元数的旋转采用右手直角坐标系,表达更符合人们的使用习惯.因此,建议在学术研究领域更为广泛地应用Hamilton 表达约定,逐渐舍弃JPL 的表达约定,消除两种约定同时存在和使用带来的困惑和使用成本.

表2 两种四元数约定的应用领域统计[3]Tab.2 Statistics in the application field of the two quaternion conventions[3]

4 仿真验证

Eigen 库是用来进行线性代数、矩阵、向量操作等运算的C++库,作为跨平台使用的软件库,在机器人的嵌入式应用中大量使用,而Matlab 作为商业数学软件,在科学研究和工程设计领域应用广泛,选择这两个有代表性的软件,分别对其中的四元数约定进行测试.

选取文献[26]的航姿参考系统(attitude and heading reference system,AHRS)传感器数据,分别利用Hamilton 和JPL 四元数对Mahony 算法效率和运算结果进行验证.其中,传感器数据是从AHRS 设备中记录得到,经过标定校准的陀螺仪、加速度计和磁力计数据,运动过程是顺序的绕X,Y,Z轴从0°转动到90°,然后到−90°.传感器数据如图3 所示.

图3 传感器数据Fig.3 Sensor data

所采用的实验环境为ThinkPad 翼14 笔记本电脑,处理器为i7-10510U,操作系统采用Ubuntu 18.04,使用Ubuntu 版本的Matlab R2018b 64bit.首先分别对两种四元数与旋转矩阵、姿态角和轴角之间的相互转换关系进行测试,相同转换运算下,两者的用时分别是JPL 四元数0.011 038 s,Hamilton 四元数0.011 022 s,可见在忽略系统资源调度的情况下,两者用时几乎一致,主要源于在不同约定下,转换约定的数学运算除去符号和顺序等,均保持一致.

Mahony 算法采用Hamilton 四元数进行推导,使用JPL 四元数进行改写时,需要依据表1 修改四元数乘法,采用式(17)的坐标系转换关系,以及式(22)的姿态更新方程.通过多次运行程序,对运算所需时间取平均,得到利用Hamilton 四元数进行姿态解算用时0.132 963 s,欧拉姿态角见图4(a),四元数变化见图4(b).利用JPL 四元数进行姿态解算用时0.133 241 s,欧拉姿态角见图5(a),四元数变化见图5(b).从运行时间上来看,两者由于较大数据量的处理,存在细微的不同,但该时差在系统运行的误差范围内.这符合理论上的推导结果,由Hamilton 约定改为JPL 约定,只需要同时变更四元数虚部的符号,并且更改相应的运算公式,而运算转换之间本身耗时基本一致,因此,两种约定在所需计算资源上一致.

图4 采用Hamilton 四元数的解算结果Fig.4 Solving results with Hamilton quaternion

图5 采用JPL 四元数的解算结果Fig.5 Solving results with JPL quaternion

对比图4 和图5,可以发现,两者姿态和四元数输出结果也几乎完全一致,细微差别源于算法运行过程中数据维护的细微差异,如计算精度和四元数归一化等,以及由于万向锁原因,在俯仰角 θ接近90◦时,欧拉角的奇异性使得滚转角 ϕ和 偏航角 ψ时出现的区别,但是这与两种四元数表达方式关系不大.需要注意的是,图4(b)和图5(b)中四元数数值变化一致,但是两者表达的含义不同,参见式(16)和式(17),而对于四元数转换得到的欧拉角均为按照常规定义给出的结果,因此也得到了相同结果.

5 结 论

处理四元数连乘时,为了满足与旋转矩阵乘法的同形性,学者和机构提出了四元数的JPL 表达约定,本文通过系统分析对比Hamilton 和JPL 四元数约定下的四元数定义和推导,指出在四元数的Hamilton约定下,也同样具有同形性,Hamilton 和JPL 四元数具有相同的运算结果和效率,鉴于Hamilton 四元数更为悠久的历史,众多学科领中更为广泛的应用,建议在航空航天和机器人领域也一致使用Hamilton 约定,舍弃JPL 四元数约定,并且在相关研究中,明确说明所采用的四元数表达约定.本文提出的区分和转换四元数约定方法,有助于提高研究人员阅读旋转四元数相关文献时的效率,并避免在理论推导和实践过程中出现难以发现的错误.

猜你喜欢

同形乘法姿态
韩汉同形完全异义词略考
算乘法
我们一起来学习“乘法的初步认识”
《整式的乘法与因式分解》巩固练习
攀爬的姿态
把加法变成乘法
佛经音义同形字辑释
全新一代宋的新姿态
跑与走的姿态
壮字喃字同形字的三种类别及简要分析