四元数与欧拉角(RPY角)的相互转换
RPY角与ZYX欧拉角
在描述坐标系{B}相对于参考坐标系{A}的姿态时,有两种常用的方式:
一种方式是绕固定坐标轴旋转,这种称为“固定角”或“欧拉角”(XYZ fixed angles),常称为旋转序列 RPY (Roll, Pitch, Yaw),它包括横滚 (Roll)、俯仰 (Pitch) 和偏航 (Yaw) 三个分量,分别绕着 {A} 坐标系的 X、Y、Z 轴旋转。
另一种方式是绕自身的坐标轴旋转,被称为 ZYX 欧拉角,其旋转顺序为绕自己的 Z 轴、Y 轴、X 轴旋转。在概念上,这两种旋转方式最终达到相同的目标姿态,但描述路径不同。数学上,通过 X、Y、Z 轴三次固定旋转和绕协调系轴三次旋转都将获得相同的最终定向。
描述回顾与等效表示
固定轴旋转 和 自轴旋转 同义地表达了在ABS和旋转物体之间的相对于旋转变换。
四元数转换与欧拉角
四元数是一种高效存储和计算定向信息的方式。通过四元数可以直接合成多次旋转,相比矩阵易于在硬件上实现,并且很少发生不连续误差(累计误差)。
四元数与旋转矩阵的转化:已知旋转矩阵,可以通过公式直接计算对应的四元数,反之亦然(需考虑奇异性)。
四元数的加法与乘法 类似于向量与矩阵,分别遵循加法和逐元素乘法的规则。
四元数到欧拉角的转换:此转换并非直截了当,尤其是当绕某个轴旋转几乎达到 ±90° 时,需要通过 ATan2 函数来准确描述正确的方向(确保四元数的取值符合物理角度范围)。
欧拉角与四元数的互转:通过设置一组欧拉角数学公式推导出四元数相同时,要注意实际应用里还有 12 种不同顺序(如 ZYX、ZXZ 等)的问题,因此应用时应明确旋转序列。
数学工具包与应用实例
可利用 Mathematica 中的 Quaternions Package 简化这些转换和计算。比如:
1. 加载 package:`<
2. 计算四元数 :`Quaternion[12, 4, 14, 2]`。
3. 转换俯仰角和偏航角(绕固定轴旋转)到四元数,然后再转换回欧拉角。
示例码解析