C语言实现欧拉角转四元数

电子说

1.3w人已加入

描述

1. 说在前面的话

2. 欧拉角

3. 欧拉角与四元数关系

4. Matlabe 欧拉角转四元数

5. C语言实现 欧拉角转四元数

6. 获取资源

1. 说在前面的话

1)在介绍以下内容之前,我们假设读者已经对复数与2D旋转、3D空间中的旋转、四元数的性质以及四元数与3D旋转等数学理论有一定的阅读理解基础。

2)欧拉角与四元数姿态表示方法是目前工程上最常用的两种方法。欧拉角表示法具有简便、几何意义明显等优点,同时姿态敏感器可以直接测出这些参数,能较方便地求解用这些姿态参数描述的姿态动力学方程。但采用欧拉角的姿态描述方法存在奇点问题,且需多次三角运算。而采用四元数表示方法则可以避免这些问题,因此目前工程上开始采用四元数来描述飞行器运动及动力学方程中的姿态,而在设计控制规律时,由于欧拉角的直观性和几何意义,仍然采用欧拉角描述。

2. 欧拉角

根据欧拉定理,刚体绕固定点的位移也可以是绕该点的若干次有限转动的合成。在欧拉转动中,将载体坐标系转动三次得到导航坐标系。在三次转动中,每次的旋转轴是被转动坐标系的某一坐标轴,每次的转动角即为欧拉角。因此,用欧拉角确定的姿态矩阵是三次坐标转换矩阵的乘积。

最终的姿态矩阵还与三次转动的顺序有关,下面公式采用3-2-1顺序,即按照Z-Y-X轴的顺序旋转(东北地坐标系(对应的载体坐标系前右下)):

欧拉角

于是可得姿态矩阵

欧拉角

式中,字符"c","s"分别为"cos"和"sin"的缩写形式。

3. 欧拉角与四元数关系

根据四元数的定义,可以将欧拉角式转换为四元数,以欧拉3-2-1转动为例:第一次先绕Z轴转动,φ = θ =0,

四元数表示为:

欧拉角

第二次先绕Y轴转动,φ = ψ = 0,

四元数表示为:

欧拉角

第三次先绕X轴转动,θ = ψ = 0,

四元数表示为:

欧拉角

则,绕三轴转动的合成为

欧拉角

欧拉角

该转换方法在360±°内均有效,是一对一的关系。

4. MATLAB 欧拉角转四元数

欧拉角

欧拉角

5. C语言实现欧拉角转四元数

欧拉角转四元数的步骤如下:

STEP1:确定每个欧拉角的轴和旋转角度。Yaw对应y轴,Pitch对应x轴,Roll对应z轴。记为yaw_angle,pitch_angle和roll_angle。

STEP2:分别根据每个欧拉角的旋转轴和旋转角度,构造旋转四元数的各个分量。以yaw_angle为例,qw = cos(yaw_angle/2)qx = 0qy = sin(yaw_angle/2)qz = 0

同样地,根据pitch_angle和roll_angle可以得到对应的旋转四元数分量。

STEP3:根据旋转四元数的分量,构造最终的旋转四元数。旋转四元数的分量为(qw, qx, qy, qz)。

请注意,欧拉角到四元数的转换是一个多对一的映射,即不同的欧拉角可能对应相同的旋转四元数。因此,在实际应用中,可能需要根据具体需求选择适合的欧拉角表示方式。

校验结果:

欧拉角

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分