当前位置:   article > 正文

欧拉角和四元数之间转换公式推导_欧拉角转四元数

欧拉角转四元数

 前言

       首先明确一点不同的旋转顺序,欧拉角和四元数之间转换的公式是不一样的,以下推导使用的旋转顺序为:

1.欧拉角转四元数

        绕X轴旋转角度为,绕Y轴旋转角度为,绕Z轴旋转角度为,把这三个角轴转换为四元数得到以下公式:

                                                         

                                                        

                                                        

        下面用到四元数的乘法,四元数的相关知识可以参考附录的论文1或者2,都有很详细的推导和讲述,四元数相乘得到:

                                                                                     

        简记,最终的结果为如下公式:

                                              

                                              

                                              

                                             

        在推导过程中完全手推容易出错,可以借助matlab,可以大大提高推导公式的效率,降低出错可能性。如下为matlab代码,供大家参考:

  1. % 测试欧拉角到四元数之间的转换
  2. % addpath('utils'); %函数路径
  3. syms pitch0 % x
  4. syms roll0 % y
  5. syms yaw0 % z
  6. q_x=[cos(pitch0/2),1*sin(pitch0/2),0,0]; % x轴:[1,0,0] 绕x轴旋转pitch0
  7. q_y=[cos(roll0/2),0,1*sin(roll0/2),0]; % y轴:[0,1,0] 绕y轴旋转roll0
  8. q_z=[cos(yaw0/2),0,0,1*sin(yaw0/2)]; % z轴:[0,0,1] 绕z轴旋转yaw0
  9. q= quaternProd(quaternProd(q_z, q_x),q_y)
  10. % q的最终结果
  11. % cos(pitch0/2)*cos(roll0/2)*cos(yaw0/2) - sin(pitch0/2)*sin(roll0/2)*sin(yaw0/2),
  12. % cos(roll0/2)*cos(yaw0/2)*sin(pitch0/2) - cos(pitch0/2)*sin(roll0/2)*sin(yaw0/2),
  13. % cos(pitch0/2)*cos(yaw0/2)*sin(roll0/2) + cos(roll0/2)*sin(pitch0/2)*sin(yaw0/2),
  14. % cos(pitch0/2)*cos(roll0/2)*sin(yaw0/2) + cos(yaw0/2)*sin(pitch0/2)*sin(roll0/2)]
  15. % 下面函数是四元数乘法
  16. % 四元数相乘
  17. function ab = quaternProd(a, b)
  18. ab(1) = a(1).*b(1)-a(2).*b(2)-a(3).*b(3)-a(4).*b(4);
  19. ab(2) = a(1).*b(2)+a(2).*b(1)+a(3).*b(4)-a(4).*b(3);
  20. ab(3) = a(1).*b(3)-a(2).*b(4)+a(3).*b(1)+a(4).*b(2);
  21. ab(4) = a(1).*b(4)+a(2).*b(3)-a(3).*b(2)+a(4).*b(1);
  22. end

2.四元数转欧拉角

         表示导航系到载体系的转换矩阵,设偏航、俯仰,滚转的角度分别为 ,则旋转矩阵表示如下:

                    

        另外,用四元数形式表示的旋转矩阵表示形式如下:

                               

        根据上面两个公式的对应关系可得:

                                                                  

        所以,欧拉角可解为:

                                                         

参考论文

1. Indirect Kalman Filter for 3D Attitude Estimation

2. Quaternion kinematics for the error-state Kalman filter

3. Euler angles, quaternions, and transformation matrices for space shuttle analysis

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/422775?site
推荐阅读
相关标签
  

闽ICP备14008679号