0.引言

  在研究机器人运动时,会用到惯性测量单元采集姿态数据,获取的姿态数据主要是四元数,一般不直接获取三轴欧拉角,因欧拉角插值(插值是因多传感器数据采集频率不一致,若要融合数据,必须根据时间进行插值)困难,相比下之下,四元数插值(球面插值)较简单。在将采集的四元数经插值处理完成后,因它无法直接使用,若要观察姿态变化情况,可以将四元数转为易理解的欧拉角观察角度姿态变化情况;若要用于坐标变换,可以将四元数转为易计算的旋转矩阵去变换其他传感器数据在空间的姿态。

1.基本概念

(1)四元数[1]
在这里插入图片描述
(2)欧拉角[2]
  用来确定定点转动刚体位置的3个一组独立角参量(三个角为α、β、γ,本文分别对应绕X轴、Y轴、Z轴旋转,也有其他对应方式[3],满足右手定则)。
  优点:表示方法较直观。
  缺点:①欧拉角的表示方式不唯一。给定某个起始朝向和目标朝向,即使给定yaw、pitch、roll[4]的顺序,也可以通过不同的yaw/pitch/roll的角度组合来表示所需的旋转。比如,同样的yaw-pitch-roll顺序,(0,90,0)和(90,90,90)会将刚体转到相同的位置。这其实主要是由于万向锁(Gimbal Lock)引起的;②欧拉角的插值比较难;③计算旋转变换时,一般需要转换成旋转矩阵,这时候需要计算很多sin, cos,计算量较大。
角度取值范围[5]
在这里插入图片描述
(3)旋转矩阵[6]
  旋转矩阵R是在乘以一个向量的时候改变向量的方向但不改变大小的效果的矩阵。
在这里插入图片描述

2.四元数、欧拉角之间相互转换

(1)欧拉角←四元数[7]

在这里插入图片描述
  在Matlab中,arctan对应atan函数,arcsin对应asin函数。
  函数atan、asin的取值范围都为[-π/2, π/2],对于β,已符合取值要求,但对于α、γ,要求[-π, π ],使用atan无法达到目的,可以使用atan2函数,atan2为四象限反正切[8],符合角度取值要求。
(2)四元数←欧拉角[9]
在这里插入图片描述
  注:以上涉及四元数乘法,计算法则与虚数乘法一致。

3.四元数、旋转矩阵之间相互转换

(1)旋转矩阵←四元数[10]
在这里插入图片描述

(2)四元数←旋转矩阵[11]
在这里插入图片描述

4.欧拉角、旋转矩阵之间相互转换

(1)旋转矩阵←欧拉角[12]
在这里插入图片描述
(2)欧拉角←旋转矩阵[13]
在这里插入图片描述
  注:在Matlab中arctan同样使用四象限反正切函数atan2。

参考资料:
[1] lxycg. 四元数(Quaternions); 2019-12-13 [accessed 2023-03-28].
[2] 寒韩Glory. 欧拉角的理解; 2022-11-28 [accessed 2023-03-28].
[3] LoongTech. 欧拉角与旋转矩阵之间的转化公式及原理; 2018-09-25 [accessed 2023-03-28].
[4] Jiannanya. 简单理解3D系统中pitch/yaw/roll 的基本概念; 2021-12-27 [accessed 2023-03-28].
[5] bnrmaster. 欧拉角(Euler angles); 2015-07-29 [accessed 2023-03-28].
[6] 360百科. 旋转矩阵; 2017-10-20 [accessed 2023-03-28].
[7] xiaoma_bk. 四元数与欧拉角(Yaw、Pitch、Roll)的转换; 2022-09-01 [accessed 2023-03-28].
[8] 光学码农. atan和atan2的区别-Matlab三角函数; 2022-05-14 [accessed 2023-03-28].
[9] Harmonican. 欧拉角与四元数之间的相互转换; 2022-09-13 [accessed 2023-03-28].
[10] LoongTech. 从四元数到旋转矩阵; 2019-03-12 [accessed 2023-03-28].
[11] StubbornHuang. 旋转矩阵与四元数的转换; 2020-03-27 [accessed 2023-03-28].
[12] 你不来我不老. 三维空间坐标系变换-旋转矩阵; 2018-09-03 [accessed 2023-03-28].
[13] guoqiang_sunshine. 欧拉角和旋转矩阵相互转换; 2022-08-19 [accessed 2023-03-28].

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐