
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.1.2 四元数与欧拉角的转换
对于空间姿态的表述,显然欧拉角更直观(见图1-7)。其中,ψ、θ和φ分别为绕Z轴、Y轴和X轴的旋转角度。

图1-7 Z-Y-X欧拉角
四元数无法直接做加减法运算,且四元数的平方和应为1。故对空间点位的姿态运算时,通常先将四元数转化为欧拉角后进行几何的加减法运算,最后将运算结果再次转化为四元数。
ABB工业机器人提供了欧拉角与四元数转化的相关函数,其中:
①函数EulerZYX(\X,object.rot)可以将四元数转化为对应的欧拉角,此处举例提取绕X轴旋转的角度,也可提取绕Y轴和绕Z轴旋转的角度。
②函数OrientZYX(anglez,angley,anglex)可以将欧拉角转化为四元数。注意,函数中的参数顺序为Rz、Ry、Rx。
例如,平面2D相机得到某点位绕Z轴旋转α度,则可以先计算其姿态对应的欧拉角:

再对欧拉角中绕Z轴旋转的角度做加法,最后重新转化为四元数:

综合式(1-5)和式(1-6)及图1-7,可以得到Z-Y-X欧拉角(ψ、θ和φ)到四元数的转化公式:

综合式(1-5)和式(1-6)及图1-7,可以得到四元数到Z-Y-X欧拉角(ψ、θ和φ)的转化公式:

arctan和arcsin的结果是,并不能覆盖所有朝向,因此使用atan2函数来代替arctan:

综合式(1-7)和式(1-9),可以在RAPID中自己编写函数,实现欧拉角与四元数的转化。欧拉角与四元数转化的RAPID代码如下:

